基于单片机和CPLD试验开发板的设计(完整资料)_第1页
基于单片机和CPLD试验开发板的设计(完整资料)_第2页
基于单片机和CPLD试验开发板的设计(完整资料)_第3页
基于单片机和CPLD试验开发板的设计(完整资料)_第4页
基于单片机和CPLD试验开发板的设计(完整资料)_第5页
已阅读5页,还剩147页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于单片机和CPLD试验开发板的设计(完整资料)(可以直接使用,可编辑优秀版资料,欢迎下载)

基于单片机和CPLD试验开发板的设计(完整资料)(可以直接使用,可编辑优秀版资料,欢迎下载)基于51单片机和CPLD试验开发板的设计摘要阐述了设计的各部分硬件的原理和用于试验的软件设计,特别给出了RTC的设计在实验板设计中的成功应用。单片机CPLD实验板将单片机与CPLD有机结合在一起,构建以51单片机为主,CPLD为辅的电路系统设计方案,既可以独立用于单片机实验或CPLD实验,也可以用于单片机和CPLD综合应用的实验。尤其,集成了具有ISP功能的CPLD和ISP功能的单片机,为初学者节约了昂贵的编程器成本。关键词:51单片机CPLDISP编程器实验板ABSTRACTInthispaper,itwaselaboratedthatthevariouspartsofthedesignprinciplesofhardwareandsoftwarefortestdesign,especiallygiventhedesignoftheRTCboardinthesuccessfulapplicationofdesign.TheexperimentofMCUandCPLDwillbecombinedwiththeMCU-CPLDboard,whichmainlytobuild51single—chip,CPLDsecondarycircuitystemdesign,andbothindependentexperimentsorCPLDforthesingle—chipexperimentscanalsobeMCUandCPLDforthecomprehensiveapplicationoftheexperiment.Inparticular,theintegratedfunctionoftheCPLDandMCUwithISPforbeginnerssavesthecostofexpensiveprogrammers.Keywords:51MCUCPLDISPprogrammerexperimentboard目录引言……………31MiniB的目的及意义……………………32MiniB的硬件设计………42.1单片机与CPLD接口电路……………42.2USB及串行接口电路……………62。3最小系统及外围设备接口电路………82。3。1电源电路………82.3.2单片机P1口扩展电路………82.3.3显示接口电路…………………123MiniB的软件设计………123.1由AVR单片机ATmega8实现USB转串口的驱动设计和ISP(in—system—programming)的使用…………………123.2RTC设计实例(DS1302+LCD1602+复杂按键输入+多模式蜂鸣器发声+多任务轮循架构)…………………133。2.1任务解析及人性化设计要求………133.2.2多任务程序架构……………143。2.3任务调度………173.2.4任务设计………184调试………………………26致谢…………………27参考文献……………28引言ﻩ单片机以其控制功能强体积小价格低耗电省可靠性高等特点,嵌入式应用很广[1].而单片机学习门槛较高,涉及单片机软硬件知识,同时还要掌握几种软硬件工具平台,初学者要想快速入门单片机领域,往往需要一个好的硬件平台和大量易懂的实例.随着电子技术的不断发展,大规模集成电路的运用越来越普遍,用CPLD/FPGA来开发新产品是电子技术发展必然趋势。目前各高校逐步开设了单片机课程和可编程器件设计课程,而两门课程往往是独立开设,尤其是实验,而实验是检验理论正确与否的试金石,是学好两门课程的重要手段和方法。从而,切实满足初学者需要的实验板的开发成为了现实,而目前市场上针对初学者而开发的综合实验板价格高,体积大,操作烦琐,不易学习掌握。1MiniB的目的及意义现在市场上关于单片机和CPLD的试验开发板很多,总体上来说设计不专业,成本价格高,功能的单一,不能用于单片机和CPLD的综合应用试验,操作复杂利用率不高,但对于在校学生和电子爱好者这些消费者来说需求还很大。1.1目的为单片机和CPLD初学者提供一款经济实用型实验板,解决单片机和CPLD独立学习的问题,设计过程中个人知识能力的提升,以消费者的切实需要为原则,市场的需求明显。1.2意义此款单片机加CPLD实验板是总结单片机和CPLD学习的经验,站在初学者的角度上而开发,将单片机与CPLD有机结合在一起,构建以单片机为主,CPLD为辅的电路系统设计方案,既可以独立用于单片机实验或CPLD实验,也可以用于单片机和CPLD综合应用的实验,打造出袖珍单片机CPLD学习板。尤其,集成了具有ISP功能的CPLD和ISP功能的单片机,为初学者节约了昂贵的编程器成本。2MiniB的硬件设计系统结构如图2所示,该板采用单片机+CPLD结构,单片机为主,CPLD为辅。与单片机相连的模块有:P1口接发光二极管、蜂鸣器、继电器、AD/DA,P4口(STC单片机PLCC-44封装特有)接实时时钟DS1302、红外接收器,P3口接232电平转换电路和4个按键,单片机P0口和P2口以及P3.6、P3.7作为总线使用,CPLD直接驱动4位数码管,并给LCD提供使能信号,单片机和CPLD引脚分别有扩展接口,板上集成5V稳压电源,可以外接DC9V电源,也可以从计算机USB口直接取5V电源,JTAG接口完全符合IEEE1149.1标准,提供完全的边界扫描功能[2]。图2系统结构图2.1单片机与CPLD接口电路现在所有单片机厂家都有支持ISP的单片机,由于STC公司推出的STC系列单片机具有较强的功能和较高的性价比,本设计采用STC89C516RD+单片机作为系统的核心。单片机选STC89C5X,该系列单片机内部集成MAX810/STC810专用复位电路,内置看门狗,超强抗干扰,轻松过2KV/4KV快速脉冲干扰(EFT),加密性强,STC89C52RC~STC89C58RD+系列与Intel8051管脚兼容,宽电压,5.5V~3.4V给复位信号后能正常工作,PQFP—44,PLCC-44封装有P4口。STC89C51RC有3个定时器/计数器,1280字节大容量内部数据RAM,特别是该系列单片机支持ISP编程,开发无需高价的编程器,可实现远程升级,在ISP下载编程时可设置6或12时钟/机器周期模式,在6时钟模式,比普通51速度快一倍.CPLD有两种型号可选,ALTERA的EPM7064和ATMEL的ATF1504。器件的参数特性可参阅相关资料。单片机和CPLD都选择PLCC—44脚封装,占用PCB面积小,更换容易。图2.1(a)单片机与CPLD接口电路Mini51板的CPLD选择Altera公司的EPM7064.单片机与CPLD总线接口如图2.1(a)所示。数据总线既单片机P0口同CPLD一般IO口相连,完成数据和低8位地址传送;控制总线包括单片机读写控制信号Rd(P3.7)和Wr(P3。6),以及地址锁存信号ALE(AddressLockEnable)和高位地址线A15(P2.7)通过CPLD的全局信号引脚输入,包括全局时钟输入:INPUT/GCLK1,全局清零输入INPUT/GCLRn,全局使能输入INPUT/OE1,INPUT/OE2,这几个信号有专用连线与CPLD中每个宏单元相连,保证信号到每个宏单元的延时相同并且延时最短。单片机与CPLD之间可以根据需要,采用多种不同的接口方式,这里提出一种总线接口方案,采用三总线(数据、控制、地址)结构,如图2.1(b)所示,双向数据总线完成数据传输,单向控制总线和地址总线通过CPLD对外围对象控制.图2.1(b)单片机与CPLD接口电路框图2。2USB及串行接口电路由AVR单片机ATmega8实现USB转串口且实现ISP(in-system—programming)功能的接口电路,如图2。2。USB接口使用方便,逐渐成为主流,计算机经典接口串口,并口慢慢消失,于是出现USB转串口,转并口,专用IC很多,一般都很昂贵,USB方案成为最佳选择。ATmega8是AVR高档单片机中内部接口丰富、功能齐全、性能价格比最好的品种[2]。通过烧写USBASP固件和AVR-CDC固件分别实现两种功能:一是实现AVR和S51ISP编程,二是实现USB转串口.这里串口输出(图中为uRxD和uTxD)为TTL电平,可以直接接单片机。图2。2由AVR单片机ATmega8实现USB转串口且实现ISP(in—system-programming)功能的接口电路ISP(in-ysem-prograing指系统在线可编程,是最先由Lattice公司提出的一种技术,是通过同步串行方式实现对同步串行方式实现对其可编程逻辑器件的重配置ISP的现比较简单通用做法是内部的存储器可以由上位机的软件通过串口来进行改写对于单片机来讲可以通过PI或其他的串行接口接收上位机传来的数据并写入存储器中.采用P术P技的优势是不需要编程器就可以进行单片机的实验和开发,按照SC公司提供ISP下载线的接口标准,只要在单片机与PC机之间加一个电平转换电路就可以实现程序的在线下载免了调试时由于频繁地拔插对芯片和电路板带来的损坏这对于生的实验教学而言显得尤为重要由于P技术具的上述特点采用了ISP技术,其转换电路如上图。2。3最小系统及外围设备接口电路2.3。1电源电路该板提供两种供电方式如图2.3。1,一种从接口输入DC9V电源,板上集成7805稳压IC,采用贴片封装,也可以从接口通过计算机USB接口取电。图中按钮为常闭开关,用来断开电源实现冷启动用。其中D3用来防止电源极性接反,R4为4.7欧电阻,这里起保护作用,防止实验板短路,损坏计算机USB接口.图2。3。1电源电路2.3.2单片机P1口扩展电路STC89C5X系列单片机有P4口,因此将P4.0~P4。2分配给DS1302,P4。3端口,用于连接温度传感器DS18B20电路如图2。3.2(a)所示。DS1302是DALLAS公司推出的涓流充电时钟芯片内含有一个实时时钟/日历和31字节静态RAM通过简单的串行接口与单片机进行通信实时时钟/日历电路提供秒分时日日期月年的信息每月的天数和闰年的天数可自动调整时钟操作可通过AM/PM指示决定采用24或12小时格式DS1302与单片机之间能简单地采用同步串行的方式进行通信仅需用到三个口线1RES复位2I/O数据线3SCLK串行时钟时钟/RAM的读/写数据以一个字节或多达31个字节的字符组方式通信DS1302工作时功耗很低保持数据和时钟信息时功率小于1mW.DS1302和处理器接口一般为3线制,RST(CE)复位脚,读写操作时同步时序同步用,I/O串行数据输入输出脚,SCLK串行时钟输入脚。图2.3.2(a)DS18B20和DS1302接口电路单片机P1口带锁存功能,编程容易。Mini51板上P1口被LED、蜂鸣器、继电器、串行AD/DA复用,除LED直接与P1相连外,其它都可以断开,只在需要用时连接。LED电路如图2.3.2(b)所示,低电平点亮,因为51系列单片机P1口靠内部上拉电阻输出高电平,所以一般不用P1口输出高电平驱动LED,外部限流电阻RP不宜太小,否则会影响到P1口状态,为以后P1口扩展留下隐患,如果用贴片发光二极管,RP甚至可以为4.7k。图2.3。2(b)LED接口电路该板还设计了继电器电路通过继电器容易实现弱电到强电的开关控制电路如图2.3.2(c)所通过跳线P12控制,用时请断开,图中N418为电器线圈续流用二极管,特别重要。Relay为直流5V驱动双联动继电器,用螺栓接线柱展接口。图2.3.2(c)双联动继电器接口电路蜂鸣器电路如图3.3.2(d示通过跳线与P10相不用时可以断开Bell为有源蜂鸣器,接通5V电会发声,单片机P10开关控制,低电平开启。图3。3。2(d)蜂鸣器接口电路此外P1口可以实现AD/DA电路的转换,接口电路如图(e。其中,TLC1549为串行接口10位单通道A_D转换器,TLC5615为串行接口10位单通道D_A转换器,都只能实现单输单出,而未使用ADC0809和DAC0832是为了缩小PCB的面积,能达到试验效果是本设计的初衷.图3。3.2(e)AD/DA接口电路2.3.3显示接口电路本设计有三个显示模块,分别是:LCD1602、LCD12864和4位7段LED数码管.点阵字符型液晶显示器是专门用于显示数字、字母、图形符号及少量自定义符号的显示器[3]。2.3.3显示接口电路3软件设计3.1由AVR单片机ATmega8实现USB转串口的驱动设计和ISP(in—system-programming)的使用在给ATmega8烧写固件及驱动文件时,要注意熔丝位的设置,如果设置不对,则单片机不能正常工作。熔丝位设置如图3。1:图3。1熔丝位设置3.2RTC设计实例(DS1302+LCD1602+复杂按键输入+多模式蜂鸣器发声+多任务轮循架构)“实时时钟”是很多任务执行的关键参数,例如家居智能控制,室外信息发布,路灯控制等,因此熟悉一种实时时钟芯片以及精通编程控制将是一件非常有意义的事情。这里结合Mini51板硬件资源,开发出一款实用的实时时钟万年历,特别是程序设计采用了定时中断多任务轮询思想,对初学者程序设计具有重要的参考价值。这里使用C语言编程,那么Keil应该是首选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境,强大的软件仿真调试工具也会令编程事半功倍[5].3.2。1任务解析及人性化设计要求Mini51板上可用硬件资源有实时时钟芯片DS1302和备用电池,还有LCD1602显示屏、按键和蜂鸣。整合这些硬件资源,设计一个具有调时、闹钟功能,还要显示美观,易使用的电子万年历。LCD显示要根据LCD每行16字符的特点设计,如上,可以显示年、月、日、星期、时间,还有闹钟设定功能。显示效果设计如下:第一行显示:【2008-06-16Week1】第二行显示:【14:52:35AL07:00】三键输入:模式设定set,加一up,减一down。按键操作:长按set键进入时间设定模式,在进入设定模式以前,随意短按任意键,不产生任何作用,保证时间不被随便修改;同一键短按键选择设定对象;加减键长按直接退出设定模式.进入设定模式后,长时间10s不按键,自动退出按键模式;以上所有的操作时钟正常走钟。声音提示:所有按键操作伴随声音提示,长短按键有不同的提示声,按键手感好。闹钟设置:闹钟设置信息写入DS1302芯片的暂存RAM,保证主电源掉电数据不丢失;闹钟精确到分钟;闹钟可禁用,并有显示提示;闹钟闹铃时,任意按键结束闹铃。3.2。2多任务程序架构为了程序移植性好,维护性好,易裁剪,我们有必要引入多任务编程思想,就是一个系统由多个任务构成,各任务之间相对独立。我在这里提出一种基于定时器中断的多任务轮循程序架构,如图3.2。2(a)所示。在主程序中,根据任务延时量判断任务是否就绪,各任务轮循占用CPU,由任务延时量控制任务执行频度及CPU关照度,而任务延时量又由定时器中断控制.关于任务实时性的理解:从人机交互角度考虑,很多任务实时性要求是相对的,例如LCD显示刷新,就不需要很快的刷新频度,即使被显示的内容更新足够快,LCD显示刷新也不需要很快,因为LCD显示是给人看的,如果每秒刷新20次,已经足够了,这里结合数字钟显示任务,每秒3次就可以达到要求了;又如按键扫描,扫描执行频度则不能太慢,太慢容易丢失有效键值,至少每秒应保持50次以上的执行频度才行;同样DS1302实时时钟读取频度,每秒3次就可以了.不同任务,需要不同的执行频度(CPU关照度),如果采用传统大循环模式,各任务按一个频度运行,显然不适合本设计。这里还涉及到多种延时需要,例如按键去抖动、蜂鸣器发声等,如果采用传统循环延时法,不仅极大浪费CPU资源,而且造成不同任务之间相互影响,很难找到一个平衡点,特别不利于程序维护,我们形象称这种程序为面条程序.图3.2。2(a)定时中断的多任务轮循程序架构流程图基于定时器中断的多任务轮循架构,各子任务必须设计成主动放弃CPU运行模式,子任务不能设计成死循环流程,子任务的执行依靠主程序任务调度来实现。正因为各任务不抢占CPU,所以程序设计不用考虑现场保护问题,简化了程序设计。本设计程序整体架构如图3。2。2(b)所示,定时器固定节拍中断,该节拍需满足最快任务执行频度需要,例如50Hz,对于按键扫描程序,每秒按50次频度执行即可,而LCD1602可以按每秒3次频度执行,实时时钟数据读取也只需按每秒3次频度执行一次.图3。2.2(b)Mini51板实时时钟流程图任务执行频度由任务延时量task_delay[ID]控制,各任务延时量在定时中断中减一,直到延时量为零,相关相关任务就绪。务调度过程就是对任务延时量检测过程,只有任务延时量为零时,CPU从其它任务中返回后立即执行相应的任务,由于不同任务延时量不同,从而实现不同任务具有不同的执行频度而相互不受影响。这里还必须满足一个条件,就是每个任务执行一次的时间不能太长超过一次定时中断时间,否则任务之间执行频度会有影响,对于50Hz的中断频率,每个任务执行时间最好不超过20ms,既CPU光顾一次任务时间要在20ms以内,这样就可以保证任务之间相互完全不受影响。定时中断在这里就是心脏,依靠定时中断完成任务延时量的修改,从而实现不同任务运行频度控制.定时器设置及初始化代码如下:#defineTIME_PER_SEC50//定义定时中断频度,由执行频度要求最快的任务确定,太高会降低CPU运行效率,太低任务频度不好分配,一般200Hz以下,这里采用50Hz。#defineCLOCK22118400//定义时钟晶振,单位Hz,与硬件一致即可voidOS_Init_Timer0(void)//定时器0初始化{uchari;for(i=0;i<MAX_TASK;i++)task_delay[i]=0;//任务延时量初始化TMOD=(TMOD&0xf0)|0x01;//定时器0工作在模式1,16Bit定时器模式TH0=255-CLOCK/TIME_PER_SEC/12/256;TL0=255—CLOCK/TIME_PER_SEC/12%256;TR0=1;//开启定时器ET0=1;//开启定时器中断}这里通过宏定义,把易变参数在头文件中定义,这样使得程序容易修改,便于移植。voidOS_Timer0(void)interrupt1using2//定时中断服务{uchari;TH0=255-CLOCK/TIME_PER_SEC/12/256;TL0=255—CLOCK/TIME_PER_SEC/12%256;//每节拍对任务延时量减1,减至0后,任务就绪。for(i=0;i〈MAX_TASK;i++){if(task_delay[i]>0)task_delay[i]——;//任务延时量减一归零,使任务就绪}}在定时中断服务中,执行的任务必须很简短,重置定时器初值,把大于0的任务延时量减1,该定时中断作为心脏跳动,不断进出运行,为了节省CPU时间,该中断任务越简单越好。3.2.3任务调度任务调度在主程序main()中完成,系统初始化之后,在一个大循环中,对各任务的延时量是否为零判断,当任务延时量为零时,表示该任务就绪,当前一个任务主动放弃CPU之后,马上启动就绪的新任务。各任务之间不具有抢占功能,因此不用考虑堆栈与保护,初学者也能够完全掌握。voidmain(void){sys_init();//系统初始化,包含各子任务初始化OS_Init_Timer0();//定时器初始化INT_GLOBAL(1);//开总中断while(1){//根据任务延时量是否为零选择执就绪任务执行,任务执行完成后返回再恢复设定的延时量if(task_delay[0]==0){task0();task_delay[0]=TIME_PER_SEC/50;}if(task_delay[1]==0){task1();task_delay[1]=TIME_PER_SEC/20;}if(task_delay[2]==0){task2();task_delay[2]=TIME_PER_SEC/01;}if(task_delay[3]==0){task3();task_delay[3]=TIME_PER_SEC/02;}if(task_delay[4]==0){task4();task_delay[4]=TIME_PER_SEC/03;}if(task_delay[5]==0){task5();task_delay[5]=TIME_PER_SEC/04;}if(task_delay[6]==0){task6();task_delay[6]=TIME_PER_SEC/05;}if(task_delay[7]==0){task7();task_delay[7]=TIME_PER_SEC/06;}}}红色数字表示任务执行的频度,即每秒钟执行多少次。各个不同的任务,根据需要,设定不同的延时量,延时量在定时中断中逐步减一归零,每个任务必须主动放弃CPU,正因此,各任务执行时间最好不要超过定时中断节拍时间单位,这里为20ms,否则将影响其它任务运行.3.2.4任务设计3.2.4。1按键扫描task0。C图3。2.4.1按键扫描任务流程图按键输入需要要实现以下功能:按键去抖动,快速单次触发,长按单次触发,长按多次连续触发,同一按键既有长按又有短按功能.流程图如所示。由于该任务在一定的频度内执行,通过定义状态机记录该任务的历史运行状态,由于一次按键不能立即确定键值,需要去抖动处理,我可以用状态机把首次按键记住,在二次按键时确认键值,同样,长短按键也是用状态机和计数器控制,通过任务多次调用积累时间,从而实现长延时而又不占用CPU资源,这就是此种定时器中断的多任务轮循架构程序设计的精髓所在.以50Hz的频度扫描键盘,基本不会出现按键丢失现象。通过状态机计数器控制,去抖动,长短按键,单次多次按键等各种复杂的控制,部分程序解读如下:#defineKEY_PORTP3//定义按键接口#defineKEY_VALKEY_PORT|0xc3//Mini51板P3.2—P3。5有效,有键按下则对应位为0#defineKEY00xfb//P3。2#defineKEY10xf7//P3.3#defineKEY20xef//P3。4#defineKEY30xdf//P3。5以上对硬件接口进行定义,这样做的好处是当硬件接口改变后,程序容易修改,这种程序设计思想很重要。#defineKEY0_UP0x15#defineKEY1_UP0x16#defineKEY2_UP0x17#defineKEY3_UP0x18以上定义按键弹起对应按键的关联状态,数据本身没有实际意义,只要不重复就行,由于在程序中多处使用,如果使用常数,程序可读性差,容易出错。#defineLONG_DN_TIME50*2;//长按键时间设置,2s,其中50为本任务执行频度#defineWAIT_DN_TIME50*1;//长按键过度到连续任务执行时间间隔1s#defineCONU_DO_TIME50*0。2;//长按键连续执行频度,时间间隔0.2Svoidtask0_init(void)//任务初始化,在主程序sys_init()中调用{KEY_PORT=0xff;//按键端口初始化}本任务开始时需要执行一次的任务初始化函数,在主程序sys_init()中调用,仅仅执行一次。voidtask0(void){staticucharstate_dn=0;//有键按下状态机变量staticucharstate_up=0;//按键释放状态机变量staticucharkey_ldn_cnt=0;//长按键计数器,控制长按键时间ucharkey_num;//键值变量key_num=KEY_VAL;//一次性读取键值if(key_num!=0xff)//判断是否有键按下{switch(state_dn)//采用状态机记住前后按键变化情况{……}}else//按键释放触发任务执行{switch(state_up){……}}}3.2。4.2LCD显示task1。C图3.2.4.2LCD显示刷新流程图LCD显示刷新流程图如图4所示,给LCD分配全局变量显示缓冲区并在独立任务中周期刷新显示,这样做的好处是程序设计思路清晰,各任务独立,程序可读性好,缺点是占用太多内存,没有更新的数据也不断刷新,浪费了CPU资源。LCD驱动程序在头文件lcd1602。h中,其他任务通过全局变量str_buff和fly_space控制该模块运行效果。闪烁控制原理是根据闪烁控制标志位,周期替换显示内容为空白字符符。部分程序解读如下:#include"main。h"#include”lcd1602。h”ucharstr_buff[32];//定义全局显示缓冲区ucharfly_space;//定义全局闪烁位置控制变量,其它任务要用该变量需要加前缀extern声明voidtask1_init(void)//本任务初始化,在主程序中调用一次{unsignedchari;lcd1602_init();for(i=0;i<32;i++)str_buff[i]=’’;fly_space=0xff;//首先关闭闪烁标志}voidtask1(void){staticucharfly_cnt=0;//闪烁频度控制if(fly_space!=0xff){fly_cnt++;if(fly_cnt<3){str_buff[fly_space]='';//将显示内容用空白字符替换,产生闪烁效果if(fly_space!=15)str_buff[fly_space+1]=’';}elseif(fly_cnt〉12)fly_cnt=0;}lcd_put_xyns(1,1,16,str_buff);lcd_put_xyns(1,2,16,str_buff+16);}3。2.4.3实时时钟读取task3.C图3。2。4。3时钟读取描任务流程图实时时钟读取任务相对简单,由于秒钟每秒更新一次,为了实现较好的显示效果,每秒至少读3次以上,所以本任务的执行频度设定为3次,与时间相关的控制任务,如闹钟,整点报时都放在这里.3。2.4.4蜂鸣器发声task4.C蜂鸣器是IO口驱动的简单开关控制,Mini51板上的蜂鸣器是采用的有源蜂鸣器,接通电源就发出单音频声音,单片机的控制只是控制其发声时长和开关频度,从而产生不同的效果,看似“接通"“延时”“断开"如此简单的控制,如果考虑多任务模式,不用常规死循环延时(那样极大的浪费CPU资源,不适合多任务模式),还要实现多种发声模式可选择,这就需要我们突破传统程序设计思路,这里还是基于定时器中断任务轮询的思路,采用状态机控制,程序流程图如图所示,这里实现了单次短发声,单次长发声,连续短发声,连续长发声,根据需要还可以添加更多种发声模式,这样在其它需要发声处,只要给出发声模式即可。蜂鸣发声主要用在按键响应,闹钟提示,整点报时处。图3。2。4.4蜂鸣器多模式发声任务流程图部分程序解读如下:#include”main.h"/***蜂鸣器模式定义***/#defineBM00x01#defineBM10x02#defineBM20x11#defineBM30x22#defineON0#defineOFF1#defineBUZZR(x)BUZZR=(x)sbitBUZZR=P1^0;//蜂鸣器接口定义ucharbeep_modle;//发声模式选择全局变量,其它任务中通过该变量启动蜂鸣器发声voidtask3_init(void){beep_modle=BM0;//初始蜂鸣器模式1,系统复位启动发声一次}voidtask3(void){staticucharbeep_time=0;//蜂鸣器发声时间长度控制变量switch(beep_modle){case0:break;caseBM0://模式0,单次短声BUZZR(ON);//开蜂鸣器beep_time=BM0;beep_modle=0;break;caseBM1://模式1,单次长声BUZZR(ON);beep_time=BM1;beep_modle=0;break;caseBM2://模式2,连续短声BUZZR(ON);beep_time=BM2&0x0f;beep_modle=BM2+0x10;break;caseBM2+0x10://模式2的2状态if(beep_time==0)beep_modle=BM2;break;caseBM3://模式3,连续长声BUZZR(ON);beep_time=BM3&0x0f;beep_modle=BM3+0x10;break;caseBM3+0x10://模式3的2状态if(beep_time==0)beep_modle=BM3;break;default:break;}if(beep_time—-==0)BUZZR(OFF);//时间到,关闭蜂鸣器}4调试及总结本设计硬件电路在控制成本的情况下,尽可能的选择了集成度高功能强大的芯片。不仅使整个系统所用的元器件减少,缩小PCB面积,更重要的是减少焊接点和连线,在PCB设计中尽可能的使用圆弧走线,从而大大减少故障率和受干扰的概率,使系统的可靠性大大提高。使用USB给系统供电,大大降低了电源耦合的干扰,但本实验板也提供电源接口,方便使用。在设计中,USB转串口的设计有难度,调试也不容易.其实本设计包含了2个单片机系统,其一是MCU51系统,另一是AVR单片机实现的USB转串口系统。USB下载采用的是AVR单片机CDC方案,方便没有串口的计算机可以用USB虚拟一个串口(即使有串口,还是使用USB接口方便),照样使用要实现USB转串口系统,需要给AVR单片机烧写固件驱动程序,其中容思位的设置很讲究,不能有错误,否则此系统不能正常工作。在焊接方面,通过平时练习和实际操作,焊接水平不断提高,贴片的焊接也能很好的完成。软件调试最能学到知识,运用Keil51编程和调试程序,运用Protues进行单片机系统仿真,确保了设计的可行性。而CPLD主要使用MaxplusII编程和调试。本设计中也有几处“匠心”的设计:(1)板子左侧,下边有两个缺口,焊接跨线之后,方便夹示波器等仪表探头地线.(2)板上右上角有一个开关,通常焊接不带锁开关,并且保持常闭状态,用来断电冷启动单片机,使得单片机进入ISP下载模式,方便下载程序用。反面有跳线焊盘,这样就不担心开关放置反了.(3)PLCC44IC座下有一较大圆孔,通过该孔,不用芯片起子也可以取出芯片,专用芯片起子很贵的。本设计的不足之处就是手工复制性不足,关于PCB制作,我用的是热转印制作方法,可是走线很细,又是双面板,要多次制作或许成功.致谢首先,特别感谢我的毕业设计指导老师李红斌老师,在整个设计过程中李老师给我提出了大量宝贵意见,才使得我顺利毕业设计。李老师严谨细致、一丝不苟的作风一直是我学习中的榜样,他循循善诱的教导和不拘一格的思路给予我无尽的启迪。业特别感谢朱士虎老师,他教会我使用电路设计辅助软件,也特别感谢实验室的戴新宇老师,为我提供PCB制作工具,才使得PCB制作很成功。当然也感谢其他所有的老师教给我相关电子通信方面的知识,才有了本设计。在大学四年中,和我一起走过的兄弟姐妹们,感谢你们!近朱者赤,近墨者黑。你们在无形中感染了我,使我充分认识自我和社会,把我的意志锻炼的如此之强.是你们的支持和鼓励,触动我的细心和毅力,坚持把如此复杂的设计做好。尤其,感谢父母,是你们的爱给了我无限动力,也感谢自己的执着给我和身边的人带来微笑!参考文献[1]徐新民.单片机原理与应用.浙江:浙江大学出版社,2006[2]邹应全.51系列单片机原理与实践教程.西安:西安电子科技大学出版社,2007[3]周立功,夏宇闻.单片机与CPLD综合应用技术。北京:北京航天航空大学出版社,2003[4]马潮,詹卫前,耿德根.ATmega8原理及应用手册.北京:清华大学出版社,2003[5]杨恒.零起点学单片机与CPLD/FPGA北京:北京航天航空大学出版,2007本科毕业论文(设计)题目:基于单片机的智能风扇设计姓名:学号:专业:电子信息工程院系:电子通信工程学院指导老师:职称学历:助教/硕士完成时间:2014年5月教务处制安徽新华学院本科毕业论文(设计)独创承诺书本人按照毕业论文(设计)进度计划积极开展实验(调查)研究活动,实事求是地做好实验(调查)记录,所呈交的毕业论文(设计)是我个人在导师指导下进行的研究工作及取得的研究成果。据我所知,除文中特别加以标注引用参考文献资料外,论文(设计)中所有数据均为自己研究成果,不包含其他人已经发表或撰写过的研究成果.与我一同工作的同志对本研究所做的工作已在论文中作了明确说明并表示谢意。毕业论文(设计)作者签名:日期:基于单片机的智能风扇设计摘要电风扇是夏天给人们降温的非常好的家用电器,智能风扇就是能根据温度的改变,风扇转速随之改变,现在的风扇很难做到这一点,只有人为的几档调速.夏夜温度下降后人们容易因熟睡而受凉,当温度升高时,它又不能根据温度的变化改变转速。本设计智能风扇采用单片机AT89C51作为控制系统的核心,使用温度传感器DS18B20进行当前的温度采集,利用PWM脉冲宽度调制技术进行实时调速,并通过LED数码管显示当前温度。同时本次设计还有一个比较创新的地方,本系统具有驱蚊功能。关键词:单片机;温度传感器;风扇;超声波驱蚊DesignofSmartFanBasedonSingleChipMicrocomputerAbstractFanisverygoodforpeoplecoolingappliancesinthesummer。SmartFanisaccordingtochangesintemperature,andfanspeedchanges.Nowthefanisdifficulttodothis,onlyafewartificialstallspeed.ThedesignofthefancontrolsystemusesAT89C51microcontroller,theindoortemperaturesensorDS18B20temperatureacquisition,usePWMpulsewidthmodulationtechnologyforreal—timecontrol,anddisplaysthecurrenttemperaturethroughtheLEDdigitaltube。Thesameinnovativedesignaswellasacomparisonwherethesystemhasarepellentfunction.KeyWords:Microcontroller;TemperatureSensors;Fan;UltrasonicInsectRepellen目录1绪论...。..........。.。...。。.。。。。。..。。。.。。.。。...。。.。。.。........。.......。。.。...。。.。...。...。..。.11。1智能风扇发展史.。..。.。。。...。。。..。。..。.。....。.。.........。.。。....。.。。.......。.。。..。.。....。.。。。....11.2智能风扇的工作原理.。。。.。....。。...。.。。..。。。。。..。.....。..。。..。。。。.。....。....。.。....。.21。3本次设计的主要任务和内容。....。。....。....。...。。.。。。....。。....。.........。..。。。。。。.。..。.22方案论证.。。.。....。...。..。。。。.。...。。..。.。.。。...。..。.。。。。.。..。。.。。...。。.。..。...。.。。.................。。。。..32。1控制核心的选择...。..。。..........。。。。。..。。.。...。。。。....。。...。...。.........。。.。..。..。。.....。.。...32.2显示电路的选择。。.......。.。.。..。。。。.。.。.。..。.。。..。。.。。。.。...。.。。..。.。..。.。.。..。。.。。.........32。3调速方式的选择.。.。..。。..。。。。....。。...。。.。.。..。。.....。。。..。。...。....。。。。.。。.。.。...。。....42.4温度传感器的选择.。...。。..。....。。。.。........。。.。...。.。。..。....。.....。..。.。.....。。.......。.。。..52。5超声波发生器的选择..。..。.。。...。。.。.。..。。.。..。......。.。。.....。.。。....。.。...。....。。..。.。。....53系统主要硬件电路设计.。..。。。。..。。...。。.。..。。...。.。..。.。..。。...。......。....。。。。。.。。...。..。73.1系统总体设计..。。....。.....。..。..。。。。.。..。.。....。.。...。。。...。.....。.。.。..。.73.2电源电路设计..。..。。.......。.。...。。....。..。..。。。.。.。。...。..。.....。..。..。。....。..。.。.。.。。..。...。...73.3单片机最小系统电路设计.。。...。...........。.。...。.。.。。....。。.。。..。.。.。。。。..。。。...。.。.83。3.1AT89C51单片机简介........。。。..。。.。。...。....。..。.。....。....。...。.。。.。。。.......。....。.。..3。3.2单片机最小系统电路.。..。...。..。.。....。。.。...。..。.。.。。。。。.。。。.。。....。.....。。....13.4温度采集电路设计.。...。。.。。。..。.。。.。。.。........。。.。。。。.。...。。。。.。.。。.。.。。。。。。。..。..。...。....113.4。1DS18B20温度传感器简介...。.。。.。。...。。......。.。..。。。。.。.。。。..。....。...。.。...。。。.。..13。4.2温度采集电路。。.。.。.。。.。...。。.。.。。。............。。。..。。.。.。...。.。.。......。.....。。。..。13。5温度显示电路设计。..。。.。。。..。.。.。。...。。。.。。。..。...。。。。..。。。...。.。。...。...。....。.。..。..。。。。。.143。5.1LED数码管简介。...。。......。.。。...。。。。...。。..。............。。.。...。。......。.。..。..。。.。...13.5。2温度显示电路.....。.........。....。。..。........。...。。.。.....。。....。.。...。.。。.。。。.....。.。.....。13.6驱蚊电路设计。。.。。...。......。.。..。..。..。。。。。.。.。..。。...。.....。。.。...。......。。。。..。。。。...。...。。。.153.6。1TCT40-16T超声波发射器简介.。..。.。。.。.。..。。..。.。3。6。2驱蚊电路。。。。.。.。.。.。.。.....。.。...。......。.3.7驱动与调速电路设计。.....。.。。。.。。。.。.。。.。.。。。..。.。.。。.。..。......。..。..。......。。。.....。...。173。7.1达林顿反相器ULN2803简介……………….....。173。7.2驱动与调速电路……………...183.8独立按键电路设计………..。。.。.....184软件设计.。....。...。..。.。.。.。.。.。..。..。...。...。。.。。.。。.。...。.。....。..。。.。。。...。....。.。。..。.........。。.。204.1系统总体软件设计流程图。........。。....。...。..。。。.。...。....。...。....。..。..。..204.2用KeilC51进行程序编辑..。.。....。。.....。..。。..。.。....。..。。..。.......。。。..。。。.。。.。.215系统调试与仿真..。.。。..。.。。。.。......。.......。.。。.......。。..。.。。..。...。...。。.。..。..。。。.。。.。......。225.1系统软件调试.。...。。...。...。...。。。.。..。。...。。。。。.。.。。.。。.。。....。.。....。.。...。.......。.。.225.2程序下载..。.。。...。。。。........。。.。.....。.。..。..。.....。。....。。...........。..。。.......。.。。。..。。。.225.3系统仿真.。..。。.。.。.。..。。.。。。。..。..。。....。。。...。..。。。。.。.。...。.....。。。。...。。..。......。..。。。.226结论。..。..。..。.。..。..。.。...。.。。..。...。..。。...。......。。...。.。。。。..。。。...。.。。..。...。。。...。。。26致谢...。...。..。。..。。..。....。....。..。..。......。。。.。.。...。...。.。。。。..。。。...。..。..。。.。.。。。。。.。。。.。.。.....。.27参考文献.。。.....。.。.。。.。..。..。。.。...。..。。...。....。.。.。.。。.......。..。。.。..。。。..。....。...。。.....。.。。.....。..28附录。。......。。。.。。。。...。..。..........。。。.。...。...。..。.。。。。。。。。。。。...。.。。..。.。。.。。..。...。。..。。.。.....291绪论在现实生活中,我们要经常使用一些降温设备。虽然现在不少城市家庭都用空调设备作为降温工具,但在大部分农村家庭风扇仍然是作为夏季降温的主要工具。春夏或者夏秋交替季节,早晚温差比较大,白天温度很高,风扇应该转动的比较快,这样才能给人带来凉爽.到了晚上,气温下降的很多,当人们入睡后,风扇的转动速度应慢慢减下来,防止感冒。虽然现在的风扇有不同的档位可以调节,但都必须人工来换挡,当人们熟睡时就无能为力了。尽管现在普遍采用定时的方式解决这个问题,但定时时间有限,一般最多只有两个小时,在这两个小时内温度并不一定就会下降的很多,风扇关闭后,人们可能就会因为炎热再次醒来开启电扇,这样会使人的睡眠质量大大降低。从以上的分析可知,需要设计出一种很智能化的电风扇来解决.本设计用单片机作为控制核心,用温度传感器采集当前温度,LED数码管显示实时温度,并根据当前检测到的温度,输出不同占空比的PWM脉冲信号,从而风扇实现了不同的转速。1。1电风扇的发展史电风扇简称电扇,香港称为风扇,日本及韩国称为扇风机,从发明到现在已经经过了一百多年,是炎热夏季的宠物。电风扇起源于1830年,是叫詹姆斯的一个美国人发明了一种用发条来驱动的,可以固定在天花板上的电风扇。1880年,一个叫舒乐的美国人第一次将叶片直接装到电动机上,再接上电源,叶片便很快速旋转起来。1882年,一个叫休伊•斯卡茨•霍伊拉的纽约人最早发明了商品化的电风扇。中国生产的第一台风扇起于1916年,直到1925年华生电器制造厂才正式生产电风扇,并很快赢得市场好评。一开始电风扇不能很好的控制时间,过了一段时间,便出现了一种可以设置风扇转动时间,及可以根据设定的时间来开启或者关闭的电风扇,这种风扇在当时相当受好评,也受到广大人民的喜爱。电风扇的操作方式从一原先的旋钮,到按键,再到现在的触摸式操作[1]。1.2电风扇的工作原理电风扇的主要功能器件是交流电机,通电后线圈在磁场中因受力而转动,能量的转化形式是这样的:电能主要是转化为机械能,同时由于电阻问题,电能还有一部分转化成内能。电风扇工作时,因为有电流流过电风扇的线圈,而线圈是有电阻的,所以会产生部分热量向外扩散,因此电风扇的温度会增高。但人们为什么会感觉到凉爽呢?因为人体的表面在夏天有大量的汗液,当电风扇工作后,室内的空气会随着电风扇流动,所以就能够蒸发人体表面的汗液,由物理学原理蒸发需要吸热,故人们会感觉到非常凉爽[2]。1.3本次设计的主要任务和内容本设计是以AT8951单片机为主要控制核心,利用51单片机对温度传感器采集到的数据进行处理,并且通过各种电子元器件对电风扇各种工作状态进行实时控制,从而可以达到用户的要求。本次设计主要完成以下内容:(1)能够检测当前温度并显示,可根据预设温度自动开启关闭,当当前温度大于预设温度,自动开启,小于预设温度自动关闭。(2)预设温度可通过按键增加或减少。(3)可随着外界温度的增加风扇可自行调速,主要分为五个档位,温度每升高五度风扇自动增加一档.(4)具有驱蚊功能。2方案论证2.1控制核心的选择方案一:采用单片机作为主要控制芯片。在本设计中采用AT89C51单片机,通过软件编程的方法来实现对温度的实时采集和控制,在其I/O口输出相应的控制信号。单片机AT89C51工作电压相对比较低,单片内含有4k字节的ROM和256字节的RAM,并且价格也相对较便宜。方案二:采用电压比较电路作为控制执行部件。将采集到的温度信号转换为电信号并经放大电路放大,集成运算放大器组成的比较电路来判断决定电风扇的转动速度.对于方案一,用单片机作为控制器件,通过简单的程序编写可以将温度传感器DS18B20检测的温度通过LED数码管显示出来,而且可以通过按键扫描程序通过单片机的外部按键对预设的初值进行增加或者减少,同时对于驱蚊功能采用单片机的软件编程更易实现,成本低,故以单片机AT89C51为控制核心,适合本次设计。对于AT89C51的具体参数参见下面“硬件设计”中的各器件介绍。对于方案二,采用电压比较电路作为控制的核心,虽然电路比较简单、容易实现,但不能对预设温度的值进行更改,无法满足不同用户的需求,故本次设计不采用。2.2显示电路的选择方案一:采用LCD液晶显示器显示。方案二:采用数码管做显示器件,共阴极接法,动态方式显示[3]。对于方案一,液晶显示屏显示的字符非常优美,这一优点LED数码管是无法做到的,但是液晶显示屏价格太过昂贵,驱动程序编写起来也是相当复杂的,本次设计不采用。对于方案二,用LED显示,成本非常低,温度显示清晰可见,即使夜间也能看见,显示程序的编写也比较容易,因此这种显示方式得到了广泛的应用。不足的地方是采用该方案可能会产生闪烁现象,因为这种动态扫描方式五个LED数码管是逐个点亮的,但由于人眼有个视觉暂留效应,为20MS,我们只要设定合适的扫面周期就可以避免闪烁现象,故这一方案可行。关于LED的详细参数参看下面“硬件设计”中的各器件介绍。2.3调速方式的选择方案一:采用变压器调节方式,运用变压器原理将市电220V交流电压通过线圈降压到不同的值,电风扇电机接到不同电压值的线圈上就可以来控制直流电机的转速.方案二:采用单片机的PWM软件编程方式。PWM中文意思是脉冲宽度调制,英文意思是PulseWidthModulation的简写形式,它是一种按某种规律变化的脉冲方波,在PWM驱动直流电机的调节控制系统当中,最常用的是矩形PWM脉冲波信号,也是编写程序最简单的。在对直流电机的转速进行控制时,需要根据当前温度来输出不同占空比的PWM脉冲.PWM脉冲的占空比是指高电平的时间在一个周期时间内的百分比,若全为低电平,占空比为零,风扇不转;若全为高电平,占空比为100%时,转速达到最大[4]。用单片机输出PWM脉冲信号时,有如下两种方法:(1)利用软件延时.可以利用单片机自带的定时器编程实现不同占空比的PWM脉冲的输出,利用中断程序对单片机输出的电平进行高低转换,从而实现风扇的调速,本设计采用该方法。设计不同占空比的PWM脉冲的思路是:假设采用1S的周期方波,以50MS为基准,则20个基准便就是一个1S,那么当其中4个连续的50MS的高电平脉冲,然后16连续的50MS低电平脉冲,便得到了占空比为20%的PWM方波信号.(2)利用单片机自带的PWM功能。但本次设计所用得AT89C51单片机没有这种功能,只有STC系列的才有,故不可行.对于方案一,该方案可以对直流风扇进行调速,但调节不是很方便,而且采用变压器来改变电压,不能适应人性化要求。对于方案二,采用PWM脉冲调制的纯软件的方法来实现对直流电机的实时调速,具有很大的灵活性,而且可以更充分地发挥单片机的功能,综合考虑选用方案二。2.4温度传感器的选择方案一:用热电偶来作为检测温度的元器件,配合适当的外围电路,将检测到的温度信号送入单片机AT89C51处理。方案二:用热敏电阻作为检测温度的元器件,经过运算放大器放大,由于温度变化会引起热敏电阻的电阻值发生相应的变化、便可以得到输出电压变化的信号.方案三:用高精度集成温度传感器DS18B20作为检测温度的元器件,直接输出数字温度信号给单片机处理[5]。对于方案一,采用热电偶作为检测元器件,其检测的温度范围非常宽,可检测—50摄氏度到1600对于方案二,采用热敏电阻价格相对便宜、元器件也很容易买到,但热敏电阻对温度的变化不是很敏感,在检测温度信号的时候,还有可能产生失真和误差,故本设计不采用该方案。对于方案三,由于温度传感器DS18B20的集成度很高,大大减少了外接电路,从而检测误差也会变小很多,DS18B20检测温度的原理与前面两种方案的原理有着很大的不同。其检测到的温度值可以直接送入单片机处理,不用编写更多的转换程序,简化了程序的编写,且只用一根线便可与单片机相连,接口相当简单,本次设计采用该方案。关于DS18B20的详细参数参看下面“硬件设计”中的器件介绍。2.5超声波发射器的选择本设计的原理是根据蚊子的生理特性来的,主要灵感来源是现在的智能手机上带有驱蚊的软件。在夏天咬人的一般都是雌蚊,雄蚊几乎是不咬人的,雌蚊在夏天大部分都是怀卵的且在怀卵期间又不喜欢与雄蚊接近,因此当它们感觉到雄蚊发出频率在22KHZ的超声波信号时,就会自动离开,因此只需控制超声波发射器发射出模拟雄蚊的超声波就可达到驱蚊的目的。产生该频率的超声波有一下两种方案:方案一:可以通过软件编写,定时器T1产生频率在22KHZ的方波信号,并通过并联的反相器用来增大驱动能力,然后接入超声波发射器,使超声波发射器发出模拟雄蚊的超声波,从而驱逐雌蚊,进而可以避免蚊子的叮咬.方案二:用NE555构成多谐振荡器产生可调频率的方波,从而驱动超声波发射器,使其发射我们需要的超声波信号,达到驱蚊目的[6]。对于方案一:AT89C51单片机定时器T1工作在方式1,可通过初值的设置,输出22KHz的时钟信号输出,不用反复中断,提高了系统的执行效率。超声波发射器选择的是TCT40—16T,为了增大驱动能力,单片机P3。5口产生的方波信号经过并联反相器后加在超声波发射器的两端,这样超声波发射器就可以发射22KHz的超声波,本设计采用该方案。关于TCT40—16T的详细参数参看下面“硬件设计”中的器件介绍。对于方案二:由于NE555产生的超声波频率调节是依靠调节滑动变阻器实现的,不好可视化的调节频率,不方便用户使用。3系统主要硬件电路设计3。1系统总体设计本次设计的思路:本次设计主要利用AT89C51单片机为控制核心,利用温度传感器DS18B20采集当前温度送入单片机处理,单片机根据当前温度与预设温度的比较决定是否开启风扇,并通过五段LED数码管显示当前温度和预设温度。当当前温度高于预设温度,风扇开启,低预设温度时风扇关闭.单片机根据当前的温度输出相应占空比的PWM脉冲,并通过ULN2803增大驱动后,送入12V的直流电机,从而产生不同转速。本次设计的系统总框图如图3。1所示:ATAT89C51DS18B20独立按键温度显示时钟及复位TCT4016ULN2803直流电机图3.1系统总体框图3.2电源电路设计直流稳压电源作为直流能源的提供者,在电路中起到很关键的作用,因此对电源的要求比较高,尤其是对电源纹波系数和输出电流能力的要求上,如果电源没有达到设计所需电源的要求,将直接影响系统的正常工作。常用的转5V电源有线性型稳压芯片和开关型稳压芯片两大类。线性型稳压芯片线性度高,纹波小,外围电路简单。开关型稳压电路功耗小,转换率高,但纹波大,受尖峰脉冲干扰严重。综合考虑选用线性型三端稳压芯片LM7805。本次设计需要两个幅度不同的直流电压5V和12V。其中5V电压的产生是将市电~220V交流电经过降压器降压,桥式整流滤波后送入稳压器件LM7805,输出的电压可能还含有纹波,在通过470uf带极性的电容滤除低频信号,0.1uf不带极性的电容滤除高频信号,进而可以得到稳定的5V电压[7]。12V电压只需将5V电压经过运算放大器放大即可得到,5V和12V电压产生电路如图3.2(a)和3.2(b)所示:图3.2(a)5V电压产生电路图3。2(b)12V电压产生电路3。3单片机最小系统电路设计3。3。1AT89CAT89C51是美国ATMEL公司生产的低电压单片机,其含有4K字节的ROM和256字节的RAM,兼容MCS-51指令。其中央处理器是8位的,且含有Flash存储单元,功能非常强大。AT89C51单片机具有以下标准的功能:一个8位CPU频率范围1.2—12MHZ,4K字节Flash闪存,256字节内部数据存储器RAM,4个8位并行I/O口,一个全双工串行口,2个16位定时/计数器,5个中断源的中断控制系统,片内自带振荡器和时钟电路。AT89C51单片机管脚图如3。3所示:图3。3AT89C51单片机各管脚功能如下[8]:VCC:40引脚接5V供电电压。GND:20引脚接地。XTAL1:19引脚为单片机提供外部时钟信号,外接石英晶体和微调电容。XTAL2:18引脚为单片机提供外部时钟信号,外接石英晶体和微调电容。P0口:P0.7~P0。0,这组引脚共8条,其中P0.7为最高位,P0.0为最低位。是漏极开路的8位准双向I/O口,有两种功能。第一:做通用I/O口,无片外内存时,P0口可做通用I/O接口使用。第二:做地址/数据口,在访问外部内存时,用作地址总线的低8位和数据总线。P1口:P1.7~P1.0,其中P1.7为最高位,P1。0为最低位,仅用作I/O口.P2口:P2.7~P2.0,其中P2.7为最高位,P2。0为最低位。P2口是带内部上拉电阻的8位准双向I/O接口,具有两种功能。第一:做通用I/O口,无片外内存时,P2口可用作通用I/O口。第二:做地址口,在访问外部内存时,用作地址总线的高8位。P3口:P3.7~P3。0,其中P3.7为最高位,P3.0为最低位。P3口是双功能口。具有两种功能。第一:用作通用I/O口。第二功能:P3.0RXD串行口输入;P3.1TXD串行口输出;P3.2INTO外部中断0输入;P3。3INT1外部中断1输入;P3。4T0定时计数器的脉冲输入;P3.5T1定时计数器的脉冲输入;P3.6WR片外RAM写信号;P3。4RD片外RAM读信号。RST:9引脚复位输入,高电平有效。:29引脚外部程序内存读信号。当访问外部程序内存时,此脚定时输出脉冲作为读片外程序内存的选通信号,通常接EPROM的OE端。端在每个机器周期中两次有效,但当访问外部RAM时,两次负脉冲不出现.可驱动8个LS型TTL。ALE/:30引脚地址锁存允许/编程线,当访问片外存储器时,在P0.7~P0。0引脚线上输出片外存储器低8位地址的同时还在ALE/线上输出一个高电位脉冲,其下降沿用于把这个片外存储器低8位地址锁存到外部专用地址锁存器。/VPP:31引脚内外部程序内存选择输入端.=1,CPU访问片外ROM,并执行其指令。当PC>0FFFH时,自动转向片外ROM。=0,不论片内是否含有内存,只执行片外ROM的指令.3.3。2单片机单片机工作时需要时钟信号,时钟信号通常可由外部方式或者单片机的内部方式提供。本次设计采用内部时钟方式,利用单片机内部自带的反相放大器,XTAL2为放大器的输出端,XTAL1为放大器的输入端,这两个引脚外接石英晶体振荡器和微电容,构成可以自激的振荡器。本设计在XTAL1和XTAL2外接了一个12MHZ的晶振,30pf的电容[9]。复位是使单片机回复到初使的状态,就跟计算机的重启差不多,并从初始状态从新工作。单片机是高电平复位,一般有两种方式:按键复位和上电复位,两种复位方式均可。本次设计采用按键复位,当按下按键开关S1时,系统复位一次,电阻R2、R3为10k。其时钟电路与复位电路如图3。4所示:图3.4最小系统电路3。4温度采集电路设计3.4.1DS18B20简介DS18B20内部结构主要有四个部分:64位的只读程序存储器ROM、温度传感器、非挥发的报警触发器TH和TL、配置寄存器。总共有三个管脚,包含DQ,GND,VDD.其中DQ为数字信号端,GND为电源地,VDD为电源输入端。DS18B20的主要性能特点如下:(1)仅可用一个端口便可以通信;(2)无须外部器件;(3)DS18B20支持多点组网功能;(4)适应电压范围广,电压范围为3。0~5.5V;(5)待机功耗为零;(6)温度以9位或12位数字;(7)具有报警命令识别功能;(8)具有负电压特性,电源接反时,芯片不会烧坏;DS18B20的管脚图及部分温度值与DS18B20输出的数字量对照表见图3。5和表3—1所示:图3.5DS18B20温度传感器表3-1部分温度值与DS18B20输出的数字量对照温度值/℃数字输出(二进制)数字输出(十六进制)+125000001111101000007D0H +8500000101010100000550H+25。62500000001100100010191H+10.125000000001010001000A2H+0.500000000000010000008H000000000000000000000H—0。51111111111111000FFF8H-10.1251111111101101110FF5EH-25.6251111111101101111FF6FH-551111110010010000FC90H3.4.3DS18B20数字温度传感器检测现场温度,将检测到的温度值送入AT89C51单片机的P1.0口,经过单片机处理后显示此时温度值,并与设定温度值做比较,输出相应占空比的PWM脉冲信号。电路如图3。6所示:图3.6温度采集电路3.5温度显示电路设计3.5.1LED数码管简介本设计选用五个LED数码管来进行温度显示。LED又称为数码管,主要是由8个发光二极管构的。LED数码管按结构可以分为共阴极和共阳极两种结构,如图3。7所示:共阴极把8个发光二极管阴极连接在一起,共阳极把8个发光二极管阳极连接在一起.通过编程的方式使单片机的引脚输出

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论