




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、#include<reg52.h>#include<intrins.h>/52库文件/1us延时库文件这是一个基于51, 24C02的时钟教程,程序已经在 protues中仿真,仿真图在下方! ! 这个程序由1602显示,通过开发板测试了,还有结合了24c02pdf, 24c02时序图,有了这些24c02时序序就没问题了!下面的有详细的程序解说。主要的还有就是些按键程序,都比较简单的血顶猎鹰 2011-4-13LS1P23 J -SOUNDER程序如下,有注释002.c#define uint unsigned int宏定义#define uchar unsigned
2、char#include"24c02.h" sbit lcdrs=P2A4; sbit lcdrw=P2A5; sbit lcden=P2A6; sbit s1=P3A0;sbit s2=P3A1;sbit s3=P3A2;sbit beep=P2A3; uchar count,s1num; char miao,shi,fen;/包含24c02头文件液晶的控制角三个调时钟的按键蜂鸣器uchar code table="2011-04-09 SAT "void delayms(uint z)uint x,y;for(x=z;x>0;x-) for(y
3、=112;y>0;y-);void di()beep=0;delayms(100);beep=1;void write_cmd(uchar cmd)lcden=0;lcdrs=0;lcdrw=0;P0=cmd;_nop_();lcden=1;delayms(1);lcden=0;_nop_();void write_dat(uchar dat)lcden=0;lcdrs=1;P0=dat;_nop_();lcden=1;delayms(1);lcden=0;_nop_();void lcdint()lcden=0;write_cmd(0x38);write_cmd(0x0c);write
4、_cmd(0x06);write_cmd(0x01);/蜂鸣器的响/液晶写命令程序/延时毫秒的程序/液晶写数据程序/液晶初始化程序delayms(1);void write_sfm(uchar s,uchar f,uchar m)/数据在液晶显示uchar ss,sg,fs,fg,ms,mg;ss=s/10;sg=s%10;fs=f/10;fg=f%10;ms=m/10;mg=m%10;write_cmd(0xc0+4);write_dat(0x30+ss);write_dat(0x30+sg);write_cmd(0xc0+7);write_dat(0x30+fs);write_dat(0x
5、30+fg);write_cmd(0xc0+10);write_dat(0x30+ms);write_dat(0x30+mg);void keyscan()/ 如果功能按键 1 按下/去抖动if(s1=0)delayms(5);if(s1=0) /等待松手/主要还是记下次数/蜂鸣器响/按一下秒钟while(!s1);s1num+;di();if(s1num=1)TR0=0;write_cmd(0xc0+10); / 指针显示闪烁 write_cmd(0x0f);if(s1num=2)write_cmd(0xc0+7);if(s1num=3)write_cmd(0xc0+4);if(s1num=
6、4)s1num=0; count=0;write_cmd(0x0c);TR0=1;if(s1num!=0)/如果按键2 按下执行加if(s2=0)delayms(5);if(s2=0)while(!s2);/对应调整分秒时di();if(s1num=1) miao+;if(miao=60)miao=0;write_sfm(shi,fen,miao);write_cmd(0xc0+10);write_add(1,miao);if(s1num=2)fen+;if(fen=60)fen=0;write_sfm(shi,fen,miao);write_cmd(0xc0+7);write_add(2,f
7、en);if(s1num=3)shi+;if(shi=60)shi=0;write_sfm(shi,fen,miao);write_cmd(0xc0+4);write_add(3,shi);if(s3=0)delayms(5);if(s3=0)while(!s3);di();if(s1num=1)miao-;if(miao=-1)miao=59; write_sfm(shi,fen,miao); write_cmd(0xc0+10);write_add(1,miao);if(s1num=2)fen-;if(fen=-1)fen=59;write_sfm(shi,fen,miao);write_
8、cmd(0xc0+7); write_add(2,fen);if(s1num=3)shi-;if(shi=-1)shi=23;write_sfm(shi,fen,miao);write_cmd(0xc0+4); write_add(3,shi);void main()uchar num;lcdint();wp=0;s1num=0;count=0;shi=0;fen=0;miao=0;write_cmd(0x80+1);for(num=0;num<15;num+)write_dat(tablenum);write_cmd(0xc0+6);write_dat(':');wri
9、te_cmd(0xc0+9);write_dat(':');miao=read_add(1);fen=read_add(2);shi=read_add(3);write_sfm(shi,fen,miao);TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;wp=0;while(1)keyscan();if(count=20) /等待1scount=0;miao+;if(miao=60) /进位程序miao=0;fen+;if(fen=60) fen=0;shi+;if(shi=24)sh
10、i=0;write_sfm(shi,fen,miao);write_add(3,shi);write_sfm(shi,fen,miao);write_add(2,fen);write_sfm(shi,fen,miao);write_add(1,miao);void timer0() interrupt 1TH0=(65536-50000)/256;TL0=(65536-50000)%256;count+;24c02.hsbit wp=P1A0;sbit sda=P1A2;sbit scl=P1A1;void delay1() /延时5us 左右;void start()sda=1; / 对应时
11、序图将SDA 拉高delay1(); /延时scl=1;/ 将 CL 拉高delay1();/延时sda=0;/ 造成一个下降沿启动信号delay1();void stop()sda=0; / SDA 拉低delay1();scl=1; /SCL 拉高delay1();sda=1; / 造成上升沿终止信号delay1();void respons()unsigned char i;scl=1; /将 SCL 拉高delay1();while(sda=1)&&(i<250) i+;/等待SDA 低电平如果时间超了就退出scl=0;/将 SCL 拉低delay1();void
12、 write_byte(unsigned char date)unsigned char i,temp;temp=date;/写数据for(i=0;i<8;i+)/循环输入temp=temp<<1;/左移一位进CY ,再放入 sda 中scl=0;delay1();sda=CY;delay1();scl=1;delay1();scl=0;delay1();sda=1;delay1();unsigned char read_byte() / 读一个字节unsigned char i,k;k=0;scl=0;delay1();sda=1;delay1();for(i=0;i<
13、;8;i+) 读出 sda 放在 k 中scl=1;delay1();k=(k<<1)|sda;scl=0;delay1();delay1(); return k;void write_add(unsigned char address,unsigned char date)start();write_byte(0xae);/这里电路图中接的A0A1A2 为高,故为 0xaerespons();write_byte(address); / 这一部分按照时序图看就行了 respons();write_byte(date);respons();Stop(); unsigned char
14、 read_add(unsigned char address)unsigned char date;start();write_byte(0xae);respons();write_byte(address);respons();start();write_byte(0xaf); 按时序图操作respons();date=read_byte();stop();return date;把两个文件放在同一文件夹下就行了已通过实物验证可以用写一个字节的时序流程图对应上面的 void write_add(unsigned char address,unsigned char date)FIGURE 5 1: BYTE WRITESDA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 宠物殡葬师考试难点总结试题及答案
- 马工学管理学的实证研究方向试题及答案
- 全国粤教清华版初中信息技术八年级上册第1单元第4节《“无所不能”的模块》教学设计
- 2024年四年级品社下册《服务在身边》教学实录 浙教版
- (水滴系列)高中历史 第17课 二战后苏联的经济改革教学实录 岳麓版必修2
- 探索马工学管理新趋势试题及答案
- 马工学在行业标准制定中的角色试题及答案
- 2024年图书管理员考试难点与答案
- 员工测评方案
- 乳胶漆施工方案
- 15轨道车检查保养指导书
- 前言 马克思主义中国化时代化的历史进程与理论成果
- 直流滤波电感设计
- 逍遥子-精美大气红色鎏金风商务汇报PPT模板
- 电力工程安全保证体系及措施
- 13运动与健康-2023年中考英语热点话题写作
- 《云南电力市场化交易实施方案》
- 中学初中学生学籍卡片(一)
- 时间管理(护理管理课件)
- 初中同学聚会方案及流程
- 单位廉政风险防控自查表
评论
0/150
提交评论