图5-1 复位模块 2.2.3 按钮模块
本模块采用四个按钮进行控制,通过串行口输入输出连接,当K1按键波动一次后,方可进行年、月、日、星期、时、分的改变,当循环满时,按下K0可实现对闹钟的改变。按键K2、K3分别实现加一减一的操作。
图6-1 按钮模块
2.3 系统软件设计 2.3.1 主程序设计
图7-1 主程序流程图
图8-1 LCD显示程序和初始化子程序流程图
三、仿真和分析
将程序下载到单片机开发板上,LCD12864显示如下图,第一行为汉字“数字电子钟”,第二行为时分秒,第三行为年月日以及星期,第四行为闹钟,通过按键可实现时间的调整,也可实现整点报时和闹钟。符合设计要求。
图9-1 实物仿真图
程序:
#include
#include
#define uchar unsigned char #define uint unsigned int
sbit rs=P1^0;//12864引脚定义 sbit rw=P1^1; sbit en=P1^2; sbit PSB=P1^3;
sbit beep=P3^4;//蜂鸣器引脚定义 sbit k1=P3^5;//按键定义 sbit k2=P3^6; sbit k3=P3^7; sbit k0=P0^0;
uint t,k,kk;
uchar shi,fen,miao,nian=13,yue,ri,zhou,shi0,fen0,miao0; uchar code dis1[]={0xca,0xfd,\字电子钟\显示字组 uchar code dis2[]={\时00分00秒%uchar code dis3[]={\年00月00日 1%uchar code dis4[]={\闹钟00时00分00秒\
void delayms(uint xms)//延时xms函数
{ }
void warn(uchar xn)//“嘟”xn次函数 {
uint nn;
for(nn=0;nn uint n; for(n=2000;n>0;n--) { } for(n=1000;n>0;n--) { beep=1; delayms(3); beep=1; delayms(1); beep=0; delayms(2); uchar i,j; for(i=xms;i>0;i--) for(j=110;j>0;j--); } } void warn3s()//3s报警函数 { } void write_com(uchar com)//12864写指令函数 { } rs=0; rw=0; en=0; P2=com; delayms(5); en=1; delayms(5); en=0; uint n; for(n=3000;n>0;n--) { } beep=0; delayms(2); beep=1; delayms(1); 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库LCD12864液晶显示电子钟设计(2)在线全文阅读。
相关推荐: