欢迎来到天天文库
浏览记录
ID:61432141
大小:77.79 KB
页数:10页
时间:2021-01-30
《智能电子钟(LCD显示).docx》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、注:本程序并没有显示星期,如有需要,可自行添加。/*******************************************************实验名称:智能电子钟(LCD显示)*实验效果:1602显示时钟,按K1进入时间设置,K2分别选择秒*分时日月星期年,按K3时间加一/******************************************************/#include#include"ds1302.h"#include"lcd1602.h"#defineuintunsignedint#defineuc
2、harunsignedchar/********************************************************声明:本实验所有IO口只与“1302时钟按键设置”仿真图配套**/******************************************************/sbitK1=P3^2;//接的是INT0K1时钟设置(按一下开始调节时间,再按一下退出调节时间)sbitK2=P3^3;//接的是INT1K2选择秒分时日月星期年sbitK3=P3^4;//接的是TOK3加时间voidCursor();//设置时光标
3、闪烁voidDelay10ms();voidInt0Configuration();//外部中断0设置voidLcdDisplay();//显示函数ucharSetState,SetPlace;//设置状态、光标位置voidmain()//主函数{uchari;Int0Configuration();//外部中断0设置lcd1602Init();//1602初始化ds1302Init();//1302初始化while(1){if(SetState==0)//如果没有键按下,就显示时间{//SetState的高低由中断控制,按下K1则为1,再次按下则为0ds1302r
4、eadtime();}else{if(K2==0)//消除抖动{Delay10ms();if(K2==0)//如果K2被按下,则光标移动{SetPlace++;if(SetPlace>=7)//年月日星期时分秒共7个时间SetPlace=0;}while((i<50)&&(K2==0))//松手检测{Delay10ms();i++;}i=0;}if(K3==0)//如果K3被按下,则时间每次加1{Delay10ms();//消除抖动if(K3==0){TIME[SetPlace]++;if((TIME[SetPlace]&0x0f)>9)//换成BCD码{TIME[
5、SetPlace]=TIME[SetPlace]+6;}if((TIME[SetPlace]>0x60)&&(SetPlace<2))//分秒只能到59{TIME[SetPlace]=0;}if((TIME[SetPlace]>0x24)&&(SetPlace==2))//小时只能到23{TIME[SetPlace]=0;}if((TIME[SetPlace]>0x32)&&(SetPlace==3))//日只能到31{TIME[SetPlace]=0;}if((TIME[SetPlace]>0x13)&&(SetPlace==4))//月只能到12{TIME[Se
6、tPlace]=0;}if((TIME[SetPlace]>0x7)&&(SetPlace==5))//周只能到7{TIME[SetPlace]=0;}if((TIME[SetPlace]>0x99)&&(SetPlace==6))//年只能到2099{TIME[SetPlace]=0;}}while((i<50)&&(K3==0))//松手检测{Delay10ms();i++;}i=0;}}LcdDisplay();//Lcd1602显示时间}}voidLcdDisplay()//显示函数{writecom(0x80+0x40);writedata('T');wr
7、itedata('I');writedata('M');writedata('E');writedata(':');writedata('0'+TIME[2]/16);//时writedata('0'+(TIME[2]&0x0f));writedata(':');writedata('0'+TIME[1]/16);//分writedata('0'+(TIME[1]&0x0f));writedata(':');writedata('0'+TIME[0]/16);//秒writedata('0'+(TIME[0]&0x0f));writecom(0x80);writ
此文档下载收益归作者所有