智能电子钟(LCD显示).docx

上传人:pu****.1 文档编号:544544775 上传时间:2023-07-08 格式:DOCX 页数:10 大小:83.98KB
返回 下载 相关 举报
智能电子钟(LCD显示).docx_第1页
第1页 / 共10页
智能电子钟(LCD显示).docx_第2页
第2页 / 共10页
智能电子钟(LCD显示).docx_第3页
第3页 / 共10页
智能电子钟(LCD显示).docx_第4页
第4页 / 共10页
智能电子钟(LCD显示).docx_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《智能电子钟(LCD显示).docx》由会员分享,可在线阅读,更多相关《智能电子钟(LCD显示).docx(10页珍藏版)》请在金锄头文库上搜索。

1、注:本程序并没有显示星期,如有需要,可自行添加。/*实验名称:智能电子钟(LCD显示)*实验效果:1602显示时钟,按K1进入时间设置,K2分别选择秒* 分时日月星期年,按K3时间加一/*/#include#includeds1302.h#includelcd1602.h#define uint unsigned int#define uchar unsigned char/*声明:本实验所有IO口只与“1302时钟按键设置”仿真图配套* */*/sbit K1=P32; /接的是INT0 K1时钟设置 (按一下开始调节时间,再按一下退出调节时间)sbit K2=P33; /接的是INT1 K

2、2选择秒分时日月星期年sbit K3=P34; /接的是TO K3加时间void Cursor(); /设置时光标闪烁void Delay10ms();void Int0Configuration();/外部中断0设置void LcdDisplay(); /显示函数uchar SetState,SetPlace; /设置状态、光标位置void main() /主函数uchar i;Int0Configuration(); /外部中断0设置lcd1602Init(); /1602初始化ds1302Init(); /1302初始化while(1)if(SetState=0) /如果没有键按下,就显

3、示时间 /SetState的高低由中断控制,按下K1则为1,再次按下则为0ds1302readtime();elseif(K2=0) /消除抖动Delay10ms();if(K2=0) /如果K2被按下,则光标移动SetPlace+;if(SetPlace=7)/年月日星期时分秒 共7个时间SetPlace=0;while(i9) /换成BCD码TIMESetPlace=TIMESetPlace+6;if(TIMESetPlace0x60)&(SetPlace0x24)&(SetPlace=2) /小时只能到23TIMESetPlace=0;if(TIMESetPlace0x32)&(SetP

4、lace=3) /日只能到31TIMESetPlace=0;if(TIMESetPlace0x13)&(SetPlace=4) /月只能到12TIMESetPlace=0;if(TIMESetPlace0x7)&(SetPlace=5) /周只能到7TIMESetPlace=0;if(TIMESetPlace0x99)&(SetPlace=6) /年只能到2099TIMESetPlace=0;while(i0;c-) for(b=38;b0;b-) for(a=130;a0;a-);void Int0Configuration() /设置外部中断0IT0=1;/跳变沿触发EX0=1;/打开外部

5、0中断EA=1; /打开总中断void Int0() interrupt 0 /如果按下K1就进入中断Delay10ms();if(K1=0)/writecom(0x80+0x40+12);/writecom(0x0f);SetState=SetState;SetPlace=0;ds1302Init();/调过时间后再按下K1,调好的时间就被写进DS1302-分割线-#ifndef _LCD1602_H_#define _LCD1602_H_/-包含头文件-/#include/-宏定义关键词-/#ifndef uint#define uint unsigned int#endif#ifndef

6、 uchar#define uchar unsigned char#endif/-定义1602的IO口-/sbit E=P22;sbit RW=P21;sbit RS=P20;/-声明全局函数-/void delay1ms(uint z);void writecom(uchar com);void writedata(uchar dat);void lcd1602Init();#endif#includelcd1602.h/*函数功能:延时函数,延时1ms*/void delay1ms(uint c)uchar a,b;for (; c0; c-)for (b=199;b0;b-) for(a

7、=1;a0;a-); /*函数功能:向1602写入一个字节的指令*/void writecom(uchar com)E=0;/使能端口RW=0;/低电平选择写入RS=0;/低电平选择写入指令P0=com; /放入指令delay1ms(1); /等待数据稳定E=1; /高电平期间写入delay1ms(5); /保持时间E=0; /变低/*函数功能:向1602写入一个字节的数据*/void writedata(uchar dat)E=0;RW=0;RS=1;/高电平选择写入数据P0=dat;delay1ms(1);E=1;delay1ms(5);E=0;/*函数功能:初始化LCD1602*/void lcd1602Init()writecom(0x38); /开显示writecom(0x0c); /开显示,不显示光标writecom(0x06); /写一个字符指针加1writecom(0x01); /清屏writecom(0x80); /设置数据指针起点 -分割线-#ifndef _DS1302_H_#define _DS1302_H_/-包含头文件-/#include#include/-宏

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号