基于51单片机温度检测LCD显示课程设计报告 1.docx
- 文档编号:8291507
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:14
- 大小:274.29KB
基于51单片机温度检测LCD显示课程设计报告 1.docx
《基于51单片机温度检测LCD显示课程设计报告 1.docx》由会员分享,可在线阅读,更多相关《基于51单片机温度检测LCD显示课程设计报告 1.docx(14页珍藏版)》请在冰豆网上搜索。
基于51单片机温度检测LCD显示课程设计报告1
大连民族学院
单片机系统课程设计
题目:
温度计的设计
班级:
电子105
姓名:
赵萌
同组人:
张瑛笛
指导教师:
李绍民
设计日期:
一设计内容及要求
设计内容:
基于单片机的室内温度检测LCD显示
要求:
测量温度55℃—125℃
温度上下限TH:
32℃TL:
16℃
温度报警:
超出温度上下限BEEP报警
二设计方案
测温部分:
采用18B20作为温度传感器,有一个由高低电平触发的且不因掉电而丢失的报警功能。
控制部分:
89S52最小系统
显示部分:
1602液晶显示,模块内的字符发生存储器存储了160个不同的点阵图形,先是方便,同时好可以进行时间的显示。
三硬件系统设计
AT89S52是一个低功耗,高性能CMOS8位单片机,片内含8kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案。
?
?
AT89S52具有如下特点:
40个引脚,8kBytesFlash片内程序存储器,256bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
?
?
?
?
AT89S52引脚图?
?
?
?
此外,AT89S52设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。
空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。
同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。
电源
时钟
晶振原理图
I/O接口
外围电路工作原理及硬件图
四软件系统设计
软件流程框图
系统设计原理:
本次课程设计是基于单片机的数字温度计设计,在开始课程设计的时候我们要理解并掌握对单片机的开发,学会使用KEIL及Proteus等仿真软件。
根据设计任务要求选择好器件,编写好程序运行成功之后进行软件联调,验证系统是否正确。
通过筛选,我们组选用单片机AT89S52作为主控制系统;用1602液晶显示模块芯片作为温度数据显示装置;智能温度传感器采用DS18B20器件作为测温电路主要组成部分。
五仿真调试
(1)KeilC51单片机软件开发系统的整体结构
C51工具包的整体结构,uVision与Ishell分别是C51forWindows和forDos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。
开发人员可用IDE本身或其它编辑C或汇编源文件。
然后分别由C51及C51编译器编译生成目标文件(.OBJ)。
目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。
ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。
(2)使用独立的Keil仿真器时,注意事项
●仿真器标配的晶振,但用户可以在仿真器上的晶振插孔中换插其他频率的晶振。
●仿真器上的复位按钮只复位仿真芯片,不复位目标系统。
●仿真芯片的31脚(/EA)已接至高电平,所以仿真时只能使用片内ROM,不能使用片外ROM;但仿真器外引插针中的31脚并不与仿真芯片的31脚相连,故该仿真器仍可插入到扩展有外部ROM(其CPU的/EA引脚接至低电平)的目标系统中使用。
●调试结果
●
(3)结果分析
在运行仿真结果时通过改变温度传感器DS18B20的温度,然后调用各种子函数,可以改变液晶显示1602的第二行显示数据,说明程序编写正确。
(4)系统设计电路的特点和方案的优缺点
我们组设计的数字温度计系统知识运用简单的AT89S52芯片的I/O口传输功能,通过几个小的读数据、传递数据、延时子函数实现温度的读取传输功能,是比较简单,容易实现的,所以我们的系统只是实现了一些简单的功能,系统整体来说比较简易,但好像这个温度计没有多大的应用价值,所以我们后续分析觉得这个系统可以加一个温度复位系统提高AT89S52芯片的功能价值,也提高数字温度计的智能价值,还可以增加一个报警子函数,实现智能数字温度计更高的应用价值。
六结论
虽然基本功能已经做好了,但还可以有很多的扩展功能,如串口设计和时钟显示,由于时间有限,但对于单片机的设计还在继续…
参考文献
附录一
程序代码:
#include<>
#include<>
#defineucharunsignedchar
#defineuintunsignedint
sbitDQ=P2^2;;
lcd_wdat(display[0]);//小数位数显示
lcd_wdat(0x00);//显示自定义字符
lcd_wdat('C');//显示C
}
/*******************************************************************/
/**/
/*蜂鸣器响一声*/
/**/
/*******************************************************************/
voidbeep()
{
unsignedchary;
for(y=0;y<100;y++)
{
Delay(70);
BEEP=!
BEEP;//BEEP取反
}
BEEP=1;//关闭蜂鸣器
Delay(25000);
}
/*******************************************************************/
/**/
/*ROMCORD显示菜单*/
/**/
/*******************************************************************/
voidRomCode_Menu()
{
ucharm;
lcd_init();//初始化LCD
lcd_pos(0);//设置显示位置为第一行
for(m=0;m<16;m++)//显示字符
lcd_wdat(cdis1[m]);
Read_RomCord();//读取64位序列码
CRC8();//CRC效验
if(crc==0)//CRC效验正确
{
Disp_RomCode
(2);//显示64位序列码
}
}
/*******************************************************************/
/**/
/*DS18B20ERROR显示菜单*/
/**/
/*******************************************************************/
voidError_Menu()
{
ucharm;
lcd_init();//初始化LCD
lcd_pos(0);//设置显示位置为第一行的第1个字符
for(m=0;m<16;m++)
lcd_wdat(cdis3[m]);//显示字符
lcd_pos(0x40);//设置显示位置为第二行第1个字符
for(m=0;m<16;m++)
lcd_wdat(cdis4[m]);//显示字符
}
/*******************************************************************/
/**/
/*DS18B20正常显示菜单*/
/**/
/*******************************************************************/
voidNatural_Menu()
{
ucharm;
lcd_init();//初始化LCD
lcd_pos(0);//设置显示位置为第一行的第1个字符
for(m=0;m<16;m++)
lcd_wdat(cdis5[m]);//显示字符
lcd_pos(0x40);//设置显示位置为第二行第1个字符
for(m=0;m<16;m++)
lcd_wdat(cdis6[m]);//显示字符
Read_Temperature();
Disp_Temp_alarm(0x43,0);//显示TH值
Disp_Temp_alarm(0x4b,1);//显示TL值
Disp_Temperature();//显示实时温度值
}
/*********************************************************/
//显示报警温度
/*********************************************************/
voidDisp_Temp_alarm(ucharaddr,ucharnum)
{//0=TH,1=TL
display1[2]=temp_alarm[num]/100+0x30;
display1[0]=temp_alarm[num]%100;
display1[1]=display1[0]/10+0x30;
display1[0]=display1[0]%10+0x30;
if(display1[2]==0x30)//高位为0,不显示
{
display1[2]=0x20;
if(display1[1]==0x30)//次高位为0,不显示
display1[1]=0x20;
}
lcd_pos(addr);
lcd_wdat(display1[2]);//百位数显示
lcd_wdat(display1[1]);//十位数显示
lcd_wdat(display1[0]);//个位数显示
}
/**********************************************************/
//Time0中断函数
/**********************************************************/
voidTime0(void)interrupt1using0
{
TH0=0x4c;//50ms定时
TL0=0x00;
timecount++;
if(timecount>9)
{
timecount=0;
flag=~flag;
}
}
/*********************************************************/
//温度比较函数
/*********************************************************/
voidtemp_compare()
{
if(temp_comp>=temp_alarm[0])//比较TH值
{
compare_th=1;
}
elsecompare_th=0;
if(temp_comp { compare_tl=1; } elsecompare_tl=0; if(compare_th) { spk(0x46);//小喇叭闪动 if(! alarm_on_off)//静音选择 beep(); count=temp_alarm[0]; } else { lcd_pos(0x46); lcd_wdat(0x20); } if(compare_tl) { spk(0x4e);//小喇叭闪动 if(! alarm_on_off)//静音选择 beep(); count=temp_alarm[1]; } else { lcd_pos(0x4e); lcd_wdat(0x20); } } /*******************************************************************/ /**/ /*主函数*/ /**/ /*******************************************************************/ voidmain() { ucharm; TMOD=0x01;TH0=0x4c;TL0=0x00;//50ms定时 EA=1;ET0=1;TR0=1; P0=0; P2&=0x1F; Init_DS18B20(); Write_Temperature_alarm();//设定报警上下限温度值 if(presence) { Error_Menu(); do { Init_DS18B20(); beep(); } while(presence); } RomCode_Menu();//显示RomCode for(m=0;m<10;m++) Delay(50000); Natural_Menu();//正常显示界面 Delay(50000); while (1) { Read_Temperature();//读取当前温度 Delay(50000); Disp_Temperature();//更新当前温度 temp_compare();//温度上下限比较 if(compare_th) { Set_tempalarm_Flash(0x43,0);//上限报警 } if(compare_tl) { Set_tempalarm_Flash(0x4b,1);//下限报警 } }//endofwhile (1) }//endofmain()
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于51单片机温度检测LCD显示课程设计报告 基于 51 单片机 温度 检测 LCD 显示 课程设计 报告