当前位置:首页 > 单片机
  • 单片机C语言如何产生随机数

    单片机C语言如何产生随机数

    随机数在单片机的应用中也是很多的,当然产生随机数的方法有很多,当中有一个就是利用单片机定时器,取出未知的定时器THX和TLX的值,再加以运算得到一个规定范围内的随机数值。这做法也是可行的。或者预先写好一个随机数表,然后进行取数据。也是可以的。 KEIL里面产生随机数的函数确实是rand(),但头文件是stdlib.h,不是time.h。C语言提供了一些库函数来实现随机数的产生。C语言中有三个通用的随机数发生器,分别为 rand函数, random函数, randomize 函数;但是rand函数产生的并不是真意正义上的随机数,是一个伪随机数,是根据一个数,称之为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非破坏了系统,为了改变这个种子的值,C提供了srand()函数,它的原形是void srand( int a);在调用rand函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。一般用for语句来设置种子的个数。 单片机产生随机数的两种方法 方法一:定时器直接随机取值 每按一次按键生成一个随机数,这个随机数实际是把定时器的值给取出来了,并不能算绝对的随机、方法二才是真正意义上的随机。 方法二:用定时器加rand()随机函数来实现   单片机上电之后通过按键去启动取随机数,若是单片机上电就立即取随机数的话,那每次上电随机的结果都是一样的。然后是0 到9不重复的随机数,程序中用了循环来判断是否和前面取的随机数相同,相同则进入,下次取随机数,不同则存入数组。

    时间:2019-05-26 关键词: 单片机 C语言 基础教程 随机数

  • 为何Cortex-M处理器无法运行linux

    为何Cortex-M处理器无法运行linux

    单片机与应用处理器的核心区别到底是什么呢?是核心主频的差异?还是Linux系统的支持?又或者是处理器的架构?本文将以NXP的Cortex-M系列为例做简要介绍。 一、Cortex-M的定位 处理器的体系结构定义了指令集(ISA)和基于这一体系结构下处理器的程序员模型,通俗来讲就是相同的ARM体系结构下的应用软件是兼容的。从ARMv1到ARMv8,每一次体系结构的修改都会添加实用技术。 在ARMv7版本中,内核架构首次从单一款式变成3种款式。Cortex-M系列属于ARMv7结构下的一个款式:款式M。款式M包含的处理器有Cortex-M0、Cortex-M1、Cortex-M3、Cortex-M4以及Cortex-M7,以上处理器常被用于低成本、低功耗、高可靠的嵌入式实时系统中。它们既可以用于“裸片”开发又能运行实时操作系统,比如us/os-ll、VxWorks以及Aworks(致远电子开发)等。     图1 ARMv7下的Cortex系列 ● 款式A:高性能的处理器级平台,性能比肩计算机。 ● 款式R:定位应用于高端嵌入式系统,高可靠及高时效性。 ● 款式M:用于深度嵌入、定制的嵌入式系统。 值得注意的是,Cortex-M下的处理器没有内存管理单元MMU。 二、内存管理单元MMU 内存管理单元简称MMU,它负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查。在多用户、多进程的操作系统中,MMU使得各个用户进程都有独立的地址空间。     图2 MMU的地位 任何微控制器都存在一个程序能够产生的地址集和,被称为虚拟地址范围。以32为机为例,虚拟地址范围为0~0xFFFFFFFF (4G)。当该控制器寻址一个256M的内存时,它的可用地址范围被限定为0x00000000~0x0FFFFFFF(256M)。在没有MMU的控制器中,虚拟地址被直接发送到内存总线上,以读写该地址下的物理存储器。在拥有MMU的控制器中,虚拟地址首先被发送到MMU中,被映射为物理地址后再发送到内存总线上。     图3 内存管理机制 注:上图仅简单反映内存管理的映射机制,权限映射、TLB快表、页表等概念不做深入讨论。 虚拟内存管理最主要的作用是让每个进程有独立的地址空间。不同进程中的同一个虚拟地址被MMU映射到不同的物理地址,并且在某一个进程中访问任何地址都不可能访问到另外一个进程的数据,这样使得任何一个进程由于执行错误指令或恶意代码导致的非法内存访问都不会意外改写其它进程的数据,不会影响其它进程的运行,从而保证整个系统的稳定性。另一方面,每个进程都认为自己独占整个虚拟地址空间,这样链接器和加载器的实现会比较容易,不必考虑各进程的地址范围是否冲突。 三、linux系统 一般将操作系统分为实时操作系统和非实时操作系统。实时操作系统大多为单进程、多线程(多任务),因此不涉及到线程间的地址空间分配,不需要使用MMU,例如VxWorks。Linux系统属于非实时性操作体统,多进程是其主要特点。 以Ubuntu为例,打开一个shell并且查看bash进程的地址范围如图4,它的地址范围为0x0000000000400000~0xffffffffff600000。     图4 shell 1中的bash地址 我们打开另一个shell,查看该shell中bash进程的地址范围,如图5。不难发现,两个不同bash进程的地址范围完全相同。其实操作系统或者用户在fork()进程时完全不需要考虑物理内存的地址分配,该工作由微控制器的内存管理单元MMU来做。     图5 shell 2中的bash地址 既然是多进程依赖了内存管理单元,那么在使用嵌入式linux时只开一个进程可以吗?肯定是不可行的!开机后即使用户什么都不做,可见的系统运行必须的进程已经运行了几十至上百个,如图6。     图6 进程树 四、总结 综合以上内容,linux系统对内存管理单元有极强的依赖,若在没有MMU的处理器中运行linux,恐怕整个系统只能停留在Uboot阶段了。由于Cortex-m处理器没有内存管理单元,因此跑不了linux系统。任何事情都不是绝对的,如果你重写了linux内核且搭配足够大的内存芯片,从理论上来说是可以省掉MMU的。但是,这样的工作量,真的值得吗?实际上,MMU就是为了解决操作系统越来越复杂的内存管理而产生的。

    时间:2019-06-02 关键词: ARM Linux 单片机 基础教程

  • AVR单片机特性简介

    AVR单片机特性简介

     一、 AVR单片机简介 1.1、AVR的诞生 AVR单片机是ATMEL公司在1997年研发的增强型内置Flash的RISC精简指令集高速单片机。可以广泛应用于计算机外部设备、工业实时控制、仪器仪表、通讯设备、家用电器等各个领域。 1.2、AVR的特点 采用RISC精简指令系统 RISC(精简指令系统计算机)是相对于CISC(复杂指令系统计算机)而言的。RISC 并非只是简单地去减少指令,而是通过将计算机的结构变得更加简单合理来提高计算机的运算速度,目前市面上常见的微控制器大部分都使用的是RISC指令集,包括AVR以及ARM等。RISC优先选取使用频率最高的简单指令,避免复杂指令,并固定指令宽度,减少指令格式和寻址方式的种类,从而缩短指令周期,提高运行速度。由于AVR 采用RISC的这种结构,使AVR系列单片机都具备了1MIPS/MHz(百万条指令每秒/兆赫兹)的高速处理能力。可以适用于对计算能力要求更高的场景下。 采用内嵌高质量的Flash程序存储器 高质量的Flash擦写方便,支持ISP和IAP,便于产品的调试、开发、生产、更新。内嵌长寿命的EEPROM可以长期保存关键数据,避免断电丢失。片内大容量的RAM不仅能满足一般场合的使用,同时更有效的支持使用高级语言开发系统程序,并可像MCS-51单片机那样扩展外部RAM。 I/O管脚全部带可设置的上拉电阻 这样的话可以单独设定为输入/输出、可设定(初始)高阻输入、驱动能力强(可省去功率驱动器件)等特性,使的得I/O口资源灵活、功能强大、可充分利用。 片内具备多种独立的时钟分频器 可分别供URAT、I2C、SPI使用。其中与8/16位定时器配合的具有多达10位的预分频器,可通过软件设定分频系数提供多种档次的定时时间。 增强性的高速USART 具有硬件产生校验码、硬件检测和校验、两级接收缓冲、波特率自动调整定位、屏蔽数据帧等功能,提高了通信的可靠性,方便程序编写,更便于组成分布式网络和实现多机通信系统的复杂应用,串口功能大大超过MCS-51单片机的串口,并且由于AVR单片机速度快,中断服务时间短,故可实现高波特率通讯。 稳定的系统可靠性 AVR单片机有自动上电复位电路、独立的看门狗电路、低电压检测电路BOD,多个复位源(自动上下电复位、外部复位、看门狗复位、BOD复位),可设置的启动后延时运行程序,增强了嵌入式系统的可靠性。 二、 AVR单片机系列简介 AVR单片机系列齐全,可适用于各种不同场合的要求,共有3个档次,分别为: 低档Tiny系列:主要有Tiny11/12/13/15/26/28等; 中档AT90S系列:主要有AT90S1200/2313/8515/8535等;(正在淘汰或转型到Mega中) 高档ATmega:主要有ATmega8/16/32/64/128(存储容量为8/16/32/64/128KB)以及ATmega8515/8535等。 AVR器件引脚从8脚到64脚不等,还有各种不同封装可供用户根据实际情况进行选择选择。 三、 AVR单片机的优势 哈佛结构,具备1MIPS / MHz的高速运行处理能力; 超功能精简指令集(RISC),具有32个通用工作寄存器,克服了如8051 MCU采用单一ACC进行处理造成的瓶颈现象; 快速的存取寄存器组、单周期指令系统,大大优化了目标代码的大小、执行效率,部分型号FLASH非常大,特别适用于使用高级语言进行开发; 作输出时与PIC的HI/LOW相同,可输出40mA,作输入时可设置为三态高阻抗输入或带上拉电阻输入,具备10mA-20mA灌电流的能力; 片内集成多种频率的RC振荡器、上电自动复位、看门狗、启动延时等功能,外围电路更加简单,系统更加稳定可靠; 大部分AVR片上资源丰富:带E2PROM,PWM,RTC,SPI,UART,TWI,ISP,AD,Analog Comparator,WDT等; 大部分AVR除了有ISP功能外,还有IAP功能,方便升级或销毁应用程序。 四、 AVR单片机的应用 基于AVR单片机的优秀的性能与以上的特点,可以看出,AVR单片机目前可以适用于大部分嵌入式应用场景中,同时由于AVR单片机的封装形式多样,可以用于教学当中,例如使用双列直插型单片机可以让学生自己动手设计焊接一个单片机的最小系统,学习软硬件技术。

    时间:2019-06-08 关键词: 嵌入式 单片机 AVR 基础教程

  • 单片机系统软件如何抗干扰的方法

    单片机系统软件如何抗干扰的方法

    在提高硬件系统抗干扰能力的同时,软件抗干扰以其设计灵活、节省硬件资源、可靠性好越来越受到重视。下面以MCS-51单片机系统为例,对微机系统软件抗干扰方法进行研究。1软件抗干扰方法的研究在工程实践中,软件抗干扰研究的内容主要是:一、消除模拟输入信号的嗓声(如数字滤波技术);二、程序运行混乱时使程序重入正轨的方法。本文针对后者提出了几种有效的软件抗干扰方法。1.1指令冗余CPU取指令过程是先取操作码,再取操作数。当PC受干扰出现错误,程序便脱离正常轨道“乱飞”,当乱飞到某双字节指令,若取指令时刻落在操作数上,误将操作数当作操作码,程序将出错。若“飞”到了三字节指令,出错机率更大。在关键地方人为插入一些单字节指令,或将有效单字节指令重写称为指令冗余。通常是在双字节指令和三字节指令后插入两个字节以上的NOP.这样即使乱飞程序飞到操作数上,由于空操作指令NOP的存在,避免了后面的指令被当作操作数执行,程序自动纳入正轨。此外,对系统流向起重要作用的指令如RET、RETI、LCALL、LJMP、JC等指令之前插入两条NOP,也可将乱飞程序纳入正轨,确保这些重要指令的执行。1.2拦截技术所谓拦截,是指将乱飞的程序引向指定位置,再进行出错处理。通常用软件陷阱来拦截乱飞的程序。因此先要合理设计陷阱,其次要将陷阱安排在适当的位置。1.2.1软件陷阱的设计当乱飞程序进入非程序区,冗余指令便无法起作用。通过软件陷阱,拦截乱飞程序,将其引向指定位置,再进行出错处理。软件陷阱是指用来将捕获的乱飞程序引向复位入口地址0000H的指令。通常在EPROM中非程序区填入以下指令作为软件陷阱:NOPNOPLJMP 0000H其机器码为0000020000.1.2.2陷阱的安排通常在程序中未使用的EPROM空间填0000020000.最后一条应填入020000,当乱飞程序落到此区,即可自动入轨。在用户程序区各模块之间的空余单元也可填入陷阱指令。当使用的中断因干扰而开放时,在对应的中断服务程序中设置软件陷阱,能及时捕获错误的中断。如某应用系统虽未用到外部中断1,外部中断1的中断服务程序可为如下形式:NOPNOPRETI返回指令可用“RETI”,也可用“LJMP 0000H”。如果故障诊断程序与系统自恢复程序的设计可靠、完善,用“LJMP 0000H”作返回指令可直接进入故障诊断程序,尽早地处理故障并恢复程序的运行。考虑到程序存贮器的容量,软件陷阱一般1K空间有2-3个就可以进行有效拦截。1.3软件“看门狗”技术若失控的程序进入“死循环”,通常采用“看门狗”技术使程序脱离“死循环”。通过不断检测程序循环运行时间,若发现程序循环时间超过最大循环运行时间,则认为系统陷入“死循环”,需进行出错处理。“看门狗”技术可由硬件实现,也可由软件实现。在工业应用中,严重的干扰有时会破坏中断方式控制字,关闭中断。则系统无法定时“喂狗”,硬件看门狗电路失效。而软件看门狗可有效地解决这类问题。笔者在实际应用中,采用环形中断监视系统。用定时器T0监视定时器T1,用定时器T1监视主程序,主程序监视定时器T0.采用这种环形结构的软件“看门狗”具有良好的抗干扰性能,大大提高了系统可靠性。对于需经常使用T1定时器进行串口通讯的测控系统,则定时器T1不能进行中断,可改由串口中断进行监控(如果用的是MCS-52系列单片机,也可用T2代替T1进行监视)。这种软件“看门狗”监视原理是:在主程序、T0中断服务程序、T1中断服务程序中各设一运行观测变量,假设为MWatch、T0Watch、T1Watch,主程序每循环一次,MWatch加1,同样T0、T1中断服务程序执行一次,T0Watch、T1Watch加1.在T0中断服务程序中通过检测T1Watch的变化情况判定T1运行是否正常,在T1中断服务程序中检测MWatch的变化情况判定主程序是否正常运行,在主程序中通过检测T0Watch的变化情况判别T0是否正常工作。若检测到某观测变量变化不正常,比如应当加1而未加1,则转到出错处理程序作排除故障处理。当然,对主程序最大循环周期、定时器T0和T1定时周期应予以全盘合理考虑。限于篇幅不赘述。2系统故障处理、自恢复程序的设计单片机系统因干扰复位或掉电后复位均属非正常复位,应进行故障诊断并能自动恢复非正常复位前的状态。2.1非正常复位的识别程序的执行总是从0000H开始,导致程序从0000H开始执行有四种可能:一、系统开机上电复位;二、软件故障复位;三、看门狗超时未喂狗硬件复位;四、任务正在执行中掉电后来电复位。四种情况中除第一种情况外均属非正常复位,需加以识别。2.1.1硬件复位与软件复位的识别此处硬件复位指开机复位与看门狗复位,硬件复位对寄存器有影响,如复位后PC=0000H,SP=07H,PSW=00H等。而软件复位则对SP、SPW无影响。故对于微机测控系统,当程序正常运行时,将SP设置地址大于07H,或者将PSW的第5位用户标志位在系统正常运行时设为1.那么系统复位时只需检测PSW.5标志位或SP值便可判此是否硬件复位。图1是采用PSW.5作上电标志位判别硬、软件复位的程序流程图。图1硬、软件复位识别流程图此外,由于硬件复位时片内RAM状态是随机的,而软件复位片内RAM则可保持复位前状态,因此可选取片内某一个或两个单元作为上电标志。设40H用来做上电标志,上电标志字为78H,若系统复位后40H单元内容不等于78H,则认为是硬件复位,否则认为是软件复位,转向出错处理。若用两个单元作上电标志,则这种判别方法的可靠性更高。2.1.2开机复位与看门狗故障复位的识别开机复位与看门狗故障复位因同属硬件复位,所以要想予以正确识别,一般要借助非易失性RAM或者EEROM.当系统正常运行时,设置一可掉电保护的观测单元。当系统正常运行时,在定时喂狗的中断服务程序中使该观测单元保持正常值(设为AAH),而在主程中将该单元清零,因观测单元掉电可保护,则开机时通过检测该单元是否为正常值可判断是否看门狗复位。2.1.3正常开机复位与非正常开机复位的识别识别测控系统中因意外情况如系统掉电等情况引起的开机复位与正常开机复位,对于过程控制系统尤为重要。如某以时间为控制标准的测控系统,完成一次测控任务需1小时。在已执行测控50分钟的情况下,系统电压异常引起复位,此时若系统复位后又从头开始进行测控则会造成不必要的时间消耗。因此可通过一监测单元对当前系统的运行状态、系统时间予以监控,将控制过程分解为若干步或若干时间段,每执行完一步或每运行一个时间段则对监测单元置为关机允许值,不同的任务或任务的不同阶段有不同的值,若系统正在进行测控任务或正在执某时间段,则将监测单元置为非正常关机值。那么系统复位后可据此单元判系统原来的运行状态,并跳到出错处理程序中恢复系统原运行状态。2.2非正常复位后系统自恢复运行的程序设计对顺序要求严格的一些过程控制系统,系统非正常复位否,一般都要求从失控的那一个模块或任务恢复运行。所以测控系统要作好重要数据单元、参数的备份,如系统运行状态、系统的进程值、当前输入、输出的值,当前时钟值、观测单元值等,这些数据既要定时备份,同时若有修改也应立即予以备份。当在已判别出系统非正常复位的情况下,先要恢复一些必要的系统数据,如显示模块的初始化、片外扩展芯片的初始化等。其次再对测控系统的系统状态、运行参数等予以恢复,包括显示界面等的恢复。之后再把复位前的任务、参数、运行时间等恢复,再进入系统运行状态。应当说明的是,真实地恢复系统的运行状态需要极为细致地对系统的重要数据予以备份,并加以数据可靠性检查,以保证恢复的数据的可靠性。其次,对多任务、多进程测控系统,数据的恢复需考虑恢复的次序问题,笔者实际应用的数据恢复过程流程图如图2所示。图2系统自恢复程序流程图图中恢复系统基本数据是指取出备份的数据覆盖当前的系统数据。系统基本初始化是指对芯片、显示、输入输出方式等进行初始化,要注意输入输出的初始化不应造成误动作。而复位前任务的初始化是指任务的执行状态、运行时间等。3结束语对于软件抗干扰的一些其它常用方法如数字滤波、RAM数据保护与纠错等,限于篇幅,本文未作讨论。在工程实践中通常都是几种抗干扰方法并用,互相补充完善,才能取得较好的抗干扰效果。从根本上来说,硬件抗干扰是主动的,而软件是抗干扰是被动的。细致周到地分析干扰源,硬件与软件抗干扰相结合,完善系统监控程序,设计一稳定可靠的单片机系统是完全可行的。

    时间:2018-06-11 关键词: CPU 单片机 软件抗干扰 技术教程 软件陷阱

  • 单总线数据传输详解

    单总线数据传输详解

    纯单片机干不了大事,必须得配上各种外设,那么了解单片机与传感器之间的数据通信就显得必不可少了。常见的单片机数据通信方式有SPI,IIC,RS232,单总线等等。每种通信方式都有相应的时序图,分析时序图并完成代码的编写是单片机学习者的必修课。本文以DS18B20为例分析一下单总线数据传输。 DS18B20是单总线数据传输,因此对于时序的要求就非常的高,学会分析其时序图是非常有必要的。     1.初始化时序图分析:     首先是由总线控制器拉低总线,维持480us。在480us后释放总线,由上拉电阻讲总线拉高。等待5-60us后,DS18B20开始响应,会将数据总线拉低60-240us.之后便释放总线,由上拉电阻拉高总线。转换为代码如下: u8dsbInit()//初始化,返回0表示DS18B20无反应,反之有响应 { dsbDQStat(0);//控制器拉低总线 delay500us();//拉低总线一段时间 dsbDQStat(1);//释放总线 delay60us();//等待DS18B20响应 if(dsb_DQ)//如果没有相应直接返回0 { return0; } delay240us();//有响应则等待响应结束 return1;//返回初始化状态 } 2.读时序图分析:     首先由控制器将总线拉低>1us的时间,此时控制器释放总线,如果此时控制器采样为低电平,那么读到的值便是0,如果为高电平,则读到的值为1。注意图中标有一个15us,其意思便是控制器采样在15us内完成。15us后是由上拉电阻将总线拉高维持45us。整个读周期为15+45=60us。这个周期的时间也是得控制的。转换为代码如下: u8dsbReadByte()//读出一个字节的数据,从低位开始读取 { u8i,tmp=0; for(i=0;i<8;i++) { dsbDQStat(0);//控制器拉低总线 tmp>>=1;//低位开始读 dsbDQStat(1);//释放总线 if(dsb_DQ)tmp|=0x80; delay15us(); delay45us();//控制周期时间 } returntmp; } 3.写时序图分析:     首先由控制器拉低总线15us,之后,如果要写入0,则继续拉低总线并为此45us.如果要写入1则释放总线由上拉电阻拉高总线,也为此45us。写时序相对比较简单,转换为代码如下: voiddsbWriteByte(u8dat)//写一个字节的数据,从低位开始 { u8i; for(i=0;i<8;i++) { dsbDQStat(0);//控制器拉低总线 delay15us();//维持15us if(dat&0x01)dsbDQStat(1); elsedsbDQStat(0); dat>>=1; delay45us(); dsbDQStat(1);//45us后释放总线 } } DS18B20的三个时序图就分析完了,DS18B20只是单总线数据通信中的一个例子,大家了解了DS18B20时序图的分析,那么就可以试试分析DHT11的时序图完成其初始化函数,以及读数据函数。

    时间:2019-06-19 关键词: 单片机 时序图 总线传输 技术教程

  • 基于AT89C51的电动自行车快速充电器设计

    基于AT89C51的电动自行车快速充电器设计

    一、引言电动自行车由于具有无污染无噪音、轻便美观等特点,受到众多使用者的青睐。但在使用中也暴露出它的局限性,如有半路电池耗尽,且随着使用时间的递增,电池使用寿命会逐渐缩短。本文旨在研究开发一个根据电池饱和的程度智能改变充电模式,并可在较短时间(四小时)内将电池充好的电动自行车快速充电器(电池规格36V、12A)。二、脉冲快速充电法脉冲充电方式即脉冲电流间歇对电池充电,充电脉冲使蓄电池充满电量,而间歇期使蓄电池经化学反应产生的氧气和氢气有时间重新化合而被吸收掉,消除极化从而减轻了蓄电池的内压,使下一脉冲的恒流充电能够顺利地进行,使蓄电池可以吸收更多的电量。间歇脉冲使蓄电池有较充分的反应时间,减少了析气量,提高了蓄电池的充电电流接受率。三、系统组成充电器主电路采用半桥变换式高频开关稳压电源,而控制电路由单片机实现。电网交流电在通过EMI滤波器除去共模信号后,进行桥式整流,再通过两电容分压后与两开关管V1、V2相联接,将正弦交流电压变换成约高于充电电压的脉冲电压。在经过半桥滤波和LC滤波电路使电压达到一较稳定值。控制电路由单片机AT89C51组成,电源由电网交流电经过变压器变压、全桥整流、稳压管稳压后提供。单片机通过检测温度传感器的电压信号,以软件的方式控制输出脉冲,从而控制开关管的通断。另外,通过检测充电电压和电流值,控制单片机输出脉冲宽度,以进入不同的充电阶段。(一)半桥变换式高频开关稳压电源半桥变换电路如图1(a)所示,各点输出电压波形如图1(b)所示。半桥式变换电路的主要优点是其抗不平衡性,且使用的功率开关管的耐压较低,不会超过输入电压的峰值;晶体管的饱和电压也降至最低;输入滤波电容的耐压也可以减小。图1半桥变换电路1(a)各点输出电压波形1(b)(二)单片机控制单片机电路设计,选用AT89C51单片机的P1口作为输入输出口,温度传感器所检测的温度信号通过单片机的P3.2口输入,电压信号由P3.1口输入。输出信号由单片机的P1.1~P1.5提供。具体分布情况见下表。(三)整体电路设计电动自行车快速充电器电路主要分为三部分:主电路、控制电路和检测电路。主电路由桥式整流电路和半桥逆变电路组成。控制电路由单片机AT89C51来实现,单片机通过检测来的电压信号值作出相应的动作:输出不同宽度的脉冲电压和作出不同指示。检测电路有温度检测电路和电压检测电路。温度用温度传感器实现,电压检测由分压电阻实现。主电路图如图2所示。图2主电路图四、结论本文介绍了一种基于AT89C51单片机控制的电动自行车快速充电器的电路工作原理和实现方法。该充电器具有自动化程度高、运行费用低、工作可靠等优点。经检测,样机充电效率高、充电速度快,而且损耗少、成本低。

    时间:2018-09-27 关键词: 电动自行车 快速充电器 单片机 at89c51 设计教程 lc滤波电路

  • 沐浴加热节水器设计方案,包含源代码

    沐浴加热节水器设计方案,包含源代码

    背景:在现代的生活中,洗浴已经是人们必不可少的是组成部分,由于快速的生活节奏我们洗浴的方式大多数是选择淋浴的方式,在这种方式下,我们经常会遇到这样的情况:刚打开淋浴的时候,前端的水并不是我们洗浴的舒适温度,夏天还好一些,而到了冬天,我们碰到这种情况,最直接的选择就是将它白白放掉。目的:在这种背景下,我们团队就觉得很有必要设计一种,利用我们洗澡时放掉的那一段水资源,而利用的最直接的方式就是将它加热变为我们洗浴的舒适温度范围,可是一直加热又会浪费电能源,所以我们又想到了温度控制,通过使用温度采集的方法,来时的加热的温度控制在一定的洗浴舒适的范围之内,也通过控制加热的温度来控制加热器的开与断,而使得电能得到合理的使用,从而达到即节约了水资源,又合理利用能源的目的。系统原理和技术代码:dispbuf[i]=temp;if(getdata<77){lowflag=1;highflag=0;}else if(getdata>153){lowflag=0;highflag=1;}else{lowflag=0;highflag=0;}ST=1;ST=0;}P1=dispcode[dispbuf[dispcount]];P2=dispbitcode[dispcount];dispcount++;if(dispcount==8){dispcount=0;}if((lowflag==1) && (highflag==0)){cnta++;if(cnta==800){cnta=0;alarmflag=~alarmflag;}if(alarmflag==1){SPK=~SPK;}}else if((lowflag==0) && (highflag==1)){cntb++;if(cntb==400){cntb=0;alarmflag=~alarmflag;}if(alarmflag==1){SPK=~SPK;}}else{alarmflag=0;cnta=0;cntb=0;}}首先要经过测算,算出大多数的水管的平均横截面积,在测出单位时间内谁的流速是多少,然后依据,(其中Qv是水的流量,V代表体积、v代表流速、S代表横截面积)算出水的流量是多少,再依据水的比热容算出我们需要给谁提供的最小焦耳热量。我们用单片机来控制电加热器,通过使用温度传感器,来进行温度的采样,通过温度采样来的数据来进行内部的控制,首先我们知道加热需要一定的加热装置,通过焦耳热的计算公式:可知我们如果需要快速加热就需要控制加热器的电流和他的电阻,然后再依据此来挑选加热装置即可。简单的温度控制电路方案:系统框图:流程图:

    时间:2018-09-28 关键词: 温度传感器 单片机 电加热器 设计教程 加热节水器

  • 基于STC12C5A60S2的多功能测量系统设计

    基于STC12C5A60S2的多功能测量系统设计

    0 引言随着电子技术的发展,居民普遍使用电子温度计或万年历自带的温度计来测量室内温度,但是,随着环境污染的日趋严重及人们对生活质量要求的提高,人们对室内湿度、二氧化碳浓度及光照强度的检测也逐渐关注。然而,目前为止适用于家居型检测湿度、光照强度及CO2浓度还没有一种合适且适用的仪器。小型仓库中传统的方法是采用湿度表、双金属式测量计和湿度试纸等测试器材,通过人工进行检测,对不符合温度和湿度要求的库房进行通风、去湿和降温等工作。这种人工测试方法费时费力、效率低,且测试的温度及湿度误差大、随机性大。因此我们需要一种性价比较高的温湿度测量仪。本文设计研制一种新颖、方便、实用、结构简单的多功能测量仪,适用于家庭、仓库以及温室等需要环境检测的地方。设计通过LCD显示所监测的结果,用户可以根据监测结果有效调节相关设备,从而达到理想的环境状态。1 系统设计1.1设计任务本文实现基于STC单片机的多功能测量系统,可以实现湿度检测、温度检测、CO2浓度检测、室内光照强度检测、时间日期显示的功能。其中湿度的测量范围为20~90%RH;温度的检测范围为-55~+125℃;CO2浓度测量范围为350~10000ppmCO2;室内光照强度的测量范围为0~2500lux;系统显示当前时间和日期,并可以通过按键进行修改当前时间日期。1.2设计方案及工作原理多功能检测系统包括:电源模块、控制器、温度检测模块、湿度检测模块、照度检测模块,CO2浓度检测模块、时钟模块、键盘输入模块、LCD显示模块。如图1所示。本控制系统以STC12C5A60S2单片机为控制核心,该单片机具有高速、低功耗、超强抗干扰的特点,并且自带8路10位精度AD转换;温湿度检测由数字式的温度检测传感器DS18B20和湿度检测传感器DTH11实现,由于数字式传感器输出为数字量,因此在数据处理方面比较简单,且这两款传感器的性价比较高;时钟模块则是应用了比较常用的DS1302时钟芯片,通过控制器与时钟芯片的通讯实现得到比较准确的时间值,另外,通过按键操作实现对时钟的校准;而对于照度和CO2浓度的检测则比较复杂,由于硅光电池和CO2检测传感器输出信号是微弱的模拟信号,因此需要对得到的小信号进行调理,调理后的信号信息送入单片机的AD口,从而得到单片机可以处理的数字量;所有检测结果及日期时间的显示都是由LCD实现;由于信号调理电路中放大器采用双电源供电,因此电源模块选用了交流220V转±5V的电源模块。2 硬件电路设计2.1控制电路系统的控制电路是以STC12C5A60S2单片机为控制核心构成的最小系统。另外,为方便程序下载,设计了基于CH340的程序下载接口电路,电路图如图2所示。2.2检测电路根据传感器输出信号的不同,可分为数字式传感器和模拟式传感器两种。信号类型的不同导致了检测电路的不同。2.2.1温湿度检测电路由于温度传感器DS18B20和湿度传感器DTH11均为数字量输出,因此检测电路十分简单,为了防止不确定信号的出现,需在信号的输出端接4.7k的上拉电阻,如图3所示。2.2.2照度及CO2浓度检测电路由于光照检测采用硅光电池,信号为小信号的模拟量输出,因此需要对信号进行调理。CO2传感器MG811的输出同样为模拟量电压小信号。其参数如表1所示。硅光电池测光强的原理是光生伏特效应,即它是一种直接把光能转化成电能的半导体器件,由硅光电池的特性曲线可知,光伏电池输出电流比输出电压的线性性要好,因此在此检测其电流特性。由实验测试可得室内的光照强度一般为0~2500lux,此时硅光电池的输出电流在0~0.15mA左右,在硅光电池两端并联一个100Ω电阻,可得此时的输出电压在0~15mV左右。为了将小信号调理为可以适合单片机处理的信号,对小信号进行放大滤波处理。首先对小信号进行放大处理,这里采用高输入阻抗的差分放大器。其次,放大器输出的信号经过二阶有源低通滤波器。最后信号进入单片机的AD口。信号调理电路如图4所示。(1)差放大电路因为电路中R3=R4,R6=R8=R7=R9,故可导出两级差模总增益为:通常,第一级增益要尽量高,第二级增益一般为1~2倍,这里第一级选择100倍,第二级为1倍。则取R6=R7=R8=R9=10KΩ,要求匹配性好,一般用金属膜精密电阻,阻值可在10KΩ几百KΩ间选择。则先定R5,通常在1~10kΩ内,这里取R5=1kΩ,则可由上式求得R3=99R1=49.5 kΩ。取标称值51kΩ。通常R1和R2不要超过R5/2,这里选R1=R2=510Ω,用于保护运放输入级。A1和A2应选用低温飘、高KCMRR的运放,性能一致性要好。(2)有源低通滤波电路由于滤波电路的输入输出信号为直流信号,因此在计算时选取的截止频率为3Hz.滤波电容C1=C2=1μF.由式(3)(4)可得R=53078Ω,A0=2,所以在此取R10=R11=51k.信号经过信号调理电路后实际放大倍数A=200.而对于CO2传感器,根据输入信号的不同,选择合适R3、R4,其信号调理电路的增益为80. 2.2.3时钟模块本设计选用美国Dallas公司推出的一种高性能、低功耗的实时时钟芯片DS1302,芯片采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。工作电压宽达2.5~5.5V.采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后备电源进行涓细电流充电的能力。电路连接如图5所示。3 软件设计3.1软件系统设计该系统软件主要包括两部分:数据采集和数据显示。当系统上电之后,系统首先进行初始化;然后判断标志位确定当前是否进行时钟设置,如果是,则通过按键调节时钟,如果否,则采集所有数据并进行相应处理;最后将采集来的数据通过LCD显示出来。系统程序框图如图6所示。|3.2部分检测软件设计对于光照强度检测和CO2浓度检测,存在模拟量向数字量的转化,因此需要考虑AD转换器的精度,为了得到较准确的检测值,在此使用STC12C5A60S2自带的10位AD转换接口,即其精度为1/(210-1)。对于光照强度检测,经信号调理电路后的输出电压为0~3V,相应的光照强度为0~2500lux,假设AD转换后的值为A,则此时对应的光照强度为E,如式(5)。化简得:E=(12500×A)/3069.因此,通过程序编写可以实现对光照强度的检测。4 结论设计了基于STC12C5A60S2的多功能测量系统,通过理论分析与实际电路焊接以及相关程序的编写,设计出了实物。通过测试实现了温湿度检测、CO2浓度检测、室内照度检测、时钟显示的功能。实验结果良好,测量精度在实际计算误差范围内。

    时间:2018-09-28 关键词: 单片机 stc12c5a60s2 设计教程 多功能测量系统

  • 基于DSP和模糊控制的寻线行走机器人设计与实现

    基于DSP和模糊控制的寻线行走机器人设计与实现

    在最近的机器人比赛和电子设计竞赛中,较多参赛题目要求机器人沿场地内白色或黑色指引线行进。一些研究人员提出了基于寻线的机器人设计策略,主要是关注指引线的检测,但对于机器人的整体设计未做说明。本文在总结此类赛事的基础上,提出了一种将DSP(Digital Signal Processor)和CPLD(Complex Programmable Logic Device)作为核心处理器,采用模糊控制策略处理来自检测指引线传感器信号的机器人行走机构的通用性设计方法。 1 车体机械设计 由于机器人比赛对参赛机器人有严格的尺寸限制,需要在有限的空间内合理安排各个机构。本文给出车体最小尺寸时驱动轮、光电传感器以及控制芯片之间的相对位置,如图1所示。 机器人采用双直流步进电机驱动方式,其额定电压为24V。车体的前后端分别安装光电传感器检测板实现指引线的检测。相邻光电传感器距离略小于指引线宽度,保证同时有两个传感器可以检测到指引线。 2 硬件电路设计 这部分主要介绍核心控制器DSP与功能扩展芯片CPLD的连接,简要介绍其它功能模块的硬件实现。系统整体结构如图2所示。 2.1 核心控制器设计 目前,机器人核心控制器多选用单片机。笔者考虑到单片机指令周期长、可用资源少,难以满足机器人实时控制的要求,在综合性价比、开发周期等因素后,核心控制器选用TI公司的电机数字控制专用DSP——TMS320F240(以下简称′F240)。它具有运动控制非常有效的事件管理器,其中包括12路比较/PWM通道,可以非常方便地控制直流电机转速;利用其片内的3个可以工作于6种模式的16位通用定时器,可以完成机器人绝大部分动作的控制;16个10位A/D转换器可以方便地读取模拟信号。由于机器人指引线检测模块返回信号可看作反馈信号,因此机器人驱动电机选用步进电机。通过设置′F240定时器,利用I/O端口输出设定脉冲信号,该信号经步进电机驱动电路使步进电机行进设定距离。具体实现在软件设计部分介绍。′F240的其他片内I/O、PWM端口、A/D都引出输入输出线,方便扩展功能的实现。 从′F240的特点可以看出,′F240可用于实现复杂控制算法和进行复杂的机器人动作控制。然而根据车体设计方案,需要在车体上安装20个光电检测传感器,占用控制器的20个I/O端口。这样,′F240可用于扩展功能的I/O端口大大减少。机器人在比赛中会有比较剧烈的撞击,如设计各种功能数字电路会严重降低控制板的可靠性。此处选用Altera公司的EPM7128作为核心处理器的扩展、模糊控制的输入。为满足DSP与CPLD之间的协同处理,′F240与EPM7128可采用如图2所示的电路连接。′F240的16根数据线和A12~A15共4根地址线连到EPM7128,通过选择信号、写信号和读信号完成对EPM7128的读写操作。EPM7128的I/O端口主要在MAX+PlusⅡ编程环境下通过软件和硬件管脚设置实现。这种DSP+CPLD的结构可以在充分扩展系统功能的同时,使DSP更能发挥其运算功能强大的特点[4]。 稳压电路主要由LM7805芯片组成;信号输入电路由微动开关经反相器71HC14后再送往DSP,微动开关输入电路有去耦电路,输出信号加上拉电阻;显示模块采用MAX7219芯片驱动,八位LED数码管,每个LED对应三个I/O端口。 2.2 光电检测模块 光电检测模块的功能是将指引线准确地检测出来。此处主要借助反射式光藕TCRT5000。这是一种自带发光二极管和光敏三极管的器件,其集电极电流Ic与反射距离d之间有图3所示关系。 TCRT5000的应用电路见如4所示。当检测到绿色地面时,由于反射率不高,Ic1太小,三极管T2截止而输出高电平。当检测到白色地面时,由于反射率较高,Ic1较大,三极管T2饱和而输出低电平,从而实现了白线的检测。555构成了施密特触发器,用于去除反射性光耦产生的噪声和波形的整形。 2.3 动作电机控制电路 在机器人寻线行走过程中,需要完成规定的动作。这些动作的完成不需要控制相应动作电机的转速,本文直接利用I/O输出控制信号驱动固态继电器进而使直流电机动作。固态继电器选用松下电器公司双刀双掷(DPDT)型,型号为DS2Y-S-DC5V。尽管此继电器控制电压为5V,可与TTL的逻辑电平相兼容,但一般TTL芯片的输出电流还达不到其输入电流40mA。集电极开路的门电路(Open Collector Gate,简称OC门)可增大输出电流,并且继电器两控制端的输入电阻刚好可以作为OC门电路输出需要的上拉电阻。具体选用具有OC门结构的芯片ULN2003,它是由7个NPN达林顿管组成的高电压、高电流达林顿驱动器。 因为每个DS2Y-S-DC5V提供两组常开端口,因此如果在两组端口的N.O.端口上分别连上电机电源的正极和地,则可以用两个继电器实现电机的正反转。由于继电器在切换电压时,继电器线圈会产生大的反电动势,需要在继电器切换电压的两端加续流二极管,以消除切换时的电火花,避免出现大的浪涌电流,减少继电器产生的电磁干扰。 3 模糊控制策略 机器人的设计思想是利用光电检测传感器检测车体偏离指引线的大小来调整左右驱动步进电机的行进速度,使机器人沿指引线行进。这恰好符合模糊控制的思想[5]。 把前后光电检测板上的光电检测传感器编号,将检测到指引线的编号最大的光电检测传感器的编号作为车体偏离的距离,编号方法如表1。这样,模糊控制器有两个输入:前后光电检测板的输入编号;模糊控制器有两个输出:左右步进电机驱动脉冲数。 模糊控制器的输入量的语言值模糊子集选取为:{LB,LS,ZO,RS,RB}。其中:LB=左大;LS=左小;ZO=中心;RS=右小;RB=右大。输出量的语言值模糊子集选取为:{NB,NM,NS,ZO,PS,PM,PB}。其中:NB=负大;NM=负中;NS=负小;ZO=零;PS=正小;PM=正中;PB=正大。 根据隶属函数的定义和选取规则,输入变量前部位置iF 和后部位置iB的隶属度选择相同,如图5所示。输出变量左轮转速OUL和右轮转速OUR的隶属度选择相同,如图6所示。 根据多次的实验和修正,得到如表2的左轮转速控制规则表(右轮的转速控制规则表内容与左轮的转速控制规则表对应,例如iF为RB、iB为LB时对应的OUL为NB,类似可得到右轮转速控制规则表)。模糊推理采用Mamdani法。反模糊化采用重心法,最终得到如表3所示的左轮转速控制信号输出表(右轮转速控制信号输出表可用类似于右轮转速控制规则表推导的方法得到)。在′F240存储空间中以表格的形式存储表3,根据输入可得到相应输出。 上述模糊信号的获取通过EPM7128用VHDL语言编程实现,此部分的编程相对简单,不再赘述。由于光电传感器信号的改变可以实时反映在CPLD的输出上,′F240只需定时读取此信号并做相应从处理即可。假设前光电检测板和后光电检测板的信号分别保存在RE_CPLD字节的高半字节、低半字节中,若这两个信号大于10则保持原数据不变,否则根据信号的大小计算此值在转速控制信号输出表中的偏移量: 其中#04h为保存转速表的页面,#MATRIXL为转速表起始地址在页面中的偏移量,ADDER_PS为查表值相对转速表起始地址的偏移量。若将查表得到的值变化后保存为控制步进电机转速的定时器的周期,则可以实时改变步进电机的转速: 4 步进电机调速的实现 步进电机是纯粹的数字控制电动机。它将电脉冲信号转换成角位移,即给一个脉冲信号,电机转一定角度。步进电机控制器的输入端口有:VDD——电机电源正极;GND——电源地线;OPTO——控制信号的公共阳极;DIR——电机方向控制端;FREE——脱机输入端;CP——脉冲输入端(CP停止施加脉冲时,要保证CP为高电平,使内部光耦截止)。此处给DIR端加高电平,使机器人只向前行进,在程序中只需对CP端进行处理。 脉冲的产生通过控制I/O端口的电平变化实现。在设定了定时中断的各种参数后,在定时器中断处理程序中使一个标志字不停地加1: 在主程序中可以设定行走距离,定时中断的时间间隔决定脉冲的频率,也即决定步进电机的运动速度: 其中,数值2 000代表机器人行走的距离单位。利用模糊控制策略,改变控制两个步进电机的定时器定时周期的长短以及行进的距离,可以实现机器人的寻线行进。 在总结近期参加的机器人比赛和电子设计竞赛的基础上,针对机器人寻线行走的普遍要求,提出了一种基于DSP+CPLD和模糊控制策略的机器人实现方法。利用该方法设计的机器人参加了多种不同的机器人比赛(如全国大学生机器人电视大赛、足球机器人比赛子项和电子设计竞赛等),运行状况良好,取得了较理想的成绩,进而证实了此设计的有效性。 参考文献 1 许 欢,唐竞新.调制光寻线及其在自动行走机器人中的应用.清华大学学报(自然科学版),2002;42(1):115~117 2 万永伦,丁杰雄.一种机器人寻线控制系统.电子科技大学学报,2003;32(1):47~50 3 TMS320C240X DSP Controllers CPU,System,and Instruction Set.Texas Instruments,1997 4 曹卫华,吴 敏,陈 鑫.基于DSP控制的足球机器人小车的设计与实现.机器人技术应用,2002;3:19~21 5 丛 爽.神经网络、模糊系统及其在运动控制中的应用.合肥:中国科技大学出版社,2001

    时间:2018-08-27 关键词: DSP 传感器 机器人 单片机 模糊控制 设计教程

  • 单片机编程经验(三)

    经验之三、话说ram冗余技术  所谓的ram冗余,就是:  1、将重要的数据信息备份2份(或以上)并存放在ram中不同的区域(指地址不相连)。  2、当平时对这些数据进行修改时,同时也更新备份。  3、当干扰发生并被拦截到“程序错误处理段”中时, 将数据与备份做比较,采用表决方式(少数服从多数)选出正确(或可能正确?)的那个。  4、备份越多,效果越好。(当然,你得有足够的存储空间)。  5、只备份最最原始的数据。中间变量(指那些可以从原始数据重新推导出来的数据)不必备份,  注:  1、这种思路的理论依据,据说是源于一种“概率论”,即一个人被老婆打肿脸的概率是很大的,但如果他捂着脸去上班却发现全公司每个已婚男人的脸都青了,这种概率是很小的。同理,一个ram寄存器数据被冲毁的概率是很大的,但地址不相连的多个ram同时被冲毁的概率是很小的。  2、前两年,小匠学徒时,用过一次这种方法,但效果不太理想。当时感觉可能是概率论在我这失效了?现在回想起来,可能是备份的时机选的不好。结果将已经冲毁的数据又备份进去了。这样以来,恢复出来的数据自然也就不对了。

    时间:2019-03-13 关键词: 经验 单片机 设计教程

  • 单片机编程经验(四)

    经验之四、话说指令冗余技术  前面有个朋友问到指令冗余,按匠人的理解,指令冗余,就是动作冗余。举个例子,你要在某个输出口上输出一个高电平去驱动一个外部器件,你如果只送一次“1”,那么,当干扰来临时,这个“1”就有可能变成“0”了。正确的处理方式是,你定期刷新这个“1”。那么,即使偶然受了干扰,它也能恢复回来。除了i/o口动作的冗余,匠人强烈建议大家在下面各方面也采用这种方法:  1、lcd的显示。有时,也许你会用一些lcd的专用驱动芯片(如ht1621),这种芯片有个好处,即你只要将显示数据传送给它,它就会不断的自动扫描lcd。但是,你千万不要以为这样就没你啥事了。正确的处理方式是,要记得定期刷新送显数据(即使显示内容没有改变)。对于cpu中自带lcd driver 的,也要定期刷新lcd ram。  2、中断使能标志的设置。不要以为你在程序初始化段将中断设置好就ok了。应该在主程序中适当的地方定期刷新一下,以免你的中断被挂起来。  3、其它一些标志字和参数寄存器(包括你自己定义的),也要记得常常刷新。  4、其它一些你认为有必要反复刷新的地方。

    时间:2019-03-12 关键词: 经验 单片机 设计教程

  • 英飞凌安全单片机提升谷歌Chromebook安全性

    21ic讯 英飞凌科技股份公司近日宣布,公司面向采用谷歌Chrome操作系统的设备,推出可信平台模块(TPM)芯片。TPM是谷歌Chromebook的安全架构不可或缺的组成部分。英飞凌成为适合与面向网络应用的全新操作系统结合使用的TPM芯片的首家供应商。 Chromebook经过精心设计,可为主要利用计算设备登录互连网以及使用网络应用的用户,带来快速、轻松和安全的体验。这种设计的一个重要部分被称为“纵深防御”,可提供多重恶意软件保护。这种安全架构具备硬件支持特性,包括每台Chromebook内置的TPM芯片支持的各种功能。 英飞凌科技股份公司芯片卡与安全IC业务部总经理Helmut Gassel博士指出:“谷歌认识到安全性对于天天泡在网上的用户而言至关重要,因此成功设计出自己的Chrome操作系统应用平台。由于有越来越多的用户开始采用基于云的解决方案调用数据和应用,因此,基于硬件的安全对于可上网移动终端的增长至关重要。立足于强大的安全系统专业技术,英飞凌能够不断进行创新,从而以最优的性价比,满足各种设备和业务领域的安全需求。” 英飞凌根据可信计算联盟(TCG)公布的规范,推出用于可信计算的硬件和软件产品。英飞凌的TPM是一种完全符合标准的TPM,成功通过了TCG的认证流程,获得了通用标准EAL 4+认证。除TPM芯片外,英飞凌还推出了TPM安全软件专业套件,从而简化初始化、管理与应用支持。  

    时间:2011-08-03 关键词: 英飞凌 安全性 单片机 chromebook

  • pic单片机解惑篇,6个pic单片机问题解疑(上)

    pic单片机解惑篇,6个pic单片机问题解疑(上)

    pic单片机具备很多应用,对于pic单片机,想必大家并不陌生。往期文章中,小编对pic单片机做过诸多介绍。本文中,小编将为大家带来6个pic单片机问题,并予以解答。而在之后的pic单片机文章中,小编将带来另外6个问题。如果你对本次即将要讲解的内容存在一定兴趣,不妨继续往下阅读哦。 1、PIC单片机振荡电路中如何选择晶体? 对于一个高可靠性的系统设计,晶体的选择非常重要,尤其设计带有睡眠唤醒(往往用低电压以求低功耗)的系统。这是因为低供电电压使提供给晶体的激励功率减少,造成晶体起振很慢或根本就不能起振。这一现象在上电复位时并不特别明显,原因时上电时电路有足够的扰动,很容易建立振荡。在睡眠唤醒时,电路的扰动要比上电时小得多,起振变得很不容易。在振荡回路中,晶体既不能过激励(容易振到高次谐波上)也不能欠激励(不容易起振)。晶体的选择至少必须考虑:谐振频点、负载电容、激励功率、温度特性、长期稳定性。 2、如何判断电路中晶振是否被过分驱动? 电阻RS常用来防止晶振被过分驱动。过分驱动晶振会渐渐损耗减少晶振的接触电镀,这将引起频率的上升。可用一台示波器检测OSC输出脚,如果检测一非常清晰的正弦波,且正弦波的上限值和下限值都符合时钟输入需要,则晶振未被过分驱动;相反,如果正弦波形的波峰,波谷两端被削平,而使波形成为方形,则晶振被过分驱动。这时就需要用电阻RS来防止晶振被过分驱动。判断电阻RS值大小的最简单的方法就是串联一个5k或10k的微调电阻,从0开始慢慢调高,一直到正弦波不再被削平为止。通过此办法就可以找到最接近的电阻RS值 3、晶振电路中如何选择电容C1,C2? (1)因为每一种晶振都有各自的特性,所以最好按制造厂商所提供的数值选择外部元器件。 (2)在许可范围内,C1、C2值越低越好。C值偏大虽有利于振荡器的稳定,但将会增加起振时间。 (3)应使C2值大于C1值,这样可使上电时,加快晶振起振。 PIC系列单片机的任意一条I/O管脚都有很强的带负载能力(至少可提供或灌入25mA的电流)。因此,在某些场合,这些管脚可作为可控的电源。举个例子,在一些低功耗的设计中,希望一些周围的器件在系统待命时不耗电或尽量少耗电。此时可考虑这些器件的电源供电由一条I/O脚负责提供,在工作时MCU在该条管脚上输出高电平(接近VDD)带几个mA的负载绝对不成问题。若要进入低功耗模式MCU就在该管脚输出低电平(接近0),被控器件没有了电源也就不会耗电。比如LCD显示电路、信号调制电路等都非常适合此类控制。 5、为何系统在外界磁场和电场的干扰时不能正常工作? 如果在主控电路中没有滤波电路,您用的芯片在/MCLR端应接一个能保证滤去该端口上的窄脉冲电路。因/MCLR上加的低电平宽度应大于2US,系统才能复位,而小于2US的低电平将会干扰系统的正常工作。 6、使用带A/D的PIC芯片时,怎样才能提高A/D转换的精度? (1)保证您的系统的时钟应是适合的。如果您关闭/打开A/D模块,应等待一段时间,该段时间是采样时间;如果您改变输入通道,同样也需等待这段时间,和最后的TAD(TAD为完成每位A/D转换所需的时间)。TAD可以在ADCON0中(ADCS1、ADCS0)中选择,它应在2US-6US之间。如果TAD太小,在转换过程结束时,没有完全被转换;如果TAD太长,在全部转换结束之前,采样电容上的电压已经下降。对该时间的选择的具体细节请参照有关的数据手册或应用公式。 (2)通常模拟信号的输入端的电阻太高(大于10Kohms)会使采样电流下降从而影响转换精度。若输入信号不能很快的改变,建议在输入通道口用0.1UF的电容, 它将改变模拟通道的采样电压,由于电流的补给,内在的保持电容为51.2PF。 (3)若没有把所有的A/D通道用完,最好少用AN0端。因它的下一个脚与OSC1紧靠在一起会对A/D转换造成影响。 (4)最后,在系统中,若芯片的频率较低,A/D转换的时钟首选的是芯片的振荡。这将在很大范围内降低数字转换噪音的影响。同时,在系统中,在A/D转换开始后,进入SLEEP状态,必须选择片内的RC振荡作为A/D转换的时钟信号。该方法将提高转换的精度。 以上便是此次小编带来的“pic单片机”相关内容,通过本文,希望大家对文中提及的6个单片机问题已不再迷惑。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2020-03-11 关键词: pic 单片机 pic单片机 指数

  • pic单片机解惑篇,6个pic单片机问题解疑(下)

    pic单片机解惑篇,6个pic单片机问题解疑(下)

    pic单片机的应用,使得诸多控制系统变为现实。因此,pic单片机具备很强的现实意义。上篇pic单片机文章中,小编为大家解读了6个pic单片机问题。本文中,小编将继续为大家讲解另外6个pic单片机问题,一起来看一下吧。 1、PIC16C7XX的A/D片内RC振荡器能否用于计数器? 16C71A/D转换器片内RC振荡器的作用是让MCU处于睡眠时(此时主振停振)能有一个时钟源来进行A/D转换。此RC振荡器因其内部设计的限制不能被其他电路使用。A/D转换器内部RC振荡器钟频典型值为250K,但会随着环境温度,工作电压,产品批号等不同而有相当的变动。定时器的时钟源可以选择内部的振荡频率,也可以是外部的脉冲输入信号。若你能选择后者,那就能方便地做到MCU的主频很高而时钟的溢出率较低。不然,除了用软件来计数分频,好象也没有其它招数。另一种选择是用其它型号的MCU,其内部至少还另有一个TIMER1,因为TIMER1可以有独立的一颗晶体作为时钟振荡的基准,你可以方便地选用频率低的晶体来完成你的设计。 2、为何使用PICSTAR-PLUS烧写16CE625-04/P有时无法把保密位烧成"保密"? 使用PICSTAR-PLUS对芯片编程时,程序代码是放在计算机的RAM中,每次写程序时通过串口把数据下载到烧写器中去编程,所以可能会出错。我不怀疑你操作有问题,但是请注意的PICSTAR-PLUS是用于开发用途的编程器,不推荐用于规模生产。你能计算出出错概率为1%,看来你是用它来作大规模生产了。为保证烧写可靠,推荐你使用高奇公司生产的PICKIT编程器。 3、为什么PIC单片机应用中,有时出现上电工作正常,而进入睡眠后唤醒不了?(PIC单片机应用中晶体选择的注意事项?) 对于一个高可靠性的系统设计,晶体的选择非常重要。在振荡回路中,晶体既不能过激励(容易振到高次谐波上),也不能欠激励(不容易起振)。尤其在设计带有睡眠唤醒(往往用低电压以求低功耗)的系统中,若还是随手拿一颗晶体就用,你的系统可能会出问题。这是因为低供电电压使提供给晶体的激励功率减少,造成晶体起振很慢或根本就不能起振。这一现象在上电复位时并不特别明显,原因是上电时电路有足够的扰动,很容易建立振荡。在睡眠唤醒时,电路的扰动要比上电时小得多得多,起振变得很不容易。 有人评价PIC单片机对晶体的要求怎么这么高?用51好象从来就没有这么麻烦,手里抓到什么就用什么,也不见有问题呀?且慢,这样比较前提并不一样,同样在睡眠时,有谁见过51系列不用复位而仅靠内部或外部事件唤醒吗?若你并不需要这么高级的设计技术,PIC也大可以让你逮到什么晶体就用什么。 评价振荡电路是否工作在最佳点的简单方法时用示波器看OSC2脚上的波形(必须考虑示波器接入电容!)最好的情形是看到非常干净漂亮的正弦波,没有任何波形畸变,而且要满幅(接近VCC和GND)晶体的选择至少必须考虑:谐振频点、负载电容、激励功率、温度特性、长期稳定性。 4、PIC单片机型号的温度级如何识别? 以16C54-04X / P为例: X =没有,商业级,温度范围是0-70℃; X= I,工业级,-40-85℃; X = E,汽车级,-40-125℃; 例如:PIC16C54C-04/P 商业级 PIC16C54C-04I/P 工业级 PIC16C54C-04E/P 汽车级。 5、PIC单片机的各种中断有没有优先级之分? 中档PIC单片机的中断入口只有一个,硬件不分优先级,但可用软件查询的方式决定其优先级高低:先查先做,优先级为高。高档的17和18系列,包括即将推出的16位dsPIC,中断有硬件优先级。 6、PIC单片机型号中,后缀A/B/C分别代表什么? PIC单片机型号中,后缀A/B/C表示的是芯片生产的工艺不同。从A到C是工艺不断更新,硅片圆盘(Wafer)的直径变大,线宽变窄,线距变密,在同一个圆盘上可以制作出更多的芯片,从而降低了生产成本。从功能角度来看,三者是一样的。当然,新版本的芯片中会把现有版本中存在的一些问题作些修正,功能会得到扩充。从性能指标上来讲,三者有些差距,一个明显的表现是在电源电压的承受范围,制作线宽越细,所能承受的电压越低。例如,PIC16C57的最高电源电压指标为6V,而57C的指标为5.5V。绝大多数情况下新版的片子可直接替换旧版。从目前发现的问题来看,主要出在晶体振荡电路部分。原因是新版芯片振荡电路内部的反向放大器的增益要比旧的高出许多。若晶体选择的不合理,可能会振荡到高次谐波上去。。有些客户也提出新版的片子抗干扰的性能不比旧版的片子。 其实,我们公布的技术指标在这方面并没有任何牺牲,只是工艺上的原因,我们留的余量减少了。请大家注意不要认为PIC的片子抗干扰能力强,在电路设计时就一点不考虑应有的抗干扰措施。 以上便是此次小编带来的“pic单片机”相关内容,通过本文,希望大家对上面的6个pic单片机问题已具备一定的认知。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2020-03-11 关键词: 单片机 问题 pic单片机 指数

  • 疫情期间,为什么额温枪那么受欢迎呢?

    疫情期间,为什么额温枪那么受欢迎呢?

    前段时间,为了助力疫情防控战,使额温枪活了起来,额温枪主要通过红外线测量温度,操作简单,测量速度快,不用接触皮肤就可以测量;对准额头,几秒钟就可以出体温测量结果,方便、简单、快捷,使用卫生、免清洁,适合老人、儿童、医院和家庭使用。根据国务院《企事业单位复工复产疫情防控措施指南》的文件精神,各企事业单位做好工作场所防疫工作,员工每次进入单位或厂区时,应在入口处检测体温,体温正常方可进入。于是,额温枪成了复工必需品,货源短缺、价格暴涨。 疫情期间,额温枪就是重要的“抗疫武器”,采用额外枪快速地筛查、识别有发热表征的疑似感染人员是做好疫情防控的关键一环。从交通枢纽到社区、医院、学校,再到写字楼,每天都有专门人员手持额外枪,进行人群体温检测,识别其中体温超过37.2℃的发热人员,再交由医疗和疾控部门作进一步处理,从而达到将大部分患者从人群中筛查出来的目的,进而采取隔离观察治疗措施,就可以达到“控制传染源”的目的。 作为电子元器件连接的载体——PCB,也是额温枪及许多医疗设备的核心元件之一,在这场疫情防控战役中不可或缺,因此PCB工厂的复工时间和产能状况,一定程度上也关系着防疫物质的供给情况。疫情发生后,捷多邦就收到了来自额温枪生产企业的PCB订单需求。作为相关部门指定的抗疫一线生产企业,捷多邦提前复工,并开通绿色通道,在人手不足的情况下昼夜赶制、生产,以实际行动践行企业担当,为全社会抗击疫情贡献一份力量。

    时间:2020-03-14 关键词: 单片机 额温枪

  • 电子设计的一些注意事项

    电子设计的一些注意事项

    现在的社会的运作离不开各种电子产品,那么你知道电子设计有哪些注意事项吗?做电子工程设计需要谨小慎微,考虑周全尽可能避免一些错误。但是,对于刚入门的小白来说,很多时候难以做到万无一失,总会遇到考虑不到的时候。比如以下这些误区,是很多电子小白踩过的坑,多了解一下,避免重蹈覆辙。 只靠硬件降低功耗? 在硬件电路或者芯片设计的过程中,非常注重一个概念,那就是降低功耗!功耗控制确实是硬件设计中关键的一环,尤其是在消费电子产品上。很多消费电子产品都是装电池的,比如蓝牙耳机、智能印象等等,在这类电子产品中电池一直是一个痛点,所以在产品竞争力上,功耗是一项重要的指标。然而,省功耗是不是单单有硬件设计人员去考虑呢?答案是:不是!其实软件控制在节省功耗上面也有很多讲究,在电路系统中,最耗电的是存储器访问、总线请求、CPU 运行等操作,而这些操作都是由软件去控制的。一个优秀的软件的程序应该严格的控制避免频繁触发这些耗电的动作,这会对整机产品的功耗降低有很大的贡献! 过冲信号一定要用匹配电阻消除? 首先解释一下什么是过冲现象,如果有用过单片机的应该都试过让单片机的 IO 输出一些信号,比如说用于驱动蜂鸣器的时候直接用 IO 推一个固定频率的方波。这时候如果你用示波器抓取 IO 输出的信号,可以发现信号并不是像书上画的方波那样干净,它会在信号翻转的边沿出现一些毛刺状的东西,上升沿会看到向上的毛刺,下降沿会有向下的毛刺。这个毛刺就是过冲现象,这时 IO 本身的电气特性导致的。过冲现象可以通过外部电路加匹配电阻把它过滤掉,但并不是多有过冲都需要这么做。原因是,如果要把过冲现象完全消除掉的话可能需要比较大的电阻,同时又要保证信号的电压幅度能够接受,这时候的电流会大很多。所以,有时候只要过冲现象在接受范围内,其实不需要非要把过冲完全消除。 存储器片选接地? 存储器基本上都有一个片选信号,一般是当总线需要访问存储数据时会把片选信号 CS 拉低为有效状态。可能有人会问,为了减少控制信号线,而且知道系统本身会频繁访问存储器,能不能直接把片选接地,让它一直选中呢?实际上功能是没有问题的,可以一直选中。但是大部分存储器在片选有效时的功耗会大很多,能够达到 100 倍以上。所以最好还是使用 CS 信号控制存储器,只有在需要访问的时候才选中它。 FPGA 的逻辑门闲着也是浪费? 现在 FPGA 的逻辑资源越来越多,对于工程开发人员来说无疑是件好事。因为能够支配的资源多了,那么能够发挥的空间也就大了,关键是写起代码来也不用时刻想着省资源。但是,对于功耗要求比较高的应用来说还是要尽量节省逻辑门资源。因为在 FPGA 里面,运行起来的功耗和内部被使用的逻辑门数量以及触发器的翻转次数成正比,所以尽可能减少数字电路中使用的资源以及翻转频率,在不需要翻转的时候禁止翻转,将会有效的降低功耗。 不用的芯片 IO 让它悬空就行? IO 悬空的一个明显坏处就是容易让芯片内部信号受到影响,因为悬空的 IO 很容易受到外部影响干扰形成震荡信号传递到芯片内部。有人说,那加个上拉电阻把它的状态固定就行了吧?加上拉的方法是可以解决干扰的问题,但是又会引入功耗的问题,不会很多,大概会有一个微安级别的电流消耗。最好的处理方法是把 IO 设置成输出状态,这样既可以固定状态,又能够避免功耗流失。 PCB 使用自动布线? 应该稍微有点电子设计经验的工程师都不会使用自动布线,但是对于初学者出于方便可能会直接使用自动布线功能。这里介绍一下自动布线有什么不好的地方,一方面是自动布线会消耗比较大的面积,同时,软件会自动产生很多过孔,太多的布线和过孔都会影响到 PCB 最终量产的成本和性能。所以,真正的产品开发时没人会使用自动布线功能,基本都是手动拉线,尽可能地根据信号特点走线,以及设置线宽和覆铜等参数。 以上介绍的这些要点是很多新手工程师在设计时考虑不到的地方,电子设计需要在实践中慢慢积累经验,同时借鉴别人的经验也非常重要,这样可以减少你在试错的过程中付出的代价!以上就是电子设计的一些注意事项,相信会对你有一些帮助。

    时间:2020-03-18 关键词: CPU 电阻 单片机

  • ARM-Linux开发与单片机开发的异同

    ARM-Linux开发与单片机开发的异同

    ARM Linux程序的开发主要分为三类:应用程序开发、驱动程序开发、内核开发以及具有不同特征的不同类型的软件开发。 ARM-Linux应用开发和单片机开发的不同 ARM的应用开发主要有两种方式:一种是直接在ARM芯片上进行应用开发,不采用操作系统,也称为裸机编程,这种开发方式主要应用于一些低端的ARM芯片上,其开发过程非常类似单片机。另外一种是在ARM芯片上运行操作系统,对于硬件的操作需要编写相应的驱动程序,应用开发则是基于操作系统的,这种方式的嵌入式应用开发与单片机开发差异较大。ARM-Linux应用开发和单片机的开发主要有以下几点不同: (1)应用开发环境的硬件设备不同 单片机:开发板,仿真器(调试器),USB线; ARM-Linux:开发板,网线,串口线,SD卡; 对于ARM-Linux开发,通常是没有硬件的调试器的,尤其是在应用开发的过程中,很少使用硬件的调试器,程序的调试主要是通过串口进行调试的;但是需要说明的是,对于ARM芯片也是有硬件仿真器的,但通常用于裸机开发。 (2)程序下载方式不同 单片机:仿真器(调试器)下载,或者是串口下载; ARM-Linux:串口下载、tftp网络下载、或者直接读写SD、MMC卡等存储设备,实现程序下载; 这个与开发环境的硬件设备是有直接关系的,由于没有硬件仿真器,故ARM-Linux开发时通常不采用仿真器下载;这样看似不方便,其实给ARM-Linux的应用开发提供了更多的下载方式。 (3)芯片的硬件资源不同 单片机:通常是一个完整的计算机系统,包含片内RAM,片内FLASH,以及UART、I2C、AD、DA等各种外设; ARM:通常只有CPU,需要外部电路提供RAM以供ARM正常运行,外部电路提供FLASH、SD卡等存储系统映像,并通过外部电路实现各种外设功能。由于ARM芯片的处理能力很强,通过外部电路可以实现各种复杂的功能,其功能远远强于单片机。 (4)固件的存储位置不同 单片机:通常具备片内flash存储器,固件程序通常存储在该区域,若固件较大则需要通过外部电路设计外部flash用于存储固件。 ARM-Linux: 由于其没有片内的flash, 并且需要运行操作系统,整个系统映像通常较大,故ARM-Linux开发的操作系统映像和应用通常存储在外部的MMC、SD卡上,或者采用SATA设备等。 (5)启动方式不同 单片机:其结构简单,内部集成flash, 通常是芯片厂商在程序上电时加入固定的跳转指令,直接跳转到程序入口(通常在flash上);开发的应用程序通过编译器编译,采用专用下载工具直接下载到相应的地址空间;所以系统上电后直接运行到相应的程序入口,实现系统的启动。 ARM-Linux:由于采用ARM芯片,执行效率高,功能强大,外设相对丰富,是功能强大的计算机系统,并且需要运行操作系统,所以其启动方式和单片机有较大的差别,但是和家用计算机的启动方式基本相同。其启动一般包括BIOS,bootloader,内核启动,应用启动等阶段。

    时间:2020-03-25 关键词: Flash 单片机 arm-linux

  • RFID技术将在消防领域发挥重大的作用

    RFID技术将在消防领域发挥重大的作用

    随着城市城镇化建设的脚步不断在加快,每日的城市流动人口非常大,同时城市人口的用电安全等等都是消防意识的重要环节。如何改善、创新、科学的实现智能消防管理模式,必须充分利用各种先进的科技,提高消防工作的服务理念和质量。设备的日常维护和巡检作为消防建设的基础之一,通过RFID技术的自动识别采集让消防管理变得更加高效、简洁。 通过三防手持终端扫描部署在消防设备上的RFID电子标签,实时将设备工作状况传送至智慧消防后端平台,有助于及时了解消防器械的运行情况,也可以及时排查火灾隐患。智慧消防通过在消防重点部位及消防设施安装加密的RFID电子标签并建立身份证标识,运用RFID技术,扫描标签进行每日巡查采集数据工作。并且系统还会自动提示各种消防设施及重点部位的检查标准和方法,自动记录巡查人员检查痕迹,替代了传统纸质检查记录。改变了传统消防巡查不到位、检查记录不真实的现状,消防设备的维护与巡检正是智慧消防建设的一大基础。RFID技术在消防领域发挥重要作用 RFID技术在消防领域的应用,包括在火灾报警系统的应用、电气火灾监控系统的应用、消火栓监控系统中的应用、消防应急疏散系统中的应用、消防监督检查业务中应用、消防日常管理中的应用、消防检查中应用。消防物联网是以射频识别技术(RFID)和智能传感技术为基础。将每一个需要监测的消防设施贴上RFID电子标签,通过RFID技术实现对目标的自动识别并且获取对象信息。对需要监测的消防设备采用智能传感技术实现实时监测。该智能传感技术运用了传感技术、单片机技术、通信技术,通过微型传感器实现对消防设施周围环境及监测对象的实时感知与检测,并最后接入网络以便消防人员能实时监测设备的运行。 智慧消防在未来也可以实现消防管理的网格化。将城市依据辖区按照一定的标准划分成为多个单元网格,通过加强对单元网格的巡查管理,建立起一种全新的监督管理体系。网格化管控理念,为政府、行业、企业提供一个实用的管理方案,将网格化管理模式应用于消防安全管理工作中,不仅有助于消防安全管理工作真正落到实处,也能够有效推动消防安全监督管理的有效性,提高消防安全管理的工作效率和质量,从而让消防安全管理更好的服务社会、服务实战、服务民生。 消防日常管理开始应用RFID技术使其具备有效、简洁化。RFID自动识别采集可以实时掌握消防器械的运行状况,及时排查火灾隐患有效提高了消防安全监督管理的效率,让消防安全防患于未然,更好地服务于社会,提高人民生活。

    时间:2020-04-01 关键词: RFID 智能 单片机

  • pic单片机程序格式,探讨pic单片机开发问题

    pic单片机程序格式,探讨pic单片机开发问题

    pic单片机每天都在被使用,了解pic单片机显得尤为必要。本文对于pic单片机的介绍,将基于两大方面:1.阐述pic单片机程序设计基础格式,2.探讨pic单片机开发的几个问题。如果你对本文即将探讨的内容存在一定兴趣,不妨继续往下阅读哦。 一、PIC单片机程序设计基础格式 为了快速掌握PIC单片机源程序的基本结构,这里给出一个典型的程序结构框架。 建立源程序时首先用伪指令TITLE提供程序的标题,接着给出整个程序的总说明,并用列表伪指令LIST指定所用单片机型号和文件输出格式,再利用INCLUDE伪指令读入MPASM中提供的定义文件如《P16F84?INC》,然后对片内常用资源进行定义,再给出一般程序的基本结构框架。现举例如下。 TITLE“This is……”;程序标题 ;程序说明 LIST P="16F84",F=1NHX8M ; include -config_RC_Qsc &_WDT_0FF… ;资源定义和变量定义 STATUS EQU 03 FSR EQU 04 PORTA EQU 05 PORTB EQU 06 J EQU 01F K EQU 01E ;………………… ORG 0000 ; goto MAIN ;跳过中断矢量 ORG 0004 goto INTSRV;子程序入口地址 ;…………………………………… MAIN ;从0005H开始放主程序 call Initports ;端口初始化 call InitTImers;定时器初始化 … INTSRV …     ;中断服务程序区 SVBRTH…      ;子程序区 END      ;程序结束符 当然,在编写程序时可根据实际情况加以调整。下面是一份实际程序清单,要求将数据88H写入PIC16F84内部EEPROM的20H单元,而后再从20H单元将其读出。 LIST P="16F84",F=INHX8M ;…………………………… STATUS EQU  03  ;定义寄存器 EEDATA EQU  08 EEADR EQU  09 INTCON EQU  0BH EECON1 EQU  88H EECON2 EQU  89H ;………………………… RD    EQU  0    ;定义位 WR  EQU  1 RP0   EQU  5 GIE  EQU  7 ;………………………… ORG  0 GOTO WRSTART ;…………………………… ORG  10H WRSTART         ;写入操作开始 CLRW      ;清W,使W=0 BCF STATUS,RP0 ;选BANK0 MOVLW 20H MOVWF EEADR   ;地址→EEADR MOVLW 88H MOVWF EEDATA  ;写入数据→ ;EEDATA BSF STATUS,RP0 ;选BANK1 BSF EECON1,2 ;写操作使能允许 BCF INTCON,GIE ;关闭所有的中断 MOVLW 0X55 MOVWF EECON2  ;55H→EECON2 MOVLW 0XAA MOVWF EECON2  ;AAH→EECON2 BSF EECON1,WR ;启动写操作 BSF INTCON,GIE ;恢复开中断 RDSTART          ;读出操作开始 BCF STATUS,RP0 MOVLW 20H MOVWF EEADR   ;地址→EEADR BSF STATUS,RP0 BSF EECON1,RD ;启动读操作 BCF STATUS,RP0 MOVF EEDATA,W ;将EEPROM ;数据读入W END 二、PIC单片机开发的几个问题 1 怎样进一步降低功耗 功耗,在电池供电的仪器仪表中是一个重要的考虑因素。PIC16C&TImes;&TImes;系列单片机本身的功耗较低(在5V,4MHz振荡频率时工作电流小于2mA)。为进一步降低功耗,在保证满足工作要求的前提下,可采用降低工作频率的方法,工作频率的下降可大大降低功耗(如PIC16C&TImes;&TImes;在3V,32kHz下工作,其电流可减小到15μA),但较低的工作频率可能导致部分子程序(如数学计算)需占用较多的时间。在这种情况下,当单片机的振荡方式采用RC电路形式时,可以采用中途提高工作频率的办法来解决。 具体做法是在闲置的一个I/O脚(如RB1)和OSC1管脚之间跨接一电阻(R1),如图1所示。低速状态置RB1=0。需进行快速运算时先置RB1= 1,由于充电时,电容电压上升得快,工作频率增高,运算时间减少,运算结束又置RB1=0,进入低速、低功耗状态。工作频率的变化量依R1的阻值而定(注意R1不能选得太小,以防振荡电路不起振,一般选取大于5kΩ)。 另外,进一步降低功耗可充分利用“sleep”指令。执行“sleep”指令,机器处于睡眠状态,功耗为几个微安。程序不仅可在待命状态使用 “sleep”指令来等待事件,也可在延时程序里使用(见例1、例2)。在延时程序中使用“sleep”指令降低功耗是一个方面,同时,即使是关中断状态,Port B端口电平的变化可唤醒“sleep”,提前结束延时程序。这一点在一些应用场合特别有用。同时注意在使用“sleep”时要处理好与WDT、中断的关系。 例1(用Mplab-C编写) 例2(用Masm编写) Delay() Delay { ;此行可加开关中断指令 /*此行可加开关中断指令*/ movlw.10 for (i=0; i《=10; i ) movwf Counter SLEEP(); Loop1 } Sleep decfsz Counter goto Loop1 return 2 注意INTCON中的RBIF位 INTCON中的各中断允许位对中断状态位并无影响。当PORT B配置成输入方式时,RB《7:4》引脚输入在每个读操作周期被抽样并与旧的锁存值比较,一旦不同就产生一个高电平,置RBIF=1。在开 RB中断前,也许RBIF已置“1”,所以在开RB中断时应先清RBIF位,以免受RBIF原值的影响,同时在中断处理完成后最好是清RBIF位。 三、用Mplab-C高级语言写PIC单片机程序时要注意的问题 3.1 程序中嵌入汇编指令时注意书写格式 见例3。 例3 ………… while(1) {#asmwhile(1) { …… #asm /*应另起一行*/ #endasm …… }/*不能正确编译*/ #endasm …… }/*编译通过*/ …… 当内嵌汇编指令时,从“#asm”到“endasm”每条指令都必须各占一行,否则编译时会出错。 以上便是此次小编带来的“pic单片机”相关内容,希望大家对本文介绍的两大方面内容具备一定的认知。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2020-04-03 关键词: 单片机 pic单片机 指数

  • stc89c52rc有哪些功能?引脚图与功能详细描述

    stc89c52rc有哪些功能?引脚图与功能详细描述

    STC89C52RC是STC公司生产的一种低功耗、高性能CMOS8位微控制器,STC89C52是一种带8K字节闪烁可编程可檫除只读存储器(FPEROM-Flash Programable and Erasable Read Only Memory )的低电压,高性能COMOS8的微处理器,俗称单片机。该器件采用ATMEL搞密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。 同时,在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 标准功能 引脚图 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。 主要特性 8K字节程序存储空间; 512字节数据存储空间; 内带4K字节EEPROM存储空间; 可直接使用串口下载; 器件参数 1. 增强型8051单片机,6 时钟/机器周期和12 时钟/机器周期可以任意 选择,指令代码完全兼容传统8051. [1] 2. 工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V 单片机) 3.工作频率范围:0~40MHz,相当于普通8051 的0~80MHz,实际工作 频率可达48MHz 4. 用户应用程序空间为8K字节 5. 片上集成512 字节RAM 6. 通用I/O 口(32 个),复位后为:P1/P2/P3 是准双向口/弱上拉, P0 口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为 I/O 口用时,需加上拉电阻。 7. ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无 需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程 序,数秒即可完成一片 8. 具有EEPROM 功能 9. 共3 个16 位定时器/计数器。即定时器T0、T1、T2 10.外部中断4 路,下降沿中断或低电平触发电路,Power Down 模式可 由外部中断低电平触发中断方式唤醒 11. 通用异步串行口(UART),还可用定时器软件实现多个UART 12. 工作温度范围:-40~+85℃(工业级)/0~75℃(商业级) 13. PDIP封装 STC89C52RC比普通89C52多了后缀“RC”,虽然它们都是单片机芯片,但是带有“RC”字样的单片机自带RC时钟振荡电路(有的频率可调有的频率不可调),可以在不接外部晶振就能使用,没有带“RC”这个字样的芯片一般必须安装外部晶振电路。 STC89C52RC是宏晶公司的增强型MCS-51单片机,与Atmel公司的AT89C52相比,有以下优点: 支持STC的2线制下载方式,下载程序更方便; 支持6T模式(在6T模式下,6个时钟周期就是一个机器周期); 片内集成了4kB容量的E²PROM; 带有P4口,具有更多的I/O; 程序存储器拥有更多的擦写寿命(STC标称可以擦写10万次,Atmel标称可以擦写1000次。不过对于批量生产的成品来说,这个擦写寿命没什么意义)。 相比于Atmel,STC单片机的缺点:在某些情况下,抗干扰能力不如Atmel的MCS-51单片机。

    时间:2020-04-05 关键词: 单片机 引脚图 stc89c52rc

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

技术子站

更多

项目外包

更多

推荐博客