单片机控制LCD语音时钟毕业设计.docx
- 文档编号:3428306
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:27
- 大小:206.58KB
单片机控制LCD语音时钟毕业设计.docx
《单片机控制LCD语音时钟毕业设计.docx》由会员分享,可在线阅读,更多相关《单片机控制LCD语音时钟毕业设计.docx(27页珍藏版)》请在冰豆网上搜索。
单片机控制LCD语音时钟毕业设计
毕业设计报告书
题目:
单片机控制LCD语音时钟
专业机电一体化
班级
姓名
指导教师
目录
第1章绪论....................................................3
1.1STC89C52RC单片机概述...............................................3
1.2LCD概述............................................................3
1.3DS1302简介.........................................................4
1.4本设计任务.........................................................4
第2章总体方案论证与设计......................................5
2.1显示部分...........................................................5
2.2数字时钟...........................................................5
2.3温度采集...........................................................6
2.4总体硬件组成框图...................................................6
第3章系统硬件设计............................................7
3.1STC89C52RC单片机最小系统...........................................7
3.2时钟模块...........................................................7
3.3LCD液晶显示模块...................................................8
3.4温度测量模块.......................................................9
3.5键盘模块...........................................................9
第4章系统的软件设计.........................................10
4.1主程序设计........................................................10
4.2时间设定程序流程..................................................11
4.3温度测量流程图..............................................11
第5章系统调试与测试结果分析.................................12
5.1使用的仪器仪表....................................................12
5.2系统调试..........................................................12
5.3测试结果..........................................................12
结论..........................................................13
参考文献......................................................14
附录1程序....................................................15
附录2仿真效果图..............................................25
致谢………………………………………………………………………26
第1章绪论
近年来随着以计算机为轴心的各种各样信息处理装置的诞生,为适应这种新形势,信息家电,网络终端等用途的LCD市场也将迅速扩大,而且如今LCD发展方向不仅在于大屏幕,而且在中小屏幕方面,例如汽车导航系统,摄像机,数字式照相机,便携式电视等有着进一步的发展。
LCD作为一种新的材料,LCD的设计制造技术与应用水平上都得到了迅速的提高,生产也得到了迅速的发展,并逐步形成产业,成为光电子行业的新兴产业领域。
然而随着人们生活节奏的加快,时间对人们的重要性也越来越重要,因此,拥有一个不错的时钟对人们的生活将带来很大的方便。
但随着时间的推移,科学技术的不断发展,人们对时间计量的精度要求越来越高,应用越来越广,这就要求人们不断设计出新型时钟。
1.1STC89C52RC单片机概述
STC89C52RC单片机采用高性能的静态80C51设计,并采用先进工艺制造,还带有非易失去性FLASH程序储器。
它是一种高性能、低功耗的8位CMOS微处理芯片,市场上应用最多。
其主要性能如下:
·8KBFlashROM,可以擦除1000次以上,数据保存10年。
·256字节内部RAM。
·电源控制模式:
-时钟可停止和恢复;
-空闲模式;
-掉电模式。
·6个中断源。
·4个中断优先级。
·4个8位I/O口。
·全双工增强型UART。
·3个16位定时器/计数器:
T0、T1、T2。
·全静态工作方式:
0-24MHz
1.2LCD概述
LCD液晶显示器是LiquidCrystalDisplay的简称,LCD的构造是在两片平行的玻璃当中放置液态的晶体,两片玻璃中间有许多垂直和水平的细小电线,透过通电与否来控制杆状水晶分子改变方向,将光线折射出来产生画面。
LCD1602属于字符型液晶,具有体积小,功耗低,可靠性高,显示内容丰富等特点,能够同时显示16×2即32个字符。
有8位数据总线D0~D7和RS,R/W,EN三个控制端口,工作电压为+5V,并且具有字符对比度调节和背光功能,可以与8位CPU相联,指令功能强可以组合成各种输入、显示、移位方式以满足不同要求。
1.3DS1302简介
DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟芯片,它可以对年、月、日、周日、时、分、秒进行计时,且具有闰年补偿功能,工作电压宽达2.5~5.5V。
时钟可工作在24小时格式或12小时(AM/PM)格式。
DS1302与单片机的接口使用同步串行通信,仅用3条线与之相连接。
可采用一次传送一个字节或突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。
DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。
1.4本设计任务
本系统以单片机芯片为核心部件,利用合理的程序控制,在液晶显示屏上实现各个功能并且显示等功能,使其显示直观、功能多样、电路简洁等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。
第2章总体方案论证与设计
采用STC89C52RC单片机作为本系统的控制模块。
单片机可把由DS1302、DS18B20、LCD1602中的数据利用软件来进行处理,从而把数据传输到显示模块,实现温度和日历的显示。
以LCD液晶显示器为显示模块,把单片机传来的数据显示出来,并且显示多样化。
在显示电路中,主要靠按键来实现各种显示要求的选择与切换。
下面对各模块的设计逐一进行论证比较。
2.1显示部分
方案一:
采用LCD显示。
LCD液晶显示具有丰富多样性、灵活性、电路简单、易于控制而且功耗小等优点,对于信息量多的系统,是比较适合的。
方案二:
采用LED显示,分静态显示和动态显示。
对于静态显示方式,所需的译码驱动装置很多,引线多而复杂,且可靠性也较低。
对于动态显示方式,虽可以避免静态显示的问题,但是如果设计上处理不当,易造成亮度低,有闪烁等问题。
鉴于上述原因,本设计采用方案一。
2.2数字时钟
方案一:
方案采用Dallas公司的专用时钟芯片DS1302。
该芯片内部采用石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能,因此,可直接对其以用于显示或设置,使得软件编程相对简单。
为保证时钟在电网电压不足或突然掉电等突发情况下仍能正常工作,芯片内部包含锂电池。
当电网电压不足或突然掉电时,可使系统自动转换到内部锂电池供电系统。
而且即使系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供正确的时间。
方案二:
方案完全用软件实现数字时钟。
原理为:
在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。
利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将时字节清零。
该方案具有硬件电路简单的特点,但当单片机不上电,程序将不执行。
而且由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。
基于时钟芯片的上述优点,本设计采用方案一完成数字时钟的功能。
2.3温度采集
方案一:
采用温度传感器DS18B20。
DS18B20可以满足从-55摄氏度到+125摄氏度测量范围,测量精度高,增值量为0.5摄氏度,在一秒内把温度转化成数字,测得的温度值的存储在两个八位的RAM中,单片机直接从中读出数据转换成十进制就是温度,使用方便。
方案二:
采用热敏电阻,可满足40摄氏度至90摄氏度测量范围,但热敏电阻精度重复性、可靠性较差,对于检测小于1摄氏度的信号是不适用的。
基于DS18B20的以上优点,本设计决定采用方案一来测量温度。
2.4总体硬件组成框图
图2-1总体硬件组成框图
第3章系统硬件设计
3.1STC89C52RC单片机最小系统
最小系统包括晶体振荡电路、复位开关和电源部分。
图3-1为STC89C52RC单片机的最小系统。
图3-1最小系统电路
3.2时钟模块
时钟模块采用DS1302芯片,DS1302是DALLAS公司推出的涓流充电时钟,芯片内含有一个实时时钟/日历和31字节静态RAM,通过简单的串行接口与单片机进行通信,实时时钟/日历电路提供秒、分、时、日、日期、月、年的信息,每月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM指示决定采用24或12小时格式。
DS1302与单片机之间采用同步串行的方式进行通信,仅需用到三个口线:
RST复位、I/O数据线、SCLK串行时钟。
时钟/RAM的读/写数据以一个字节或多达31个字节的字符组方式通信。
DS1302工作时功耗很低,保持数据和时钟信息时功率小于1mW,其接线电路如图3-2。
图3-2时钟电路
3.3LCD液晶显示模块
LCD液晶显示模块采用LCD1602型号,具有很低的功耗,正常工作时电流仅2.0mA/5.0V。
LCD1602分两行显示,每行可显示多达16个字符。
LCD1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,通过内部指令可实现对其显示多样的控制,并且还能利用空余的空间自定义字符。
其接线如图3-3。
图3-3LCD显示电路
3.4温度测量模块
温度测量传感器采用DALLAS公司DS18B20的单总线数字化温度传感器,测温范围为-55℃~125℃,可编程为9位~12位A/D转换精度,测温分辨率达到0.0625℃,采用寄生电源工作方式。
接口电路如图3-4所示。
图3-4DS18B20测量电路
3.5键盘模块
它是整个系统中最简单的部分,根据功能要求,本系统共需四个按键:
功能移位键、功能加键、功能减键、立刻跳出调整模式键,采用独立式按键。
第4章系统的软件设计
4.1主程序设计
程序开始运行时先初始化时钟控制器件DS1302、温度采集器件DS18B20和显示器件LCD1602,然后打开LCD1602,再读取温度、时间,把读取的数据送入LCD1602进行显示,期间可以对时间进行调整。
主程序流程如图4-1所示。
图4-1主程序流程图
4.2时间设定程序流程
程序开始后初始化DS1302,然后从DS1302中读出数据,放入RAM中,然后调用显示子程序,使LCD1602相应的模块显示温度,设置完成后把数据重新送入RAM中,再由LCD1602相应模块显示,整个过程由此反复进行。
图4-2显示时间子程序流程
4.3温度测量流程图
图4-3温度测量流程图
第5章系统调试与测试结果分析
5.1使用的仪器仪表
数字万用表、秒表、电源、温度表
5.2系统调试
根据系统设计方案,本系统的调试共分为三大部分:
硬件调试,软件调试和软硬件联调。
由于在系统设计中采用模块设计法,所以方便对各电路模块功能进行逐级测试:
时钟模块的调试,LCD液晶显示模块的调试等,最后将各模块组合后进行整体测试。
5.2.1硬件调试
对各个模块的功能进行调试,主要调试各模块能否实现指定的功能。
5.2.2软件调试
软件调试采用单片机仿真器WAVE6000L及微机,将编好的程序进行调试,主要是检查语法错误。
5.2.3硬件软件联调
将调试好的硬件和软件进行联调,主要调试系统的实现功能。
5.3测试结果
此次系统设计结果较好,能动态显示实时时钟的时、分、秒,数据显示,能够实现时钟的定时,并且具有调整日期与时间的功能。
结论
目前,市面上已有现成的数字钟集成电路芯片出售,价格便宜、使用也方便,但鉴于数字钟电路的基本组成包含了数字电路的主要组成部分,因此进行数字钟的设计是必要的,以单片机为控制核心,设计制作一个符合指标要求的多功能数字钟,有着非常现实的意义。
本设计的液晶显示电子钟充分利用了单片机的软、硬件资源,本着简单实用的设计原则,不仅努力做到结构简单使之易于成本控制,而且在人机交互方面也力求界面更加友好。
单片机控制的LCD时钟,它具有编程灵活,便于电子钟功能的扩充,精度高等特点,同时可以用该电子钟发出各种控制信号。
本设计采用STC89C52RC单片机作为本系统的控制模块。
单片机可把由DS1302、AT24C02中的数据利用软件来进行处理,从而把数据传输到显示模块,实现日历和闹铃的显示。
参考文献
[1]求是科技.单片机典型模块设计实例导航[M].北京:
人民邮电出版社.2005.8
[2]徐淑华,程退安等.单片微型机原理及应用[M].哈尔滨:
哈尔滨工业大学出版社.2005.1
[3]孙余凯.精选实用电子电路260例[M].北京:
电子工业出版社.2007.6
[4]殷春浩,崔亦飞.电磁测量原理及应用[M].徐州:
中国矿业大学出版社.2003.7
[5]刘润华,刘立山.模拟电子技术[M].山东:
石油大学出版社.2003.
[6]胡烨,姚鹏翼,陈明.Protel99SE原理图与PCB设计教程[M].机械工业出版社.2005:
23-99
附录1程序
#include
#include
//#include"LCD1602.h"
//#include"DS1302.h"
#defineuintunsignedint
#defineucharunsignedchar
sbitDS1302_CLK=P1^7;//实时时钟时钟线引脚
sbitDS1302_IO=P1^6;//实时时钟数据线引脚
sbitDS1302_RST=P1^5;//实时时钟复位线引脚
sbitwireless_1=P3^0;
sbitwireless_2=P3^1;
sbitwireless_3=P3^2;
sbitwireless_4=P3^3;
sbitACC0=ACC^0;
sbitACC7=ACC^7;
charhide_sec,hide_min,hide_hour,hide_day,hide_week,hide_month,hide_year;//秒,分,时到日,月,年位闪的计数
sbitSet=P2^0;//模式切换键
sbitUp=P2^1;//加法按钮
sbitDown=P2^2;//减法按钮
sbitout=P2^3;//立刻跳出调整模式按钮
sbitDQ=P1^0;//温度传送数据IO口
chardone,count,temp,flag,up_flag,down_flag;
uchartemp_value;//温度值
ucharTempBuffer[5],week_value[2];
voidshow_time();//液晶显示程序
/***********液晶显示部分子程序****************/
//PortDefinitions
sbitLcdRs=P2^5;
sbitLcdRw=P2^6;
sbitLcdEn=P2^7;
sfrDBPort=0x80;//P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口
//内部等待函数**************************************************************************
unsignedcharLCD_Wait(void)
{
LcdRs=0;
LcdRw=1;_nop_();
LcdEn=1;_nop_();
LcdEn=0;
returnDBPort;
}
//向LCD写入命令或数据
#defineLCD_COMMAND0//Command
#defineLCD_DATA1//Data
#defineLCD_CLEAR_SCREEN0x01//清屏
#defineLCD_HOMING0x02//光标返回原点
voidLCD_Write(bitstyle,unsignedcharinput)
{
LcdEn=0;
LcdRs=style;
LcdRw=0;_nop_();
DBPort=input;_nop_();//注意顺序
LcdEn=1;_nop_();//注意顺序
LcdEn=0;_nop_();
LCD_Wait();
}
//设置显示模式
#defineLCD_SHOW0x04//显示开
#defineLCD_HIDE0x00//显示关
#defineLCD_CURSOR0x02//显示光标
#defineLCD_NO_CURSOR0x00//无光标
#defineLCD_FLASH0x01//光标闪动
#defineLCD_NO_FLASH0x00//光标不闪动
voidLCD_SetDisplay(unsignedcharDisplayMode)
{
LCD_Write(LCD_COMMAND,0x08|DisplayMode);
}
//设置输入模式
#defineLCD_AC_UP0x02
#defineLCD_AC_DOWN0x00//default
#defineLCD_MOVE0x01//画面可平移
#defineLCD_NO_MOVE0x00//default
voidLCD_SetInput(unsignedcharInputMode)
{
LCD_Write(LCD_COMMAND,0x04|InputMode);
}
//初始化LCD
voidLCD_Initial()
{
LcdEn=0;
LCD_Write(LCD_COMMAND,0x38);//8位数据端口,2行显示,5*7点阵
LCD_Write(LCD_COMMAND,0x38);
LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);//开启显示,无光标
LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);//清屏
LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);//AC递增,画面不动
}
//液晶字符输入的位置
voidGotoXY(unsignedcharx,unsignedchary)
{
if(y==0)
LCD_Write(LCD_COMMAND,0x80|x);
if(y==1)
LCD_Write(LCD_COMMAND,0x80|(x-0x40));
}
//将字符输出到液晶显示
voidPrint(unsignedchar*str)
{
while(*str!
='\0')
{
LCD_Write(LCD_DATA,*str);
str++;
}
}
/***********DS1302时钟部分子程序******************/
typedefstruct__SYSTEMTIME__
{
unsignedcharSecond;
unsignedcharMinute;
unsignedcharHour;
unsignedcharWeek;
unsignedcharDay;
unsignedcharMonth;
unsignedcharYear;
unsignedcharDateString[11];
unsignedcharTimeString[9];
}SYSTEMTIME;//定义的时间类型
SYSTEMTIMECurrentTime;
#defineAM(X)X
#definePM(X)(X+12)//转成24小时制
#defineDS1302_SECOND0x80//时钟芯片的寄存器位置,存放时间
#defineDS1302_MINUTE0x82
#defineDS1302_HOUR0x84
#defineDS1302_WEEK0x8A
#defineDS1302_DAY0x86
#defineDS1302_MONTH0x88
#defineDS1302_YEAR0x8C
voidDS1302InputByte(unsignedchard)//实时时钟写入一字节(内部函数)
{
unsignedchari;
ACC=d;
for(i=8;i>0;i--)
{
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 控制 LCD 语音 时钟 毕业设计