1-WireBus
GNDDS18B20采样>1usDS18B20采样
15usMINTYPMAXMINTYPMAX
15us30us15us15us30us
图1-3(b)写时序
VCC主机读“0”时隙主机读“1”时隙锹籁饗迳琐筆襖鸥娅薔。
1-WireBus
GND主机采样1us
15us15us30us主机采样
15us
图1-3(c)读时序
读时间片:
主机将数据线从高电平拉至低电平1us以上,再使数据线升为高电平,从而产生读起始信号。
主机在读时间片下降沿之后15us内完成读位。
每个读周期最短的持续期为60us,各个读周期之间也必须有1us以上的高电平恢复期。
構氽頑黉碩饨荠龈话骛。
1.3测温电路设计
数字温度传感器DS18B20的测温电路如图1-4所示:
图1-4测温电路
1.4按键模块设计
利用单片机的IO口实现按键的中断输入。
另外需要一个与门实现与中断端口的连接。
按键电路如图1-5所示,期中按键K1为进入/退出设置键;K2为增加键;K3为减少键。
輒峄陽檉簖疖網儂號泶。
图1-5按键模块
1.5报警电路设计
三极管驱动蜂鸣器:
报警电路如图1-6所示,三极管Q5来驱动喇叭LS1。
图1-6报警电路
1.6显示电路设计
采用四位共阴极LED数码管来显示温度,可以直接读取,温度精确到0.1℃。
四位数码管的显示电路如图1-7所示,从左到右依次是百位,十位,个位,十分位。
尧侧閆繭絳闕绚勵蜆贅。
图1-7显示电路
1.7串口电路设计
单片机与上位机(PC机)的接口电路如图1-8所示:
图1-8接口电路
第二章系统软件设计
2.1各模块的程序设计
系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序和按键扫描处理子程序等。
识饒鎂錕缢灩筧嚌俨淒。
2.1.1主程序流程图
主程序的主要功能是负责温度的实时显示、读出并处理DS18B20测量的当前温度值,温度测量每1s进行一次。
这样可以在一秒之内测量一次被测温度,其程序流程见图2-1所示。
凍鈹鋨劳臘锴痫婦胫籴。
Y
图2-1主程序流程图
2.1.2读出温度子程序
读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。
其程序流程图如图2-2所示:
恥諤銪灭萦欢煬鞏鹜錦。
Y
鯊腎鑰诎褳鉀沩懼統庫。
图2-2读出温度子程序流程图
2.1.3温度转换命令子程序
温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。
温度转换命令子程序流程图如图2-3所示:
硕癘鄴颃诌攆檸攜驤蔹。
结束
图2-3温度转换命令子程序流程图
2.1.4计算温度子程序
Y
计算温度子程序流程图如图2-4所示。
阌擻輳嬪諫迁择楨秘騖。
图2-4计算温度子程序流程图
2.1.5显示数据刷新子程序
显示数据刷新子程序主要是对分离后的温度显示数据进行刷新操作,当标志位位为1时将符号显示位移入第一位。
程序流程图如图3-5所示。
氬嚕躑竄贸恳彈瀘颔澩。
Y
釷鹆資贏車贖孙滅獅赘。
图2-5显示数据刷新子程序流程图
2.1.6报警子程序
设置报警标志位beep,报警流程图如图2-6所示:
读取测量温度值
温度值
>120或
<20?
Beep=0
Beep=1,报警
Y
图2-6报警流程图
2.1.7按键扫描处理子程序
按键采用扫描查询方式,设置标志位,当标志位为1时,显示设置温度,否则显示当前温度。
如图2-7所示
K1键按下
K3键按下?
K2键按下?
NN
显示标志位为0?
报警温度减1
报警温度加1
YYN怂阐譜鯪迳導嘯畫長凉。
调用显示子程序
Y谚辞調担鈧谄动禪泻類。
图2-7按键扫描子程序流程图
2.2KeilC51编程软件
2.2.1KeilC51简介
KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
用过汇编语言后再使用C来开发,体会更加深刻。
KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
KeilC51软件是一个基于32位Windows环境的应用程序,支持C语言和汇编语言编程,其6.0以上的版本将编译和仿真软件统一为μVision(通常称为μV2)。
Keil提供包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,由以下几部分组成:
μVisionIDE集成开发环境C51编译器、A51汇编器、LIB51库管理器、BL51连接/定位器、OH51目标文件生成器以及实时操作系统。
嘰觐詿缧铴嗫偽純铪锩。
2.2.2KeilC51软件应用
应用Keil进行软件仿真开发的主要步骤为:
编写源程序并保存→建立工程并添加源文件→设置工程→编译/汇编、连接→程序调试。
Keil使用“工程”(Project)的概念,对工程(而不能对单一的源程序)进行编译/汇编、连接等操作。
工程的建立、设置、编译/汇编及连接产生目标文件的方法非常易于掌握。
首先选择菜单File→New…,在源程序编辑器中输入汇编语言或C语言源程序(或选择File→Open…,直接打开已用其它编辑器编辑好的源程序文档)并保存,注意保存时必须在文件名后加上扩展名.asm(.a51)或.c;然后选择菜单Project→NewProject,建立新工程并保存(保存时无需加扩展名,也可加上扩展名.uv2);工程保存后会立即弹出一个设备选择对话框,选择CPU后点确定返回主界面。
这时工程管理窗口的文件页(Files)会出现“Target1”,将其前面+号展开,接着选择SourceGroup1,右击鼠标弹出快捷菜单,选择“AddFiletoGroup‘SourceGroup1’”,出现一个对话框,要求寻找并加入源文件(在加入一个源文件后,该对话框不会消失,而是等待继续加入其它文件)。
加入文件后点close返回主界面,展开“SourceGroup1”前面+号,就会看到所加入的文件,双击文件名,即可打开该源程序文件。
紧接着对工程进行设置,选择工程管理窗口的Target1,再选择Project→OptionforTarget‘Target1’(或点右键弹出快捷菜单再选择该选项),打开工程属性设置对话框,共有8个选项卡,主要设置包括在Target选项卡中设置晶振频率、在Debug选项卡中设置实验仿真板等,如要写片,还必须在Output选项卡中选中“CreatHexFi”;其它选项卡内容一般可取默认值。
工程设置后按F7键(或点击编译工具栏上相应图标)进行编译/汇编、连接以及产生目标文件。
成功编译/汇编、连接后,选择菜单Debug-Start/StopDebugSession(或按Ctrl+F5键)进入程序调试状态,Keil提供对程序的模拟调试功能,内建一个功能强大的仿真CPU以模拟执行程序。
Keil能以单步执行(按F11或选择Debug-Step)、过程单步执行(按F10或选择Debug-StepOver)、全速执行等多种运行方式进行程序调试。
如果发现程序有错,可采用在线汇编功能对程序进行在线修改(Debug-InlineAssambly),不必执行先退出调试环境、修改源程序、对工程重新进行编译/汇编和连接、然后再次进入调试状态的步骤。
对于一些必须满足一定条件(如按键被按下等)才能被执行的、难以用单步执行方式进行调试的程序行,可采用断点设置的方法处理。
熒绐譏钲鏌觶鷹緇機库。
第三章系统的仿真与总结
3.1Protues仿真
3.1.1Protues简介
Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等。
在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。
该软件的特点是:
1.实现了单片机仿真和SPICE电路仿真相结合,具有模拟电路仿真、数字电路仿真、各种单片机(51系列、AVR、PIG等常用的MCU)及其外围电路(如LCD、RAM、ROM、键盘、LED、A/D、D/A等)组成的系统仿真。
2.提供了多种虚拟仪器。
如示波器、逻辑分析仪、信号发生器等,调试非常方便。
3.提供软件调试功能,同时支持第三方的软件编译和调试环境,如Keil等软件。
4.具有强大的原理图绘制功能。
Proteus与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。
因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。
对于这样的仿真实验.从某种意义上讲,是弥补了实验和工程应用有脱节的矛盾和现象。
同时,当硬件调试成功后,利用ProteusARES软件,很容易获得其PCB图,为今后的制造提供了方便。
鶼渍螻偉阅劍鲰腎邏蘞。
3.1.2proteus的工作过程
运行proteus的ISIS程序后,进入该仿真软件的主界面。
在工作前,要设置view菜单下的捕捉对齐和system下的颜色、图形界面大小等项目。
通过工具栏中的p命令,在pickdevices窗口中选择电路所需的元件,放置元件并调整其相对位置,元件参数设置,元器件间连线,编写程序;在source菜单的Definecodegenerationtools菜单命令下,选择程序编译的工具、路径、扩展名等项目;在source菜单的Add/removesourcefiles命令下,加入单片机硬件电路的对应程序;通过debug菜单的相应命令仿真程序和电路的运行情况。
Proteus软件提供了30多个元件库,数千种元件。
元件涉及数字和模拟、交流和直流等。
纣忧蔣氳頑莶驅藥悯骛。
3.1.3Protues测温仿真
通过仿真软件验证该原理图的可行性。
采用protues软件对电路仿真,可以得到预期效果。
仿真图如图3-1所示。
温度传感器的仿真效果图如图3-2所示,此图验证了传感器的温度与数码管显示的数字一致。
颖刍莖蛺饽亿顿裊赔泷。
图3-1Protues仿真图
图3-2DS18B20仿真图
当按下K1键一次时,进入温度报警上线调节,此时显示软件设置的温度报警上线,按K2或K3分别对报警温度进行加一或减一。
当再次按下K1键时,进入温度报警下线调节,此时显示软件设置的温度报警下线,按K2或K3分别对报警温度进行加一或减一。
当第三次按下K1键时,退出温度报警线设置。
显示当前温度。
濫驂膽閉驟羥闈詔寢賻。
如图3-3是第一次按下K1键显示的上限温度报警值,此时按K2或K3键分别对上限温度报警值进行加一或减一;图3-4是第二次按下K1键显示的下限温度报警值,此时按K2或K3键分别对下限温度报警值进行加一或减一。
銚銻縵哜鳗鸿锓謎諏涼。
图3-3上限温度报警值
图3-4下限温度报警值
3.1.4性能分析
性能测试可用制作的温度计和已有的成品温度计同时进行测量比较。
由于DS18B20的精度很高,所以误差指标可以限制在±0.1℃以内。
另外,0~100℃的测量范围使得该温度计完全适合一般的应用场合,其低压供电特性可以做成电池供电的手持电子温度计。
挤貼綬电麥结鈺贖哓类。
3.2总结
本次设计主要是通过AT89C51单片机为核心设计的一款数字温度计,该温度计不仅能够实时测量温度值并显示出来,还能够设定温度上下限进行监控,若温度高于设定上限值或低于下限值,则报警电路将进行报警。
赔荊紳谘侖驟辽輩袜錈。
此次课程设计中,难点在于DS18B20的使用,即对它的时序控制、初始化以及字节读写方法,任何一个环节出错或是时序控制不到位的