MCS51单片机课设报告范本.docx
《MCS51单片机课设报告范本.docx》由会员分享,可在线阅读,更多相关《MCS51单片机课设报告范本.docx(11页珍藏版)》请在冰豆网上搜索。
MCS51单片机课设报告范本
《MCS-51单片机》课程设计
任务书及课程报告
题目:
姓名:
学号:
学院:
专业:
年级:
指导教师:
设计任务
一、技术要求
使用单总线的DS18B20测量温度,进行LCD液晶显示,当温度超过50℃时,通过指示灯报警。
请根据需求撰写任务书,写出详细的功能,以及设计步骤。
在课程设计之前提交给老师。
(可以对内容进行扩展,可适当加分)
2、拟采用的方法(包括芯片的选型等)
51芯片采用国产STC89C52作为主控.美国达拉斯公司生产的DS18B20温度传感器芯片进行温度采集。
和DALLAS公司的实时时钟芯片DS1302对年月日周日分秒进行计时。
采用LCD1602进行温度、实时时间等显示。
用蜂鸣器与LED灯进行报警。
3、该同学在本设计中承担的任务
目录
1.设计概述3
2.硬件电路图4
3.软件设计7
4.结论14
5.参考文献15
6.电路图16
1.设计概述
本课程设计题目基本要求:
使用单总线的DS18B20测量温度,进行LCD数码管显示,当温度超过50℃时,通过指示灯报警。
该题目设计的意义在于不仅可以对一些需要温度环境要求比较高的房间进行实时测量、监测和报警,亦可以在无人监守的控制室进行火灾报警,具有良好的适用环境,有一定的意义。
本设计定时对环境温度进行采样,数据送至单片机处理,显示在LCD1602上,并判断是否超过临界报警值。
2.硬件电路图
本设计由微处理器、DS18B20温度采集电路、DS1302时钟电路、键盘输入模块、LCD1602显示单元、LED报警模块和EEPROM及电源管理模块。
本报告主要介绍微处理器用到的资源、DS18B20温度采集电路、DS1302时钟电路、LCD1602显示单元和LED报警模块。
硬件设计框图如图1。
图1硬件设计框图
2.1微处理器
兼容标准MCS-51指令系统的AT89C52高性能8位单片机是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产。
片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。
AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
本设计用到的资源有一个中断,一个RXD和TXD(烧写程序),和若干个普通IO口。
AT89C52价格低廉,结构简单,且资料丰富,作为本设计的微处理切实可行。
2.2DS18B20温度采集电路
DS18B20是美国达拉斯(Dallas)公司的单线数字温度传感器芯片,与传统的热敏电阻不同,DSl8B20可直接将被测温度转换为串行数字信号,供单片机处理。
通过编程,DSl8B20可以实现9~12位的温度读数。
信息经过单线接口送入DSl8B20,或从DSl8B20送出,因此,从单片机到DSl8B20仅需连接一条信号线和地线。
另外,每片DSl8B20都设有惟一的产品序列号,存放在它的内部ROM中,单片机通过简单的协议就能识别这个序列号。
因此,多个DSl8B20可以挂接于同一条单线总线上,特别适合构成多点温度测控系统。
DS18B20的硬件原理如图2。
为了保证数据传输的可靠性,故对DQ数据线进行上拉。
图2DS18B20硬件原理图
2.3DS1302时钟电路
实时时钟电路DS1302是DALLAS公司的一种具有涓细电流充电能力的电路,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。
图3中左侧是电源信号滤波电路,右侧二极管D1的作用是保护电源BATTERY。
其中VCC2为主电源,VCC1为备用电源。
图3DS1302时钟电路
2.4LCD1602显示单元
VEE为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高。
若对比度过高会产生“鬼影”,使用时可以通过一只10kΩ电阻来调整对比度。
RS为寄存器选择端,RS为高电平时选择数据寄存器,为低电平时选择指令寄存器。
RW为读写信号线,为高电平时进行读操作,为低电平时为写操作。
当RS和RW同为低电平时可以写入指令或者显示地址。
当RS为低电平、RW为高电平时可以读忙信号,当RS为高电平、RW为低电平时可以写入数据。
E为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
DO-D8为位双向数据线。
图4为LCD1602的硬件原理图。
图4LCD1602硬件原理图
3.软件设计
3.1流程图
图5为主流程图。
单片机上电,先对LCD1602、DS1302、DS18B20进行初始化配置。
继而获取DS1302的时间量和DS18B20的温度值,判断温度值是否超过预定设定的报警值,如果超过点亮报警灯。
LCD1602显示时间量和温度值,供人查看。
同时判断按键是否按下,判断是调整时间还是设定报警值。
相应处理,返回获取时间量和温度值。
图5主流程图
3.2程序
3.2.1DS18B20程序
/**********ds18b20初始化函数**********************/
voidInit_DS18B20(void)
{
unsignedcharx=0;
DQ=1;//DQ复位
delay(8);//稍做延时
DQ=0;//单片机将DQ拉低
delay(80);//精确延时大于480us
DQ=1;//拉高总线
delay(14);
x=DQ;//稍做延时后如果x=0则初始化成功x=1则初始化失败
delay(20);
}
/***********ds18b20读一个字节**************/
unsignedcharReadOneChar(void)
{
uchari=0,dat=0;
for(i=8;i>0;i--)
{
DQ=0;
dat>>=1;
DQ=1;
if(DQ)
dat|=0x80;
delay(4);
}
return(dat);
}
/*************ds18b20写一个字节****************/
voidWriteOneChar(uchardat)
{
unsignedchari=0;
for(i=8;i>0;i--)
{
DQ=0;
DQ=dat&0x01;
delay(5);
DQ=1;
dat>>=1;
}
}
/**************读取ds18b20当前温度************/
voidReadTemp(void)
{
unsignedchara=0,b=0,tc=0;
Init_DS18B20();
WriteOneChar(0xCC);//跳过读序号列号的操作
WriteOneChar(0x44);//启动温度转换
delay(100);//thismessageisweryimportant
Init_DS18B20();
WriteOneChar(0xCC);//跳过读序号列号的操作
WriteOneChar(0xBE);//读取温度寄存器等,前两个就是温度
delay(100);
a=ReadOneChar();//读取温度值低位
b=ReadOneChar();//读取温度值高位
temp_value=b<<4;
temp_value+=(a&0xf0)>>4;
}
3.2.2DS1302程序
4.结论
4.1测试结果
本课程设计满足题目基本要求:
使用单总线的DS18B20测量温度,进行LCD数码管显示,当温度超过50℃时,通过指示灯报警。
本课程设计完成的拓展内容为:
使用DS1302时钟芯片实现RTC功能,并可以通过按键对时间量进行修改。
修改时可以开启设置光标,选中所修改值。
4.2遇到问题
(1)LCD显示问题,不能正常显示
(2)DS1302取数据问题,时间不能正常显示
(3)DS18B20报警问题
(4)文件之间的调用问题
4.3如何解决
(1)LCD正反插;由于P0口内部没有上拉电阻,输出数据时高低电平不稳定,所以不使用P0口作为数据口;延时E控制线高电平输出数据间隔时间太短,致使显示不正常,解决方案加长延时。
(2)由于DS1302芯片有写保护功能,所以对其设置时间时,应开启写保护,然后才能对其进行按键设置时间;取时间量过快,时序错误,致使芯片工作不正常,延长两次操作芯片的间隔时间,重新对照芯片数据手册修改时序。
(3)温度环境无法达到50℃,不能报警,把上限值改成28℃实现报警功能。
(4)变量之间调用出现混乱,使用外部变量定义,理清思路。
4.4经验感想
(1)根据软件功能要求,将系统软件划分为若干个相对独立的部分,设计出合理的总体结构,使软件开发清晰、简洁和流程合理;
(2)培养良好的编程风格,如考虑结构化程序设计、实行模块化、子程序化,既便于调试、链接,又便于移植和修改;
(3)绘制程序流程图,再根据流程图写程序;
(4)合理分配系统资源;
(5)可以充分利用定时器的定时功能,让每到特定的时间去做执行一个任务,分时段执行若干个任务;
(6)为程序加入注释,提高可读性,便于以后修改移植复用;
(7)分模块写,利用文件之间的调用,不全写在main.c里。
5.参考文献
[1]张毅刚.MCS-51单片机应用设计.哈尔滨工业大学出版社,2003:
142-169
[2]谭浩强.C程序设计[M].二版.北京:
清华大学出版社,2004.
[3]单片机AT89C52中文数据手册.
[4]DS1302中文数据手册.
[5]DS18B20中文数据手册.
[6]LCD1602中文数据手册.
6.电路图