单片机电子时钟设计报告Word文档格式.docx
- 文档编号:18638991
- 上传时间:2022-12-30
- 格式:DOCX
- 页数:14
- 大小:1.38MB
单片机电子时钟设计报告Word文档格式.docx
《单片机电子时钟设计报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机电子时钟设计报告Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
STC89C52、1602液晶
ABSTRACT
ThisdesignusestheSTC89C52chipasthecore,withthenecessaryperipheralcircuits,designasimpleelectronicclock,ituses5VDCpowersupply.Intermsofhardware,inadditiontoCPU,use1602LCDdisplay.TheLCDscreeninitialization,throughprogramcontrol,togo.Throughthe1602liquidcrystalcanaccuratelydisplayyear,month,day,week,time,minutes,seconds.Thedynamicscanbutton,realizetocalibratetheyear,month,day,week,time,minutes,seconds.
Keywords:
STC89C52,1602
摘要2
Abstract2
1绪论4
2电子时钟概述4
3电子时钟设计方案4
3.1两种设计控制器方案的选择4
3.2两种设计控制器方案的选择5
4系统电路6
4.1LCD1602液晶时序图:
6
4.2硬件电路框图:
8
5程序设计流程图:
9
5.1电路原理图10
5.2电路PCB图11
5.3部分程序12
5.5存在问题14
5.6解决方法14
总结15
附录:
原件清单17
1绪论
单片机是一种集成电路芯片,它将各种功能集成到一块硅片上并且内含完善的微型计算机系统。
单片机自推出到现在已经发展了二十多年,应用领域有工业生产、通讯以及交通设备,还有办公自动化、PC机外围器件、汽车电子器件以及网络通讯等。
单片机的优点有集成度高、功能强、可靠性高、体积小、功耗低、使用方便、价格低廉等,所以本设计讨论的电子时钟系统就是利用单片机制成。
2电子时钟概述
单片机可以很容易实现芯片的智能化,所以在电子钟的基础上,人们可以根据自己的需要以及场合要求添加不同的附加功能。
需要整点报时可添加蜂鸣器,需要测量环境温度可以添加温度传感器,或者检测空气质量、空气湿度等,也可以设置定时闹铃功能甚至还可以添加USB端口读取其他设备数据。
3电子时钟设计方案
3.1两种设计控制器方案的选择
方案一:
采用专用的实时时钟芯片。
时下常用的时钟芯片有DS1302、SB2068、PCF8485等。
这些芯片可以完成秒计时工作,进而计出小时、年月日等。
方案二:
完全用软件方法实现计时,需要利用单片机STC89C52中断功能,具体操作是:
设置几个字节分别存放秒、分、时、日、周、月、年等信息。
利用定时器实现1秒定时中断,这便是秒信息,每一次中断都使秒字节加1;
软件设置当秒字节累计到60时,分字节加1,同时秒字节清零;
当分字节累计加到60时,时字节加1,同时分字节清零;
时字节累计加到24时,日字节加一,时字节清零。
以此类推,再实现周、月、年的计时。
这种设计方案的硬件电路更加简单,单片机自己即可完成计时,但缺点是每次执行main程序,定时器都需要重新赋值,每当单片机断电时,程序即停止,也就无法继续完成计时工作。
本次电子时钟的制作方案采用方案二,这有利于我们对51单片机内部中断定制器的运用。
3.2两种设计控制器方案的选择
采用LED数码管动态显示。
优点:
当显示位数较多时,采用动态显示方式比较节省I/O口,硬件电路也较静态显示简单,也比较省电;
缺点:
其稳定度不如静态显示方式
。
而且在显示位数较多时CPU要轮番扫描,占用CPU较多的时间。
采用LCD1602液晶显示模块。
液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。
1602液晶字符型液晶模块是一种用5x7点阵图形来显示字符的液晶显示器,根据显示的容量可以分为1行16个字、2行16个字、2行20个字等。
本次电子时钟的制作方案采用方案二,此模块的电路较为简单,操作比较简便,可以显示完整的时间。
4系统电路
硬件系统模块:
按键输入模块、单片机控制模块、LCD1602液晶显示模块。
5.1电路原理图
5.2电路PCB图
5.3部分程序
voidinit()
{
rw=0;
lcden=0;
write_com(0x38);
//显示模式
write_com(0x0c);
//显示光标
write_com(0x06);
;
//每写一个光标左移
write_com(0x01);
//清屏
write_com(0x80);
//设置指针
for(num=0;
num<
15;
num++)
{
write_date(table[num]);
delay(5);
}
write_com(0x80+0x40);
12;
num++)//整屏左移
write_date(table1[num]);
//每写一个字延时5毫秒
}
TMOD=0x01;
//定时器0的方式1
TH0=(65536-50000)/256;
//装初值,对256求模
TL0=(65536-50000)%256;
//装初值,对256求余
EA=1;
ET0=1;
TR0=1;
//开启定时器
}
voiddisplay_year(ucharadd,uintdate)
{
ucharqian,bai,shi,ge;
qian=date/1000;
bai=date/100%10;
shi=date/10%10;
//对十位求模
ge=date%10;
//对各位求余
write_com(0x80+add);
write_date(0x30+qian);
write_date(0x30+bai);
write_date(0x30+shi);
write_date(0x30+ge);
5.5存在问题
1、液晶屏出现闪动,时间视乎在走时,效果不明显。
2、液晶屏指无显示针指令。
3、用按键调时间时,光标显示在其他地方。
4、月、日、时、分、秒显示可以正常显示,但星期、年份无法正常显示。
5、写好后下载进单片机,发现都有显示,但时间不走时。
5.6解决方法
1、1602地址可能有重叠的数据。
可能在初始化时没有清屏。
2、指针地址语句没有写在需要显示数据的地方,一定要注意显示数据显示指令和显示指令的先后顺序。
3、在按键扫描中找到加调,或减调的程序。
在他们每个if语句结束的“}”后面加上相应的显示数据语句。
4、这里要明白对数据的处理,月、日、时、分、秒都是两位数,星期是三位数(英文前三个字母),年份是四位数。
所以我们可以分别对两位,三位,四位数的分离子函数。
声明含参的子函数,参数是你要命名的星期,年,月、日、等。
thousand=num/1000;
hundred=num/100%10;
ten=num/10%10;
one=num%10;
然后再写入相应的命令,在相应的地方写入数据,然后再写上相应的指针地址分别显示这四位数。
如果在程序中需要显示年份,直接调用四位常数分离的子函数即可。
同理,两位数也是一样的处理。
星期可以在之前定义好星期的数组名,如:
ucharcodeweek0[]="
Sun"
等。
然后在下面写上子函数如下图所视:
剩下的星期以此类推写入即可。
5、如果走时函数写在中断中,就把走时函数放到主函数中即可。
总结
1、这只我第二次接触单片机,通过编写程序来实现一个简单的电子时钟。
这次的学习我分为十二个过程,即十二节课。
具体过程为:
第一课:
看郭天祥视频,认识了解单片机STC89C52内部定时器中断操作,然后弄清1602液晶的使用,学会结合数据表读、写程序。
如:
液晶初始化、指针设置函数、数据写入函数、光标闪烁;
实现随意操作某个地址写入数据,实现整屏移动,清零等效果。
第二课:
定时器启动,十位个位拆分、时分秒走时、定时器中断;
实现第二行的时分秒走时。
第三课:
写入键盘扫描函数,即判断按键第一次按下→判断松手→定时器关闭→光标地址移动→到第四次按下时→光标停止闪动→定时器开启。
第四课:
(嵌套式)分别对时分秒写入加1指令,注意时序的先后。
即:
光标随功能键按下移动,通过判断功能键按下的次数,对相应的时分秒进行自加。
第五课:
(嵌套式)分别对时分秒写入减1指令,注意时序的先后。
光标随功能键按下移动,通过判断功能键按下的次数,对相应的时分秒进行自减(注意对所写程序加以注释,以便日后理清)。
第六课:
增加星期数组并且定义,在中断函数中调用星期函数、写入月份指令。
(闰年计算公式:
1.普通年能被4整除且不能被100整除的为闰年2.世纪年能被400整除的是闰年),注意时序的先后,留意写数据和写指针地址时要先判断,后执行(注意对所写程序加以注释,以便日后理清)。
第七课:
由于前一课星期指令不能执行,故重更改星期函数。
利用switch函数分别对周一至周日进行设置,在主函数中调用,满足条件的就执行,不合条件的break跳出。
第八课:
写入对“千百十个”四位数的才分,在中断函数中写入年地址指针并写入数据。
实现年份计时。
注意对数的拆分算法,对条件的判断。
第九课:
增加键盘扫描指令。
即对按下功能键的次数,光标随之移动到相应的星期、日、月、年的指针位置。
随后在键盘扫描中增加对星期的自加函数。
实现通过按键对星期进行增加功能。
第十课:
即在相应的位置写入对年份的增、减指令。
注意时序与位置的判断,再写入数据指令。
第十一课:
增加整点报时,闹铃设置功
通过这次的制作,让我收获颇丰。
对程序的书写于应用有有了新的认识。
原件清单
原件名称
规格参数
数量
发光LED灯
3mm
9
开关
轻触
5
单片机
STC89C52
1
DS1302
晶振
12Mhz
33.768Mhz
蜂鸣器
电平式
色环电阻
10K
1K
2
10
电解电容
16V10uf
瓷片电容
33p
4
蓝白电位器
拨动开关
三脚
排阻
473
二极管
IN4001
I/O座
40pin
8pin
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 电子 时钟 设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)