当前位置:首页 > AVR
  • AVR单片机的学习思路,你需要收藏

    AVR单片机的学习思路,你需要收藏

    什么是AVR单片机?应该如何取学习?学习单片机的小伙伴都知道,衡量单片机性能好坏的指标主要有:可靠性好、功能强、高速度、低功耗和低价位,依靠这几点,作为单片机家族中性能较高的AVR,你真的能理解吗? AVR单片机产生背景 早期单片机主要由于工艺及设计水平不高、功耗高和抗干扰性能差等原因,采用较高的分频系数对时钟分频,使得指令周期长,执行速度慢。以后的 CMOS单片机虽然采用提高时钟频率和缩小分频系数等措施,但这种状态并未被彻底改观。 AVR单片机的推出,彻底打破这种旧设计格局,废除了机器周期,抛弃复杂指令计算机(CISC)追求指令完备的做法;采用精简指令集,以字作为指令长度单位,将内容丰富的操作数与操作码安排在一字之中(指令集中占大多数的单周期指令都是如此),取指周期短,又可预取指令,实现流水作业,故可高速执行指令。当然这种速度上的升跃,是以高可靠性为基础的。 AVR单片机结构 AVR单片机硬件结构采取8位机与16位机的折中策略,即采用局部寄存器存堆(32个寄存器文件)和单体高速输入/输出的方案(即输入捕获寄存器、输出比较匹配寄存器及相应控制逻辑)。提高了指令执行速度(1Mips/MHz),克服了瓶颈现象,增强了功能;同时又减少了对外设管理的开销,相对简化了硬件结构,降低了成本。故AVR单片机在软/硬件开销、速度、性能和成本诸多方面取得了优化平衡,是高性价比的单片机。 AVR单片机特性 ①哈佛结构,具备1MIPS / MHz的高速运行处理能力; ②超功能精简指令集(RISC),具有32个通用工作寄存器,克服了如8051 MCU采用单一ACC进行处理造成的瓶颈现象; ③快速的存取寄存器组、单周期指令系统,大大优化了目标代码的大小、执行效率,部分型号FLASH非常大,特别适用于使用高级语言进行开发; ④作输出时与PIC的HI/LOW相同,可输出40mA(单一输出),作输入时可设置为三态高阻抗输入或带上拉电阻输入,具备10mA-20mA灌电流的能力; ⑤片内集成多种频率的RC振荡器、上电自动复位、看门狗、启动延时等功能,外围电路更加简单,系统更加稳定可靠; ⑥大部分AVR片上资源丰富:带E2PROM,PWM,RTC,SPI,USART,TWI,ISP,AD,Analog Comparator,WDT等; 从上面介绍来看,性价比高、内置丰富、直插封装、支持仿真,值得大家在开发中使用,是目前性价比最高的芯片之一。以上就是AVR单片机的解析,希望能给大家帮助。

    时间:2020-05-13 关键词: AVR 寄存器 avr单片机

  • 解析AVR单片机为何要写1作为清0中断标志位

    下面是我个人的分析和解释,供参考。 1。首先从硬件上的考虑,通常的读写处理单元是以8BIT字节为单位的,因为数据总线一般是8位的倍数。这样对位的操作就不方便,不能直接写1位(会改变其它的位),需要先读到寄存器,然后改动1位,最后回写,需要更多的时间。 2。对于RAM操作一般采用直接写的方式,所以对RAM基本上没有直接的位操作指令。而对于寄存器是可以直接位操作的,但如果对所有的寄存器都能实现位操作,那么硬件结构上就非常复杂和庞大了,所以必须采用一种折中的处理方法。 3。现在的趋势是采用C语言编写系统程序,而标准的C中,没有位变量的概念,最小的单位也是字节。因此硬件的设计上面也要考虑能发挥C语言的优势。 以上是我分析的原因。因为已经超出了我研究的方向(我侧重于应用),可能不全面或有偏差。下面回到AVR本身。 我们可以注意到: 1。AVR没有“位”空间,也就是说没有单独的“位”地址,所有的位寻址是基于8位的寄存器的,所以基本寻址方式是以寄存器为主的。 2。因此AVR没有专门的位寻址指令,它本身的位操作指令很少,都是在寄存器寻址的基础上,对寄存器的某位进行操作。 3。除了对状态寄存器SREG中的位有直接的操作指令外(SREG太特殊了,必须要有专用的位操作指令),能够对其它寄存器的位操作的指令只有2个。 a)BST、BLD。这个指令的周期是1CK,他是将SREG中的T标志位与32个通用寄存器的位之间交换数据的指令。如果要对32个寄存器的1位进行设置的话(比如置1),必须先使用指令将SREG中的T置1,然后使用BLD指令将T的值写到寄存器的某位。需要2个CK时间。 b)SBI、CBI。这2条指令是对前32个(注意:仅对前32个I/O空间!)I/O空间的寄存器的位进行设置的指令。这2个指令的执行时间是2个CK。AVR对寄存器操作的指令大多数都是1个CK,而这2个指令为何需要2个CK?原因在与写的时候还是8位一起写,因此改变1位需要先读,修改1位,再回写。这样保证了其它位不变,但时间需要2个CK了。 4。正是由于第3点(b),所以PA、PB、PC、PD等I/O口的寄存器均在前32个I/O空间,这样就实现了方便的单独的按位控制I/O口了。 5。不同C编译器,位处理是不同的。ICC、IAR基本没有扩展位处理,按标准C来处理,因为他们考虑的可移植性更加多些。而CVAVR扩展了位变量(放在32个工作寄存器中)和位操作(仅能对I/O空间前32个寄存器),因此用户使用起来更方便些。但要注意,对I/O空间后32个寄存器,CVAVR也不能实现位操作的。 最后看一下中断标志位的处理。在AVR中对中断标志位的处理是根据不同情况采用不同的处理方法的,在上面的英文说明中已经给出了解释。有的是进入执行中断由硬件清除,有的是读某个寄存器后由硬件清除。而软件清除通常是写“1”,为什么? 看一下M16的手册,发现外部中断标志寄存器GIFR(0X3A)、和T/C的中断标志寄存器TIFR(0X38),都在I/O空间的后32个地址中,而且全部是中断标志寄存器。因此不管是ICC、IAR、还是CVAVR,肯定不能使用SBI、CBI指令对位操作了,只能是对1个寄存器8位同时写操作了。 那么,通常在C中如何改变1位置1呢?通常大家认为正确的语句是:XXXX |= 0B00000001;其功能是将XXXX先读出,然后同0B00000001或,使最低位为1,其它位保持不变。实际需要3条汇编指令的。改变1位置0:XXXX &= 0B11111110;同样需要3条汇编指令的。 AVR采用写“1”清“0”中断标志位(写“0”不影响标志位),那么语句就可以直接使用TIFR = 0B00000001了,只需要2条汇编。将最低位的标志位清“0”,同时保证了其它标志位的不变。(!!!注意,反而使用TIFR |= 0B00000001是错误的!!!因为,如果其它的位本身是1的话,这样反而也被清掉了) 另外,写“0”清“0”中断标志位的话,那么写“1”到中断标志位的话应该如何定义呢?中断标志位应该是硬件置1的,如果软件可以置1,会带来更多的麻烦。

    时间:2019-10-29 关键词: 单片机 AVR 电源技术解析

  • 最强pic单片机分析,pic单片机、AVR、51系列单片机的酸甜苦辣

    1、51系列单片机的优缺点分析 51系列是应用最广泛的单片机,由于产品硬件结构合理,指令系统规范,加之生产历史“悠久”,有先入为主的优势。世界有许多著名的芯片公司都购买了51芯片的核心专利技术,并在其基础上进行性能上的扩充,使得芯片得到进一步的完善,形成了一个庞大的体系,直到现在仍在不断翻新,把单片机世界炒得沸沸扬扬。 51系列优点之一是它从内部的硬件到软件有一套完整的按位操作系统,称作位处理器,或布尔处理器。它的处理对象不是字或字节而是位。它不光能对片内某些特殊功能寄存器的某位进行处理,如传送、置位、清零、测试等,还能进行位的逻辑运算,其功能十分完备,使用起来得心应手。虽然其他种类的单片机也具有位处理功能,但能进行位逻辑运算的实属少见。51系列在片内RAM区间还特别开辟了一个双重功能的地址区间,十六个字节,单元地址20H~2FH,它既可作字节处理,也可作位处理(作位处理时,合128个位,相应位地址为OOH~7FH),使用极为灵活。这一功能无疑给使用者提供了极大的方便,因为一个较复杂的程序在运行过程中会遇到很多分支,因而需建立很多标志位,在运行过程中,需要对有关的标志位进行置位、清零或检测,以确定程序的运行方向。而实施这一处理(包括前面所有的位功能),只需用一条位操作指令即可。 51系列的另一个优点是乘法和除法指令,这给编程也带来了便利。八位除以八位的除法指令,商为八位,精度嫌不够,用得不多。而八位乘八位的乘法指令,其积为十六位,精度还是能满足要求的,用的较多。作乘法时,只需一条指令即可。很多的八位单片机都不具备乘法功能,作乘法时还得编上一段子程序调用,十分不便。 51系列的I/O脚的设置和使用非常简单,但高电平时无输出能力,可谓有利有弊。故其他系列的单片机(如PIC系列、AVR系列等)对I/O口进行了改进,增加了方向寄存器以确定输入或输出,但使用也变得复杂。 同时,原51系列也有许多值得改进之处,如运行速度过慢等。当晶振频率为12MHz时,机器周期达1μs,显然适应不了现代高速运行的需要。华邦公司(Winbond)生产的产品型号为W77系列和W78系列,W78系列与AT89C系列完全兼容。W77系列为增强型,对原有的8051的时序作了改进,每个机器周期从12个时钟周期改为4个周期,使速度提高了三倍,同时,晶振频率最高可达40MHz。W77系列还增加了看门狗WatchDog、两组uART、两组DVTR数据指针、ISP等多种功能。 2、PIC单片机的优缺点分析 PIC单片机CPU采用RISC结构,分别有33、35、58条指令(视单片机的级别而定),属精简指令集。而51系列有111条指令,AVR单片机有118条指令,都比前者复杂。采用Haryard双总线结构,运行速度快(指令周期约160~200nS),它能使程序存储器的访问和数据存储器的访问并行处理,这种指令流水线结构,在一个周期内完成两部分工作,一是执行指令,二是从程序存储器取出下一条指令,这样总的看来每条指令只需一个周期(个别除外),这也是高效率运行的原因之一。此外,它还具有低工作电压、低功耗、驱动能力强等特点。 PIC系列单片机的I/O口是双向的,其输出电路为CMOS互补推挽输出电路。I/O脚增加了用于设置输入或输出状态的方向寄存器,从而解决了51系列I/O脚为高电平时同为输入和输出的状态。当置位1时为输入状态,且不管该脚呈高电平或低电平,对外均呈高阻状态;置位0时为输出状态,不管该脚为何种电平,均呈低阻状态,有相当的驱动能力,低电平吸人电流达25mA,高电平输出电流可达20mA。相对于51系列而言,这是一个很大的优点,它可以直接驱动数码管显示且外电路简单。它的A/D为10位,能满足精度要求。具有在线调试及编程功能。 该系列单片机的专用寄存器)并不像51系列那样都集中在一个固定的地址区间内(80~FFH),而是分散在四个地址区间内,即存储体0(Bank0:00-7FH)、存储体1(Bankl:80-FFH)、存储体2(Bank2:100-17FH)、存储体3(Bank3:180-1FFH)。只有5个专用寄存器PCL、STATUS、FSR、PCLATH、INTCON在4个存储体内同时出现。在编程过程中,少不了要与专用寄存器打交道,得反复地选择对应的存储体,也即对状态寄存器STATUS的第6位(RPl)和第5位(RPO)置位或清零。这多少给编程带来了一些麻烦。对于上述的单片机,它的位指令操作通常限制在存储体0区间(00~7FH)。数据的传送和逻辑运算基本上都得通过工作寄存器w(相当于5l系列的累加器A)来进行,而51系列的还可以通过寄存器相互之间直接传送(如:MOV30H,20H;将寄存器20H的内容直接传送至寄存器30H中),因而PIC单片机的瓶颈现象比51系列还要严重,这在编程中很有感受。 综合来说PIC单片机应该说有三个主要特点: (1)总线结构:MCS-51单片机的总线结构是冯-诺依曼型,计算机在同一个存储空间取指令和数据,两者不能同时进行;而PIC单片机的总线结构是哈佛结构,指令和数据空间是完全分开的,一个用于指令,一个用于数据,由于可以对程序和数据同时进行访问,所以提高了数据吞吐率。正因为在PIC单片机中采用了哈佛双总线结构,所以与常见的微控制器不同的一点是:程序和数据总线可以采用不同的宽度。数据总线都是8位的,但指令总线位数分别位12、14、16位。 (2)流水线结构:MCS-51单片机的取指和执行采用单指令流水线结构,即取一条指令,执行完后再取下一条指令;而PIC的取指和执行采用双指令流水线结构,当一条指令被执行时,允许下一条指令同时被取出,这样就实现了单周期指令。 (3)寄存器组:PIC单片机的所有寄存器,包括I/O口,定时器和程序计数器等都采用RAM结构形式,而且都只需要一个指令周期就可以完成访问和操作;而MCS-51单片机需要两个或两个以上的周期才能改变寄存器的内容。 3、AVR单片优缺点分析 AVR单片机其显著的特点为高性能、高速度、低功耗。它取消机器周期,以时钟周期为指令周期,实行流水作业。AVR单片机指令以字为单位,且大部分指令都为单周期指令。而单周期既可执行本指令功能,同时完成下一条指令的读取。通用寄存器一共32个(RO-R31),前16个寄存器(R0~R15)都不能直接与立即数打交道,因而通用性有所下降。而在5l系列中,它所有的通用寄存器(地址00-7FH)均可以直接与立即数打交道,显然要优于前者。 AVR系列没有类似累加器A的结构,它主要是通过R16~R31寄存器来实现A的功能。在AVR中,没有像5l系列的数据指针DPTR,而是由X(由R26、R27组成)、Y(由R28、.R29组成)、z(由R30、R31组成)三个16位的寄存器来完成数据指针的功能(相当于有三组DPTR),而且还能作后增量或先减量等的运行。 在51系列中,所有的逻辑运算都必须在A中进行;而AVR却可以在任两个寄存器之间进行,省去了在A中的来回折腾,这些都比51系列强。 AVR的专用寄存器集中在$00~$3F地址区间,无需像PIC那样得先进行选存储体的过程,使用起来比PIC方便。AVR的片内RAM的地址区间为$0060~$00DF(AT90S23131)和$0060~$025F(AT90S85l5、AT90S8535),它们占用的是数据空间的地址,这些片内RAM仅仅是用来存储数据的,通常不具备通用寄存器的功能。当程序复杂时,通用寄存器R0一R31就显得不够用;而51系列的通用寄存器多达128个(为AVR的4倍),编程时就不会有这种感觉。 AVR的I/O脚类似PIC,它也有用来控制输入或输出的方向寄存器,在输出状态下,高电平输出的电流在10mA左右,低电平吸入电流20mA。虽不如PIC,但比51系列强。 综合来看,AVR与51、PIC单片机相比具有一系列的优点,用通俗的说法主要体现在这几个方面: (1)、在相同的系统时钟下AVR运行速度最快; (2)、所有AVR单片机的FLASH、EEPROM蓄存器都可以反复烧写、支持在ISP在线编程(烧写),入门费用非常少; (3)、片内集成多种频率的RC振荡器、上电自动复位、看门狗、启动延时等功能,使得电路设计变得非常简单; (4)、每个IO口作输出时都可以输出很强的高、低电平,作输入时IO口可以是高阻抗或者带上拉电阻; (5)、片内具有丰富实用的资源,如AD模数器、DA数模器,丰富的中断源、SPI、USART、TWI通信口、PWM等等; (6)、片内采用了先进的数据加密技术,大大的提高了破解的难度; (7)、片内FLASH空间大、品种多,引脚少的有8脚,多的有64脚等各种封装 (8)、部分芯片的引脚兼容51系列,代换容易,如ATtiny2313兼容AT89C2051,ATmega8515/162兼容AT89S51等 四、单片机的选择。 各种单片机都有各自的优缺点,应根据需要选择。选择单片机原则如下: 1. 单片机的基本参数例如速度,程序存储器容量,I/O引脚数量 2. 单片机的增强功能,例如看门狗,双指针,双串口,RTC(实时时钟),EEPROM,扩展RAM,CAN接口,I2C接口,SPI接口,USB接口。 3. Flash和OTP(一次性可编程)相比较,最好是Flash。 4. 封装?IP(双列直插),PLCC(PLCC有对应插座)还是贴片。DIP封装在做实验时可能方便一点。 5. 工作温度范围,工业级还是商业机。如果设计户外产品,必须选用工业级。 6. 功耗,比如设计并口加密狗,信号线取电只能提供几个mA,用PIC就是因为低功耗,后来出了MSP430也不错。 7. 工作电压范围。例如设计电视机遥控器,2节干电池供电,至少应该能在1.8-3.6V电压范围内工作。 8. 供货渠道畅通。能申请样片,小批量购买有现货。最好像标准51,中发里随便找个柜台就能买到(我在北京) 9. 价格低。 10. 有服务商,像周立功公司推Philips,双龙公司推AVR,都提供了很多有用的技术支持,起码烧写器有地方买。 11. 烧录器价格低,如果是ICP(把单片机放在烧录器上编程)能否利用现有的烧录器,如果是表贴封装,买一个转接座也很贵,至少得一二百元。能否ISP(在系统编程,即把芯片先焊到板子上再通过预留的ISP接口编程),一般ISP编程器比较便宜大约一二百元甚至几十元。 12. 仿真器便宜。对于FLASH型单片机,仿真器不是必备的。但是对于OTP(一次性可编程)型单片机,必须购买或者租用仿真器。 13. 单片机汇编语言是自己熟悉的,并且能支持C语言。编程环境要像keil一样好用,并且还是免费的。 14. 网站速度快,资料丰富。包括芯片手册,应用指南,设计方案,范例程序。最好有中文,像Atmel就不错。 15. 保密性能好,查一下专业解密网站上的黑名单,再发个mail咨询一下解密价格。 16. 抗干扰性能好。我曾经把XXC52改为S52后发现抗干扰性能下降,只好改回去。 17. 和其他外设芯片放在一起的综合考虑

    时间:2019-07-10 关键词: AVR pic单片机 51系列单片机

  • 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 基础教程

  • 基于AVR的实验加载闭环控制系统

    基于AVR的实验加载闭环控制系统

      分离式液压千斤顶在生产建设、科学实验等各类工程结构加载工作中具有广泛的用途。  该设备一般由电动高压油泵+压(拉)千斤顶组成,本文论及的加载系统规格如表1所示。  油泵电机直接带动泵轴旋转,柱塞作往复运动,进油阀/排油阀工作,液压油通过高压油管进入千斤顶。用户可通过泵站上的手柄,人工转动泵内卸荷阀处于不同位置,实现系统的加载/卸载、推力/拉力及加载速率和稳压作业。  在对力和位移数值或稳压时间等精度要求较高的科研实验加载场合,显然这种仅靠手工操作的方式难以胜任。给该设备增设电脑测控系统就成为一项与时俱进的技术革新,也是提高此类设备性价比的最佳方案。  1 下位机  由ATmega128构成下位机控制核心(见图1),其主要是对各通道放大模块传入的工作信号进行A/D变换,并根据上位机的指令驱动步进电机,达到控制执行系统的工作目的。  1.1 数据采集  力和位移信号的测试由电阻应变计组成的电桥传感器完成,信号放大器采用AMP1型放大模块。此两者间的适当匹配对单片机能否顺利执行数据采集工作至关重要。技术关键是对电桥平衡的调控。信号进入单片机后,若有少量的偏移电压可通过软件作些补偿,若偏移量过大会造成此通道无法工作。因此有必要在放大模块的前端,用电位器把偏移较大的模拟信号调整过来。调零电路如图2所示。  1.2 设备控制  油泵手柄的转动,以电动替代手动是设备控制的技术关键。把手柄板固定在转轴上,板上布置若干位置电极点,用步进电机加齿轮传动可以解决感知和移动手柄位置的问题,如图3所示。  单片机Mega128的PWM、时钟和正反转信号,通过光耦进入L297,产生相序信号,经由L298N的全桥驱动,使得步进电机按单片机控制带动齿轮一起转动。驱动步进电机电路图如图4所示。  1.3 A/D及串口通信  在串口0初始化编程中,ICCAVR用代码UCSROB=(1<

    时间:2019-04-02 关键词: 控制系统 嵌入式开发 AVR 闭环 加载

  • AVR单片机中TWI的模块化检测系统设计

    AVR单片机中TWI的模块化检测系统设计

    摘要:主要利用AVR单片机中的TWI模块,构建了一个基于TWI总线的模块化检测系统。通过利用TWI总线相对于I2C总线的强大灵活性,增加了容错处理程序,提高了总线的稳定性和可靠性,使得整个检测系统的抗干扰性更强。在从机TWI程序设计上使用TWI中断,消除了等待TWINT置住所浪费的时间,提高了程序的执行效率。引言 随着设备信息化和智能化程度的不断提高,设备间的通信变得愈加重要。目前,设备间的通信,尤其是多个设备间的通信,大多数都是依靠各种不同标准的总线实现的。通过总线实现设备间的通信减少了物理连线,简化了硬件设计工作,同时也便于扩展。因此,总线,尤其是各种工业总线,得到了广泛的应用。在智能化嵌入式系统设计中,有时由于各种外围设备较多,也会应用总线解决通信的问题。当今最为常见的是由Philips公司开发的I2C总线,它用于连接微控制器及其外围设备,增加了系统的安全性,方便了管理。而Atmel公司的TWI接口是I2C总线基础上的继承和发展,它定义了自己的功能模块和寄存器,其寄存器各位功能的定义与I2C总线并不相同。另外TWI总线引入了状态寄存器,使得TWI总线在操作和使用上比I2C总线更加灵活。本文主要利用TWI总线强大的灵活性,设计了基于该总线的模块化检测系统,巧妙利用TWI状态寄存器,大大提高了TWI总线在该检测系统中的稳定性和可靠性。1 TWI模块简介 TWI通信接口简单灵活,功能强大,非常适合应用于微控制器系统。它支持主机和从机操作;器件可以工作于发送器模式或接收器模式;7位地址空间允许有128个从机;支持多主机仲裁;高达400 kHz的数据传输率;输出驱动器斜率受控;噪声抑制器可以抑制总线尖峰;从机地址以及公共地址完全可编程;睡眠时地址匹配可以唤醒AVR。 如图1所示,TWI模块包括控制单元、比特率发生器单元、地址匹配单元、总线接口单元和SCL和SDA引脚,位于粗线之中的寄存器都可以通过AVR数据总线进行访问。其中TWAR寄存器的高7位为从机地址。工作于从机模式时,TWI总线将根据这个地址进行响应。 TWI的两根线在工作时必须有上拉电阻,上拉电阻的实现既可以通过内部的上拉电阻使能,也可以通过在硬件设计时增加上拉电阻。在实际应用时最好在外部硬件上增加上拉电阻,以防止程序遗漏使能上拉电阻。 TWI可以工作于4种不同的模式,即主机发送模式(MT)、主机接收模式(MR)、从机发送模式(ST)和从机接收器模式(SR)。当TWI上出现多个主机时,就会发生多主机仲裁。TWI多主机仲裁相对I2C总线的多主机仲裁,其特点就是除了依靠自身硬件的监测之外,还可以通过软件读取TWSR状态寄存器来判断自己在总线中的精确状态,以便为下一步动作提供更精确的诊断依据。在编写TWI总线驱动程序时,需要注意,只有当时钟信号为高电平时,信号线SDA上的电平信息才有意义。2 模块化检测系统设计 模块化检测系统主要功能是检测各设备所采集到的相关信息,以便主机通过处理这些信息,给出相应的控制策略。如图2所示,主机使用的是ATmega128,从机使用的是ATmegal6。这种模块化检测系统的设计不仅简化了硬件设计,也在一定程度上简化了软件的设计,使得各个检测功能的程序在不同的设备上同时运行。3 TWI总线驱动程序3.1 主机驱动程序 在程序设计时,为了实现准确判断TWI工作状态,需要在一定情况下,尤其是在总线出现传输错误时,读取TWSR状态寄存器。同时为了增加程序的可读性,将各种模式所需的TWI总线状态进行宏定义。 图3是主机发送(MT)模式程序的流程。图4为主机接收(MR)模式程序流程。 为了保证TWI总线的稳定运行,只有发送模式(MT)和接收模式(MR)程序是不够的,还必须有一定的容错处理程序,以防止TWI总线在受到外界干扰时出现故障。考虑本文所设计的系统是主机与从机不会实时发生变化的总线网络系统,所以对于主机而言还要有容错处理程序,主要是MT、MR以及MT和MR之间切换时的容错处理程序。其具体代码如下: 容错处理主要是通过读取当前TWI总线的状态,针对不同的状态做出不同的处理。这个程序中对TWI总线处于错误状态时的处理最为重要,可以防止TWI总线进入死锁。容错处理程序同时也包含了MT和MR模式,在使用TWI总线时主机只需要调用该程序就可实现MT或MR模式。3.2 从机驱动程序 由于对于主机而言,等待TWINT置位在任何情况下都能在很短的时间内完成,所以对于MT和MR模式的程序都是通过软件查询TWINT位实现。但是对于从机而言,由于首先要接收主机发送的从机地址,并且主机并不是总是在访问同一个从机,所以从机在接收主机发送的地址时,如使用软件查询方法,势必要等待很长时间,这样就浪费了大量的时间。因此在从机ST和SR模式程序的设计时,需要使用TWI中断,这样在等待TWINT置位期间可以执行其他程序,有效地提高了程序的运行效率。图5为从机ST和SR模式程序流程,具体的ST和SR处理程序可以参考相关的设计手册,这里给出的只是ST和SR切换以及容错处理程序。当TWINT置位时,进入TWI中断服务程序。 在从机TWI总线程序设计时,在等待TWINT置位期间TWI总线可能因为外界干扰出现一些故障,所以容错处理程序不仅在TWI中断服务程序得到调用,在等待TWINT置位期间也要调用该程序。从机的容错处理程序代码如下:4 系统测试 在模块化检测系统测试时,主要使用了以下从机检测模块:3个超声波模块、电子罗盘、红外距离检测模块以及温度检测模块。在系统测试时针对TWI总线,主要测试了总线的传输速度、实时响应、出错率、抗干扰能力。测试时为便于观察各个观测量的状态,使用了LCD显示。测试过程中总线的比特率设定为100 kbps,通过观测LCD显示的变量,TWI总线实时响应速度比较快。在外加电磁干扰的条件下,总线只有在极少数开机时出现错误,主要原因是开机时出现的浪涌电流。结语 本文设计的模块化检测系统,利用TWI总线作为各个器件通信的媒介,并以此为基础构建总线式拓扑网络,简化了硬件和软件设计,缩短了系统的开发周期。在TWI总线驱动程序设计上,增加容错处理程序,使总线运行更加稳定和可靠,提高了系统的抗干扰能力。同时在从机TWI总线驱动程序设计时使用TWI中断,合理安排各个功能程序的执行时间,有效地提高了程序的运行效率。

    时间:2019-03-26 关键词: 检测系统 AVR 嵌入式处理器 机中 twi

  • 基于AVR单片机的高精度频率调节器设计

    基于AVR单片机的高精度频率调节器设计

    摘要: 精确的频率控制是现代化工业生产与高精度测试的必备手段。基于AD9850可以发生优于1Hz频率精确度的信号,这对于频率测试来说至关重要。本文介绍的这种频率调节器由Atmel公司的AVR单片机Atmega16L作为控制核心,采用4×4键盘作为频率值输入设备。AVR单片机扫描键盘并且读入用户设定的频率值。随后,AVR单片机计算出AD9850的控制字,并且对AD9850发出指令。本文介绍的频率控制器可以通过“+1Hz”键和“–1Hz”键微调频率值。本文对频率控制器扩展了液晶显示模块,因此当前频率值可以被实时显示。它可以生成方波和正弦波。设计中使用了看门狗定时器防止程序进入死循环而不能正常工作。  1 引言  在现代化工业生产与高精度测试中,我们需要相当精确的频率来帮助判断设备性能指标。而且我们希望能够微调该频率。采用压控振荡器得到的频率不够精确,微调频率步骤烦琐,耗时漫长,因此有些测试项目限制了压控振荡器的使用。  Mega系列单片机是Atmel公司于2002年起陆续推出的。这款AVR增强型单片机具有速度快,抗干扰能力强,价格低廉等诸多优点。为了加快AVR单片机的软件编制,Atmel以及第三方提供的开发工具多种多样,程序开发方便有效。该单片机内部FLASH结构功能灵活,加锁后很难解密,可以最大限度地保护知识产权。AVR单片机可以广泛应用于通信、野外测试、汽车电子、医疗器械等领域,并且适用于各种低电压、低功耗的场合。  本文提出一种方法能够基于AVR单片机,采用AD9850提供精确到1Hz的频率信号,不但可以发生正弦波,也可以发生方波,从而为要求频率精度高的企业解决了难题。它以Atmel公司的AVR单片机Atmega16L作为核心,能够方便、准确地控制输出频率。由于AVR单片机实现了在线可编程,所以大大简化了设计步骤,加快了设计进程,同时不会烧毁、烧费芯片,节约了成本。  图1给出了该频率调节器的整体设计框图。用户通过4×4键盘设定频率值,AVR单片机使用I/O端口,扫描读入频率值。随后AVR单片机控制AD9850调节到用户要求的频率。AD9850的输出可以接电压比较器整形为方波,也可以经过低通滤波器限制带宽,输出正弦波形。AVR单片机同时控制液晶显示模块,使之实时显示当前频率。    图1. 频率调节器整体框图  2 控制核心与频率发生技术  2.1 控制核心  本设计采用了Atmel公司的AVR单片机Atmega16L作为控制核心。AVR单片机的单周期指令能够保证高的执行效率和低成本,是精简指令集CPU中的高性能器件。AVR单片机可以提供高达16 MIPS的执行时间,具有128K字节的可编程Flash存储器,同时具备4096字节的静态RAM。AVR单片机自带看门狗定时器,在强烈的电磁干扰条件下可以防止程序跑飞。本设计中采用的Atmega16L还具有以下特点:  · 内部包含有硬件乘法器,加快乘法运算速度;I/O端口引脚数多达32根;  · 支持在线可编程功能,不需要频繁从电路板插拔芯片;带有可编程的支持同步传输的UART端口;  · 支持三线传输SPI端口;具有方便的I2C总线端口,直接与Philips芯片接驳;  · 支持JTAG边界扫描电路;具有BOD低电压检测功能;  · 内部有8路10位的A/D变换器;具有4个PMW,可以协同或单独工作;  · 内部带有实时时钟电路;工作频率最高可达16MHz。  2.2 AD9850频率发生技术  AD9850是AD公司推出的低功耗直接数字频率合成器芯片,可以产生从直流到62.5MHz的宽频率信号,从投入市场到今天已经应用在雷达系统、低功耗频率源中。它良好的频率合成功能适合于应用在高精度测试中。本设计采用了AD9850作为波形发生器,具有体积小,功耗低的优点。  在控制流程中,AVR单片机为AD9850计算了频率控制字,并且将频率控制字写入其中。联合小键盘上的“+1Hz”键和“-1Hz”键,本设计使得频率可以精确到步长为1Hz的调节。它可以产生方波和正弦波。用户要求产生正弦波时,我们设计了低通滤波器用来滤除信号的高频分量。该低通滤波器还可以使用五阶椭圆滤波器实现。图2示出了本系统的AD9850电路设计图。PC2——PC5可以同时作为I2C总线端口。    图2 AD9850电路设计  3 输入设备与输出设备  3.1 键盘输入设备与相应软件  本设计采用了4×4键盘作为频率输入设备。由于按键个数少,只有16个,需要表示从1Hz — 10MHz的广泛频率,故在软件设计中采用了AVR单片机扫描方式。将端口A的8根I/O引脚全部作为扫描键盘使用。键盘定义除了0——9共10个数字之外,还定义了“退格”键、“全删”键、“输入”键、“+1Hz”键和“-1Hz”键,这样就可以极大地方便用户随时修改频率和微调频率。读入用户输入的频率值时,采用了延时防抖抗干扰的软件程序。扫描变量的初始值设置为0xFE,以低电平0依次变化实现扫描。本单片机键盘扫描的C代码如下所示:  sccode=0xFE;/*every scan initiative value,11111110*/  while(sccode!=0xEF)/*sccode is not 11101111,follow;or return 0*/  {  PORTA=sccode;/*send scan code 11111110 to portA*/  PORTA=sccode;/*send scan code 11111110 to portA*/  if((PINA&0xF0)!=0xF0)/*read portA,if high 4 bits are not 1111,key pressed in this line*/  {  recode=(PINA&0xF0)|0x0F;/*portA high 4 bits reserved,low 4 bits are 1111*/  while((PINA&0xF0)!=0xF0)  {};  /*read portA,if portA high 4 bits are not 1111,key pressed,  if key pressed,we must wait,wait for key released*/  return((~sccode)+(~recode));/*return row+column*/  }  else  {  sccode=(sccode<<1)|0x01;  /*scan code left shift 1 bit, add 1 to right,11111101*/  }  }  最终返回的扫描结果包括按键所在的行值和列值。判断步骤是:先将端口A的高4比特记录在扫描变量recode中,低4比特置为1111。再次读入端口A的高4比特,由此判断按键是否松开。用户还未松开按键时,高4比特当中有低电平0存在,此时只能循环等待。只有当用户松开按键之后,才将高4比特与低4比特进行按位反操作,并复合形成最终返回的扫描结果。如果没有检测到有按键按下,则将扫描变量sccode向左移位1比特,继续进行下一次扫描。  3.2 液晶显示模块  用户在多次进行输入频率以及“+1Hz”和“-1Hz”微调后,专注于观察信号输出对下一级电路的影响,往往忘了目前系统的输出频率。这样导致在精确测试中要求微调时也不知该向高调整还是向低调整。为了告知用户系统所处的当前频率,我们扩展了液晶显示模块,实现了当前频率在液晶显示模块上实时显示。液晶显示模块占用了单片机Atmega16L的PD0-PD7作为数据接口,采用了单片机的PB0-PB4作为控制端口。图3给出了液晶显示模块与控制器电路设计电路图。  PB0引脚选择液晶显示模块的数据存储器或指令存贮器,PB1引脚表明此次操作是读液晶显示模块还是写液晶显示模块,PB2则构成上升沿与下降沿完成读写时序。PB3负责选中液晶显示模块的左半部分,PB4负责选中右半部分,通常PB3与PB4都置为1。需要注意的是,在数据或指令准备好了之后,再让PB2进行电平变化,否则读写会出错。  本设计借助单片机Atmega16L的大容量程序存贮器,将英文字母和若干汉字的字型点阵作为数组存入单片机的程序存贮器中。需要显示某字符时直接调用数组,从而简化了设计,实现了英文、汉字以及图形的显示。本设计显示界面友好,操作可控性强。    图3 液晶显示模块与控制器电路设计  4 结论  为了方便现代化工业生产与精确的频率测试,我们设计了基于AVR单片机的高精度频率调节器。在本设计中,可以使用小键盘上的“+1Hz”键和“-1Hz”键,方便地进行频率精确到1Hz的调节。此频率调节器体积小而功能强,由Atmel公司的AVR单片机Atmega16L作控制核心,用户可随时调整系统输出频率。采用了4×4键盘输入用户设定的频率值,占位小而效率高,编制程序让AVR单片机扫描即可得到频率,省去了专用键盘接口芯片8279。液晶显示模块可实时显示当前频率,显示界面友好,操作可控性强。本系统可以产生方波和正弦波。  本设计的硬件与软件均已经应用在某频率测试生产线中。工业生产与测试使用表明,本设计简化了频率调节过程,用户使用方便,具有节电、低成本、抗干扰能力强、频率控制精度高速度快的特点。

    时间:2019-03-22 关键词: 频率 调节器 单片机 AVR 嵌入式处理器

  • 基于AVR单片机的数控直流稳压电源的设计

    基于AVR单片机的数控直流稳压电源的设计

    摘 要: 将单片机数字控制技术有机地融入直流稳压电源的设计中,设计出一款高性价比的多功能数字化通用直流稳压电源。详细介绍PWM输出、A/D采样、单片机等。该设计除了实现对电压的数字控制外,还具有高精度、多功能、液晶显示的特点。关键词: AVR单片机;直流稳压电源;电压表;数字控制 从20世纪90年代末起,随着对系统更高效率和更低功耗的需求,电信与数据通讯设备的技术更新推动电源行业中直流/直流电源转换器向更高灵活性和智能化方向发展。本文设计的直流稳压电源主要由单片机系统、键盘、数码管显示器、指示灯及报警电路、检测电路、D/A转换电路、直流稳压电路等部分组成。其中数控电源采用按键盘,可对输出电压及报警阈值以快慢两种方式进行设置,输出由单片机通过D/A控制驱动模块输出一个稳定电压。同时稳压方法采用单片机控制, 单片机通过A/D采样输出电压,与设定值进行比较,若有偏差则调整输出,越限则输出报警信号并截流。工作过程中,稳压电源的工作状态(输出电压、电流等各种工作状态)均由单片机输出驱动LCD显示,由键盘控制进行动态逻辑切换。以单片机为核心设计智能化高精度简易直流电源,电源采用数字调节,输出精度高,特别适用于各种有较高精度要求的场合。具有以下明显优点:(1)智能化程度更高,性能更完美;(2)控制灵活,系统升级方便;(3)控制系统的可靠性提高,易于标准化。1 直流稳压电源的基本原理 直流电源电路一般由电源变压器、整流滤波电路及稳压电路所组成。如图1所示。 稳压电路经常采用三端稳压器,应用电路如图2所示,只要把正输入电压U1加到LM7805的输入端,LM7805的公共端接地,其输出端便能输出芯片标称正电压U2。实际应用中,输入端和输出端与地之间除分别接大容量滤波电容外,通常还需在芯片引出脚根部接小容量电容到地。C1用于抑制自激振荡,C2用于压窄芯片的高频带宽,减小高频噪声。如图2所示。2 数控恒压源的实现方案 传统的直流稳压电源通过粗调波段开关及细调电位器来调节,并由电位表指示电压值的大小。这种稳压电源存在读数不直观、电位器易磨损、精度不高、不易调准、电位构成复杂、体积大等缺点,基于单片机控制的数控直流电源不但实现了直流稳压的功能,而且没有上述的缺点。2.1 设计要求 输出电压范围:0.0 V~9.9 V; 输出电压的调整方式:步进,步进数值为0.1 V; 显示方式:LCD1602液晶显示; 监测D/A的输出电压值。2.2 数控电源的方案 图3所示为数控电源的设计框图,其输出电压数值由键盘控制。通过键盘把需要输出的电压值以步进方式输入到单片机。这里电压采用单片机的PWM模拟电压输出。显示电路既可用来显示输出的电压值,也可用来显示键盘电路的调整过程。如果不满足输出电压的要求,将需要添加一个电压放大器。经过LM324线性转换后,得到所需电压值,另外对监测电压实际输出电压值进行采样,并将采样值通过单片机的A/D采样口送回单片机处理后显示。在该数字控制电源中,使用AVR芯片完成系统控制按键输入判断、电压数值显示以及对外部芯片的各种数字控制。3 数字控制部分 ATmega16是基于增强的AVR RISC结构的低功耗8位CMOS微控制器;数据吞吐率高达1 MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾;具有4通道的PWM以及8路10 bit ADC。 本系统的D/A选择常用的DAC0832。当其与单片机相连时电路和程序简单,只需把单片机的数据线与DAC0832的输入端直接相连即可。其各个引脚的连接及外围如图4所示。

    时间:2019-03-21 关键词: 单片机 AVR 嵌入式处理器 数控 直流稳压电源

  • 基于AVR单片机的可充电电池的放电监测

    摘 要:本文介绍avr单片机attiny12的主要性能特点,并利用它实现了可充电电池放电的自动监测。关键词:单片机;可充电电池;自动监测avr是增强型risc、内置flash的高性能8位单片机。设计上采用低功耗cmos 技术,而且在软件上有效支持c语言及汇编语言。其型号较多,可供不同场合选用。在8位mcu市场上,avr单片机具有最高的mips/mw能力。本文介绍attiny12单片机的主要性能特点及其在实际中的应用。attiny12单片机简介avr核将32个工作寄存器和丰富的指令集联结在一起。所有的工作寄存器都与算术逻辑单元alu直接相连,允许在一个时钟周期内执行的单条指令同时访问2个独立的寄存器。这种结构提高了代码效率,使avr得到了比普通cisc单片机高将近10倍的性能。attiny12工作于空闲模式时,cpu将停止运行,而定时器/计数器和中断系统将继续工作;掉电模式时振荡器停止工作,所有功能都被禁止,而寄存器内容得到保留。只有外部中断或硬件复位才可以退出此状态。引脚电平变化中断的特点使得attiny12对外部事件有很高的响应性,同时具有掉电模式的低功耗优点。attiny12内部集成有rc振荡器,其固定频率为1mhz。它还可以通过xtal1和xtal2引脚外接晶体振荡器或陶瓷振荡器。当使用外部时钟时,xtal2应悬空。通过熔丝位控制,可以有多种时钟选择。attiny12应用于电池的放电监测图1为放电监测电路图,其功能是对6v/10ah铅酸免维护电池的放电进行实时监测。电路中使用了tlc549,用于采集可充电电池的电压。tlc549是8位串行adc芯片,可与通用微处理器、控制器通过clk、cs、dout三条线进行串行连接。它具有4mhz片内系统时钟和软、硬件控制电路,转换时间最长17ms,允许的最高转换速率为40,000次/s。总失调误差最大为±0.5lsb,典型功耗值为6mw。采用差分参考电压高阻输入,抗干扰,可按比例量程校准转换范围,vref接地,vref+-vref-≥1v,可用于较小信号的采样。attiny12使用其内部上电复位、内部rc振荡器,其pb2与tlc549的cs连接,作为片选信号端口;pb1与dout连接作为数据接收端口;pb0与clk连接作为脉冲时钟端口。pb3接一个蜂鸣器,pb5接一个发光二极管,它们用于声光报警,在可充电电池电压低于5.5v时,蜂鸣器报警,而发光二极管也开始闪烁。pb3控制继电器jrc的关/闭,通过控制继电器来控制外部电源的供给,当可充电电池电压低于5.4v时,将切断对外部电路的电源供给,以保护6v/10ah铅酸免维护电池,否则将导致过度放电,降低电池寿命。电路中还用了一个稳压器tps7250。tps7250具有低漏失(ldo)电压、微功耗和小型化封装的优点。此稳压器的特点和一般ldo稳压器相比有特别低的漏失电压和静态电流。模块中运用它来给单片机attiny12和tlc549提供稳定的+5v电压。当可充电电池的电压低于5.4v时,停止给外部供电,但还会给adc与单片机供电,不过adc将不再工作,而单片机继续工作(发出警报)。通过开关s1可切断内部供电。软件设计软件程序流程如图2所示。与mcs-51系列单片机不同,开机后首先要对attiny12的b口进行初始化,定义每一个pb脚是输入口还是i/o口。初始化结束后直接启动adc。通过它采集到的电压信号是可充电电池的实际电压值,若此电压值小于5.4v,则关闭继电器jrc,a/d转换也不再进行,可发光二极管led快速闪烁,蜂鸣器beep发出警报声音(频率较高),告诉工作人员可充电电池已经不再给外部供电了,需要充电。若此电压值不小于5.4v,再看它是否低于5.5v,如果低于5.5v,则发光二极管led慢速闪烁,蜂鸣器beep发出警报声音(频率较低),告诉工作人员可充电电池电压不足,但是此时adc还在继续工作,可充电电池也还在给外部供电。若电压值高于5.5v,警报停止,可充电电池给外部电路正常供电。结语本设计的软硬件很简单,而且功耗比较低,价格低廉,所以对于可充电电池的放电监测非常实用。■参考文献1 德根,宋建国,马潮等编著. avr高速嵌入式单片机原理与应用.北京航空航天大学出版社,20022 吉雷主编. 电子电路设计师protel 99完全手册. 四川电子音像出版社,2000

    时间:2019-03-20 关键词: 单片机 AVR 嵌入式处理器 可充电电池

  • AVR单片机定时器的要点

    分5种工作类型  一 普通模式 wgm1=0跟51的普通模式差不多,有tov1溢出中断标志,发生于max(0xffff)时  1采用内部计数时钟用于 icp捕捉输入场合——-测量脉宽/红外解码(捕捉输入功能可以工作在多种模式下,而不单单只是普通模式)  2 采用外部计数脉冲输入 用于 计数,测频其他的应用,采用其他模式更为方便,不需要像51般费神  二 ctc模式 [比较匹配时清零定时器模式] wgm1=4,12跟51的自动重载模式差不多  1 用于输出50%占空比的方波信号  2 用于产生准确的连续定时信号wgm1=4时, 最大值由ocr1a设定,top时产生ocf1a比较匹配中断标志wgm1=12时,最大值由icf1设定, top时产生icf1输入捕捉中断标志  如果top=max,top时也会产生tov1溢出中断标志  注:wgm=15时,也能实现从oc1a输出方波,而且具备双缓冲功能  计算公式: focn=fclk_io/(2*n*(1+top))变量n 代表预分频因子(1、8、64、256、1024),t2多了(32、128)两级。  3 快速pwm模式 wgm1=5,6,7,14,15单斜波计数,用于输出高频率的pwm信号(比双斜波的高一倍频率)都有tov1溢出中断,发生于top时[不是max,跟普通模式,ctc模式不一样]比较匹配后可以产生ocf1x比较匹配中断.  wgm1=5时, 最大值为0x00ff, 8位分辨率  wgm1=6时, 最大值为0x01ff, 9位分辨率  wgm1=7时, 最大值为0x03ff,10位分辨率  wgm1=14时,最大值由icf1设定, top时产生icf1输入捕捉中断 (单缓冲)  wgm1=15时,最大值由ocr1a设定,top时产生ocf1a比较匹配中断(双缓冲,但oc1a将没有pwm能力,最多只能输出方波)改变top值时必须保证新的top值不小于所有比较寄存器的数值  注意,即使ocr1a/b设为0x0000,也会输出一个定时器时钟周期的窄脉冲,而不是一直为低电平  计算公式:fpwm=fclk_io/(n*(1+top))  4 相位修正pwm模式 wgm1=1,2,3,10,11双斜波计数,用于输出高精度的,相位准确的,对称的pwm信号都有tov1溢出中断,但发生在bootom时比较匹配后可以产生ocf1x比较匹配中断.  wgm1=1时, 最大值为0x00ff, 8位分辨率  wgm1=2时, 最大值为0x01ff, 9位分辨率  wgm1=3时, 最大值为0x03ff,10位分辨率  wgm1=10时,最大值由icf1设定, top时产生icf1输入捕捉中断 (单缓冲)  wgm1=11时,最大值由ocr1a设定,top时产生ocf1a比较匹配中断(双缓冲,但oc1a将没有pwm能力,最多只能输出方波)改变top值时必须保证新的top值不小于所有比较寄存器的数值可以输出0% ̄100%占空比的pwm信号若要在t/c 运行时改变top 值,最好用相位与频率修正模式代替相位修正模式。若top保持不变,那么这两种工作模式实际没有区别  计算公式:fpwm=fclk_io/(2*n*top)  5 相位与频率修正pwm模式 wgm1=8,9双斜波计数,用于输出高精度的、相位与频率都准确的pwm波形都有tov1溢出中断,但发生在bootom时比较匹配后可以产生ocf1x比较匹配中断.  wgm1=8时,最大值由icf1设定, top时产生icf1输入捕捉中断 (单缓冲)  wgm1=9时,最大值由ocr1a设定,top时产生ocf1a比较匹配中断(双缓冲,但oc1a将没有pwm能力,最多只能输出方波)相频修正修正pwm 模式与相位修正pwm 模式的主要区别在于ocr1x 寄存器的更新时间改变top值时必须保证新的top值不小于所有比较寄存器的数值可以输出0% ̄100%占空比的pwm信号使用固定top 值时最好使用icr1 寄存器定义top。这样ocr1a 就可以用于在oc1a输出pwm 波。但是,如果pwm 基频不断变化(通过改变top值), ocr1a的双缓冲特性使其更适合于这个应用。  计算公式:fpwm=fclk_io/(2*n*top)  

    时间:2019-03-18 关键词: 定时器 单片机 AVR 嵌入式处理器 要点

  • 基于AVR单片机的卫星地面测控系统设计

    基于AVR单片机的卫星地面测控系统设计

    引言 本文介绍了单片机Atmega128在一种卫星地面测控系统中的应用,该系统利用Atmega128完成了10路模拟信号的测量、4路脉冲信号的频率测量以及脉冲宽度的测量,由单片机上的16位定时计数器输出两路与输入信号具有相位关系的信号,并通过外扩串口与其它测试模块及工控机进行通信。由于要求系统能够连续稳定工作3年,并且数据不能丢失,因此,在设计时采用了双电源冗余热备份的方案,并且采用两个工控机同时接收数据并互为备份的设计方案。硬件设计 Atmega128属于Atmel公司的AVR系列单片机,是一种高性能、低功耗的8位控制器,执行大多数指令只需要一个时钟周期。其最高主频可达到16MHz;自带128KB可在线编程的闪存、4KB的EEPROM、4KB的SRAM,程序可进行加密;自带JTAG接口,便于程序的调试;集成外设:两个8位定时计数器、两个16位定时计数器、两个8位PWM通道、6个16位PWM通道、8个10位 ADC通道、一个I2C接口、两个可编程异步串行接口、一个SPI接口、一个看门狗定时器和8个外部中断源。 卫星地面测控系统主要由电源模块、电子机箱、测试箱、工控机以及红外地球敏感器构成,系统结构如图1所示。其中两台电源并联, 输出串联二极管。在整个测控系统中,测试箱的控制功能是通过Atmega128完成的。 测试箱的硬件原理如图2所示。测试系统以AVR单片机为核心,外围电路由串口通信、ADC采样和DAC输出等部分构成。 单片机与工控机之间通过RS-232标准总线进行数据通信,在设计中采用电平转换芯片MAX202来实现二者的电平兼容。为了能够和测试系统的其它模块进行串口通信,采用Xicor公司的双串口芯片ST16C2552外扩了两个串口,由于与外扩串口通信的是-12V~+12V的信号,不是标准电平,因此,要另外设计电平转换电路。使用Altera公司的可编程逻辑器件EPM7128实现对DAC和ADC的逻辑控制;使用BB公司的12位ADC实现对遥测信号的测量;采用BB公司的12位DAC芯片DAC7615产生电地球波信号。具体功能如下: ADC测量:将输入的10路模拟信号经过阻抗匹配后连接到通道选择器,再接到ADC芯片ADS7835的信号输入端,ADC的输出信号以及控制信号经过光隔离接到EPLD逻辑,在逻辑内部实现对ADC启动信号、转换通道的选择,以及对时钟信号、数据信号的控制。 DAC 输出:单片机通过逻辑芯片实现对DAC的片选、时钟、数据等信号的控制,DAC的输出信号通过光隔离后,再经过运算放大器进行阻抗匹配后才接到整个测试系统的其它模块。DAC参考电压的稳定性至关重要,如果参考电压稳定性差,将导致整个DAC的输出波动很大,达不到输出精度要求,因此,通过一个稳压芯片 AD584给DAC提供参考电压。 频率测量:电测箱需要对2路基准信号和2路光栅信号进行测量,利用AVR单片机的外部中断和计数器1、3实现测量。将2路基准信号分别接到单片机的外中断INT0和INT1,将光栅信号分别接到单片机的计数器1和3。在电测箱需要实现的各项功能中,电地球波的输出是一个难点,因为需要电地球波的输出与基准信号具有相位关系,并且要求输出具有可变相位、幅度和斜率的信号,本文通过计数器1和3的比较中断实现电地球波的输出。 串口通信:通过单片机自带的两个异步串口,并经过电平转换与上位工控机通信,通过双串口芯片ST16C2552外扩两个串口与测试系统的其它模块通信,此外,为保证系统的可靠性,所有的信号均经过光隔离。软件实现单片机软件 运行在单片机的底层软件主要负责ADC的采集、DAC的输出以及串口的通信,下面详细介绍各个部分:1、 光栅频率测量:测量模拟基准一个周期内的光栅个数 在程序中,每次进入外中断0的处理程序void int0_isr(void)(即基准脉冲上升沿到来时)调用void do_gd_opt_frq()函数测量光栅频率。 在do_gd_opt_frq ()函数中,先把前一次读取计数器1的计数值保存在全局变量time1_prev中,再读取计数器1的值并保存在time1_next中,因为两次中断的间隔就是模拟基准的周期,有一个光栅脉冲计数器1就加1,所以,前后两次的差值就是一个模拟基准周期内光栅的个数。2、 模拟基准幅度 在INT0的中断处理函数中置一个全局标志refoa_gd_flag = 0xff,在一个100?s的定时器的中断处理函数中查询此全局标志,若置位,则对模拟基准的ADC通道连续采样400次,采样后清 refoa_gd_flag标志并置采样结束的标志refoa_gd_finished = 0xff。在主程序main()函数中不断查询refoa_gd_finished标志,若置位,则调用do_refoa_high()函数求出模拟基准幅度,然后清标志。在do_refoa_high()函数中求出采样400个点中的最大值和最小值,两者之差即为模拟基准幅度。3、 模拟基准周期:测量一个模拟基准周期的毫秒值 在一个1ms的定时器溢出中断处理函数中,全局的计数变量ref_gd_count加1,ref_gd_count初始化为0。在外中断0的处理函数 int0_isr()中读取ref_gd_count的值,即为模拟基准的周期,再把ref_gd_count清零。这样,只有第一次测量值是无效的,以后均为有效的模拟基准周期。4、 模拟基准宽度 在INT0的中断处理函数中置全局变量refoa_width_gd_ count=0,在100?s的定时器中断中查询外中断0的引脚是否为高电平,是高电平则refoa_width_gd_count加1,直至变为低电平,refoa_width_gd_ count的值就是模拟基准的宽度。5、 电地球波 在do_ein()函数中处理工控机串口传过来的电地球波信息,如果是停止电地球波命令(state=0),通过DA电地球波直接输出高电平并清除电地球波使能标志位ein_gd_enable。如果是开始电地球波命令(state=1),把相位、宽度、幅值、斜率等信息赋给全局变量保存,并且计算出步距和斜率上各个点的输出值,置位电地球波使能标志 ein_gd_enable。 电地球波的产生是以模拟基准为基准的,在INT0的中断处理函数中设置计数器的比较中断并使能。 图3中, T0与T1 之间是地球波的相位,T2与T5之间是地球波的宽度。在T1时刻进入计数器1的比较中断timer1_compa_isr(),全局变量 ein_count_gd初始化为0,若ein_count_gd不等于1,则设置比较中断寄存器初值为下一步距点,并通过DA输出,若下一个比较中断到来ige ein_count_gd不等于1,则继续设置比较中断寄存器初值为下一个步距,并输出幅值,直到斜率上所有的幅值输出完毕,置ein_count_gd 等于1并设置比较中断寄存器,使T4进入比较中断。T4进入比较中断,并按照前述方法输出斜率上所有的幅值,完毕则禁止比较中断并置 ein_count_gd=0xff。 ADC采集和串口通信比较简单,这里不再赘述。软件编译与下载 由于单片机程序是采用C语言设计完成的,因此,需要用Image Craft公司的ICCAVR编译器进行编译,生成COF文件,再用AVR STUDIO调试软件和双龙公司的AVR JTAG仿真器进行调试。调试完成后,利用单片机的JTAG接口写入内部闪存即可。上位工控机软件 运行在工控机上的软件主要负责处理AVR单片机通过串口传送过来的数据并进行超差、报警的检查,然后把数据存储在ACCESS数据库中,以便查看。该软件能够设置电地球波的幅度、宽度、相位,并能自主控制电地球波的产生或停止。 上位工控机软件采用VC6.0编写,其中的数据库部分采用ADO技术。ADO是Microsoft公司为最新和最强大的数据访问范例 OLE DB 而设计的,是一个便于使用的应用程序层接口。ADO 最主要的优点是易于使用、速度快、内存支出少且磁盘遗迹小。结语 采用Atmel公司的AVR系列单片机进行系统设计,其外围设备丰富、集成开发环境简单易用、支持在线仿真等特点使得系统的开发周期大大缩短。本文介绍的系统使用了很多Atmega128的外围资源,并通过Atmega128提供的定时计数器的比较中断解决了系统设计中的难题。

    时间:2019-03-15 关键词: 系统 单片机 AVR 嵌入式处理器 地面

  • 一种基于AVR的新型防汽车追尾安全装置的设计

    一种基于AVR的新型防汽车追尾安全装置的设计

    1 引言  随着我国汽车保有量逐年增加,高速公路的发展使得汽车的行驶速度越来越快。车流量也越来越大,导致高速公路交通事故频频发生,其发生率甚至达到普通公路的4 倍,且有上升趋势。在高速公路所发生的交通事故中尤以汽车追尾居多,约占30%~40%,而在这些事故中,80%以上的事故是由于司机反应不及时或者判断失误引起的。由于目前只有高档车型才配有防碰撞装置,而且以往设计中只单纯考虑在车前或车后安装防碰撞装置,不尽全面,所以设计一套低成本、通用性好的汽车防车前车后追尾的安全装置具有广阔的应用和市场前景。因此。这里提出一种基于AVR的新型防汽车追尾安全装置设计。2 安全装置组成和硬件电路设计  安全装置硬件电路设计主要由单片机控制、加速度传感器、激光雷达、LED刹车灯及电源等电路组成,如图1所示,装置车载状况如图2所示。      2.1 单片机ATmega8L  该设计选用高性能、低功耗单片机ATmega8L,它是基于先进的AVR RISC结构的8位CMOS 工艺微控制器,器件内部集成有模拟比较器,6通道1O位(TOFP与MLF封装为8通道)的A/D转换器,3个具有比较模式的灵活定时器/计数器,512 字节的EEPROM,片内/外中断,5种可通过软件选择的睡眠模式,以及8 KB的系统内可编程Flash存储器(可随时在线编程),易于产品设计和更新。同时,ATmega8L可达到接近1 MIPS/MHz的性能,运行速度比普通CISC单片机高出10倍,并且该器件价格不高,为许多嵌入式控制应用提供灵活且低成本的解决方案。另外,ATmega8L的工作电压为2.7~5.5 V,非常适用于那些电压波动较大的场合。  2.2 加速度传感器MMA7260QT与单片机接口设计  该系统设计选用加速度传感器MMA72600T,测量加速度。该器件采用MEMS原理制作的低成本、低功耗、单芯片集成XYZ三轴感应加速度传感器,可准确测量0~350 Hz、±6 g范围内动态或静态加速度,还能够监测车体微小震动和整车的倾斜角度。该器件内部集成了信号调理、单极低通滤波器和温度补偿技术,并提供4个量程 (1.5g、2 g、4 g、6 g)可选,2.2~3.6 V单电源供电,工作电流小于500μA,休眠模式下最低供电电流仅为3μA。  MMA7260QT加速度传感器采集汽车加速度数据,并将数据通过ATmega8L的PD7(AIN1)端口传输至ATmega8L,其具体连接电路如图3所示。    图3中,当Xout输出和阈值电压比较匹配时,系统发出模拟比较器中断,单片机转向LED刹车灯闪烁中断子程序处理,采用这种方式可节省系统资源。 Xout与PD7引脚之间的RC具有滤波作用,用于减小时钟噪声,在电源和地之间加入去耦电容。另外,实际焊接安装时应保证加速度传感器 MMA72600T尽可能地靠近微控制器ATmega8L放置。  2.3 霍尔车速传感器  霍尔车速传感器由8级磁钢、UGN-3030T型霍尔开关传感器、LM2917及放大电路组成,如图4所示。    图4中,汽车传动部分带动8级磁钢旋转,由于磁场变化使得8级磁钢每转一圈霍尔传感器便产生8个脉冲信号,经放大器处理输出到频率/电压转换器LM2917,由单片机的A/D转换器根据LM2917输出电压测量当前汽车时速。  2.4 激光雷达测距  测距方法主要有超声波、激光雷达、连续波雷达等,基于成本和设计需求考虑,激光雷达测距是最佳选择。激光雷达测距有连续波和脉冲波两种方式,本设计使用脉冲波方式。安全装置发出脉冲状的红外激光束照射前方,并利用汽车后部可反光部件(以汽车号码牌为主)的反射光,通过受光装置检测反射光,单片机根据时间差计算出其距离。  该部分电路由发光部、受光部、信号调理电路等组成,最终输出信号由系统单片机处理。由于激光雷达发射光束集中,采用单一发射方式无法有效检测前方一定距离,故在汽车前方安装3个激光雷达测距模块,如果其中一个模块检测到的距离小于该时刻最小允许距离,安全装置将报警,即能够及时检测到插入车流的车辆并警报,如图5所示。    2.5 LED刹车灯  该设计中,刹车灯由发光二极管阵列组成,发光二极管选用Evedight公司生产的1 W高亮度LED,其响应时间为纳秒级,而普通车灯的热启动时间约250 ms。假设汽车时速为90 km/h(即25 m/s),通过计算可得反应迅速的LED刹车灯可提早约6 m距离发出刹车警告,从而有效避免汽车追尾。将LED放置成内、中、外三圈形状。当单片机根据加速度传感器的输入信号得到加速度值超过设定的阈值后,单片机输出信号经ULN2003驱动继电器动作,LED刹车灯响应后由内一中一外一内循环点亮,由于其亮度高、响应快。在实际使用中效果良好。另外,该部分电路需与汽车刹车装置联动,以确保准确输出刹车信号。  2.6 液晶显示  该设计采用并行128x64液晶屏,虽然占用较多的I/O端口,但并行传输便于编写驱动程序,如果系统单片机不能提供足够的I/O端口,可选择串行数据传输的液晶显示屏。另外,为了让司机能够更方便地看到设计系统所测得的数据,应将显示设备放置于司机主控台视线合理位置。3 系统软件设计  控制部分由ATmega8L控制完成,主要功能为:计算本车速度、车间距离,测定加速度,并通过LCD实时显示;实际车间距离和安全车间距离的比较发出报警声或报警灯闪烁;刹车时的加速度与设定阈值相比,决定是否点亮LED刹车灯,系统软件设计流程如图6所示。    在加速度测定中,考虑到汽车行驶当中的振动和噪声等影响信号输出,还需进行必要的软件滤波处理,这里采取数据平均值方法。据<中华人民共和国道路交通安全法实施条例>,安全行车距离与行车速度关系模型如下:当v≥100 km/h时,S>100 m;当v<100 km/h时,S>vt/1 000 m;其中,S为安全行车间距,单位为m;v为本车时速,单位km/h;t为每小时。高速公路上S>50 m。软件设计主程序代码如下:  car_speed();//汽车时速监测,返回值为i  lcd_display(i,1);//第一行实时显示车速  car_distance();//车距监测,返回值为j  lcd_display(j,2);//第二行实时显示车距  car_cmpl(i,j);//比较车距与安全车距,确定是否报警  #pragma interrupt_handler ana_comp_isr:17  car_acc();//加速度监测,返回值为k  car_cmp2(k);//实际加速度与设定阈值的比较,确定是否点亮LED刹车灯  主程序在车辆开启后一直循环执行,直至车辆电源关闭。4 结束语  该设计采用功能模块化技术,易于操作及扩展;选用性价比较高的器件,具有良好的应用和市场前景。设计方案切实可行,对于汽车防追尾具有重要意义。另外,设计所采用的加速度传感器还可作为汽车防盗的震动信号监测。

    时间:2019-03-15 关键词: 汽车 装置 AVR 技术教程

  • 基于AVR单片机的LED显示屏控制系统的研究

    基于AVR单片机的LED显示屏控制系统的研究

    1 引言  LED 显示屏是八十年代后期在全球迅速发展起来的新型信息传播媒体,是集微电子技术、光电子技术、计算机技术、信息处理技术于一体的大型显示系统。它以其色彩鲜艳、动态范围广、亮度高、寿命长、工作性能稳定而日渐成为显示媒体中的佼佼者,广泛应用于广告、证券、信息传播、新闻发布等方面, 是目前国际上较为先进的宣传显示媒体[1].本文提出了一种主从式单片机的LED 显示屏解决方案, 该设计方案利用AVR单片机自身的FLASH ROM 和RAM,外部无需任何存储电路,电路结构简单。  2 系统的工作原理及总体方案设计  2. 1 AVR 单片机  AVR 单片机是增强型内置Flash 的RISC(ReducedInstruction Set CPU) 精简指令集高速8 位单片机,硬件采用哈佛(Harward) 结构,达到一个时钟周期可以执行一条指令,绝大部分指令都为单周期指令。支持在系统编程ISP,其中MEGA 系列还支持在应用编程IAP.内置的FLASH 程序存储器可擦写1000 次以上,给用户的开发生产和维护带来方便。可擦写10 万次E PROM,为掉电后数据的保存带来方便。AVR 单片机有丰富的片内资源,如RTC、WATCHDOG、A /D 转换器、PWM 、USART、SPI、TWI 接口等,I / O 口功能强、驱动能力强。  2. 2 系统的工作原理  本设计采用AVR 系列单片机ATMEGA16 作为主控制器,以DS1302 时钟芯片和16M 的外置晶振提供准确时间标准、很方便的现实和校准时间。  Atmega32 的内核具有丰富的指令集和32 个通用工作寄存器。所有的寄存器都直接与算逻单元(ALU) 相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。采用74HC245 存储器作为信号功率放大。通过2 片74HC595 移位寄存器实现对数据的播放格式,ATMEGA32 卡内带32MFLASH,用户可用专用上位机软件对要显示的内容按照预定的显示格式进行编辑后,通过RS485或RS232 接口,向显示屏控制卡发送。发送结束后,控制卡可以脱开计算机,自动按照用户设定的模式显示所输入的内容,从而通过LED 显示屏来显示你所需要的内容。直到下一次数据更新,所显示的内容一直保持。  2. 3 系统的总体方案设计  LED 点阵显示系统由计算机、RS-232 通讯电路、控制电路和LED 点阵显示电路构成,结构框图如图1 所示。图1 系统结构框图  上位机完成把图像和文字转换成为显示屏的显示码,并且把显示信息发通过RS232 送到控制电路上。控制电路选用具有32KB 片内FLASH ROM 和2KB 片内RAM 的AT2mega32 单片机,没有外挂存储器。如果要存储更多的显示信息,可以选用具有64KB 片内FLASH ROM 的AT2mega64 或者具有128kB 片内FLASH ROM 的AT2mega128,也可以外挂存储器来增大存储能力。控制电路主要完成对显示数据的滚动和分割处理,然后通过异步串行口发送到每个单元板中。每块单元板用16 × 32 单色点阵块拼成的点阵屏,控制电路更新显示单元板的显示内容时,对所有单元板按地址逐个发送显示数据,更新完所有子模块数据后,再发送一个特殊的地址字0xFF 作为控制字,使所单元板同时更新显示数据,这样可以避免当屏幕较大,单元板数量较多时各子模块画面更新不同步的问题。对本设计中完成的2 × 10 个单元板而言, 由于通讯速率限制,画面更新速度最高可达56800 / ( 129 × 24 + 1 ) =18134 帧/ s,由于主控制电路还要完成全屏数据的分割和显示内容的移动控制, 所以其实际帧数低于上述值,不过用于普通的图片显示已经可以达到要求。  3 系统硬件设计  3. 1 主控制器的选择  Atmega32 是基于增强的AVR RISC 结构的低功耗8 位CMOS 微控制器。由于其先进的指令集以及单时钟周期指令执行时间,Atmega32 的数据吞吐率高达1 MIPS /MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。  Atmega32 有32K 字节的系统内可编程Flash( 具有同时读写的能力, 即RWW ) , 512 字节EEPROM,1K 字节SRAM,32 个通用I /O 口线,32个通用工作寄存器,用于边界扫描的JTAG 接口,支持片内调试与编程,三个具有比较模式的灵活的定时器/ 计数器( T /C) ,片内/ 外中断, 可编程串行USART,有起始条件检测器的通用串行接口,具有片内振荡器的可编程看门狗定时器,一个SPI 串行端口,以及六个可以通过软件进行选择的省电模式。3. 2 单元板显示电路单元  显示驱动电路由RS232 转换电路、子模块地址标识电路和点阵驱动电路组成。RS232 转换电路和主机板中一样, 同样采用MAX485 作电平转换。由于采用单片机的异步串行口进行多机通信进行数据传输,单元模块应该有和其位置相对应的地址标识地址标识电路采用8 位并进串出芯片74HC595 和8 位拨码开关组成,因此本系统最多可以容纳255 个子模块( 地址0xFF 作为更新子模块显示的控制字)。  LED 点阵采用动态扫描法进行驱动,并且实现16 阶灰度显示,为了节省单片机程序中扫描程序的时间消耗,提高扫描速度,显示数据采用并行输出的方法。驱动电路采用译码器74HC138 和74HC245,分别实现行选和位选。4 系统软件设计  系统软件设计包括上位机软件的设计、下位机程序设计两部分。  上位机软件完成图像和文字的编辑,通过计算机串行接口把显示数据传送到控制卡上。控制卡接收上位机的数据并通过内部Boot Loader 区的程序进行FLASH ROM 内显示数据的自更新。控制卡把显示数据进行分割处理后发送给每个单元板,并且完成显示数据不同方式处理。  4. 1 下位机程序设计  下位机软件设计分为两大功能块: 显示部分和通信部分。显示部分采用动态扫描的方式,实现对显示屏要显示的汉字、图象、字符等数据信息进行传输控制以及显示等功能。与PC 机的实时通信部分主要是利用单片机串口中断接收和发送数据信息,实现与计算机的实时数据信息传输。程序可以实现与计算机的通信,可非常方便地任意修改所要显示的汉字、图像等; 并使显示屏可按你选择显示方式进行汉字或表格显示。设计程序的流程图如图2 所示。图2 系统程序流程图  软件系统采用模块化结构,包括主程序、显示子程序和串口中断服务程序。主程序为顺序结构,完成堆栈、中断、串口的初始化设置后,循环调用显示子程序,以及响应串行接收或发送中断指令;显示子程序从显示缓冲区取出字模,输出行选通信号至P0 口并通过一个通用逻辑阵列74HC00D 输出,配合列扫描信号,进行动态扫描显示; 中断服务程序串口接收PC 机发送的汉字机内码数据,实现与计算机实时通信。程序各部分的功能, 由各个模块分别实现。程序模块有: 串口初始化模块、数据输入模块、汉字首地址计算模块、取字模块、显示模块和移动模块。系统显示流程图如图3 所示。图3 系统显示流程图4. 2 人机交互界面的设计  上位机软件使用可视化编程工具Visual Basic.NET 开发,主要完成图像的取点、线性补偿和点阵数据生成。首先将图像文件转换为96 × 64 分辨率、256 阶色深的单色灰度图像,由于使用占空比驱动的LED 其占空比/ 亮度为对数特性,所以需加入指数特性调整为线性之后才能交付显示系统进行显示。  通过MSComm 控件实现PC 机与单元板的通信。系统主界面如图4 所示。图4 上位机主界面  5 结论  本系统设计着重于对单色屏的研究,对于灰度不同的真彩色LED 显示屏的设计以及设备的驱动,有待于进一步的学习探讨。而且本设计所用的控制卡只能控制显示屏的单色显示,如果能显示双色,甚至三色那就更方便了。LED 显示屏可以显示变化的数字、文字、图形图像,不仅可以用于室内环境还可以用于室外环境,具有投影仪、电视墙、液晶显示屏无法比拟的优点。LED 甚至可以在信息指示灯、大屏幕显示、液晶显示(LCD) 的背照明等新技术中应用。它是未来智能交通系统的显示手段之一。  由于LED 显示屏的分析、设计与实际应用环境及应用目的有很大关系,所以对其控制系统的要求也是不同的。如果显示屏的面积要求很大,屏幕显示的信息量超大,那么要传输的数据量也随之增大,如何设计出更理想的字模保存方法以及数据传输时的压缩算法需要进一步的研究和探讨。

    时间:2019-03-07 关键词: 控制系统 单片机 AVR 显示屏 驱动开发

  • AVR单片机在LED遥控照明中的应用

    AVR单片机在LED遥控照明中的应用

    摘要:基于AVR单片机设计了一种LED遥控照明系统,给出了红外接收模块和LED驱动模块的设计方法,以及软件程序流程。经测试,该方案可行,具有一定的应用价值。引言 LED照明已经进入了家庭用户,与传统的照明设备(如白炽灯、荧光灯)相比,具有光源单色纯度高、色彩多样、效率高、光强度可调等优点。针对传统照明亮度不易调节、开关位置固定的问题,本文基于AVR单片机设计了一种LED遥控照明系统,提出了LED照明灯的驱动与亮度调节的方法。1 LED照明灯控制系统原理 系统原理图如图1所示。当红外接收器接收到红外遥控信号时,通过外部中断将AVR单片机从休眠模式中唤醒;AVR单片机开始解析红外信号,如果与系统地址匹配,则将根据解析到的命令改变LED恒流源驱动的输入,从而改变LED灯的状态。2 系统硬件设计2.1 控制器 控制器采用AVR单片机ATmega8。ATmega8是Atmel公司在2002年推出的一款AVR单片机,采用小引脚封装。ATmega8内部集成8 KB的可编程F1ash、512字节EEPROM和1KB内部SRAM;3个PWM通道,可实现任意小于16位、相位和频率可调的PWM脉宽调制输出;1个可编程的串行USART接口,支持同步、异步以及多机通信自动地址识别;5种省电模式。本系统中,控制器ATmega8的主要作用为:解析红外信号,对LED驱动器进行控制。2.2 红外接收模块 红外接收模块主要器件采用IRM-2368V,常用于家庭DVD、电视、空调等家电的遥控中。IRM-2368V具有以下特点:工作电压为2.4~6 V;灵敏度高,抗干扰能力强;能直接将遥控信号从载波中提取出来,输出匹配TTL、CMOS电平,可与单片机直接接口;遥控距离可达12m。图2为红外接收模块原理图。其中PD2复用为ATmega8的外部中断INTO,电源部分使用系统的5 V供电。2.3 LED驱动模块 LED驱动模块采用HV9910集成芯片。它具有如下特点:高能效超过90%;8~450 V的宽电压输入;输出电流从几mA到1A可调;能驱动多达百个LED灯;PWM调节电流。图3是LED恒流源驱动原理图,该驱动电路为典型buck-boost转化器设计。驱动器中输入电源电压Vin=12V,驱动3~6个3 50mA高亮度LED灯。 HV9910工作时,内部振荡频率fosc由引脚Rosc上的电阻决定。本设计中Rosc取470 kΩ,将MOSFET管Q1的gate端开关频率设定为50kHz。R osc与fosc满足以下关系式(Rosc的单位是kΩ): 每个LED灯工作时压降约为3 V,当有3只LED灯串联在输出端时,驱动器输出电压Vled=91 V。可得LED满电流工作时Q1管的控制信号占空比D为: Q1的导通时间Ton=D/fosc=8.6μs,输出电流Iled=350 mA,谐波电流抑制在30%以内,则可由下式得出电感L1的值: 本方案中L1实际使用1 mH。 R1上的反馈电压与HV9910内部比较电压250 mV相比较,若反馈电压大于250 mV,则关断Q1。由谐波电流关系式可求出R1: 3 系统软件设计 系统软件流程如图4所示。系统上电后,首先读取系统的状态配置,设定LED灯的工作状态;然后进入休眠模式,定时器依然工作在PWD状态中。IRM-2368V的输出口与ATmega8的PD2口相连,休眠状态下该端口配置为中断INT0;中断唤醒后,关闭中断并将该端口配置为输入端口。4 系统测试 在带负载(LED灯)的情况下,设定的PWM占空比与负载电流的实验结果如表1所列。可以看出,输出电流大小基本与PWM信号占空比呈线性正比关系。结语 本方案利用红外遥控较好地实现了家用LED照明调光控制。ATmega8与红外遥控远距离控制的优势还可以得到进一步的发挥:ATmega8的3个定时器可配置为3路PWM输出,即可以控制3串LED灯,可以为多色LED照明与装饰照明提供支持;ATmega8强大的处理能力也可以为个性化的照明方案提供强大的支持;红外收发系统除了能发送控制信号外,还能将灯光控制方案传输给ATmega8,系统将可以自由地更换个性化的照明方案。

    时间:2019-03-06 关键词: LED 单片机 AVR 驱动开发

  • 轻触式开关电路在AVR单片机中的应用

    K8T800货源 PDF 芯片资料 报价 | 轻触式开关电路在AVR单片机中的应用 电子论坛 您现在的位置:K8T800 的货源和报价 K8T800 的相关技术信息 其他型号 新亚科技(深圳)电子有限公司联系人:何先生 电话:086-755-61289243 北京益宝欣科技有限公司联系人:郭小姐/孙先生/沈小姐/马先生 电话:010-82673417/62553671/62554607/62576651 深圳市恒鑫龙电子联系人:蔡诗龙 电话:0755-82814116 深圳市杰洲科技有限公司联系人:刘小姐 电话:0755-83249867/83242395/83242392 >>更多供应商 轻触式开关电路在AVR单片机中的应用 王伯岭 引 言: 单键开关电路已经广泛应用于PDA、手机和电子词典等数码产品中,其实现方式多种多样。一般可采用RS触发器、计数器以及采用555集成电路等等。在单片机的一些实际应用中,以上的实现方式会增加整个电路的复杂度,不能达到简洁、实用的效果。本文将介绍一种可以在单片机应用中实现的,简易、稳定的轻触式单键开关电路。 1 电路原理 如图1所示,DC -DC为一个带有关断控制端的直流稳压电源芯片,MCU是一个单片机。当按下S1时,Q1和D1导通,稳压芯片工作,为单片机供电。单片机马上将相应的 I/O引脚置为输出高,这时Q1和Q2导通,整个电路进入工作状态。而后单片机再将这个I/O引脚设置为输入,由于上拉电阻R4的存在,Q1和Q2一直导通。单片机一直扫描相应I/O输入状态,如果S1没有按下去,则这个I/O将始终为高。当S1再次按下去时,D2导通,单片机检测到这个I/O引脚输入为低,这时单片机就将这个I/O设置成输出为低的状态。Q2截止,如果按键抬起,Q1也会截止,稳压芯片将不会为单片机提供电压,整个电路处于关断状态。 2 关于R3和上拉电阻R4的取值 在一些单片机中,例如AVR系列单片机ATMEGA8L,带有内部上拉电阻Rpu,如图2所示。 可以通过单片机程序控制电阻上拉与否,从而不需要外接上拉。 一般情况下,R3取值要远大于R4,否则单片机I/O的输入电压Vpin会有低于标准输入电压VIH最低值的可能。从ATMEGA8L数据手册中查到Rpu 取值在20kΩ~100kΩ之间,又因为VIH的最小值约为0.6VCC。因此R3/(R3+R4)>0.6,取R4=50kΩ,并取R3/(R3 +R4)=0.8 ,所以R3取值应该在200kΩ左右的范围,可以根据实际工作情况来选择具体的R4取值。 3 对Vin连接方式的处理 从图1上不难看出,采用这种控制方式后,Q1上将会消耗一定的功率。一种降低功率消耗的方式就是将Vin直接接到电池上去,可以根据电路灵活掌握。 4 电容C1的作用 对于一般的AVR单片机来说,内部都有BOD(Brown-down Detection)电路。这个电路具有低电压检测功能:当输入电压由高变低时,单片机就

    时间:2019-02-12 关键词: 电路设计 电路 AVR 机中 轻触

  • 基于AVR的自动扶梯 (二)

    第二部分 硬件部分2.1 ATMEGA128开发板ATMEGA128开发板采用了典型的计算机结构,主要是CPU,RAM,ROM和专门设计的输入输出接口电路等组成。ATMEGA128开发板则采用循环扫描工作方式,用户程序按先后顺序存放,CPU从第一条指令开始执行程序,直到遇到结束符后又返回第一条。如此周而复始不断循环。这种工作方式是在系统软件控制下,顺次扫描各输入点的状态,按用户程序进行运算处理,然后顺序向输出点发出相应的控制信号。2.1.1 ATMEGA128开发板控制系统流程ATMEGA128开发板的运行、停止、检修、状态显示、故障判断及报警等功能是通过采集光电探测传感器等装置送来的各种输入信号经过ATMEGA128开发板内部逻辑处理,通过输出指令控制变频器、接触器等装置来实现。控制流程图如图2-1所示。在程序设计时,本系统采用模块化的编程思想,将各个功能模块单独编制子程序进行调用。在控制程序中,需要ATmega128单片机处理的最主要的逻辑信号是安全回路检测信号,该信号用了判断扶梯安全回路是否存在故障已及故障存在的位置,因而是自动扶梯安全运行的重要保证。需要ATmega128单片机进行处理的还有扶梯运行模式、状态、检修等信号。所有这些控制信号的给出,都是ATmega128单片机根据各个输入信号通过复杂的控制程序来实现,这些程序之间必须协调一致、判断合理才能完成自动扶梯的整体控制。ATmega128单片机的程序为循环扫描工作方式、首先ATmega128单片机初始化检查,内部寄存器复位与置位,接着检测扶梯的运行状态和运行模式,然后再将扶梯的各项安全信号状态放入状态寄存器,通过状态字确认扶梯是否处于正常,如正常则输出信号驱动变频器等设备工作,使扶梯进行相应的运行。2.2 EVK1100开发板为了使扶梯运行更安全,我们将控制扶梯运行部分与监控扶梯安全的部分分开。控制扶梯使用ATMEL的ATmega128芯片,监控扶梯安全使用的是ATEML的EVK1100开发板。这样当控制运行的部分突然出现故障时,监控中心可以通过安全监控电路使扶梯停止运行。EVK1100开发板使用的是UC3A0512芯片。UC3A 系列拥有512K 字节的闪存,并拥有一个内置10/100以太网媒体接入控制器 (MAC)、10/100-Mbps IEEE(R) 802.3 标准以太网 MAC 可实现设计能通过互联网协议堆栈进行通讯的联网的植入式系统。2.3 变频器(FR-A700)变频器是把工频电源(50Hz或60Hz)变换成各种频率的交流电源,以实现电机的变速运行的设备。变频器主要由五部分组成:整流回路、逆变器、控制电路、制动组件和保护回路.变频调速控制方式一般大体可分为两种,开环控制和闭环控制,后者需要电动机轴转速反馈。普通的电压/频率(V/F)控制属于开环方式,闭环控制方式包括转差频率控制、矢量控制等方式。根据系统需要,本系统选用三菱公司生产的FR-740变频器,该变频器可方便设定启动额度频率、运行频率、加速时间、驱动转矩等参数,可满足系统所需的各种功能要求。其实物如图2-3。2.3.1 ATMEGA128开发板与变频器的连接图变频器与ATMEGA128开发板的输出端口连接如图所示,当光电检测装置检测到乘客信号时,Y0输出,变频器的RH端子有输入信号,变频器根据预先设置的频率和加速时间控制扶梯电机缓慢加速启动,当在设置的时间段T2内检测不到新的乘客时。Y1输出,变频器的RM端子有输入信号,变频器按照预先设置的较低的频率输出,控制扶梯以节能方式运作。通过给变频器的RH,RM,RL的三个端子进行不同输入组合,可设置不同的运行频率输出。当在设置的时间T3段内检测不到新的乘客时,Y2输出,变频器的停止信号控制端子MRS有输入信号,变频器停止输出,扶梯停止运作。变频器的SD端与ATMEGA128开发板的COM端相连接。连接如图2-4所示。2.3.2 ATMEGA128开发板与变频器连接应注意的问题数据处理需要时间,存在一定的时间延迟,故在较精确的控制时应予以考虑。因为变频器在运行中会产生较强的电磁干扰,为保证ATMEGA128开发板不因为变频器主电路断路器及开关器件等产生的噪声而出现故障,将变频器与ATMEGA128开发板相连接时应该注意以下几点:1)对ATMEGA128开发板本身应按规定的接线标准和接地条件进行接地,而且应注意避免和变频器使用共同的接地线,且在接地时使二者尽可能分开。2)当电源条件不太好时,应在ATMEGA128开发板的电源模块及输入/输出模块的电源线上接入噪声滤波器和降低噪声用的变压器等,另外,若有必要,在变频器的接线端也应采取相应的措施。3)当把变频器和ATMEGA128开发板安装于同一操作柜中时,应尽可能使与变频器有关的电线和与ATMEGA128开发板有关的电线分开。4)通过使用屏蔽线和双绞线达到提高噪声干扰的水平。对于变频器而言,主回路端子PE的正确接地是提高变频器抑制噪声能力和减小变频器干扰的重要手段,因此在实际应用中一定要非常重视。在变频器等电力电子设备中,为了提高装置的抗干扰和防雷击能力,在电源输入侧均有电容或者压敏电阻组成的电源滤波和压敏电阻、放电管组成的防雷击电路,有些变频器可以直接选用外接模块单元。在我国,大多数工厂采用三相四线制,有些用户因没有地线,干脆不接,或者为了简单将PE接至零线。在这种情况下,由于防浪涌电路中的电容及压敏电阻漏电流IC和IR较大,一般为几十至几百毫安,在接地情况不够良好的情况下,R0较大,零线与地之间的电压达到几十伏,甚至上百伏,既不符合消防安全规范,也对系统的可靠性产生重大影响,因此在条件允许的情况下应尽量采用专用接地线,避免与其他设备公用接地。变频器接地导线的截面积一般应不小于2.5mm2,长度控制在20m以内。建议变频器的接地与其它动力设备接地点分开,不能共地。2.4 旋转编码器(E6A2-CW5C)旋转编码器是用来测量转速的装置。它分为单路输出和双路输出两种。技术参数主要有每转脉冲数(几十个到几千个都有),和供电电压等。单路输出是指旋转编码器的输出是一组脉冲,而双路输出的旋转编码器输出两组相位差90度的脉冲,通过两组脉冲不仅可以测量转速,还可以判断旋转的方向。工作原理:由一个中心有轴的光电码盘,其上有环形通、暗的刻线,有光电发射和接收器件读取,获得四组正弦信号组合成A、B、C、D,每个正弦相差90度相位差(相对于一个周波为360度),将C、D信号反向,叠加在A、B两相上,可增强稳定信号;另每转输出一个Z相脉冲以代表零位参考位。由于A、B两相相差90度,可通过比较A相在前还是B相在前,以判别编码器的正转与反转,通过零位脉冲,可获得编码器的零位参考位。编码器有5条引线,其中3条是脉冲输出线,1条是COM端线,1条是电源线。编码器的电源可以是外接电源,也可直接使用ATMEGA128开发板的DC24V电源。电源“-”端要与编码器的COM端连接,“+ ”与编码器的电源端连接。编码器的COM端与ATMEGA128开发板输入COM端连接,A、B相脉冲输出线直接与ATMEGA128开发板的输入端连接(A相与X0相连,B相与X1相连),连接时要注意ATMEGA128开发板输入的响应时间。有的旋转编码器还有一条屏蔽线,使用时要将屏蔽线接地。2.5 语音芯片(ISD 1720)在本系统中采用ISD 1720型号的语音芯片,来构成语音报警系统,人数过多时,发出警报,提醒乘客,达到语音报警的安全控制。1、功能概述ISD1700系列录放芯片是一种高集成度,高性能的芯片。它可以多段录音,采样率可在4K至12K间调节,供电范围可以在2.4V至5.5V之间。ISD1700系列录放芯片可工作于独立按键模式和SPI控制模式。芯片内有存储管理系统来管理多段语音,这样在独立按键模式下也能进行多段语音录放。此芯片内有振荡器,可通过外部电阻来调节其振荡频率;还有带自动增益控制(AGC)的话筒运放,模拟线路输入,抗锯齿滤波器,多级存储阵列,平滑滤波器,音量控制,直接驱动喇叭的PWM输出与接外部功放的电流/电压输出。2.6 光电开关(GY50-W3-3E1)光电开关(光电传感器)是光电接近开关的简称,它是利用被检测物对光束的遮挡或反射,由同步回路选通电路,从而检测物体有无的。物体不限于金属,所有能反射光线的物体均可被检测。光电开关将输入电流在发射器上转换为光信号射出,接收器再根据接收到的光线的强弱或有无对目标物体进行探测。关电开关的特点:(1)、检测距离长。(2)、响应速度快。(3)、分辨能力高。(4)、容易取得规则的检测区。(5)、不受磁场和震动的影响。(6)、利用光的特性检测。对于本系统的检测要求,及以上对关电开关的功能分析,我们选用GY50-W3-3E1型号的光电开关用来做光电检测,来满足扶梯系统的检测要求。2.7 钥匙开关钥匙开关分为三位钥匙开关和两位钥匙开关,适用于交流50HZ(或60HZ),电压380V以下,及直流电压220V以下的电磁启动器、接触器、继电器及其它电器线路中作遥远控制和安全控制之用,其中带灯式按钮(LED)发光)还适用于需要灯光信号指示的场合。本系统选用3种状态的钥匙开关,用于切换扶梯的上下行运行,可防止非工作人员接触,造成不必要的故障及事故。其实物如图2-9所示第三部分 系统通信3.1 计算机(PC)与EVK1100开发板之间的通信UC3A 系列拥有512K字节的闪存,并拥有一个内置10/100以太网媒体接入控制器(MAC)、10/100-Mbps IEEE(R) 802.3 标准以太网 MAC 可实现设计能通过互联网协议堆栈进行通讯的联网的植入式系统。本项目使用了EVK1100开发板上的以太网模块。第四部分 结束语4.1 此设计系统最终实现的功能节能方面:1、分时运行:当光电传感器检测到有人时扶梯自动调频并加速,无人时则减速至停止。安全方面:1、局域网安全监控:通过摄像头可观测都整个扶梯的运行情况,扶梯不正常运行时监控中心可通过网页操作,发送指令给EVK1100,EVK1100发出信号是扶梯停止运行。2、速度监控:编码器检测扶梯的运行速度,并在速度与设定的速度相比过快或过慢时发出提示。3、语音报警:电机温度过高时会向乘客发出提示。4、液晶:显示扶梯运行速度,温度,扶梯上的人数,当前时间,故障报警信息 。5、线圈保护:KM1常闭和KM2线圈串联,KM2常闭和KM1线圈串联,保证KM1线圈和K M2线圈不能同时的电。6、钥匙开关:正,反,停控制,防止非工作人员接触扶梯开关。7、急停按钮:变频器或检测传感器出现故障时,可通过此按钮让扶梯停止运行。自动扶梯控制设计方式多样,各有千秋。通过以上介绍和分析,不难得出这样的结论采用旁路变频控制的自动扶梯的设计,除了运行可靠、稳定性高和安全性能增强外,同时还大大的减少了能源的浪费,这自动扶梯控制系统的基础上都有了一个质的飞跃,实现自动化控制的同时还节约了能源。本设计利用ATMEGA128开发板和三菱FR-A740型变频器控制,运行可靠,性能优良,检修方便。在传统的扶梯中,不管人流量多少或者有无乘客,扶梯都以额定的速度运行,造成很大的能量损耗,不间断的运行也使得扶梯各部分的机械磨损严重,缩短了扶梯的使用寿命。对传统扶梯的控制系统进行节能改造后,具有调速性能好、节能效果显著、运行安全可靠等优点,是当今社会节能降耗、提高效率的有效手段。同时由于变频器在启动时电流是从零开始缓慢增加的,所以采用变频器技术后,还可以降低扶梯在启动时的冲击电压对电网的影响。

    时间:2019-01-18 关键词: AVR 电源技术解析 自动扶梯

  • AVR驱动软驱电机程序

    时代变了,软驱没有用了,但是里面的电机是比较好玩的,拿出来研究研究。CODE:/*用mega32三个口线驱动软驱电机.PA2接LB1833 ENA12 脚;PA1接LB1833 IN1 脚;PA0接LB1833 IN2 脚.*************************************************** ///ICC-AVRapplication builder : 2005-5-20 10:40:30// Target : M32// Crystal: 3.6864Mhz#include#includeunsigned char np;//步进电机运行数据表const unsigned char motortb[]={0x05,0x07,0x06,0x04,0x05,0x07,0x06,0x04};void delay ( unsigned char t );// 每步延时的子程序void a_step( unsigned char d, unsigned char t );//步进电机走一步d=0 正转d=1 反转void port_init( void ){ PORTA = 0x00; DDRA = 0xFF; PORTB = 0xFF; DDRB = 0x00; PORTC = 0xFF; DDRC = 0x00; PORTD = 0xFF; DDRD = 0x00;}//call this routine to initialise all peripheralsvoid init_devices( void ){ //stop errant interrupts until set up CLI(); //disable all interrupts port_init(); MCUCR = 0x00; GICR = 0x00; TIMSK = 0x00; //timer interrupt sources SEI(); //re-enable interrupts //all peripherals are now initialised}void delay ( unsigned char t )// 每步延时的子程序{ unsigned char i; unsigned int j; for (i = 0 ; i < t ; i++ ) { for ( j = 0 ;j < 800 ; j++ ) ; }}void a_step ( unsigned char d, unsigned char t) //步进电机走一步d=0 正转d=1 反转 t // 越大走得越慢{ if ( d & 0x01 ) { if ( np == 0 ) { np = 7; } else { np--; } } else { if ( np == 7 ) { np = 0; } else { np++; } } PORTA = motortb[np]; delay(t);}void a_turn (unsigned char d, unsigned char t)// 步进电机走一圈{ unsigned char i; for ( i = 0 ; i < 96 ; i++ ) { a_step ( d, t ); }}void main ( void ){ np = 4; while (1) { a_turn ( 1, 1 ); }}

    时间:2019-01-17 关键词: AVR 驱动软驱电机

  • 74HC595 74HC165程序例子(AVR)

    硬件说明:ATmega48/88/168的PB5是SPI时钟输出,接74HC595/74HC165的移位时钟输入端;PB4是SPI的MISO数据输人,接74HC165的数据输出;PB3是SPI的MOSI数据输出,接74HC595的串行数据输入端SER;PB2接74HC595/74HC165的锁存时钟输入端。程序1:本例子是用硬件SPI接口循环发送一个变量到74HC595,并且在数据发送完毕后通过单片机的另外一个IO接口PB2输出一个“锁存”脉冲 ,使74HC595把移位寄存器的数据输出到锁存寄存器,并驱动8个LED输出,实现来回流水的效果。//本程序在本站的M8 V2.0 实验板通过// CodeWizardAVRV1.25.1// http://www.avrdiy.com// 程序设计: 啊艺panxiaoyi#include#include#includevoid main(void){ unsigned char data=1 , sign=1; PORTB=0; DDRB=0; PORTB|=0b00000100;//空闲时PB2=1是为了兼容74HC165,因为锁存时钟=1时74HC165才允许读数据 DDRB|= 0b00101100;//PB口的2/3/5使能输出,其它口不变 SPCR=80;//SPI初始化/高位先输出/空闲时时钟=0,数据=0/4分频/数据在时钟上升沿有效/主机 while(1) { spi(data);//输出data数据,本函数采样查询方式发送,直到数据发送完毕才运行下一条语句 PORTB.2=0; PORTB.2=1;//74HC595移位寄存器的数据在锁存时钟上升沿时传送到锁存寄存器 delay_ms(1000); if(data==1) sign=1;//记录顺序流水 if(data==128) sign=0;//记录倒序流水 if(sign) data=1;//如果顺序流水数据就左移一位,否则数据就右移一位 }}//end   程序2:本程序利用硬件SPI连接74HC165采集8个按键信息,并且由75HC595驱动8个LED把按键的信息显示出来//本程序在本站的M8 V2.0 实验板通过// CodeWizardAVRV1.25.1// http://www.avrdiy.com// 程序设计: 啊艺panxiaoyi#include#include#includevoid main(void){ unsigned char data=0 , x; PORTB=0; DDRB=0; PORTB|=0b00000100; //空闲时PB2=1是为了兼容74HC165,因为锁存时钟=1时74HC165才允许读数据 DDRB|= 0b00101100; //PB口的2/3/5使能输出,其它口不变 SPCR=80; //SPI初始化/高位先输出/空闲时时钟=0,数据=0/4分频/数据在时钟上升沿有效/主机 while(1) { x=spi(data); //输出data数据到74HC595,同时读取74HC165的数据,保存在变量x PORTB.2=0; PORTB.2=1; //刷新74HC595/74HC165的数据 data=x; }}//end程序3:本程序把读74HC165和写74HC595分别写成一个函数,使用更方便#include#include #includevoid main(void){ spiinit(); //spi初始化 while(1) { unsigned char data,i; data=read165(); //通过硬件SPI读取74HC165的数据 if(data==254) i+=1; write595(i); //通过硬件SPI把数据写入74HC595 delay_ms(100); }}//end下面是头文件"595-165.h"的内容//定义一个全局变量来记忆最后一次写入74HC595的数据//目的是读74HC165时保持74HC595的数据不发生改变//变量名复杂一点目的是避免和其它变量混淆unsigned char DATA_74HC595_74HC165;void spiinit(void) //spi初始化{ PORTB&=0b11000011; DDRB|= 0b00101100; SPCR=80;}void write595(unsigned char LED_DATA) //写数据到74HC595函数{ SPDR=LED_DATA; //开始发送数据 while((SPSR>>7)==0); //等待发送接收结束 DATA_74HC595_74HC165=LED_DATA; //记忆最后一次发送的数据 LED_DATA=SPDR; //读,是为了清零中断标志 PORTB&=251; PORTB|=4; //PB2输出一个负脉冲,刷新74HC595的数据}unsigned char read165(void) //读74HC165函数{ PORTB&=251; PORTB|=4; //PB2输出一个负脉冲,刷新74HC165的数据 SPDR=DATA_74HC595_74HC165; //载入74HC595最后一次的数据,目的是读取74HC165 while((SPSR>>7)==0); //等待发送接收结束 return SPDR; //返回值是SPI接收到74HC165的数据}

    时间:2019-01-17 关键词: AVR 74hc595 74hc165

  • 基于AVR单片机显示板设计

    随着现代社会的发展,科学技术的进步,出现了众多高层建筑和智能建筑。电梯,作为高层建筑内部一种重要的交通工具,其应用规模日益扩大。而作为电梯系统中必不可少的一部分,电梯召唤显示板(简称电梯外呼板)的应用也随之剧增。 电梯外呼板应用于每层楼的电梯门外,供乘客及电梯维保人员使用。电梯外呼板将乘客及维保人员的需求信息通过CAN总线传达给电梯主板,电梯主板接收信息并执行相应的操作。同时,电梯主板将电梯的实时运行信息通过CAN总线传递给电梯外呼板,通过外呼板LED显示出来,供乘客参阅。 AVR单片机具有高可靠性、功能强、高速度、低功耗和低价位的特点,本系统选用了高档ATmega列AVR单片机ATmegal6。它具有先进的RI-SC结构,具有16 kB的系统内可编程Flash,512 B的EEPROM,1 kB的片内SRAM。同时,芯片具有独立片内振荡器的可编程看门狗定时器,通过改变熔丝位可以设置片内晶振的振荡周期,这样可以省去外围的看门狗电路和晶振电路的设计。 1 电梯外呼板系统硬件结构 电梯外呼板的硬件电路主要由乘客按键模块、指示灯控制模块、LED模块、CAN通信电路以及电源模块构成,如图1所示。 1.1 CAN通信模块 1.1.1 CAN的技术特点 CAN是一种多主总线,通信介质可以是双绞线、同轴电缆或光导纤维,具有物理层、数据链路层和应用层等3层协议,其通信速率可达1 Mb/s。CAN总线专用接口芯片中以固件形式集成了CAN协议的物理层和数据链路层2层功能,完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余校验、优先级判别等多项工作。它具有以下特点: 1)废除传统的站地址编码,代之以对通信数据块进行编码,可以多主方式工作; 2)采用非破坏性仲裁技术,当2个节点同时向网络上传送数据时,优先级低的节点主动停止数据发送,而优先级高的节点可不受影响继续传输数据,有效避免了总线冲突; 3)采用短帧结构,每一帧的有效字节数为8个,数据传输时间短,受干扰的概率低,重新发送的时间短; 4)每帧数据都有CRC校验及其他检错措施,保证了数据传输的高可靠性,适于在高干扰环境下使用; 5)节点在错误严重的情况下,具有自动关闭总线的功能,切断其与总线的联系,以使总线上其他操作不受影响; 6)可以点对点,一对多及广播集中方式传送和接收数据。 基于以上特点,在本设计中将电梯主板节点的优先级设为最高,而其他电梯外呼板的优先级次之,电梯主板可以接收任何电梯外呼板的数据,而电梯外呼板只能接收电梯主板的数据。电梯主板可以发送广播信息(例如楼层运行的信息),也可以发送点对点信息(例如针对某层的指示灯控制信息)。 1.1.2 CAN的硬件实现 CAN控制器采用MICroChip公司的MCP2510,该器件使用SPI接口与MCU通信。只需4条总线就可以实现与MCU的通信,但为了具有更好的实时性,一般采用中断方式与MCU进行通信,因此还需要一个中断信号总线 用来通知MCU接收从CAN总线上发来的数据。CAN的接口器件采用TJ-Al050,该器件是CAN控制器与物理总线之间的接口器件。 在CAN模块电路中,如图2所示,ATmegal6的SS,MOSI,MISO,SCK,INT分别与MCP2510的 ,SI,SO,SCK, 相连接。为了进一步提高CAN总线节点的抗干扰能力,MCP2510的TXCAN和RXCAN通过光耦6N137分别与TJAl050的TXD和RXD相连接。 1.1.3CAN的报文格式在总线中传送的报文,每帧由7部分组成。CAN协议支持2种报文格式,其唯一不同是标识符(ID)长度不同,标准格式为11位,扩展格式为29位。本设计中使用标准数据帧,由帧起始、仲裁域、控制域、数据域、CRC域、应答域和帧结尾等7种位域组成,如图3所示。其中数据域的长度为0~8个字节。仲裁域由标识符和RTR组成,在标准格式中,标识符为11位。在本例通信协议的制定中,标志位的前4位用作通信的类型码,后7位用作CAN节点的ID号。数据域则用来存储通信的具体内容信息,例如电梯所在的楼层,运动方向等。1.2LED显示模块本模块由3片8x8 LED显示屏以及以单片机为核心的驱动电路构成。LED显示屏由LED点阵显示器P2158构成。它是以发光二极管为像素,按照行与列的顺序排列而成的显示器件,采用逐行(或逐列)扫描方式工作,由峰值较大的窄脉冲驱动,从上到下逐次不断地对显示屏的各行进行选通,同时又向各列送出表示图形或文字信息的脉冲信号,反复循环以上操作,就可显示各种图形或文字信息。以AVR高速单片机为核心的驱动电路如图4所示。LED显示功能采用逐行扫描的方法,在3片8×8点阵LED显示屏上显示相应的信息。控制信号由MCU发出,经过缓冲器74F244后分成2路,一路经过移位寄存器74S164,串行转并行后来驱动LED点阵的行;另一路经过锁存器68595,串行转并行后驱动LED点阵的列。LED点阵显示采用逐行扫描,每行显示取模方式为从右到左,字节正序输出。其中,锁存器的输入数据由软件中的字库提供。LED显示每20 ms显示一次,故显示频率为50Hz,符合人眼的闪烁特性。2 电梯外呼板软件设计电梯外呼板软件设计流程如图5所示。电梯外呼板通过CAN总线接收电梯主板的数据帧,并将数据帧暂时存入缓存区,经过分析处理后按一定的方式保存起来。然后根据数据帧要显示的方式,从数据存储器中取出相应的数据存到一个显示缓存区进行显示,采用逐行扫描方式显示。电梯外呼板上如果有召唤信号输入,相应指示灯亮,同时电梯外呼板上通过CAN总线向电梯主板发送数据帧,数据帧内容包含召唤信息。通信的方式建立握手应答机制。3 结束语本系统采用AVR单片机,使用CAN总线通信,通信安全可靠,实时性好,主要用在电梯系统中的外呼召唤显示,同时也可以用在电梯轿厢中用于楼层信息的显示。将其接入电梯仿真系统中,本系统能够快速响应,长时间运行期间安全可靠,增加和删除节点简单方便。

    时间:2019-01-16 关键词: 单片机 AVR

  • 基于AVR单片机的高精度频率调节器

    摘要:精确的频率控制是现代化工业生产与高精度测试的必备手段。基于ad9850可以发生优于1hz频率精确度的信号,这对于频率测试来说至关重要。本文介绍的这种频率调节器由atmel公司的avr单片机atmega16l作为控制核心,采用4×4键盘作为频率值输入设备。avr单片机扫描键盘并且读入用户设定的频率值。随后,avr单片机计算出ad9850的控制字,并且对ad9850发出指令。本文介绍的频率控制器可以通过“+1hz”键和“–1hz”键微调频率值。本文对频率控制器扩展了液晶显示模块,因此当前频率值可以被实时显示。它可以生成方波和正弦波。设计中使用了看门狗定时器防止程序进入死循环而不能正常工作。   关键词:avr,单片机,频率,控制 1引言   在现代化工业生产与高精度测试中,我们需要相当精确的频率来帮助判断设备性能指标。而且我们希望能够微调该频率。采用压控振荡器得到的频率不够精确,微调频率步骤烦琐,耗时漫长,因此有些测试项目限制了压控振荡器的使用。 mega系列单片机是atmel公司于2002年起陆续推出的。这款avr增强型单片机具有速度快,抗干扰能力强,价格低廉等诸多优点。为了加快avr单片机的软件编制,atmel以及第三方提供的开发工具多种多样,程序开发方便有效。该单片机内部flash结构功能灵活,加锁后很难解密,可以最大限度地保护知识产权。avr单片机可以广泛应用于通信、野外测试、汽车电子、医疗器械等领域,并且适用于各种低电压、低功耗的场合。   本文提出一种方法能够基于avr单片机,采用ad9850提供精确到1hz的频率信号,不但可以发生正弦波,也可以发生方波,从而为要求频率精度高的企业解决了难题。它以atmel公司的avr单片机atmega16l作为核心,能够方便、准确地控制输出频率。由于avr单片机实现了在线可编程,所以大大简化了设计步骤,加快了设计进程,同时不会烧毁、烧费芯片,节约了成本。  用户通过4×4键盘设定频率值,avr单片机使用i/o端口,扫描读入频率值。随后avr单片机控制ad9850调节到用户要求的频率。ad9850的输出可以接电压比较器整形为方波,也可以经过低通滤波器限制带宽,输出正弦波形。avr单片机同时控制液晶显示模块,使之实时显示当前频率。 2控制核心与频率发生技术 2.1控制核心   本设计采用了atmel公司的avr单片机atmega16l作为控制核心。avr单片机的单周期指令能够保证高的执行效率和低成本,是精简指令集cpu中的高性能器件。avr单片机可以提供高达16mips的执行时间,具有128k字节的可编程flash存储器,同时具备4096字节的静态ram。avr单片机自带看门狗定时器,在强烈的电磁干扰条件下可以防止程序跑飞。本设计中采用的atmega16l还具有以下特点: ·内部包含有硬件乘法器,加快乘法运算速度;i/o端口引脚数多达32根;·支持在线可编程功能,不需要频繁从电路板插拔芯片;带有可编程的支持同步传输的uart端口; ·支持三线传输spi端口;具有方便的i2c总线端口,直接与philips芯片接驳; ·支持jtag边界扫描电路;具有bod低电压检测功能; ·内部有8路10位的a/d变换器;具有4个pmw,可以协同或单独工作; · 内部带有实时时钟电路;工作频率最高可达16mhz。 2.2ad9850频率发生技术   ad9850是ad公司推出的低功耗直接数字频率合成器芯片,可以产生从直流到62.5mhz的宽频率信号,从投入市场到今天已经应用在雷达系统、低功耗频率源中。它良好的频率合成功能适合于应用在高精度测试中。本设计采用了ad9850作为波形发生器,具有体积小,功耗低的优点。   在控制流程中,avr单片机为ad9850计算了频率控制字,并且将频率控制字写入其中。联合小键盘上的“+1hz”键和“-1hz”键,本设计使得频率可以精确到步长为1hz的调节。它可以产生方波和正弦波。用户要求产生正弦波时,我们设计了低通滤波器用来滤除信号的高频分量。该低通滤波器还可以使用五阶椭圆滤波器实现。图2示出了本系统的ad9850电路设计图。pc2——pc5可以同时作为i2c总线端口。 3输入设备与输出设备 3.1键盘输入设备与相应软件   本设计采用了4×4键盘作为频率输入设备。由于按键个数少,只有16个,需要表示从1hz—10mhz的广泛频率,故在软件设计中采用了avr单片机扫描方式。将端口a的8根i/o引脚全部作为扫描键盘使用。键盘定义除了0——9共10个数字之外,还定义了“退格”键、“全删”键、“输入”键、“+1hz”键和“-1hz”键,这样就可以极大地方便用户随时修改频率和微调频率。读入用户输入的频率值时,采用了延时防抖抗干扰的软件程序。扫描变量的初始值设置为0xfe,以低电平0依次变化实现扫描。本单片机键盘扫描的c代码如下所示: sccode=0xfe;/*everyscaninitiativevalue,11111110*/ while(sccode!=0xef)/

    时间:2019-01-16 关键词: 频率 调节器 单片机 AVR 嵌入式处理器

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

技术子站

更多

项目外包