• NXP推出基于i.MX RT106F本地人脸识别解决方案

     NXP MCU级别的人脸识别解决方案利用i.MX RT106F来实现,使开发者轻松便捷地将人脸识别功能添加到他们基于MCU的IoT产品中,这个超小尺寸,集成软件算法和硬件的方案,可以方便开发者进行快速的评估和概念验证开发。SLN-VIZN-IOT开发套件可以离线创建自己的面部模型,而无需进行云连接,从而降低了总体成本和设计复杂性。 这个解决方案最大程度上缩短了上市时间,降低了风险并减少了开发工作,可以使众多OEM厂家更方便地添加人脸识别功能,为智能家居,智能家电,智能玩具和智能工业提供高级用户界面和访问控制功能,而无需Wi- Fi和云连接,解决了许多消费者的隐私问题 i.MX RT106F是i.MX RT1060系列的成员,将于2020年4月份正式量产,主要针对低成本人脸识别应用,基于Arm Coretx-M7内核,主频高达600MHz的高性能实时处理器,除了人脸识别功能外,i.MX RT106F 还有大量可用外设,可以作为多种应用的主芯片。i.MX RT106F已经获得许可,可以运行NXP OASIS 运行库进行人脸识别,其中包括: 摄像头驱动; 图像捕获和预处理; 人脸检测; 人脸跟踪; 人脸对比; 人脸识别; 防欺骗; 人脸配置; 置信度; 人脸识别认证结果; 情绪识别; 内置安全bootloader,应用程序验证; 连接性:MQTT, lwIP, TLS;搜索与注册;所有驱动(包含wifi和蓝牙); RTOS OTW客户端:OTW签名脚本,OTW rollback,图像冗余; USD MSD更新; 自动校验脚本; 支持 MCUXpresso SDK, IDE 和配置工具。 一、I.MX RT106F 方案关键价值体现: i.MX RT106F是i.MXRT1060 MCU(Arm Cortex-M7内核,1MB SRAM):包含人脸识别算法引擎、本地识别消除了云成本,延迟和隐私性问题; MCU BOM较高端MPU方案可减少近50%成本:减少了SDRAM,eMMC,PMIC,6层板制作成本; 更为简单容易的MCU平台,便于研发人员开发:不需要Linux和高端MPU的研发人员,熟悉实时操作系统RTOS即可; NXP交钥匙方案,减少上市时间:全套参考设计,软件,原理图,Layout和BOM,从设计到上市不超过6个月。 二、硬件框架 三、软件框架 四、支持情绪识别 五、应用行业 智能家居:温控器,HVAC,照明控制; 智能安全/安保/警报设备:报警面板,门禁,智能门锁; 智能家电:洗衣机,干衣机,烤箱,冰箱,火炉和炉灶台,微波炉,抽油烟机,洗碗机;台式电器(咖啡机,多功能炊具,微波炉); 智能玩具:教育玩具,游戏等; 智能产业:电动工具,智能工作站等,工业自动化和过程控制。

    关键词: NXP MCU i.mx rt106f

    时间:2020-02-27

  • pic单片机实例篇,基于pic单片机设计测试评估板

    pic单片机实例篇,基于pic单片机设计测试评估板

    pic单片机是单片机系列中的佼佼者,对于pic单片机,想必大家均有一定了解。在现实中,pic单片机的应用更是随处可见。本文对于pic单片机的讲解,将为大家介绍基于pic单片机的评估板设计。 近年来,由于数据通信需求的推动,加上半导体、计算机等相关平安彩票AG捕鱼娱乐技术领域的快速发展,短距离无线与移动通信技术也经历了一个快速发展的阶段。短距离无线通信通常指的是l00m到200m以内的通信。 它被广泛应用于无线数据采集、无线水表、煤气表、电力表抄表、工业遥控、遥测、工业数据采集、楼宇自动化、安防、机房设备无线监控、家庭自动化数据网络组网等领域。 IAI系列无线芯片具有集成度高,外围元件少,功耗低,性能稳定可靠,芯片内部集成了FSK无线收发必需的全部功能模块,包括多边带PLL合成器、PA、LNA、混频器、基带滤波器、中频放大器、信号强度指示RSSI、数据质量侦测DQD、电池电压侦测、AFC和微控制器等,非常适合用于短距离无线通讯产品。本文介绍了采用IA4421芯片开发的两种无线通讯模块PHY和EV-IA4421-433M-3(如图1,图2)。PHY模块是不带MCU而向外提供一个SPI接口;EV-IA4421模块是带MCU并向外提供一个串口。这样可以方便用户使用和开发。 图1 PHY 图2 EV-IA4421 针对这两种模块,我们设计了一个适用这两种模块的测试评估板。该 测试板 可以对这两个模块进行设置(主要对IAI4421寄存器设置),这样方便客户评估,测试IA系列产品的的性能。 基本概述: 该测试板的组成采用PIC单片机PIC16F777作为主控芯片;一个LCD1602作为显示平安真人视讯娱乐网;4个轻触按键作为作为用户输入;一个可以连接电脑的串口;还有连接两通讯模块的接口。用户可以通过按键和LCD可以很直观地对IAI4421芯片寄存器、通讯速率等进行设置,还可以通过LCD监控数据传输过程的正确性和完整性。 本文主要介绍该测试板的一些主要功能和原理以及其使用的方法,以便大家对其有一个初步的了解。 主要功能: 可设置4位的发射地址码:用户可以通过菜单设置4位的地址即0~F,并与从机地址设置对应,这样就可以不受其他模块的干扰,可以多个模块同时工作。 可设置模块的工作频段:由于IAI系列芯片支持3频段分别为433MHz、868MHZ、915MHZ,通过设置不同的频段可以适应使用不同频段的硬件。 可设置模块的发送速率:芯片支持不同的发射速率,用户可以根据需要进行调整; 可设置发送数据的时间间隔和发送的次数; 可以设置串口波特率(与硬件连接相对应); 可显示接收数据的内容和接收数据的次数,当前通讯速率等信息; 硬件组成框架: 各部分硬件接口: LCD1602接口(图3) LCD1602采用8数据线接口(data0-data7),有利于快速刷新需要显示的数据,RS、RW、E三线控制。 图3 LCD电路接口 串口电路(图4) 串口电路采用MAX232作为电平转换芯片,与电脑连接,接收电脑 的输入命令。TX串行数据输出(无线接收到的 数据),CRX串行数据输入(要发送的数据)。 图4 串口电路接口 EV-IA4421-433M-3模块接口电路(图5) EV-IA4421-433M-3是已经带有一个PIC16F690的模块。VCC使用5V电源供电;TX、RS作为一个标准的波特率可选的串口作为与测试板之间的通讯,所有对模块的操作都使用这个串口完成;/PD待机控制,/PD=0时,模块进入待机状态,/PD=1,模块正常工作;RSSI无线信号强度输出,输出电压和信号强度成正比,是一个模拟信号,测试板通过AD转换对其捕捉。 图5 EV-IA4421接口电路 PHY模块接口电路(图6) PHY只需使用5个I/O口即可工作,它采用SPI兼容的控制接口作为数据通讯接口。我们测试板也正是使用这种方式与PHY模块进行谅解的。各个接口功能如下:SCK:SPI串口时钟输入;SDI:SPI串口数据输入;NSEL:SPI片选输入(低电平有效);SDO:SPI串口数据输出;NIRQ:中断请求输出(低电平有效)。 图6 PHY模块接口电路 按键电路(图7) 四个轻触按键作为用户的输入,用户按键的输入判断是采用普通的I/O方式。具体每个按键定义为:UP键用于上移菜单;DOWN键用于下移菜 单;ENTER键用于确认选择;SEND用于启动发送数据。 图7 按键电路 电源部分: 考虑到使用的方便性,再电源供电上采用了两种供电方式:一种直流9V~12V 电源适配器的输入;另一种是用9V的纽扣电池供电。用户可采用其中的一种。 以上是该 测试板 的硬件的主要组成部分,每个部分都只是作了比较简单的介绍。 软件组成框架: 软件流程如图8所示,软件系统在MCU中执行,分为系统初始化、主循环流程与中断服务程序。下面对其作一个简单的介绍: MCU初始化函数,主要是对MCU定时器设置、串口、中断设置和各个端口的输入输出设置等等; 按键事件管理函数,它定时检测按键板上的按键输入,设置和保存相应的标志位,并把按键对应信息映射成相应的驱动事件; 主循环函数是整个软件系统的一个核心部分,各种事件的触发和各个用户接口管理都由这个函数完成,每个子程序管理着不同功能。 图8 软件流程 主循环是软件的基本控制部分,它是一个无限时间的循环,当中包含了许多子程序,诸 如:Check if it’s time to execute events(定时器时间事件处理)、Mode Handler(模式识别处理)、Key SCANHandler(电源管理)、OSD Event Handler(菜单事件处理——当中也包含了按键处理)、Debug Handler(调试处理)。通过这一系列的管理函数,不断的检测事件的发生并执行相应的功能操作。 以上便是此次小编带来的“pic单片机”相关内容,通过本文,希望大家对如何基于pic单片机设计测试评估板具备一定的认知。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2020-02-03 关键词: 单片机 pic单片机 测试评估板

  • pic单片机应用实例,采用pic单片机设计多回路温度控制系统

    pic单片机应用实例,采用pic单片机设计多回路温度控制系统

    pic单片机应用较多,生活中许多控制系统均基于pic单片机设计得到。对于pic单片机,小编曾带来诸多介绍。本文中,将为大家带来pic单片机实例,以增进大家对于pic单片机的认知。如果你对基于pic单片机设计的多回路温度控制系统存在一定兴趣,请继续往下阅读哦。 1.引言 对于塑料制瓶工艺,塑料加热处于溶融状态, 经高压注射成为管胚, 短时间冷却以后,经过高压空气的吹胀, 在制瓶模具中成型。其工艺特点之一是:溶融状态下的塑料定时流动; 成为管胚之后, 将与外部空气接触 2 秒钟时间左右, 产品质量不可避免地受到环境温度的影响。 制瓶工艺要求在不同的制瓶过程中, 恒定在不同的温度下, 其温度控制是制瓶的关键技术之一。目前这种设备的温度控制装置通常采用单回路的通用温度控制仪表, 温度控制无法与工艺过程直接产生联系, 使得温度控制达不到最优状态, 而且受到环境温度的影响, 必须随环境温度的变化调整温度控制参数, 否则产品质量受到影响。另一方面, 单回路的通用温度控制仪表价格也比较高, 且多采用线性模型及PID控制等经典控制方法往往很难达到理想的控制效果, 而采用模糊控制, 它具有不依赖对象的数学模型, 鲁棒性强, 算法简单容易实现。因此, 我们研制了采用 PIC16F877 单片机进行控制的低成本、 高性能、与工艺过程直接产生联系的, 不受环境温度影响的折叠开放式多回路温度控制装置。 2.系统硬件设计 2.1 硬件系统的构成 本系统被设计为8个温度检测回路, 每一个回路将热电偶产生的对温度的微弱信号, 经过温度变送单元转换成0~5V的标准电压信号,送入PIC单片机进行A/D转换后作为模糊控制的输入, PIC单片机根据输入数据通过模糊控制计算出控制输出量, 转化为PWM信号的占空比, 由RD口引脚输出相应的高低电平控制固态继电器的动作从而实现对系统温度的控制, 并通过C8051F020单片机控制SED1335, 从而控制液晶显示器对结果进行显示。对于多回路温度检测系统的硬件配置, 本设计采用折叠开放式结构能够保证温度控制回路配置的灵活性和低成本。 系统硬件框图如图 1 所示。 整个系统由数据采集模块、 主控模块、 控制量输出模块和人机通讯模块四部分组成。 2.2 硬件的模块化设计 2.2.1 数据采集模块 本设计的 8 路温度检测电路选用现代工业生产过程中使用极为广泛的热电偶为温敏元件进行温度的测量, 根据热电偶的测温原理及其特点, 为了使环境温度的变化不会影响温度检测和控制效果, 在整个制瓶工艺过程中采用了多点多回路检测和非常实用的冷端温度补偿电路, 使输出接近线性化, 在实验过程中我们发现该电路的热电动势与被测温度基本上成单值函数关系。热电偶经过冷端温度补偿后,输出得到很微弱的模拟信号, 经过放大才适合 PIC16F877 单片机集成的 A/D转换器转换成单片机能够识别的数字信号, 并转化为对应温度值。 2.2.2 主控制模块 本系统的控制核心是 PIC单片机。PIC单片机是近几年出现的一种新型的采用 CMOS工艺的 8 位单片机, 所选用的 PIC16F877 单片机的内部集成有 8 路 10 位 A/D 转换器, 内置 8k× 14 位的 Flash 程序存储器, 可多次修改程序, 便于系统升级。 以 PIC16F877 为核心的温度控制装置, 无须扩展 I/O芯片和 A/D 转换器, 大大地提高了系统的可靠性和抗干扰性, 并通过通讯口实现与其它单片机的通讯, 从而获得工艺过程的数据参数, 使得温度控制与工艺过程发生直接联系, 提高温度控制的精度和产品的质量。而模糊控制的运用可以避免控制对象 传递函数的不精确性和非线性所带来的误差, 提高温度控制的精度。由于系统具有大惯性的特点(需要有热传导和热平衡的过程) , 为了提高系统的快速性和模糊控制的精度, 具体控制算法采用了分段控制的方法, 即在对被控对象的温度特性有一定的经验知识并进行粗略的实验的基础上, 把温度控制过程划分为前段和后段分别进行处理, 在此不作赘述。PIC单片机作为控制核心与其余各模块相连接, 处理各种数据, 发出各种控制信号。 2.2.3 控制量输出模块 本设计输出模块是通过 PIC16F877 单片机 RD 口输出主控模块的决策信号, 控制对应固态继电器(简称SSR)的通断来达到控制加热器工作的目的。选用固态继电器而没有使用普通的继电器与其良好的特性是密切相关的, 且其价格并不贵。它是用半导体平安真人视讯娱乐网代替传统点接点作为切换装置的具有继电器特性的无触点开关平安真人视讯娱乐网, 单相SSR 为四端有源平安真人视讯娱乐网, 其中两个输入控制端, 两个输出端, 输入输出之间光电隔离, 输入端加上直流或脉冲信号到一定电流值后, 输出端就能从断态转变成通态。具体地说, 就是将每隔一定时间采样进来的信号经过A/D处理并通过模糊控制计算出控制输出量, 转化为 PWM信号的占空比, 由 RD引脚输出相应的高低电平控制固态继电器, 如果所测得的温度值比给定温度值小, 那么固态继电器转变成通态进行加热升温处理, 反之则转变成断态暂停加热。 2.2.4 人机通讯模块 在温度检测系统中, 常常需要设计良好的人机交换界面。设计者可以在人机交换界面中获得必要的信息, 同时要把自己想要达到的目的(即把温度控制在设定温度值)直观地显示出来。为此, 我们将检测所得数据和设定温度值向 C8051F020 单片机传输并通过点阵液晶显示器( LCD)显示。 要使 PIC16F877 单片机与 C8051F020 单片机实现数据传输, 则必须在它们之间建立准确的通讯。由于它们在选择晶体振荡器时各不一样, 因此在计算系统异步串行通讯波特率时, 由于存在不同的波特率误差, 往往导致通讯失败。研究表明, 应用软件插值, 调整串口波特率, 并降低波特率误差, 可以保证通讯的准确性; 本设计中采用的液晶显示技术在实际生活中得到了广泛应用。 液晶显示模块以其微功耗、 体积小、 显示内容丰富、 模块化以及接口电路简单等诸多优点在科研、 生产和产品设计等领域发挥着越来越重要的作用。我们选用 SED1335 作为液晶显示器控制器。根据C8051F020 单片机和 SED1335 的性能特点, 直接通过 C8051F020 单片机 I/O 口控制SED1335, 从而达到控制液晶显示器显示检测数据的目的; 对于系统允许测控的最大、 最小和最终需要达到的温度值以及翻页、 跳转(浮动光标)功能都通过键盘的操作来实现。 3.系统的软件设计 本系统的软件设计采用模块化程序设计, 分别由主程序、 初始化子程序、 显示子程序、 键处理子程序、 AD转换子程序等模块构成。 主程序主要包括键扫描、 显示和处理子程序。 按照香农定理, 按周期定时采样。延时结束启动 AD转换, 转换结束后通过模糊控制进行制。 4.结语 以上便是此次小编带来的“pic单片机”相关内容,通过本文,希望大家对如何采用pic单片机设计多回路温度控制系统具备一定的认知。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2020-02-03 关键词: 单片机 pic单片机 温度控制系统

  • pic单片机实例篇,pic单片机AD转换实例

    pic单片机实例篇,pic单片机AD转换实例

    pic单片机功能较强,现实中的诸多平安真人视讯娱乐网均可借助pic单片机完成。由此可见,pic单片机的使用意义较大。关注本网站的朋友都知道,小编曾带来诸多pic单片机相关文章。如果你对pic单片机比较感兴趣,可在阅读完本文后翻阅往期文章。本文对于pic单片机的讲解,将为大家带来pic单片机的AD转换实例,一起来了解下吧。 AD转换就是模数转换。顾名思义,就是把模拟信号转换成数字信号。主要包括积分型、逐次逼近型、并行比较型/串并行型、Σ-Δ调制型、电容阵列逐次比较型及压频变换型。A/D转换器是用来通过一定的电路将模拟量转变为数字量。模拟量可以是电压、电流等电信号,也可以是压力、温度、湿度、位移、声音等非电信号。但在A/D转换前,输入到A/D转换器的输入信号必须经各种传感器把各种物理量转换成电压信号。 一、PIC单片机如何表示电压 PIC用十位二进制位的数来表示电压,也就是数值0~1023来表示电压。那比如现在这个数值是400那这代表多少的电压?这就要根据参考电压来确定了。 比如我们设置正参考电压为3.3V ,当输入的电压为0时,数值就为0。当输入的电压为3.3V时,数值就是1023. 那如果输入的电压是1.2V代表多少电压。 首先,先算出一个数值代表多少的电压 3.3V除以1023 约等于 0.003V 。 然后,1.2V除以0.003V 等于400. 这就得出了400代表的是1.2V。 见下图我们可以看AN0~AN7.这些都是可以配置成模拟输入的端口。只有这些引脚才能做为AD转换的端口。 二、实例讲解 例如:下面的原理图,从RA0/AN0脚输入个模拟量如果电压大于1.2v则LED亮否则LED灭。 AD的设置步骤 1.设置端口 将RA0口设置为输入 TRISA = 0x01; 将RA0口设置为模拟 ANSELA = 0x01; 2.配置ADC模块 选择ADC的转换时钟。 如何选择转换时钟呢 要根据现在的时钟频率进行选择。可以根据数据手册中的表格进行选择 。 我们设置单片机的时钟频率为32MHZ ,选择ADC周期关键不要选择阴影部分,在32MHz 这一列 我们随意选择了ADC时钟周期1us,对应的时钟源为Fosc/32.,AD控制寄存器1 ADCON1的ADCS《2:0》=010注:ADCS《2:0》代表的意思就是 ADCS的0到2位。 配置参考电压 我们这里选择右对齐,所以AD控制寄存器1 ADCON1的 ADFM=1 上面将有关ADCON1寄存器的配置说完了。下面来讲解ADCON0 选择ADC输入通道 AD转换模块只有一个,而AD输入通道有8个AN0~AN7.所以不可能同时进行AD转换,那个需要用我们就分配给那个,根据硬件我们将AD转换模块分配给AN0. 所以 ADCON0 的CHS《4:0》=0000; 开启ADC模块 ADC模块开启,ADCON0的ADON=1,只是单纯的启用ADC模块。并不开始AD转换。如果不用ADC模块时候建议关闭。可以省点电哦!!! 开始AD转换 ADCON0的GO/DONE=1开启AD转换。 4 等待AD转换结束 5 读取结果 一般情况下我们并不取一次的AD转换的值。而是取多次之后算平均值。这样来确保转换的准确性。 配置ADC模块,有许多地方并没有讲解为什么这么配置,因为许多配置其实是比较随意的。并不是那么的绝对的。一定非要选择哪一个。当然实际的配置还是要根据你项目需求。 //开发环境MPLAB X IDE ,单片机PIC16LF1823. #include 《pic.h》 __CONFIG(FOSC_INTOSC&WDTE_OFF&PWRTE_ON&MCLRE_OFF&CP_ON&CPD_OFF&BOREN_ON &CLKOUTEN_OFF&IESO_ON&FCMEN_ON);//这个要放到上一行去 __CONFIG(PLLEN_OFF&LVP_OFF) ; #define ADC_NUM 8 //转换的次数 #define LED LATA1 void init_GPIO(void) { TRISA = 0x01;//端口设置为输入 ANSELA = 0x01;//设置为模拟输入 PORTA = 0x00; LATA = 0x00; } void init_fosc(void) { OSCCON = 0xF0;//32MHZ } void init_AD(void) { ADCON1= 0xA0;//右对齐,AD时钟为Fosc/32,参考电压为电源电压, ADCON0= 0x00;//选择通道AN0 ADCON0bits.ADON = 1;//开启模块 } unsigned int ADC_BAT_ONE(void)//转换一次 { unsigned int value; value=0; ADCON0bits.CHS =0;//选择通道AN0 ADCON0bits.ADGO=1;//开始转换 while(ADCON0bits.GO==1);//等待转换结束 value=(unsigned int)ADRESH;//强制类型转换,因为ADRESH是字符型的只能表示8位二进制。所以必须转换成可以容纳10位二进制的整型。 value= value《《8;// 将高两位左移8位 value += ADRESL;//低八位加入ADRESL的值。 return value; } unsigned int ADC_BAT_contiue(void) { unsigned int ADV_MCU[ADC_NUM],ADV_CNT,ADV_ALL; ADV_ALL=0; for(ADV_CNT=0;ADV_CNT《ADC_NUM;ADV_CNT++)//进行多次AD转换 { ADV_MCU[ADV_CNT]=ADC_BAT_ONE(); } for(ADV_CNT=0;ADV_CNT《ADC_NUM;ADV_CNT++)//计算多次AD转换的平均值 { ADV_ALL += ADV_MCU[ADV_CNT]; } ADV_ALL= ADV_ALL/ADC_NUM; return ADV_ALL;//得到结果返回 } /* * */ int main(int argc, char** argv) { init_fosc();//设置时钟 init_AD();//设置AD while(1) { if( ADC_BAT_contiue()》400)//判断输入电压是否大于1.2V { LED=1;//灯亮 } else { LED=0;//灯灭 } } } 以上便是此次小编带来的“pic单片机”相关内容,通过本文,希望大家对pic单片机的AD转换过程具备一定的认知。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2020-02-03 关键词: 单片机 pic单片机 ad转换

  • 单片机编程软件很简单(六),V5.29 keil mdk单片机编程软件新特性+烧写程序

    单片机编程软件很简单(六),V5.29 keil mdk单片机编程软件新特性+烧写程序

    单片机编程软件使用广泛,市场上最为流通的单片机编程软件为IAR、keil。往期中,小编曾对keil单片机编程软件带来诸多介绍,想必大家对这款单片机编程软件早已熟悉。但是大家了解keil mdk单片机编程软件吗?本文中,小编将对keil mdk v5.29版本单片机编程软件的新特性加以讲解。此外,文章第四部分将对keil单片机如何烧写程序予以介绍。如果你对本文即将涉及的两大部分存在兴趣,请继续往下阅读哦。 一、keil mdk新特性 关注Keil的读者应该知道MDK升级至V5.29的消息了。我看到升级消息也是第一时间去下载更新体验了一下。 升级之后的,用户使用上没有太多变化,主要是升级了一些组件,简单的说,就是一些小改动。 现在MDK也在搜集用户信息了,说的是用于分析产品,比如:平时的遇到的一些BUG,但具体会搜集哪些信息,还未知。 一般装好之后,启动时会有这么一个提示,若不想被收集,点击“否”。下面讲讲升级的内容,共四项。 1.编译器Arm Compile升级至V6.13.1主要增加的功能是对Armv8.1-M和可选的M-profile Vector Extension(MVE)的支持。 MVE带来了几个独特的架构功能,这些功能可以在DSP和机器学习内核中实现更高的性能。 二、中间件MDK-Middleware升级至V7.10.0这次升级,中间件升级内容最多,包括文件系统、网络、USB等。 1.文件系统组件 添加了用于管理文件或目录时间戳的 ftime_set 和 ftime_get 函数。 添加了状态代码fsAlreadyExists和fsNotDirectory,可以在使用fmkdir,frmdir和fchdir时进行更多控制。 添加了功能fversion,用于检索FileSystem组件的版本。 增强了标准I / O例程使用的文件系统功能的错误报告(使用errno检索上一个错误代码)。 使用选项 /S 和名称缓存时,已纠正frmdir中的错误,该错误可能导致重命名操作后无法访问文件。 2.网络组件 在客户端模式下使用PPP接口并且服务器生成小于16字节的CHAP质询时,已纠正CHAP身份验证中可能的内存损坏。 在HTTP服务器摘要身份验证中增加了对用户帐户的支持。 增加了对存储为MD5哈希值HA1的密码的支持。 在HTTP服务器中增加了对摘要访问身份验证的支持。 收到分段的广播消息时,更正了内存问题。 如果未创建BSD套接字,则从BSD_EINVAL到BSD_ESOCK的更正返回码。 提高了BSD插槽的坚固性。 纠正了对链接层寻址的UDP消息的过滤(不再收到具有正确MAC地址和无效IP地址的数据报)。 3.USB组件 USB设备/主机:为USB堆栈创建的所有线程添加了线程名称。 USB主机:更正后的USBH_Device_GetController / Port / Speed / Address / VID / PID函数可用于设备枚举初始化回调。 二、改进µVision µVision调试器现在支持 ADI v6(在ULINKplus,ULINKpro和CMSIS-DAP中)。 在反汇编程序中支持Armv8.1-M体系结构扩展。 自动生成的分散文件可以管理具有相同名称的多个模块。 如果所有包含的对象都是最新的,则跳过在构建过程中运行Lib。 三、更新调试驱动程序和模型 ULINKpro固件v1.59 ST-Link驱动程序v3.0.7.0 NULink驱动程序v3.01.6951 删减了对Stellaris ICDI的支持 快速模型11.8 四、keil c51软件烧写操作说明 1、适用范围 适用于以51系列芯片作为软件运行载体的所有设备。 2、运行环境 WIN98、NT、WIN2000、WINXP、WIN7等操作系统。 3、辅助工具 PC机1台、KEIL C51 安装软件、编程器(UEC-5)1个、USB转RS232数据线(电脑无串口时需配备)1条 4、软件安装 Keil C51软件在首次使用时需要安装,使用的工装(电脑PC)上已安装好软件此步骤可以省略。 5、KEIL C51设置 6、产品软件烧写 以上便是此次小编带来的“单片机编程软件”相关内容,通过本文,希望大家对keil mdk v5.29版本单片机编程软件的新特性具备一定的认知,并对keil c51烧写程序的步骤有所了解。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2020-01-20 关键词: keil 烧写程序 mdk 单片机编程软件

  • 单片机编程软件很简单(五),keil单片机编程软件变量用法(下)

    单片机编程软件很简单(五),keil单片机编程软件变量用法(下)

    对于单片机编程软件,想必大家均有所了解。针对单片机编程软件,小编曾对keil、IAR予以介绍。本文对于单片机编程软件的讲解,同样基于keil。本文中,将介绍keil单片机编程软件变量用法下篇。如果你对单片机编程软件相关内容存在一定兴趣,不妨继续往下阅读哦。 一、Keil C51中使用变量存储模式的必要性 在Keil C51中,变量的存储模式是一个可选项,如果不使用这个选项,则Keil C51在编译时自动进行优选分配。但这种处理方法有以下缺点: ①系统不知道各种变量的使用频度,有可能对使用频度高的变量使用了访问速度慢的片外存储方式,而对使用频高的变量使用了片内存储方式,使得程序的运行效率降低; ②在使用指针寻址时,由于不知道寻址对象的存储方式,只好使用一般指针,在Keil C51中一般指针要多占用1~2个字节,并且使用时还要对存储方式进行判断,增加了寻址操作时间。 如果能够在定义变量的同时定义其存储类型,可以高效地使用51内核单片机的存储空间,获得高质量的目标代码。 二、Keil C51变量的使用方法 2.1 全局变量和静态局部变量 全局变量一般会在多个函数中被使用,并在整个程序运行期间内有效,静态局部变量虽然只在一个函数中使用,但也是在整个程序运行期间有效。对于这些变量,应尽量选择data型,这样在目标代码中就可以用直接寻址指令访问,获得最高的访问速度,提高程序的工作效率。例如一个保存人数的全局变量n_g,在多个函数中都被经常用到,可以这样定义: unsigned int data n_g;//对n_g赋值时使用“MOV XXH,……”指令 2.2 数组(包括全局和局部) 定义数组一般用idata存储类型,在目标代码中使用“MOV@Ri”指令进行间接寻址。如果因数组元素过多而在编译时报错,可以改用pdata和xdata存储类型。 数组定义为data存储类型意义不大,因为既然使用数组,就是希望能够根据某一自变量访问数组元素。如定义X[100],一般都是为了能够使用X(i是一个变量)来访问,这样在目标代码中就必须使用问接寻址,所以数组没有必要使用data存储类型,即便使用了data存储类型,在目标代码中也仍然要用间接寻址指令。数组定义成idata存储类型,在使用52内核且片内数据存储器不够时,会使用只能间接寻址的片内数据存储空间。这样,既不能降低处理速度,又扩大了可使用的存储空间。 2.3 供查表用的数据 这类数据的特点是需要始终保持不变,且使用时只读,因此应定义为code型。例如一个字形表: 全局或局部code型变量在存储时无区别。 2.4 非静态局部变量 非静态局部变量仅在某一函数内使用,退出该函数时变量也被释放。 若系统使用small存储模式,对于这些变量可以不加存储说明,由编译软件自行按最优原则决定,因为仅在函数内使用的非静态局部变量,有可能使用工作寄存器R0~R7,这样会更快速和更节省存储空间。例如: unsigned char i,j; //系统尽可能会用R0~R7存储i和j 若系统使用了compact或large存储模式,则应将这些变量定义为data存储模式,以防系统自行决定时被定义为pdagta或xdata模式而降低工作效率。 2.5 指针 如前所述,定义指针变量时有2个存储类型:数据存储类型,说明被寻址对象的存储类型;指针存储类型,说明指针自身的存储类型。当数据存储类型为xdata时,指针自身占用2个字节;当数据存储类型为pdata以及idata等片内存储类型时,指针自身占用1个字节;若不说明数据存储类型,指针自身就要占用3个字节。因此,在KeilC51中使用指针时,应尽量定义数据存储类型,但要特别注意指针中的数据存储类型与被寻址对象的存储类型必须一致。指针都是频繁使用的,它要不断被设置、修改和使用,因此它自身的存储类型应选择data型。例如定义一个数组时就同时定义其存储类型,以后用指针对其寻址时就将数组的存储类型添加到指针的数据类型中。方法如下: 2.6 二义性变量 在标准C中如果要使用一个二义性变量,只能用枚举类型。如: 以上程序在Keil C51中使用时,变量t虽然仅有0和1两种状态,但在目标代码中仍占用一个字节。此处理方法既浪费存储资源,又延长了处理时间,这对于8086内核算不上多大问题,但在资源有限、运行速度不高的51内核中就不能不考虑了。在Keil C51中可使用以下方法: 这两种方式效果是完全相同的,但在目标代码中变量t仅占用1位(即1/8字节),而且因为51内核单片机指令系统中有位处理指令,生成的目标代码占用内存少、运行速度快。 2.7 特殊功能寄存器变量(包括位变量) 特殊功能寄存器中,累加器A、寄存器B、堆栈指针SP和数据指针DPTR是归系统使用的,在C51中不提供给用户。其他的特殊功能寄存器都可以用sfr定义成变量,其中地址可以被8整除者的各位,还可以用bsfr定义成位变量。访问这些变量,就可以对特殊功能寄存器及其可以位寻址的各位进行读写,达到操作单片机内部各硬件的目的。对于标准的51内核单片机,头文件reg51.h、reg52.h或其他头文件中已对这些特殊功能寄存器变量作了定义,用户可以用#include将此头文件包含进来,然后就可以使用了。现在很多51内核兼容型单片机扩展了更多的特殊功能寄存器,这些就需要用户自行定义,具体方法可参考平安真人视讯娱乐网的使用说明。 2.8 外部数据存储器变量 若设置成pdata和xdata存储类型,将把变量存储在片外数据存储器中。这两种存储类型的访问速度最慢,非迫不得已不要使用。在使用这两种存储类型时,注意尽量只用它保存原始数据或最终结果,尽量减少对其访问的次数,需要频繁访问的中间结果不要用它。 2.9 用外部数据存储器地址扩展的其他硬件 在单片机外部扩展的其他硬件,一般都借用外部数据存储器地址,表现为外部数据存储器单元形式。对于这些硬件,可以用指针进行读写操作。例如: 以上便是此次小编带来的“单片机编程软件”相关内容,通过本文,希望大家对本文讲解的内容具备一定的了解。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2020-01-20 关键词: keil 单片机编程软件 变量用法

  • 单片机编程软件很简单(四),keil单片机编程软件变量用法(上)

    单片机编程软件很简单(四),keil单片机编程软件变量用法(上)

    常用单片机编程软件有多款,其中keil单片机编程软件较为知名。对于keil单片机编程软件,小编曾带来3篇系列教程。本文对于单片机编程软件的讲解同样基于keil,在本文中,小编将对单片机编程软件keil c51的变量使用方法加以介绍。 8051内核单片机是一种通用单片机,在国内占有较大的市场份额。在将C语言用于51内核单片机的研究方面,Keil公司做得最为成功。由于51内核单片机的存储结构的特殊性,Keil C51中变量的使用与标准C有所不同。正确地使用变量,有利于获得高效的目标代码。 一、CPU存储结构与变量的关系 变量都需要有存储空间,存储空间的不同使得变量使用时的工作效率也不同。 标准C的典型运行环境是8086(含IA-32系列)内核,其存储结构是CPU内部有寄存器,外部有存储器,寄存器的访问速度大大高于存储器的访问速度。在标准C中,不加特别定义的变量是放在存储器中的,使用register可以强制变量存储在寄存器中,对于使用特别频繁且数量不多的变量可以选用这种存储模式,以获得更高的工作效率。 相比之下,51内核单片机的存储结构则显得有些怪异,它的存储空间有3个:程序存储器空间(64 KB含片内、片外)、片外数据存储器空间(64KB)、片内数据存储器及特殊功能寄存器空间。它没有真正意义上的寄存器,它的寄存器其实是片内数据存储器(如R0~R7)和特殊功能寄存器(如A、B等)中的一部分。因此,在Keil C51中使用变量就和标准C有很大不同。 二、Keil C51变量分析 Keil C51支持标准C原有的大多数变量类型,但为这些变量新增了多种存储类型,也新增了一些标准C没有的变量。 2.1 Keil C51新增的变量存储类型 Keil C51中定义变量的格式如下: [存储种类]数据类型[存储类型]变量名表; 其中,[存储类型]是标准C中没有的,[存储类型]共有6种,分别介绍如下: ①data。将变量存储在片内可直接寻址的数据存储器中。使用这种存储模式,目标代码中对变量的访问速度最快。 ②bdata。将变量存储在片内可位寻址的数据存储器中。在目标代码中变量可以方便地进行位处理,在不进行位处理时与data相同。 ③idata。将变量存储在片内间接寻址的数据存储器中。在52内核中,当片内直接寻址数据存储器不够用时,可以使用128字节间接寻址数据存储器,访问速度一般较data要慢一些,但具有最大的片内数据存储器空间;在51内核中因无单独的间接寻址数据存储器区,idata与data无区别。 ④xdata。将变量存储在片外数据存储器中。目标代码中只能使用“MOVX A,@DPTR”和“MOVX@DPTR,A”指令访问变量,访问速度最慢,但存储空间最大(64KB)。 ⑤pdata。将变量存储在片外数据存储器中的第一页(00H~FFH)中。目标代码中可以使用“MOVX A,@Ri”和“MOVX@Ri,A”指令访问变量,访问速度与xdata相同,存储空间为256字节。 ⑥code。将变量存储在程序存储器中。目标代码中只能使用MOVC指令访问变量,因变量存储在程序存储器中,具有非易失性且为只读。 2.2 Keil C51新增的指针变量存储类型 Keil C51中的指针变量形式如下: 数据类型[数据存储类型]*[指针存储类型]标识符; 其中,[数据存储类型]和[指针存储类型]都是标准C中没有的。[数据存储类型]定义数据(即寻址对象)存储的空间,[指针存储类型]定义指针自身存储的空间。若不使用[数据存储类型],则指针为一般指针,占用3个字节;若使用[数据存储类型]则指针为基于存储器的指针,占用1~2个字节。 2.3 Keil C51新增的变量类型 bit:位变量。存储在片内数据存储器的可位寻址字节(20H~2FH)的某个位上,这个变量在实时控制中具有很高的实用价值。 sfr:特殊功能寄存器变量。存储在片内特殊功能寄存器中,用来对特殊功能寄存器进行读写操作。 sbit:特殊功能寄存器位变量。存储在片内特殊功能寄存器的可位寻址字节(地址可以被8整除者)的某个位上,用来对特殊功能寄存器的可位寻址位进行读写操作。 sbitl6:16位特殊功能寄存器变量。存储在片内特殊功能寄存器的连续2个字节的低地址上,这个变量类型很少使用。 以上这些Keil C51中新增的变量类型,不支持数组和指针操作。 以上便是此次小编带来的“单片机编程软件”相关内容,通过本文,希望大家对单片机编程软件Keil C51变量的使用具备一定的了解。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2020-01-20 关键词: keil 单片机编程软件 变量使用方法

  • 兆易创新发布GD32E232系列MCU新品,引领Arm® Cortex®-M23内核向纵深应用领域拓展

    兆易创新发布GD32E232系列MCU新品,引领Arm® Cortex®-M23内核向纵深应用领域拓展

    业界领先的半导体供应商兆易创新GigaDevice(股票代码 603986)正式发布基于Arm® Cortex®-M23内核MCU的最新产品,GD32E232系列超值型微控制器。秉承GD32 MCU家族的优秀基因并持续引领Cortex®-M23全新内核的应用领域向纵深拓展,这系列平安真人视讯娱乐网集成了片上存储器、定时器、数据转换器和众多接口外设,并提供了全新的可编程性能和紧凑的封装尺寸。GD32E232系列采用4 x 4 mm和3 x 3 mm的小型封装供货,特别适用于需要精密MCU和空间受限的应用,如光学模块、光电转换、光纤网络、基站系统、精密仪器、工业控制和自动化系统等。目前,该系列产品已经开始提供样片并将于二月份正式投入量产。 GD32E232超值型MCU引领Arm® Cortex®-M23内核向纵深应用领域拓展 全面集成的控制系统 GD32E232系列产品为超值型应用新增了1个32位通用定时器,非常适合需要高精度并且长延时的应用,可以支持高频率脉冲测量、长脉宽波形捕捉或产生较大间隔延迟的周期信号。 芯片提供了多至4路12位精度的DAC输出,无需使用外部的数字电位器,可减小PCB尺寸和BOM成本。配合Cortex®-M23内核内置的硬件乘法器、硬件除法器和加速单元,能够迅速计算PWM的占空比,就可以精确控制DAC的输出。 为提供准确的模拟测量,芯片集成了12位2.6M SPS采样率的高性能ADC,具备多达16个可复用通道,并支持16位硬件过采样滤波功能和分辨率可配置功能,采样精度也高于市场同类产品。 全新配备的可编程逻辑阵列(CLU)则为现场应用提供了更强的硬件灵活性,可以实现简单的组合逻辑和顺序逻辑运算,有助于为成本敏感性产品提高CPU的工作效率并增强信号处理的实时性。 这些新增的高集成度精密特性对于诸如光收发器、光模块、接入网等工控系统的工程师非常有用,使得GD32E232系列产品可以在此类应用中实现完全集成的数字化控制,并能确保精准控制光驱动器和监测过程。 完美兼容的超值特性 GD32E232系列 MCU 可以令Cortex®-M23内核在高达 72 MHz 时进行模拟密集应用操作,并为工业应用配备了更多标准外设资源:多达5个16位通用定时器、1个支持三相脉宽调制PWM输出的16位高级矢量控制定时器、2个16位基本定时器和1个多通道DMA控制器。通用接口则包括2个USART、2个SPI、2个I2C、1个I2S。 MCU采用1.8V至3.6V电源供电,额定-40°C至+105°C工业级温度范围,提供QFN32和QFN24封装。为适应紧凑布局条件下的小型封装更新程序代码的需求,GD32E232系列 MCU还在闪存的单独区域内置了I2C Bootloader,可以直接使用已有的标准I2C接口下载程序和更新升级,同时也方便用户批量生产。 GD32E23x系列MCU已经涵盖GD32E230、GD32E231和GD32E232三种系列、27个产品型号选择。各系列软件和引脚封装方面完美兼容并切换自如,更易于实现代码移植和扩展升级,充分释放Cortex®-M23内核的超值潜力。 GD32E23x系列Cortex®-M23内核通用MCU产品线 兆易创新产品市场总监金光一表示:“我们不断引领Arm® Cortex®-M23内核向嵌入式设计的纵深领域拓展,并持续推动Arm®技术和最新架构在项目开发中的最佳实践,GD32也已发展成为中国最大的Arm®微控制器家族。新的一年,我们将按计划提供更多种类的Arm® MCU系列产品,在行业应用的深度与广度上始终保持领先。以全新的集成特性和全面的覆盖范围,加速Arm®技术在物联网和智能化产业的广泛部署和全面发展。” 关于GD32 MCU 兆易创新GD32 MCU是中国高性能通用微控制器领域的领跑者,中国最大的Arm® MCU家族,中国第一个推出的Arm® Cortex®-M3、Cortex®-M4 及Cortex®-M23内核通用MCU产品系列,已经发展成为中国32位通用MCU市场的主流之选。并以累计超过3亿颗的出货数量,超过2万家客户数量,24个系列350余款产品选择所提供的广阔应用覆盖率稳居市场前列。兆易创新GD32 MCU也是Arm®大学计划(University Program, AUP) 中国首批合作伙伴、Arm® mbed™ IoT平台生态合作伙伴、“兆易创新杯”中国研究生平安彩票AG捕鱼娱乐设计竞赛的冠名厂商。GD32以打造“MCU百货商店”规划发展蓝图,为用户提供最全面的系统级产品和解决方案支撑,构建智能化开发平台和完善的产品应用生态。

    时间:2020-01-08 关键词: 微控制器 MCU gd32e232系列

  • pic单片机高手篇,pic单片机多路ad切换程序+循环程序介绍

    pic单片机高手篇,pic单片机多路ad切换程序+循环程序介绍

    pic单片机是最重要的单片机种类之一,对于pic单片机,小编曾带来诸多介绍,如pic单片机的优势、pic单片机选型等。而在本文中,小编将为大家介绍两种pic单片机程序:一是pic单片机多路ad切换程序,二是pic单片机循环程序。如果你对这两类程序存在一定兴趣,不妨继续往下阅读。 一、pic单片机简介 pic单片机(Peripheral Interface Controller)是一种用来开发和控制外围设备的集成电路(IC)。一种具有分散作用(多任务)功能的CPU。与人类相比,大脑就是CPU,PIC 共享的部分相当于人的神经系统。PIC 单片机是一个小的计算机。PIC单片机有计算功能和记忆内存像CPU并由软件控制运行。然而,处理能力—般,存储器容量也很有限,这取决于PIC的类型。但是它们的最高操作频率大约都在20MHz左右,存储器容量用做写程序的大约1K—4K字节。时钟频率与扫描程序的时间和执行程序指令的时间有关系。但不能仅以时钟频率来判断程序处理能力,它还随处理装置的体系结构改变。如果是同样的体系结构,时钟频率较高的处理能力会较强。 二、AD转换介绍 所谓模拟量很好理解就是模拟量是指变量在一定范围连续变化的量;也就是在一定范围(定义域)内可以取任意值(在值域内)。数字量是分立量,而不是连续变化量,只能取几个分立值,如 三位进制数字变量只能取7个整数值0.1.2.3.4.5.6.7。 而不是经过AD通道的话,经过的是普通的IO口,那么模拟信号只会在引脚上出现两种数字结果,一个是1一个是0,而不能比较准确的描述出模拟量的数值,模拟量信号是一种变量信号,比如果0V--10V,或50MA到100MA,开关信号是一种通断信号,比如家里的灯开关,数字信号是一种连续的开关信号或高低电平信号,比如1101----高高低高。一连串的信号代表数字信号。 再继续说一下AD精度的问题,8位AD精度的话就是将这个满电压值分成2^8=256份,比方说51单片机采集的电压范围是0-5v 那么0v对应的是 0 5v对应的是255. 三、pic单片机多路ad切换程序 void ad_init (void) { ADIF=0X00; ADCON1=0x80;// ADCON0=0X81; //十位结果必须高为8位 TRISA=0X0FF;//默认为AD输入 PORTA=0X00; TRISE0=1; TRISE1=1; TRISE2=1; ADON=1; } void delay(unsigned int x) { unsigned int a,b; a=(2*x/8); for(a;a》0;a--); for(b=5;b》0;b--); } unsigned int read_ADresult(unsigned char channel) { channel &= 0x07; // 此处语法相当于channel=channel&0x07 联系自反加语法! ADCON0 &= 0x85; // 清当前通道 ADCON0 |= (channel《《3); //10 xxx 001 delay(30); ADGO=1; while(ADGO) conTInue; return (ADRESH《《8)+(ADRESL); // return ADRESL; } unsigned int ad_res[8];//存放AD转换值 for(j=0;j《8;j++) { ad_res[j]=read_ADresult(j); } 四、pic单片机循环程序实例 下面小编将为大家介绍一种定时程序,说明循环程序在PIC单片机上的应用。小编此次以PIC16F84单片机为例建立其定时源程序清单。该定时器源程序只需改变一条指令的常数设置,即可使定时时间从分钟级到3?8小时的连续变化(4MHz晶振条件)。在该源程序上再多设置一次循环,可使定时时间长达1月以上。 该PIC16F84单片机定时源程序可直接在MPLAB集成开发环境软件下进行汇编,其汇编后生成的HEX文件可在实验编程器1?01上对源程序进行固化并可在相应的实验板上直接观察实验的结果。PIC16F84单片机时的源程序清单如下(文件各可自定义): LIST    P=PIC16F84 #INCLUDE P16F84?INC COUNT1 EQU   0x1F COUNT2 EQU   0x1E COUNT3 EQU   0x1D COUNT4 EQU   0x1C ORG  0 START CLRW      ;与MOVLW 0等效 BSF    STATUS,5;选体1 MOVWF TRISB  ;设B口为输出 BCF    STATUS,5;STATUS复位当前体0 CLRF   PORTB ;定时启动功能 M1   BTFSS   PORTA,1 ;判断A口第D1位,D1=1间跳,D1=0顺 ;序执行 GOTO   M2 GOTO   M1 M2   MOVLW 0xAA  ;选B口定时位,LED亮开始定时 MOVWF PORTB  ;B口按0x10101010输出 DELY CLRW        ;与MOVLW 0等效 MOVLW 0xFF MVOWF COUNT1 MVOWF COUNT2 MVOWF COUNT3 MOVLW 0    ;与CLRW指令等效 MOVLW 0x02   ;0x02送W(最大定时为0xFF) MOVWF COUNT4 ;定时值控制(细调) LOOP DECFSZ COUNT1,1 ;CPUNT减1,为0间跳 GOTO LOOP DECFSZ COUNT2,1 ;同上特点,这里d=1可不用 GOTO   LOOP DECFSZ COUNT3,1 ;同上 GOTO LOOP DECFSZ COUNT4,1 ;同上,但COUNT4中值可自由选定 GOTO LOOP CLRW       ;与MOVLW 0相同 MOVLW 0x02  ;定时结束显示 MOVWF PORTB M3 GOTO M3 END         ;程序结束 说明:该源程序中常数设置可由读者任意改变,改变之后即可达到任意时间的设定。 以上便是此次小编带来“pic单片机”关内容,通过本文,希望大家对小编介绍的两类pic程序具备一定的了解。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2019-12-30 关键词: pic单片机 循环程序 多路ad

  • 细数pic单片机,pic单片机与51/AVR单片机IO操作

    细数pic单片机,pic单片机与51/AVR单片机IO操作

    pic单片机使用较多,因此学习pic单片机的人数也相对较多。对于pic单片机,它的优点众所皆知。此文对pic单片机的讲解在于介绍pic单片机的IO口操作。但本文不仅仅局限于pic单片机,同样将对51单片、AVR单片机IO操作加以介绍,一起来了解下吧。 51单片机、AVR单片机和PIC单片机IO口结构的均不同,导致了IO口操作也不同。操作单片机IO口的目的是让单片机的管脚输出逻辑电平和读取单片机管脚的逻辑电平。 一.51单片机IO口的操作 51单片机IO口的结构比较简单,每个IO口只有一个IO口寄存器Px,而且这个寄存器可以位寻址,操作起来是所有单片机里最简单的,可以直接进行总线操作也可以直接进行位操作,这也是51单片机之所以成为经典的原因之一。下例的运行坏境为Keil软件,平安真人视讯娱乐网为AT89S52。 #i nclude sbit bv=P2^0;//定义位变量,关联P2.0管脚。sbit是C51编译器特有的数据类型 int main(void) { unsigned char pv; //位操作,以P2口的第0位为例: bv=0;//直接对P2口的第0位管脚输出低电平 bv=1;// 直接对P2口的第0位管脚输出高电平 //总线操作输出数据,以P2口为例: P2=0xaa;//直接赋值,P2口输出数据0xaa //总线操作读取数据,以P2口为例: pv=P2;//直接读取P2口的数据放到pv变量 return 0; } 二.AVR单片机IO口的操作 AVR单片机IO口的结构比较复杂,每个IO由三个寄存器组成:IO口数据寄存器POTx、IO口方向寄存器DDRx和IO口输入引脚寄存器PINx。AVR单片机IO口操作相当麻烦,需要设置IO口的方向,而且只能进行总线操作,如果进行位操作还需要掌握编程技巧---通过逻辑运算来实现位操作。下例的运行坏境为ICCAVR软件,平安真人视讯娱乐网为ATMEGA16。 #i nclude int main(void) { unsigned char pv; //总线操作输出数据,以D口为例: DDRD=0xff;//先设置D口的方向为输出方式(相应位设0为输入,设1为输出) PORTD=0xaa;//赋值,D口输出数据0xaa //总线操作读取数据,以D口为例: DDRD=0x00//先设置D口的方向为输入方式(相应位设0为输入,设1为输出) PORTD=0xff;//再设置D口为带上拉电阻(相应位设0为无上拉,设1为有上拉),才能准确读取数据 pv=PIND;//读取D口的PIND寄存器的数据放到pv变量 //位操作,以D口的第0位为例: DDRD|=0x01;//先设置D口第0位的方向为输出方式,其他位的方向不变 PORTD|=0x01;//D口的第0位输出高电平,技巧:使用位或运算,其他位不变 PORTD&=~0x01;//D口的第0位输出低电平,技巧:使用取反位与运算,其他位不变 return 0; } 三.PIC单片机IO口的操作 PIC单片机IO口的结构也比较复杂,每个IO由两个寄存器组成:IO口数据寄存器PORTx、和IO口方向寄存器TRISx。操作起来比AVR单片机简单一些,同样需要设置IO的方向,可以进行总线操作也可以进行位操作。下例的运行坏境为MPLAB IDE软件,平安真人视讯娱乐网为PIC16F877。 #i nclude __CONFIG(0x3B32); int main(void) { unsigned char pv; //总线操作输出数据,以B口为例: TRISB=0x00;//先设置B口的方向为输出方式(相应位设0为输出,设1为输入) PORTB=0xaa;//赋值,B口输出数据0xaa //总线操作读取数据,以B口为例: TRISB=0xff;//先设置B口的方向为输入方式(相应位设0为输出,设1为输入) pv=PORTB;//读取B口的数据放到pv变量 //位操作,以B口的第0位为例: TRISB=0xfe;//先设置B口的第0位(RB0)的方向为输出方式(相应位设0为输出,设1为输入) RB0=1;//B口的第0位输出高电平 RB0=0;//B口的第0位输出低电平 return 0; } 经过比较这三种单片机IO口的操作,我们知道,51单片机IO口结构简单,操作简单,但没有高电平大电流驱动能力;AVR和PIC单片机IO 口结构复杂,操作麻烦,但具备高电平大电流驱动能力。换句话说,单片机的IO口的功能越强大结构越复杂操作越繁琐。 以上便是此次小编带来的“pic单片机”相关内容,通过本文,希望大家对pic单片机、51单片机以及AVR单片机的IO口操作具备一定的认知。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2019-12-30 关键词: pic单片机 avr单片机 io操作

  • pic单片机解惑篇,pic单片机、51单片机,谁更易于上手

    pic单片机解惑篇,pic单片机、51单片机,谁更易于上手

    pic单片机是学单片机人士必须掌握的一款单片机,对于pic单片机,小编层带来诸多介绍。如果你对pic单片机很感兴趣,不妨翻阅往期文章。本文对pic单片机的介绍内容为:pic单片机与51单片机,二者谁更易于学习,一起来了解下吧。 一、概述 51好学一些,但是PIC也没比51难多少。首先,PIC比51多个配置位,这个基本上看看就懂了。然后,PIC的端口要配置成输入或者输出,51单片机则不用。PIC的中断没有优先级,需要软件判断。最后,PIC比51多许多寄存器,你要使用PIC的各种功能,都需要去初始化寄存器。 再说说PIC相比与51单片机有哪些优点: 1:相同的晶振情况下,PIC比51速度快,PIC4个时钟周期为一个指令周期,51是12个。 2:PIC比51功能强大许多,比如自带AD转换,自带PWM,内置弱上拉(需设置)LCD接口等。。这样,你在用到许多功能的时候就很方便啦,不用去接很多外围电路。 3:PIC的驱动能力比51强,PIC可直接驱动数码管,51有些吃力哦。 4:PIC的抗干扰能力比51好,这个我们公司做过试验的。 综合上述,小编建议学习PIC。 二、51单片机详述 51单片机是对所有兼容Intel8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flashrom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。 51单片机的主要功能 ·8位CPU·4kbytes程序存储器(ROM)(52为8K) ·256bytes的数据存储器(RAM)(52有384bytes的RAM) ·21个专用寄存器 ·2个可编程定时/计数器·5个中断源,2个优先级(52有6个) ·一个全双工串行通信口 ·外部数据存储器寻址空间为64kB ·外部程序存储器寻址空间为64kB ·逻辑操作位寻址功能·双列直插40PinDIP封装 ·单一+5V电源供电 CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器; RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据; ROM:用以存放程序、一些原始数据和表格; I/O口:四个8位并行I/O口,既可用作输入,也可用作输出; T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式; 五个中断源的中断控制系统; 一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信; 片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最高振荡频率为12M。 三、PIC单片机特点或优势 1)PIC最大的特点是不搞单纯的功能堆积,而是从实际出发,重视产品的性能与价格比,靠发展多种型号来满足不同层次的应用要求。就实际而言,不同的应用对单片机功能和资源的需求也是不同的。比如,一个摩托车的点火器需要一个I/O较少、RAM及程序存储空间不大、可靠性较高的小型单片机,若采用40脚且功能强大的单片机,投资大不说,使用起来也不方便。PIC系列从低到高有几十个型号,可以满足各种需要。其中,PIC12C508单片机仅有8个引脚,是世界上最小的单片机。 该型号有512字节ROM、25字节RAM、一个8位定时器、一根输入线、5根I/O线,市面售价在3-6元人人民币。这样一款单片机在象摩托车点火器这样的应用无疑是非常适合。PIC的高档型号,如PIC16C74(尚不是最高档型号)有40个引脚,其内部资源为ROM共4K、192字节RAM、8路A/D、3个8位定时器、2个CCP模块、三个串行口、1个并行口、11个中断源、33个I/O脚。这样一个型号可以和其它品牌的高档型号媲美。 2)精简指令使其执行效率大为提高。PIC系列8位CMOS单片机具有独特的RISC结构,数据总线和指令总线分离的哈佛总线(Harvard)结构,使指令具有单字长的特性,且允许指令码的位数可多于8位的数据位数,这与传统的采用CISC结构的8位单片机相比,可以达到2:1的代码压缩,速度提高4倍。 3)产品上市零等待(Zerotimetomarket)。采用PIC的低价OTP型芯片,可使单片机在其应用程序开发完成后立刻使该产品上市。 4)PIC有优越开发环境。OTP单片机开发系统的实时性是一个重要的指标,象普通51单片机的开发系统大都采用高档型号仿真低档型号,其实时性不尽理想。PIC在推出一款新型号的同时推出相应的仿真芯片,所有的开发系统由专用的仿真芯片支持,实时性非常好。就我个人的经验看,还没有出现过仿真结果与实际运行结果不同的情况。 5)其引脚具有防瞬态能力,通过限流电阻可以接至220V交流电源,可直接与继电器控制电路相连,无须光电耦合器隔离,给应用带来极大方便。 6)彻底的保密性。PIC以保密熔丝来保护代码,用户在烧入代码后熔断熔丝,别人再也无法读出,除非恢复熔丝。目前,PIC采用熔丝深埋工艺,恢复熔丝的可能性极小。 7)自带看门狗定时器,可以用来提高程序运行的可靠性。 8)睡眠和低功耗模式。虽然PIC在这方面已不能与新型的TI-MSP430相比,但在大多数应用场合还是能满足需要的。 以上便是此次小编带来的“pic单片机”相关内容,通过本文,希望大家pic单片机、51单片机的优点有所了解,并对二者谁更易于学习具备一个自己的答案。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2019-12-30 关键词: 单片机 51单片机 pic单片机

  • 单片机编程软件很简单(三),keil单片机编程软件双数据指针+二进制

    单片机编程软件很简单(三),keil单片机编程软件双数据指针+二进制

    单片机编程软件实际使用较多,因此单片机编程软件具备很强的使用价值。对于单片机编程软件,小编曾带来诸多介绍,如单片机编程软件有哪些等。本文对单片机编程软件的讲解基于Keil C51,主要内容为介绍keil对双数据指针的支持情况以及其代码生成机制,并为大家介绍keil c51直接使用二进制的方法。 在8051体系中,数据指针DPTR作为一个特殊的16位寄存器,用于寻址64 KB的XDATA或CODE空间,通常它被当作一个16位指针,指向一个常数表。双数据指针可以改善同时有两个16位指针使用时的性能。作为一种增强特性,有许多8051派生型平安真人视讯娱乐网支持双数据指针。以宏晶科技STC89系列的产品为例,DPTR被增强为DPTR0和DPTR1两个,仍然使用原来的地址,用另外一个SFR AUXR1的0位DPS来切换。当DPS位为0时,所有对DPTR的操作使用DPTR0;当DPS位为1时,所有对DPTR的操作使用DPTR1。这样,通过一个简单的INC AUXR1指令,就可以来回切换两个数据指针。 一、Keil C51对双数据指针的支持情况 作为一个常用的C51编译器,Keil C51是支持双数据指针的,但并不是直接支持。如果要在C51程序中使用双数据指针,有一些特别的要求。 首先来看Keil C51是如何支持双数据指针的。 在Keil C51的编译器手册中指出:#pragma modp2可以打开Philips或Atmel WM系列平安真人视讯娱乐网中有双DPTR的型号,并且可以提升以下库函数的性能,包括:memcpy,memmove,memcmp,strcpy,strcmp。 Keil公司也提供了一个对照表,对比性能的提升。对比的型号是8051和Dallas 320,函数是memcpy块拷贝。对照表如下: 看起来似乎使用库函数就可以大幅度提高程序性能,但实际上这样做并不能保证一定可以提高程序性能。首先Dallas 320是4T的CPU,本身就比12T的8051快。其次,以memcpy为例,它的原型是void*memcpy(void*s1,const void*s2,int len),其传人参数有3个,合计8字节,要使用数据段来传送。在数据量少的情况下,参数传递的开销就有可能大过数据传递的开销。如果想要在数据块拷贝或移动的同时对数据加以处理,比如在一个目的数据块后面加上一个校验和,那么使用库函数是办不到的,只有通过循环来进行。当数据块的源和目都是16位地址时,每一次循环都会有两次对数据指针的赋值,在源地址和目地址之间来回切换,这时采用双数据指针会有效地提高程序性能。 如果要在程序中直接生成使用双数据指针的代码,目前没有直接的编译指令。Keil公司在它的网站上曾说过多数据指针支持库函数,并且目前也未打算在编泽器中直接支持多数据指针。 二、 Keil C中直接生成双数据指针的代码 实际上,Keil C51编译器还是可以直接生成使用双数据指针的代码的,只要没定好适当的优化级别,安排好适当的C51语句,编译器就会生成使用双数据指针的代码。下面给出一个例子,使用双数据指针将CODE区的一个16字节的数组拷贝到XDATA区。 编译后其中for循环的汇编代码主体如下: 可以看到,汇编代码基本上是最简化的使用双数据指针的汇编程序。 由上面的代码可知,在优化级别7(Extended Index Ac-cess OpTImizing)的作用下,DPTR被调用了。通过类型转换和SFR指令的配合,双数据指针指令被生成。这足一个经验方法,基本上这是一个框架,可以在看到双DPTR调用被生成后加入其他语句,在块操作的同时处理数据。 三、调试环境的设定 在Keil uVision2环境下,软件仿真Philips或AtmelWM系列平安真人视讯娱乐网中有双DPTR的型号时,仿真器中会有AUXR1、DPTR0、DPTR1这3个寄存器。如果不使能双DPTR特性,仿真时DPTR的值是混乱的。对于宏晶科技STC89系列平安真人视讯娱乐网的双DPTR特性,打开软件仿真设定的具体步骤是:在File/Device Database菜单中选择STC的某一具体型号,在OpTIons框中"CPU="一项后加上MODP2,然后单击Update更新平安真人视讯娱乐网库。打开双数据指针调试后,再启动Debug,就会有AUXR1、DPTR[0]、DPTR[1]这3个寄存器。当加载上述程序时,会清楚地看到双数据指针的操作和AUXR1的变化。 四、Keil C51中直接使用二进制数方法 在Keil C51中数不能直接以二进制形式赋值,虽然在8051的汇编中是可以的。二进制数虽然书写长,易出错,但是由于是一位位写的,所以程序设计者能够很明确的看到每一位的状态,看得比较直观。于是很多人怀念了8051的汇编,很想在C51中使用二进制。没猜错的话搜到本篇日志的人很可能就是来找这种解决办法的,下面两种办法都是不错的选择。 方法一: 建立一个头文件,将所有的二进制数宏定义列举出来,用的时候直接使用宏定义,头文件定义:binary(右键>>“目标另存为”>>下载)。 方法二: 做一个带参数宏定义,将输入的类二进制数变换为对应的16进制数,整个定义和使用实例请见下文,可以直接使用,如果想研究原理又看不懂带参宏定义的朋友们请参考谭浩强的《C程序设计》预处理命令一章内容(第三版在P204-P211)。 #define LongToBin(n) \ (\ ((n >> 21) & 0x80) | \ ((n >> 18) & 0x40) | \ ((n >> 15) & 0x20) | \ ((n >> 12) & 0x10) | \ ((n >> 9) & 0x08) | \ ((n >> 6) & 0x04) | \ ((n >> 3) & 0x02) | \ ((n ) & 0x01) \ ) #define Bin(n) LongToBin(0x##n##l) void main(void) { unisigned char c; c = Bin(10101001); //相当于c = 0xA9 } 上面预处理指令中使用了反斜杠\,这里解释一下:每一条预处理语句总是以"#"字符开始,并且不能超过一行,一旦遇到换行符语句就被当做结束,唯一的一种能将预处理语句扩展到多行的办法就是在换行符之前加一个反斜杠('\')。 以上便是此次小编带来的“单片机编程软件”相关内容,通过本文,希望大家对keil c51的双数据指针以及代码生成等知识具备一定的认知。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2019-12-27 关键词: 二进制 单片机编程软件 双数据指针

  • 单片机编程软件很简单(二),keil单片机编程软件心得秘笈

    单片机编程软件很简单(二),keil单片机编程软件心得秘笈

    单片机编程软件为常用软件之一,单片机开发人员均用过多款单片机编程软件。那么,用单片机编程软件进行开发时,大家是否有独特新得呢?本文对单片机编程软件的讲解基于Keil C51,主要为大家介绍使用这款单片机编程软件开发单片机时积攒的一些开发心得体悟,以供大家参考。如果你对本文即将要讲解的内容感兴趣,或者你正在学习单片机编程软件,都请继续往下阅读哦。 用Keil写C51程序是最好不过的了,用伟福也可以写,但伟福的编辑能力就相差太远了。个人喜欢用Keil写代码,然后用伟福硬件仿真(只有WAVE的仿真头)。不过Keil是好用,但写代码关键还是C51水平,也就是编程能力,写C程序就离不开模块化这个词了。C51和A51,要扬长避短,发挥C的长处,就得将C模块化好。刚刚开始的时候就只是熟悉C51的语法规则了,熟悉了这个然后再追求程序的可读性和可移植性。 下面是使用Keil C51的一点心得: 1、程序可读性的提高 要提高程序的可读性,就得养成一良好的编程习惯了,例如变量用小写,常量用大写,函数第一个字母用大写等等。这样成习惯以后,自己看代码就会一目了然。另外还要灵活的在KEIL中使用TAB键对对齐文本,而不要敲空格代替(优势,试了就知道了)。 2、程序的可移植性的提高 程序的可移值性是C51的优势所在,要做到移植方便,就得熟悉C51的编译过程有一定的了解,合理组织文件。可以将一个功能模块(如显示驱动,端口读写)放在一个C文件中,作为一个函数调用,然后在主程序中申明该函数,就可以随便调用了。 移值的时候也只要把当前的C文件加入到新的项目中,同样的方法调用它就可以。 另外模块化程序要善用C里面的“#IFDEF”、“#ENDIF”、“#DEFINE”等专为模块设计提供的功能。例如设计一个外面带的晶振的驱动模块,在不同的晶振频率下,该项模块的设置位可能不同。如果就直接在程序中写设置位,晶振改变,这些设置位也要逐一修改,这个程序也就不通用了,也就是可移值性不好。要解决这个问题怎么办 ,“#IFDEF”、“#ENDIF”可以帮你解决问题。这两个命令的功能就不具体说了,书上面讲得很清楚。知道这些功能你就知道该怎样使用它们进行模块化设计了。 3、Keil C51的debug技巧 A51的程序执行时间可能通过指令周期计算出来,而C51的却无从下手,很多程序员为了得到精确的执行时间而研读反汇编代码,何等的悲哀。巧妙的使用Keil中的debug功能,问题就迎刃而解了。 下面举例说明:   该程序为一个延时程序,在12M的晶振下,调用一次的时间为16uS ,执行一次循环的时间为9uS(延时范围(25us~589.831ms))。这样来,假设有语句Delay(N);那么该语句的精确延时的计算公式就是(9*N+16)uS了.这个公式可以理解吧! 如何得到程序的调用时间和执行一次循环的时间了。接着看下面:   在主程序MAIN()函数下添加上面两条语句,当前的SEC栏为执行到DELAY(1);语句所花的时间。T(0-)   上面的SEC栏为执行完DELAY(1)所花的时间,这样就可以得到DEALY(1)这条语句的执行时间为595-570=25uS.   上面的SEC栏为执行完DELAY(2)所花的时间,这样就可以得到DEALY(2)这条语句的执行时间为629-595=34uS. 结果:T[DELAY(2)]-T[DELAY(1)]不就是执行一次循环的时间嘛,而T[DELAY(1)]减去执行一次循环的时间就是调用一次要花的时间了。精确到1uS! 以上便是此次小编带来的“单片机编程软件”相关内容,通过本文,希望大家对使用这款单片机编程软件开发单片机时积攒的一些开发心得体悟有所了解,并可应用到大家的实际开发当中去。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2019-12-27 关键词: keil 单片机编程软件 心得体悟

  • 单片机编程软件很简单(一),keil单片机编程软件忽略警告+全局替换

    单片机编程软件很简单(一),keil单片机编程软件忽略警告+全局替换

    单片机编程软件很多,但主要以Keil单片机编程软件和IAR单片机编程软件为主。本文对单片机编程软件的讲解基于Keil,主要内容为:keil单片机编程软件忽略特定警告的方法以及如何使用keil单片机编程软件全局替换字符串。如果你对本文即将要讲解的内容存在一定兴趣,不妨继续往下阅读哦。 一、keil中忽略特定警告的方法 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。 运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。 keil优点 ·Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。 ·与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。Keil C51开发系统基本知识 ⒈系统概述 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil的优势。下面详细介绍Keil C51开发系统各部分功能和使用。 ⒉Keil C51单片机软件开发系统的整体结构 C51工具包的整体结构,μVision与Ishell分别是C51 for Windows 和for Dos 的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及C51编译器编译生成目标文件(.obj)。目标文件可由LIB51 创建生成库文件,也可以与库文件一起经L51 连接定位生成绝对目标文件(.abs)。abs文件由OH51 转换成标准的hex 文件,以供调试器dScope51 或tScope51 使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。 使用独立的Keil仿真器时,注意事项 *仿真器标配11.0592MHz的晶振,但用户可以在仿真器上的晶振插孔中换插其他频率的晶振。 *仿真器上的复位按钮只复位仿真芯片,不复位目标系统。 * 仿真芯片的31脚(/EA)已接至高电平,所以仿真时只能使用片内ROM,不能使用片外ROM;但仿真器外引插针中的31脚并不与仿真芯片的31脚相连,故该仿真器仍可插入到扩展有外部ROM(其CPU的/EA引脚接至低电平)的目标系统中使用。 keil中忽略特定警告的方法 因为在STM32F4上使用了jlink自带的RTT功能 而RTT的代码经过编译会产生一个特定的警告 只需在工程中这样设置 添加 --diag_suppress=num 此处num等于警告代码的数字 例如111 二、keil如何全局替换字符串 相信大多数人在使用keil的时候,都会出现同一个问题,那就是keil如何全局替换字符串,目前小编仅使用过keil 3和keil4 ,下面就以keil 3 和keil4 为例,说说它们是如何替换全局字符的。 进入到keil 3和keil4 中,菜单进入 edit-》Replace-》replace all ,如下图即可: 三、keil软件程序字体大小设置 1、打开软件进入主界面,在工具栏中找到“扳手”图标点击确定。如下图所示 2、进入到设置窗口如下图所示 3、把设置窗口切换到“Color&Front”一栏中。如下图所示 4、再“Color&Front”列表中选中“8051:EditCflies”再选中右边的“Text”进入到编辑窗口。如下图所示 5、再Front栏中点击“CourierNew”进入到到字体设置窗口 6、在这我们看到原来的字体大小是12,那么我们设置成14看看效果怎样,点击确定设置完成。如下图 7、回到编辑窗口看小效果如何 8、看到字体明显比以前大很多。就这简单几步完成设置 以上便是小编此次为大家带来的所有内容,希望大家喜欢。

    时间:2019-12-27 关键词: keil 单片机编程软件 忽略警告

  • 74HC138译码器原理功能分析

    74HC138译码器原理功能分析

    译码器 码器(decoder)是一类多输入多输出组合逻辑电路平安真人视讯娱乐网,其可以分为:变量译码和显示译码两类。变量译码器一般是一种较少输入变为较多输出的平安真人视讯娱乐网,常见的有n线-2^n线译码和8421BCD码译码两类;显示译码器用来将二进制数转换成对应的七段码,一般其可分为驱动LED和驱动LCD两类。 译码器分类 译码器的种类很多,但它们的工作原理和分析设计方法大同小异,其中二进制译码器、二-十进制译码器和显示译码器是三种最典型,使用十分广泛的译码电路。 二进制码译码器,也称最小项译码器,N中取一译码器,最小项译码器一般是将二进制码译为十进制码; 代码转换译码器,是从一种编码转换为另一种编码; 显示译码器,一般是将一种编码译成十进制码或特定的编码,并通过显示平安真人视讯娱乐网将译码器的状态显示出来。 大家都知道74hc138是一个译码器,那么什么是译码器,74hc138又有怎样的功能呢?本文将主要介绍的是关于74hc138的的原理功能解析,帮助你更深的了解74hc138元平安真人视讯娱乐网。 74HC138是一款高速CMOS平安真人视讯娱乐网,74HC138引脚兼容低功耗肖特基TTL(LSTTL)系列。74HC138译码器可接受3位二进制加权地址输入(A0, A1和A2),并当使能时,提供8个互斥的低有效输出(Y0至Y7)。74HC138特有3个使能输入端:两个低有效(E1和E2)和一个高有效(E3)。除非E1和E2置低且E3置高,否则74HC138将保持所有输出为高。 在我们设计单片机电路的时候,单片机的 IO 口数量是有限的,有时并满足不了我们的设计需求,比如我们的 STC89C52 一共有32个 IO 口,但是我们为了控制更多的平安真人视讯娱乐网,就要使用一些外围的数字芯片,这种数字芯片由简单的输入逻辑来控制输出逻辑,比如 74HC138 这个三八译码器,图1是 74HC138 在我们原理图上的一个应用。 图1 74HC138 应用原理图 从这个名字来分析,三八译码器,就是把3种输入状态翻译成8种输出状态。从图1所能看出来的,74HC138 有1~6一共是6个输入引脚,但是其中4、5、6这三个引脚是使能引脚。使能引脚和我们前边讲 74HC245 的 OE 引脚是一样的,这三个引脚如果不符合规定的输入要求,Y0 到 Y7 不管你输入的1、2、3引脚是什么电平状态,总是高电平。所以我们要想让这个 74HC138 正常工作,ENLED 那个输入位置必须输入低电平,ADDR3 位置必须输入高电平,这两个位置都是使能控制端口。不知道大家是否记得我们第二课的程序有这么两句 ENLED = 0;ADDR3 = 1;就是控制使这个 74HC138 使能的。 这类逻辑芯片,大多都是有使能引脚的,使能符合要求了,那下面就要研究控制逻辑了。对于数字平安真人视讯娱乐网的引脚,如果一个引脚输入的时候,有0和1两种状态;对于两个引脚输入的时候,就会有00、01、10、11这四种状态了,那么对于3个输入的时候,就会出现8种状态了,大家可以看下边的这个真值表——图2,其中输入是 A2、A1、A0 的顺序,输出是从Y0、Y1.。..。.Y7 的顺序。 图3-16 74HC138 真值表 从图2可以看出,任一输入状态下,只有一个输出引脚是低电平,其他的引脚都是高电平。 74HC138的应用 一般在单片机电路中,为了掌握更多的平安真人视讯娱乐网,就要运用一些核心的数字芯片,这种数字芯片由复杂的输出逻辑来掌握输入逻辑,比方 74HC138这个三八译码器,图 1 是 74HC138 在我们道理图上的一个使用。 74HC138应用原理图 从这个名字来剖析,三八译码器,就是把 3 种输出形态翻译成 8 种输入形态。从图 3-15所能看出来的,74HC138 有 1~6 一共是 6 个输出引脚,然则个中 4、5、6 这三个引脚是使能引脚。使能引脚和我们前边讲 74HC245 的 OE 引脚是一样的,这三个引脚假如不契合规则的输出请求,Y0 到 Y7 不论你输出的 1、2、3 引脚是什么电平形态,老是高电平。所以我们要想让这个 74HC138 正常任务,ENLED 谁人输出地位必需输出低电平,ADDR3 地位必需输出高电平,这两个地位多是使能掌握端口。不晓得人人能否记得我们第二课的程序有这么两句 ENLED = 0;ADDR3 = 1;就是掌握使这个 74HC138 使能的。 这类逻辑芯片,大多多是有使能引脚的,使能契合请求了,那下面就要研讨掌握逻辑了。关于数字平安真人视讯娱乐网的引脚,假如一个引脚输出的时分,有 0 和 1 两种形态;关于两个引脚输出的时分,就会有 00、01、10、11 这四种形态了,那么关于 3 个输出的时分,就会呈现 8 种形态了,人人可以看下边的这个真值表——图 3-16,个中输出是 A2、A1、A0 的次序,输入是从Y0、Y1.。..。.Y7 的次序。 74HC138在任一输出形态下,只要一个输入引脚是低电平,其他的引脚多是高电平。在后面的电路中我们曾经看到,8 个 LED 小灯的总开关三极管 Q16 基极的掌握端是LEDS6,也就是 Y6 输入一个低电平的时分,可以守旧三极管 Q16,从右侧的愿望输入的后果,我们可以推导出我们的 A2、A1、A0 的输出形态应当是 110,如下图: 那么我们再全体捋一遍点亮 LED 小灯的进程,起首看 74HC138,我们要让 LEDS6 为低电平才干导通三极管 Q16,所以 ENLED = 0;ADDR3 = 1;包管 74HC138 使能。然后 ADDR2 =1; ADDR1 = 1; ADDR0 = 0;如许包管了三极管 Q16 这个开关守旧,5V 电源加到 LED 上。 而 74HC245 左侧是经过 P0 口掌握,我们让 P0.0 引脚等于 0,就是 DB_0 等于 0,而右侧 DB0 等于 DB_0 的形态,也是 0,那么如许在这一排共 8 个 LED 小灯傍边,只要最右侧的小灯和 5V 之间有压差,有压差就会有电流畅过,有电流畅过我们的 LED2 就会发光了。

    时间:2019-12-24 关键词: 138译码器 74hc138译码器

首页  上一页  1 2 3 4 5 6 7 8 9 10 下一页 尾页