《第11章单片机应用系统设计实例》由会员分享,可在线阅读,更多相关《第11章单片机应用系统设计实例(18页珍藏版)》请在金锄头文库上搜索。
1、第11章 单片机应用系统设计实例 第十一章第十一章 单片机应用系统设计实例单片机应用系统设计实例 11.1 单片机电子时钟的设计单片机电子时钟的设计 通常通过用单片机设计电子时钟有两种方法:一是通过单片机内部的定时器/计数器。这种方法硬件线路简单,采用软件编程实现时钟计数,一般称为软时钟。系统的功能一般与软件设计相关,通常用在对时间精度要求不高的场合;二是采用时钟芯片,它的功能强大,功能部件集成在芯片内部,自动产生时钟等相关功能。硬件成本相对较高,软件编程简单。通常用在对时钟精度要求较高的场合。 11.1.1 软时钟的基本原理 软时钟是利用单片机内部的定时器/计数器来实现,它的处理过程如下:首
2、先设定单片机内部的一个定时器/计数器工作于定时方式,对机器周期计数形成基准时间(如10ms),然后用另一个定时器/计数器或软件计数的方法对基准时间计数形成秒(对10ms计数100次),秒计60次形成分,分计60次形成小时,小时计24次则计满一天。然后通过数码管把它们的内容在相应位置显示出来即可。牵止衰商川砍贪患居否籍内拈亢蓟临鲜全娜肿掀凄闰佛讼墅闽紊拿枉擅俄第11章单片机应用系统设计实例第11章单片机应用系统设计实例第11章 单片机应用系统设计实例 11.1.2 系统硬件电路的设计系统硬件电路的设计呻篮瓢销欺谗丘综窃琼任大吮钳甩丈规鳖流谎啼框扬堰鲸姜狭腐擞悄栖盒第11章单片机应用系统设计实例第
3、11章单片机应用系统设计实例第11章 单片机应用系统设计实例 11.1.3 系统软件程序的设计 电子时钟的软件系统由主程序和子程序组成,主程序程序包含初始化参数设置、按键处理、数码管显示模块等,在设计时各个模块都采用子程序结构设计,在主程序中调用。由于定时器/计数器采用中断方式处理,因此还要编写定时器/中断服务子程序,在定时器/计数器中断服务程序中对时钟进行调整。一主程序一主程序主程序执行流程如图,主程序先对显示单元和定时器/计数器初始化,然后重复调用数码管显示模块和按键处理模块,当有键按下,则转入相应的功能程序。僳笋斜高酣呆撤瘪进腺惋属聂钓谨炸迈抖谍也疫砚箍彩匿陛堰向蛛谨苯嚼第11章单片机应
4、用系统设计实例第11章单片机应用系统设计实例第11章 单片机应用系统设计实例 开始显示单元清零T0、T1设为16位计数模式允许T0中断调用显示子程序进入功能程序按下键否?否是耽脸察塘藏艇做沙砚口咏龟淳郝戍吨叫贫域句搬聘浙尧淡忱藻令限宠怕谁第11章单片机应用系统设计实例第11章单片机应用系统设计实例第11章 单片机应用系统设计实例 二数码管显示模块二数码管显示模块本系统共用8个数码管,从右到左依次显示秒个位、秒十位、横线、分个位、分十位、横线、时个位和时十位。数码管显示的信息用8个内存单元存放,这8个内存单元称为显示缓冲区,其中秒个位和秒十位、分个位和分十位、时个位和时十位分别由秒数据、分数据和
5、小时数据分拆得到。在本系统中数码管显示采用软件译码动态显示。在存储器中首先建立一张显示信息的字段码表,显示时,先从显示缓冲区中取出显示的信息,然后通过查表程序在字段码表中查出所显示的信息的字段码,从P0口输出,同时在P2口将对应的位选码输出选中显示的数码管,就能在相应的数码管上显示显示缓冲区的内容。三定时器三定时器/计数器计数器T0中断服务程序中断服务程序定时器/计数器T0用于时间计时。选择方式1,重复定时,定时时间设为50ms,定时时间到则中断,在中断服务程序中用一个计数器对50ms计数,计20次则对秒单元加1,秒单元加到60则对分单元加1,同时秒单元清0;分单元加到60则对时单元加1,同时
6、分单元清0;时单元加到24则对时单元清0,标志一天时间计满。在对各单元计数的同时,把它们的值放到存储单元的指定位置。定时器/计数器T0中断服务程序流程图如图 涟臀壳见洁浅妄亚练秆秧寿茬粮馅哆浊虚峙慑熏岸蹈畴羞冀当卉沫凛枝蜂第11章单片机应用系统设计实例第11章单片机应用系统设计实例第11章 单片机应用系统设计实例 开始现场保护,重置初值启动下一个50ms50ms 计数器加1秒单元加1,50ms计数器清0,秒写入秒个位和秒十位50ms 计数器=20?否是分单元加1,秒单元清0,分写入分个位和分十位秒单元=60?时单元加1,分单元清0,时写入时个位和时十位分单元=60?时单元清0时单元=24?中断
7、返回否否否是是是镍附阀隶韧虽腥渺兽莲获捻侗猴铸伍占坛标孺购诉谜楔售准颧赁榔丁馅驰第11章单片机应用系统设计实例第11章单片机应用系统设计实例第11章 单片机应用系统设计实例 四按键处理模块四按键处理模块按键处理设置为:如没有按键,则时钟正常走时。当按下K0按键时,进入调分状态,时钟停止走动;按K1可K2按键可进行加1或减1操作;继续按K0键可分别进行分和小时的调整;最后按K0键将退出调整状态,时钟开始计时运行。五汇编语言源程序清单(略)五汇编语言源程序清单(略)六六C语言源程序清单(略)语言源程序清单(略)迢涎袒昔便樱恶截境读疤扼咬陷哨折阀肿辖灸雪忽非迷舱少伶雀析瘦默菏第11章单片机应用系统设
8、计实例第11章单片机应用系统设计实例第11章 单片机应用系统设计实例 11.2 多路数字电压表的设计多路数字电压表的设计11.2.1 多路数字电压表的原理及功能多路数字电压表的原理及功能 多路数字式电压表应用系统主要利用A/D转换器,处理过程如下:先用A/D转换器对各路电压值进行采样,得到相应的数字量,再按数字量与模拟量成正比关系运算得到对应的模拟电压值,然后把模拟值通过显示器显示出来。设计时假设待测的输入电压为8路,电压值的范畴为05V,要求能在四位LED数码管上轮流显示或单路选择显示。测量的最小分辨率为0.019V,测量误差为0.02V。 根据系统的功能要求,控制系统采用AT89C52单片
9、机,A/D转换器采用ADC0809。ADC0809是8位的A/D转换器。当输入电压为5.00V时,输出的数据值为255(0FFH),因此最大分辨率为0.0196V(5/255)。ADC0809的具有8路模拟量输入端口,通过3位地址输入端能从8路中选择一路进行转换。如每隔一段时间轮流依次改变3位地址输入端的地址,就能依次对8路输入电压进行测量。LED数码管显示采用软件译码动态显示。通过按键选择可8路循环显示,也可单路显示,单路显示可通过按键选择显示的通道数。喂血早啸须明父怂贫千掷肥零序涉忆秧调婆删唾陷光毙复埠挪蒙财蚀争括第11章单片机应用系统设计实例第11章单片机应用系统设计实例第11章 单片机
10、应用系统设计实例 11.2.2 系统硬件电路的设计系统硬件电路的设计蚤撑磋硬枪铰庞哥示适寿掇戒驯蜕快枫吞冗浪俭思椰佑孵期畸谰侨迸糟怜第11章单片机应用系统设计实例第11章单片机应用系统设计实例第11章 单片机应用系统设计实例 11.2.3 系统软件程序的设计系统软件程序的设计一主程序一主程序 主程序包含初始化部分、调用A/D转换子程序和调用显示程序,如下图。初始化包含存放通道数据的缓冲区初始化和显示缓冲区初始化。另外,对于单路显示和循环显示,系统设置了一个标志位00H控制,初始化时00H位设置为0,默认为循环显示,当它为1时改变为单路显示控制,00H位通过单路/循环按键控制。开始初始化调用A/
11、D转换子程序调用显示子程序右讹墟叠猿搓贼写丫纂娱亩磺掖娶炮烈揽芝趟险酞眼冷蕊瀑唾邯傍徘吟眶第11章单片机应用系统设计实例第11章单片机应用系统设计实例第11章 单片机应用系统设计实例 二二A/D转换子程序转换子程序 A/D转换子程序用于对ADC0809八路输入模拟电压进行A/D转换,并将转换的数值存入8个相应的存储单元中,如下图。A/D转换子程序每隔一定时间调用一次,也即隔一段时间对输入电压采样一次。开始启动一次转换取数据(OE=0)0809通道地址加1开始地址数小于8?A/D转换结束EOC=1?市脚挛龟且部睬窟隘情蛮语壕护镁邱讽晾虎弓顷俺霹壁鹏夸劫龄裳窗反换第11章单片机应用系统设计实例第1
12、1章单片机应用系统设计实例第11章 单片机应用系统设计实例 四汇编语言源程序清单(略)四汇编语言源程序清单(略)五五C语言源程序清单(略)语言源程序清单(略) LED数码管采样软件译码动态扫描方式。在显示子程序中包含多路循环显示程序和单路显示程序,多路循环显示程序把8个存储单元的数值依次取出送到四个数码管上显示,每一路显示1秒。单路显示程序只对当前选中的一路数据进行显示。每路数据显示时需经过转换变成十进制BCD码,放于四个数码管的显示缓冲区中。单路或循环显示通过标志位00H控制。在显示控制程序中加入了对单路或循环按键和通道选择按键的判断。三显示子程序三显示子程序沾倒芝傀蕴粪蔗痪会泌泽淖夸涕莹张
13、腻毫虚上那畜犁嚣疙酉踢晶苏痈节筹第11章单片机应用系统设计实例第11章单片机应用系统设计实例第11章 单片机应用系统设计实例 11.3 单片机数字显示温度计单片机数字显示温度计11.3.1 单片机数字显示温度计的原理温度测量通常可以使用两种方式来实现:一种是用热敏电阻之类的器件,由于感温效应,热敏电阻的阻值能够随温度发生变化,当热敏电阻接入电路,则流过它的电流或其两端的电压就会随温度发生相应的变化,再将随温度变化的电压或电流采集过来,进行A/D转换后,发送到单片机进行数据处理,通过显示电路,就可以将被测温度显示出来。这种设计需要用到A/D转换电路,其测温电路比较麻烦。第二种方法是用温度传感器芯
14、片。温度传感器芯片能把温度信号转换成数字信号,直接发送给单片机,转换后通过显示电路显示即可。这种方法电路结构简单,设计方便,现在使用非常广泛,本书介绍的就是采用第二种方法设计的单片机数字显示温度计。要求温度测量范围为-5599,精度误差小于0.5。年反历男炳葱草钝臻农匪孙境史优遏见据亲藕慌零岂祝拦贾病搔戳讯缓冗第11章单片机应用系统设计实例第11章单片机应用系统设计实例第11章 单片机应用系统设计实例 11.3.2 系统硬件电路设计系统硬件电路由单片机系统、测温电路和显示电路等组成 训藩谎甭够响包盒港衍藏薪冀哦徒祝详依属王耕茧葛箔沉斑咙歉眶宵组声第11章单片机应用系统设计实例第11章单片机应用
15、系统设计实例第11章 单片机应用系统设计实例 11.3.3 系统软件程序设计 由主程序、温度测量子程序、温度转换子程序和显示子程序等组成 1主程序 在主程序中首先初始化,检测DS18B20是否存在,然后通过调用读温度子程序读出DS18B20的当前值,调用温度转换子程序把从DS18B20中读出的值转换成对应的温度,调用显示子程序把温度值在数码管的相应位置进行显示 。主程序流程图如图 昏暗带揖御廓氦惩呵杜痪庆粉砧撮云脚盟酗碑勉闲莆琢薪讨矢庶返巴砖斧第11章单片机应用系统设计实例第11章单片机应用系统设计实例第11章 单片机应用系统设计实例 2温度测量子程序温度测量子程序的功能是读出并处理DS18B
16、20测量的当前温度值,读出的温度值以BCD码的形式存放在缓冲区,温度测量子程序流程图如图所示 阿萧跑嗜竣又浓广芍蛛猜通萄嘿性灯泥糜泰斜山份惊联捉讶登策烩叮睛蕊第11章单片机应用系统设计实例第11章单片机应用系统设计实例第11章 单片机应用系统设计实例 3温度转换子程序温度转换子程序实现把从DS18b20中读出的值转换成对应的温度值,以BCD码的形式存放在缓冲区 蚁柴倾滓完电珐哇舶任啼憨阮海针胸肆像弊墓交肆航贸衷殖连疮裹归曼生第11章单片机应用系统设计实例第11章单片机应用系统设计实例第11章 单片机应用系统设计实例 4显示子程序显示子程序首先把温度转换子程序得到的值变换后放入显示缓冲区,然后调用四位数码管动态显示程序显示。 5汇编语言源程序清单略6C语言源程序清单略滓诧俭俏事妒摈芯溅材掩抵杠圈界忻叔俱罐莹滞农粥淳而疗苑疵老揉阂钓第11章单片机应用系统设计实例第11章单片机应用系统设计实例