1、 单片机原理及应用 课程设计电子时钟摘摘 要要v本课题通过MCS-51单片机来设计电子时钟,采用C语言进行编程,可以实现以下一些功能:小时,分,秒的时间显示功能。还可以进行时和分的校对,本文主要介绍用单片机内部的定时/计数器来实现电子时钟的方法以及借助键盘直接控制整时的调整,本设计由单片机AT89S51芯片,1602液晶和按键为核心,辅以必要的电路,构成了一个单片机电子时钟。1系统设计方案系统设计方案v1.1目的目的 1.利用单片机和1602液晶来显示24小时制、60分制、60秒制,年、月、日显示。2.具有显示和手动校对功能,24小时制、60分制、60秒制,年、月、日显示和手动校正功能;3.具
2、有闹铃功能,当达到1分钟时蜂鸣器报时;1.2思路思路 1.2.1 计时单元有单片机内部结构的定时器/计数器来实现。1.2.2 时间显示采用1602液晶。1.2.3 通过按键控制时、分、秒的加减。程序v#includev#define uchar unsigned char v#define uint unsigned intvsbit lcdrs=P20;vsbit lcswr=P21;vsbit lcden=P22;vsbit s1=P32;vsbit s2=P33;vsbit s3=P34;vsbit beep=P37;vuchar count,s1num;vchar miao,shi,f
3、en;vuchar code table=2019-05-24 Thu;vuchar code table1=00:00:00;vvoid delay(uint z)vvuint x,y;vfor(x=z;x0;x-)vfor(y=110;y0;y-);vvvoid di()vvuchar b;vfor(b=255;b0;b-)vvbeep=!beep;vdelay(1);vvvvoid write_com(uchar com)vvlcdrs=0;vlcswr=0;vP0=com;vdelay(5);vlcden=1;vdelay(5);vlcden=0;vvvoid write_date(u
4、char date)vvlcdrs=1;vlcden=0;vP0=date;vdelay(5);vlcden=1;vdelay(5);vlcden=0;vvvoid init()vvuchar num;v lcden=0;vwrite_com(0 x38);vwrite_com(0 x0c);vwrite_com(0 x06);vwrite_com(0 x01);vwrite_com(0 x80);vfor(num=0;num15;num+vvwrite_date(tablenum);vdelay(5);vvwrite_com(0 x80+0 x40);vfor(num=0;num12;num
5、+)vvwrite_date(table1num);vdelay(5);vvTMOD=0 x01;vTH0=(65536-50000)/256;vTL0=(65536-50000)%256;vEA=1;vET0=1;vTR0=1;vvvoid write_sfm(uchar add,uchar date)vvuchar shi,ge;vshi=date/10;vge=date%10;vwrite_com(0 x80+0 x40+add);vwrite_date(0 x30+shi);vwrite_date(0 x30+ge);vvvoid keyscan()vvif(s1=0)vvdelay(
6、5);vif(s1=0)vs1num+;vwhile(!s1);vif(s1num=1)vvTR0=0;vwrite_com(0 x80+0 x40+10);vwrite_com(0 x0f);vvvif(s1num=2)vvwrite_com(0 x80+0 x40+7);vvif(s1num=3)vvwrite_com(0 x80+0 x40+4);vvif(s1num=4)vvs1num=0;vwrite_com(0 x0c);vTR0=1;vvvif(s1num!=0)vvif(s2=0)vvdelay(5);vif(s2=0)vvwhile(!s2);vif(s1num=1)vvmi
7、ao+;vif(miao=60)vmiao=0;vwrite_sfm(10,miao);vwrite_com(0 x80+0 x40+10);vvif(s1num=2)vvfen+;vif(fen=60)vfen=0;vwrite_sfm(7,fen);vwrite_com(0 x80+0 x40+7);vvif(s1num=3)vv shi+;v if(shi=24)v shi=0;v write_sfm(4,shi);v write_com(0 x80+0 x40+4);vvvv if(s3=0)vvdelay(5);vif(s3=0vvwhile(!s3);vif(s1num=1)vmi
8、ao-;vif(miao=-1)vmiao=59;vwrite_sfm(10,miao);vwrite_com(0 x80+0 x40+10);vvif(s1num=2)v vfen-;vif(fen=-1)vfen=59;vwrite_sfm(7,fen);vwrite_com(0 x80+0 x40+7);vvif(s1num=3)vv shi-;v if(shi=-1)v shi=23;v write_sfm(4,shi);v write_com(0 x80+0 x40+4);vvvvvvoid main()vvinit();vwhile(1)vvkeyscan();vvvvoid ti
9、mer0()interrupt 1vvTH0=(65536-50000)/256;vTL0=(65536-50000)%256;vcount+;vif(count=20)vvcount=0;vmiao+;vif(miao=60)vdi();vmiao=0;vfen+;vif(fen=60)vvfen=0;vshi+;vif(shi=24)vvshi=0;vvwrite_sfm(4,shi);vvwrite_sfm(7,fen);vvwrite_sfm(10,miao);vv2 硬件部分硬件部分 v2.1框图框图 2.2 1602液晶显示液晶显示 v2.2.1简介简介:工业字符型液晶,能够同时显
10、示16x02即32个字符。(16列2行)注:为了表示的方便,后文皆以1表示高电平,0表示低电平。2.2.2数据指针设置:数据指针设置:v数据首地址为80H,所以数据地址为80H+地址码(0-27H,40-67H)2.2.3其他设置:其他设置:v01H(显示清屏,数据指针=0,所有显示=0);02H(显示回车,数据指针=0)。2.3 按键按键v键盘是单片机应用系统中最常用的输入设备,在单片机应用系统中,操作人员一般都是通过键盘向单片机系统输入指令、地址和数据,实现简单的人机通信。键盘实际上是一组按键开关的集合,平时按键开关总是处于断开状态,当按下键时它才闭合。键盘的结构形式一般有两种:独立式键盘
11、和矩阵式键盘。矩阵式键盘的工作方式有3种:查询工作方式、定时扫描工作方式和中断工作方式。3软件部分软件部分v3.1主程序主程序主程序执行流程如下图,主程序先对显示单元和定时器/计数器初始化,然后重复调用液晶显示模块和按键处理模块,当有键按下,则转入相应的功能程序。3.2定时器定时器/计数器计数器T0中断服务中断服务v程序流程图(下),定时器/计数器T0用于时间计时。选择方式1,重复定时,定时时间设为50ms,定时时间到则中断,在中断服务程序中用一个计数器对50ms计数,计20次则对秒单元加1,秒单元加到60则对分单元加1,同时秒单元清0;分单元加到60则对时单元加1,同时分单元清0;时单元加到24则对时单元清04调试调试v4.1过程过程 应用编程软件Keil软件进行编程,编程完成后进行编译,编译没有错误的情况下,用AVR_fighter下载到开发板进行调试。液晶屏会显示年、月、日,时、分、秒。通过按键来调节时、分、秒的加减。当秒加到1分钟的时候蜂鸣器报时。5总结总结v这次课程设计让我把理论设计和工程实践相结合、巩固基础知识与培养创新意识相结合等方面全面的培养学生的全面素质。这些在我今后的学习和工作当中都会有很大的帮助。