智能电子钟(LCD显示)

上传人:ca****in 文档编号:192764756 上传时间:2023-03-07 格式:DOCX 页数:10 大小:83.98KB
返回 下载 相关 举报
智能电子钟(LCD显示)_第1页
第1页 / 共10页
智能电子钟(LCD显示)_第2页
第2页 / 共10页
智能电子钟(LCD显示)_第3页
第3页 / 共10页
点击查看更多>>
资源描述
注:本程序并没有显示星期,如有需要,可自行添加。/*实验名称:智能电子钟(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 K2选择秒分时日月星期年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) /如果没有键按下,就显示时间 /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)&(SetPlace=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;/打开外部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 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=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/-宏定义关键词-/#ifndef uint#define uint unsigned int#endif#ifndef uchar#define uchar unsigned char#endif/-定义1302的IO口-/sbit IO=P27;sbit CE=P25;sbit SCLK=P26;/-声明全局函数-/void ds1302write(uchar addr,uchar dat);uchar ds1302read(uchar addr);void ds1302Init();void ds1302readtime();/-加入全局变量-/extern uchar TIME7;#endif#includeds1302.huchar READ_ADDR=0x81, 0x83, 0x85, 0x87, 0x89, 0x8b, 0x8d;/DS1302的读取地址,与下面的数组时间对应uchar WRITE_ADDR=0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c;/DS1302的写入地址,与下面的数组时间对应uchar TIME7 = 0x00,0x00,0x12,0x01,0x01,0x02,0x14;/-TIME7数组存储分别是 秒 分 时 日 月 星期 年-/*函数功能:向ds1302写数据*/void ds1302write(uchar addr,uchar dat)uchar n;CE=0;SCLK=0;/先将SCLK置低电平_nop_();CE=1;/然后将CE置高电平_nop_();for(n=0;n=1;SCLK=1; /上升沿读取数据_nop_();SCLK=0; /下降沿放置数据_nop_();for(n=0;n=1;SCLK=1;_nop_();SCLK=0;_nop_();CE=0; /数据传送结束_nop_();/*函数功能:从ds1302读数据*/uchar ds1302read(uchar addr)uchar n,dat,dat1;CE=0;SCLK=0;/先将SCLK置低电平_nop_();CE=1;/然后将CE置高电平_nop_();for(n=0;n=1;SCLK=1;_nop_();SCLK=0;_nop_();for(n=0;n1)|(dat17);SCLK=1;_nop_();SCLK=0;_nop_();CE=0;_nop_(); /以下为DS1302复位的稳定时间,必须的SCLK=1;_nop_();IO=0;_nop_();IO=1;_nop_();return dat;/*函数功能:初始化DS1302*/void ds1302Init()uchar n;ds1302write(0x8e,0x00);/关闭写保护for(n=0;n7;n+)ds1302write(WRITE_ADDRn,TIMEn);ds1302write(0x8e,0x80);/打开写保护/*函数功能:读取时钟信息*/void ds1302readtime()uchar n;for(n=0;n7;n+)TIMEn=ds1302read(READ_ADDRn);/将读取到的时间存入TIME7数组里以下为仿真图片,K4键没有设置功能
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!