(代码在文末)
工程文件和代码下载链接如下(求求下载前点个赞支持一下吧QAQ,博主自己做出来这个也hin累的)
链接: https://pan.baidu.com/s/1-aRZjyRZodzLcw83yx64kA 密码: og0w
一、实验目的
设计实现一个简易数字温度计,利用 Mega16 控制 DS18B20 获取室内环境温度,并显示。
若温度达到设定阈值,即可报警提醒。
二、实验项目与具体要求
(1) 实验项目:简易数字温度计。
(2) 具体要求:
1.液晶屏(
LCD1602/ LCD12864)或数码管显示当前的温度;
2.利用按键设置温度上限;
3.当温度超过上限时,进行报警。
4.通过 PC 机“串口助手软件”向单片机发送命令字符串,控制报警蜂鸣器的关闭。
三、实验方案设计
1. 实验的方案的论述和分析
①在 proteus 中搭建电路图。
选择 mega16 单片机,液晶屏显示器,PC 机,RN1 排阻,温度传感器,蜂鸣器,三极管,电
阻若干,按键若干,并连接硬件图。其中 PC 机的 RXD 和 TXD 接口分别接在单片机的 PD
接口;单片机的 PA 口为输出端口直接与显示器相连,PC 口设置为输入端口与按键区相连;
三极管基极通过电阻连接单片机 PD 口,发射极接地,集电极连接蜂鸣器,以放大电流,达
到报警效果。
②在 ICCV7 中建立新程序、文件,编写程序。首先对在代码中经常需要调用的命令进行简化,
将命令语句定义为简单的语句。然后对通信端口和部分功能进行初始化,以便后续功能使用。
然后分别对 DS18B20、LCD1602 等功能元件编写自定义函数指令,方便后续调用的逻辑清晰
和正确性。最后将其总结在 main 函数中,使用 while 语句进行语句的循环执行。
2.硬件电路原理图(proteus 仿真图)
3.软件流程图、重要数据结构、重要控制参数设计等
①软件流程图:
完整代码如下
#include<iom16v.h>
#include<math.h>
#define uchar unsigned char
#define uint unsigned int
#define rs_h (PORTB|=0x01)
#define rs_l (PORTB&=0xfe)
#define rs_o (DDRB|=0x01)
#define rw_h (PORTB|=0x02)
#define rw_l (PORTB&=0xfd)
#define rw_o (DDRB|=0x02)
#define en_h (PORTB|=0x04