基于单片机的数字温度计设计与仿真毕业论文(编辑修改稿)内容摘要:
读程序部分用来对 18B20 读出相应的温度值。 图 读 18B20 时序图 如上图所示,首先将数据总线从高电平拉低,等待 15us,如果读的是低电平则 基于单片机的数字温度计设计与仿真 系统详细设计 16 为 0,如果读的是高电平则为 1. 在程序实现中,目的是得到一个温度值,故在 18B20 程序模块中有一个函数get_temperature(),用来得到一个温度值即可。 以上初始化等程序都为此程序服务,在调用此程序后就得 到了个 temperature。 这就是 18B20 程序模块的最终目的。 18B20 程序模块程序全部放在 文件中。 液晶显示模块 液晶显示模块电路设计 液晶 显示模块是人机接口中的一个重要部分。 它是用来显示测得的温度及相关提示信息的。 本数字温度计的液晶显示采用的是 1602 液晶。 因为这两种液晶的操作是一样的,而在 proutes 中又没 1602 液晶,所以 在 proutes 中采用 LMO16L 来进行代替, 在常规设计中数据口一般接 P0 口,考虑到 P0 口无上拉电阻,这样我们就得在P0 口上拉 电阻或使 用锁存器来代替,这样的话电路上就会增加硬件从而增加了布线的难度。 又因为 1602 液晶不 像 ROM 和 RAM 那样操作,因此在液晶显示电路设计中采用数据端口为 P1 口。 RS: 数据 /命令选择 ,对应在 MCU 中的 IO 端口是: P20 RW:读 /写选择端,对应在 MCU 中的 IO 端口是: P21 E:使能信号端,对应在 MCU 中的IO端口是: P22 图 液晶显示模块 的电路图 基于单片机的数字温度计设计与仿真 系统详细设计 17 液晶显示模块的程序设计 1602 液晶和 18B20 一样,操作要根据 datasheet 进行, 在此不一一列出 datasheet的细节。 1602 液晶显示程序部分在 ,它包括: void check_busy ()//检查忙标志 void lcd_write(bit d_c,uchar input_data)//写程序 void lcd_initial(void)//初始化程序 void lcd_printc(uchar i,uchar x,uchar y)//写一个字符 void lcd_prints(uchar *strint,uchar x,uchar y)//写字符串 此 5 个程序中作为外部函数的是 void lcd_prints(uchar *strint,uchar x,uchar y),用时只要把我们的数据转换成一段字符串拿来显示即可。 键盘输入模块 键盘输入模块电路设计 键盘输入部分是给用户设定上下限温度值。 它由三个按键组成,设定功能键 KEY1,上下限温度加减按键 分别 为 KEY KEY3。 由于采用 P2 口, P2 口有上拉电阻,故 按键的电路接法比较简单,只需一边接地,另一端直接 接在MCU中IO端口上就可以了。 在按键没按下时输入的是高电平,按下后变为 低电平。 KEY1 对应MCU中的IO端口是: KEY2 对应MCU中的IO端口是: KEY3 对应MCU中的IO端口是: 图 键盘输入 模块 的电路图 基于单片机的数字温度计设计与仿真 系统详细设计 18 键盘输入模块程序设计 键盘扫描部分程序设计充分考虑了按键去斗。 即一次按键不会当作多次按键,对系统的稳定性起着相当关键的作用。 去斗程序用到了一个延时程序。 再就是按键有个释放过程,考虑到点,程序中如果没有释放按键则进行其它操作,即不处理按键功能。 因此这样就有个按键判断过程。 整个键盘扫描部分程序相当少 .程序给出如下: include /********************************************************** 函数名称: void delay(uint z) 功能说明:键盘扫描延时程序 入口参数: z 为延时 z*(理想 ) ***********************************************************/ void delay(uint z) { uint x,y。 for(x=z。 x0。 x) for(y=20。 y0。 y)。 } /********************************************************** 函数名称: void key_scanf() 功能说明:键盘扫描子程序 入口参数: void ***********************************************************/ void key_scanf() { key=0xff。 delay(30)。 //去斗 key=keyamp。 0xff。 while(key!=0xff) { switch(key) { case 0x7f:key1=1。 break。 case 0xbf:key2=1。 break。 基于单片机的数字温度计设计与仿真 系统详细设计 19 case 0xdf:key3=1。 break。 } delay(70)。 //去斗 key=keyamp。 0xff。 } } 以上程序为 文件中的全部程序部分 , key_scanf()设定它是外部函数 ,在这个模块中只有这个函数才能给别个文件用 ,但用这个函数只能是 和 ,这 样用的原因是为了程序的可改性.再就是在这个 中有三个外部变量,为 key1,key2,key3, 它的使用规则同样和外部函数一样。 这就是模块化的在本系统中程序部分的特色,其思路是借鉴了面向对像编程中的思路.在其它程序模块中也一样. 在此键盘模块中目的就是得到三个 key 值,当有这三个 key 值时主程序相关程序才做出相应的操作。 报警模块电路 报警模块电路设计 报警模块 ,用来在测得的温度超过上下限温度时进行报警,用 来提示用户做出相应的措施。 报警模块使用了两个发光二极管,一 个黄色的,一个绿色。 黄色的是当测得的温度超过下限温度时 通过 发光来提示 用户 ,而绿色的是在测得的温度超过上限温度时 通过 发光来提示用户。 两个发光二级管分别接在MCU的 和 口。 图 报警 模块 的电路 基于单片机的数字温度计设计与仿真 系统详细设计 20 报警模块 模块程序设计 报警部分用到的外部硬件是两个二极管模拟的。 当温度低于设定的低温时进行报警,当温度高于设定的高温时进行报警。 在程序设计中采用 low_temp 和 high_temp进行保存设定的高低温度值,将他们与测得值进行比较进行相应的操作,如果设定的 low_temp 高于 high_temp 时将显示 error,并其设定无效。 报警部分程序放在 文件中。 它包含 pare_temperature()和 deal_pare _temperature()两个程序。 具体程序见附录。 串行输出模块 串行输出模块电路设计 串行输出 模块 是将得到的温度值通过串行的方式传送出去。 它是用来提供了将温度输入到电脑的一个接口。 其电路图如下: 图 串行输出模块的电 串行输出模块程序设计 串行输出程序的思路是,当温度的值发 生变化时进行一次串行输出操作。 由于系统时钟设为 ,串行通信中的波特率的选择就很多,此串行通信设的波特率为 9600 串行程序中必须注意,要软件清零 TI 中断标志。 因为 51 单片机中串行的中断标志和 T2 的中断标志硬件无法自己清除标志位。 具体 程序见附录。 基于单片机的数字温度计设计与仿真 软件仿真与测试 21 第五 章 软件仿真与测试 5. 1 软件仿真分析与测试结果 1. 系统实时显示当前温度值。 图 实时显示当前温度值 基于单片机的数字温度计设计与仿真 软件仿真与测试 22 2. 修改上限温度值。 图 修改上限温度值 3.修改下限温度值。 图 修改下限 温度值 基于单片机的数字温度计设计与仿真 软件仿真与测试 23 4.小于下限温度值时报警。 此时的 下限 温度是 上 面设写的 5℃ , 18B20 设 ℃ . 图 低于下限温度值时报警 5.高于上限温度值时报警。 此时的上限温度是上面设的 35℃ , 18B20 设 ℃ 图 高于上 限温度值时报警 基于单片机的数字温度计设计与仿真 软件仿真与测试 24 6.在设定上限温度时,设定的上限温度要大于下限温度,若出现设的值小于下限温度时会出现 error: 图 设定的上限温度值小于下限温度值时 同样在设定的下限温度若大于上限温度时也会出现 error。 基于单片机的数字温度计设计与仿真 结束语 25 结束语 本论文 设计的是 基于单片机的数字温度计。 整 个系统以 51 单片机为控制核心,采用单总线的 DS18B20 作为系统的温度采集传感器。 用 1602 液晶作为单片机的 IO显示模块。 整个系统功能完善。 具有实时显示当前温度,设定上下限温度值以及可以对当前温度超出限定的温度值时进行报警提示。 系统还具有 232 通信功能,可将温度实时的传送给计算机等进行相应的处理。 本系统在软件上采用了结构化程序设计,使得设计的程序易读易改。 例如, 在 设计本系统 起初没有 232 通信功能,在设计过程中再加上去的。 此时设计的程序已写好,要加上通信功能时直接在程序中加入 文件,其文件中的 函数功能即是实现 232 通信的功能,此 就是一个小模块。 就此可以看出 结构化程序设计的优点来。 经过 了这 次 设计后,我学到了很多新的知识。 学会了如何去看 datasheet,如何做一个系统的分析。 更进一步加强了 51 单片机的运用能力,包括 51 单片机的程序编写,调试,仿真等。 最重要的是 提高了我的动手实践能力。 在这个系统中,出于条件的原因,只做出了相关仿真,没有去做硬件。 在串行通信中只有相关的设计程序而没有将其做出实物与计算机进行相应的通信。 虽然通过自己的学习完成了这项设计,但是觉得自己还有很多知识要去学习 ,比如说传感器,数电,模电等。 基于单片机的数字温度计设计与仿真 参考文献 26 参考文献 [1]. 阎石.数字电子技术基础 [M]. 北京:高等教育出版社, 20xx 年 [2]. 王化祥,张淑英.传感器原理及应用 [M]. 天津: 天津大学出版社 , 20xx 年 [3].童诗白,华成英.模拟电子技术基础 [M]. 北京:高等教育出版社, 1980 年 [4].尹建华,张惠群.微型计算机原理与接口技术 [M]. 北京 : 高等教育出版社 ,20xx 年 [5].谭浩强. C 语言 程序设计 [M]. 北京: 清华大学出版 , 20xx 年 [6]. 张友德,赵志英,涂时亮.单片微型机原理、应用与实验 [M]. 上海: 复旦大学出版社 , 20xx年 [7]. 李国洪,曹白杨,陈刚. 电子 CAD 实用教程 [M]. 北京 : 机械工业出版社 , 20xx 年 [8]. 求是科技 . 单片机典型模块设计实例导航 [M]. 北京: 人民邮电出版社 , 20xx 年 [9].彭为,黄科,雷道仲.单片机典型系统设计实例精讲 [M ]. 北京 : 电子工业出版社 , 20xx 年 [10]. 李朝青. 单片机 amp。 DSP 外围数字 IC 技术手册 [M]. 北京: 北京航空航天大学出版社 , 20xx年 [11].刘鲲 , 孙春亮. 单片机 C 语言入门。基于单片机的数字温度计设计与仿真毕业论文(编辑修改稿)
相关推荐
000000B SBUF 不定 IE 0X000000B PCON 0X000000B TMOD 00H ( 2)复位信号及其产生 RST 引脚是复位信号的输入端。 复位信号是高电平有效,其有效时间应持续 24个振荡周期 (即二个机器周期 )以上。 若使用颇率为 6MHz 的晶振,则复位信号持续时间应超过 4us 才能完成复位操作。 产生复 位信号的电路逻辑如图 所示: 图 复位信号的电路逻辑图
定的,即传感器的输出-输入特性为直线。 在相同工作条件下做全量程范围校准时,下行程(输入量由小到大)和反行程(输入量由大到小)所得输出输入特性曲线往往不重合。 也就是说,对应同一大小的输入信号,传感器正反行程的输出信号大小不相等,此即迟滞现象。 迟滞(或称回程误差)正是用来描述传感器在正反行程期间特性曲线不重合程度的。 迟滞的大小常用正反行程最大输出差值 △ ymax 对满量程输出 yFS
提炼差异化营销传播概念的30种途径 21 世纪素材资源平台 中国最大素材资料平台 160984104提炼差异化营销传播概念的 30 种途径引子 在研究营销传播概念的过程中,笔者总结了中国历年来的优秀营销传播概念,并先后发了 “中国十大经典营销传播概念”和 “中国优秀营销传播概念 10 例”两文,同时,也总结了一些理论和方法,然而,在这其中,笔者最大的感受是“水无常势,兵无常法”,因此
8脚 VCC2作 为主电源引脚; 钦州学院本科毕业论文 (设计 ) 7 图 DS1302管脚及内部结构图 DS1302的寄存器 DS1302内部含有时钟相关的寄存器,通过向 相关 寄存器写入 一些 命令字实现 对时钟 DS1302的操作,例如 在需改变 某时刻 分 的初 始值, 首 先 要 把命令字 82H写入 寄存器 ,然后 就可以把初始值写入分 寄存器; 当某时刻分的值需 要读出 时
数据 1 1 数 据 2)如图 213 为写命令字的流程图。 图 213 写命令字流程图 3)定义光标位置 写命令字 读入状态字→ A =0? 不忙吗。 延时 R/W=0 RS=0 E=1 命令字→ A,A→ P1 E=0 RS=0 返回 四川信息职业技术学院毕业设计说明书 第 13 页 共 31 页 把显示数据要某个位置,就是把显示数据写在相应的 DDRAM 地址中, DDRAM地址占 7 位
减一加一抢答时间调整答题时间调整P 3 2停止P 3 3开始 /启用P 3 5P 3 4P 3 0P 3 1 图 34 主持人控制电路 显示驱动电路 驱动显示部 分是本设计一个重要部分, LED 数码管分为共阴极 7 段数码管如图35 所示,共阳极 7 段数码管如图 36 所示。 dcb gfeG N Da h 图 35 共阴极 7 段数码管 dcb gfea h+ 5 v 图 36 共阳极 7