版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、#include #include #define uchar unsigned char #define uint unsigned int sbit s仁 P3A0; sbit s2=P3A1; sbit s3=P3A2; sbit s4=P3A6; sbit s5=P3A3; sbit dula=P2A6; sbit wela=P2A7; sbit lcden=P2A5; sbit lcdrs=P1A0; sbit lcdrw=P1A1; sbit rd二P3A7;定义的的4个键盘 / 时钟功能键 / 加键 / 减键 / 确认键 / 闹钟功能键 / 数码管操作 / 液晶操作 / 为了分离
2、出 3 个独立键盘 sbit FM二P2八3;/ 蜂鸣器口 sbit ACCO二ACCS; sbit ACC7=ACCA7;/累加器喂ACC这是位定义 sbit scik二P2A1;/DS1302 操作 sbit data1=P2A0; sbit rst=P2A4; uchar s1num,fiag1,fiag2,s5num; int miao,shi,fen,nian,yue,ri,week,afen,ashi; int x1,x2; uchar code table1=SUN; 星期字表 uchar code tabie2=MON; uchar code table3=TUE; uchar
3、 code table4=WED; uchar code table5=THU; uchar code table6=FRI; uchar code table7=SAT; void delayms( uint xms) 延时函数 uint x,y; for(x=xms;x0;x-) for(y=110;y0;y-); void di()/ 蜂鸣器函数 FM=0; delayms(100); FM=1; void cmg88()/ 关数码管函数 dula=1; P0=0 x00; dula=0; void write_com(uchar com) lcdrs=0; lcden=0; P0=co
4、m; delayms(5); 13 / 37 lcden=1; delayms(5); lcden=0; void write_date(uchar date) lcdrs=1; lcden=0; P0=date; delayms(5); lcden=1; delayms(5); lcden=0; void Write1302(uchar dat) uchar i; ACC二dat;/液晶写命令函数 / 液晶写数据函数 / 向 1302 写一个字节数据 for(i=8;i0;i-) data1=ACC0; sclk=1; sclk=0; ACC=ACC1; void WriteSet1302(
5、uchar Cmd,uchar dat) 根据命令,向 1302 写一个字节数 据 rst=0; _nop_(); sclk=0; _nop_(); rst=1; delayms(2); Write1302(Cmd); Write1302(dat); sclk=1; rst=0; uchar Read1302()向1302读一个字节数据 uchar i; for(i=8;i0;i-) ACC=ACC1; ACC7=data1; sclk=1; sclk=0; return(ACC); ucharReadSet1302(uchar Cmd)/根据命令,向1302读一个字节数据 uchar dat
6、; rst=0; sclk=0; rst=1; Write1302(Cmd); dat=Read1302(); sclk=1; rst=0; return(dat); void inital_1302() WriteSet1302(0 x8e,0 x00); WriteSet1302(0 x90,0 xaa); WriteSet1302(0 x80,0 x45); WriteSet1302(0 x84,0 x18); WriteSet1302(0 x82,0 x47); WriteSet1302(0 x8c,0 x16); WriteSet1302(0 x88,0 x05); WriteSet
7、1302(0 x86,0 x23); WriteSet1302(0 x8a,0 x01); WriteSet1302(0 xc0,0 x07); WriteSet1302(0 xfc,0 x30); WriteSet1302(0 x8e,0 x80); void write_sfm(uchar add,uchar dat) uchar gw,sw; gw=dat%16; sw=dat/16; write_com(0 x80+0 x40+add); write_date(sw+0 x30); write_date(gw+0 x30); void write_nyr(uchar add,uchar
8、 dat) uchar gw,sw; gw=dat%16; sw=dat/16; write_com(0 x80+add); write_date(sw+0 x30); write_date(gw+0 x30); void write_week(uchar xq) /初始化DS1302函数 / 禁止写保护 / 定义充电 / 秒 / 时 / 分 / 年 / 月 / 日 / 星期 / 闹钟小时初始化 / 闹钟分钟初始化 / 开写保护 / 时分秒函数 / 年月日函数 / 写星期函数 uchar x; write_com(0 x80+12); switch(xq) case 1: for(x=0;x3
9、;x+) write_date(table1x); break; case 2: for(x=0;x3;x+) write_date(table2x); break; case 3: for(x=0;x3;x+) write_date(table3x); break; case 4: for(x=0;x3;x+) write_date(table4x); break; case 5: for(x=0;x3;x+) write_date(table5x); break; case 6: for(x=0;x3;x+) write_date(table6x); break; case 7: for(
10、x=0;x0oeLSQ 蕪 險奖屁 H郦理w亠曲w揺桦菲起韜好 w注(00X0(08X0)00 LQS9一M iyoxoEs七m oHLUnuLS o上曇 G Seo q -(寸+08XO)LUOOIS一M L Seo q P+08X0E8七m 險奖郦理” gK菲医M故w揺桦菲feuCDSeo q _(OL+O8XO)LU8lM q Seo q -(寸 L +08X0E8七m -寸Seo WriteSet1302(0 x8c,nian); WriteSet1302(0 x88,yue); WriteSet1302(0 x86,ri); WriteSet1302(0 x8e,0 x80); br
11、eak; if(s1num!=0 if(s2=0) while(!s2); di(); switch(s1num) case 1: x1=miao%16; x2=miao/16; x1+; if(x1=10) x1=0; x2+; if(x2=6) x2=0; miao=x1+x2*16; write_sfm(7,miao); write_com(0 x80+0 x40+8); break; case 2: x1=fen%16; x2=fen/16; x1+; if(x1=10) x1=0; x2+; if(x2=6) x2=0; fen=x1+x2*16; write_sfm(4,fen);
12、 write_com(0 x80+0 x40+5); break; case 3: x1=shi%16; x2=shi/16; x1+; if(x1=10) x1=0; x2+; if(x2=2 x2=0; shi=x1+x2*16; write_sfm(1,shi); write_com(0 x80+0 x40+2); break; case 4: x1=(week)%10; x2=(week)/10; x1+; if(x1=8) x1=1; week=x2*16+x1; write_week(week); write_com(0 x80+14); break; case 5: x1=ri%
13、16; x2=ri/16; x1+; if(x1=10) x1=0; x2+; if(x2=3 x2=0; ri=x1+x2*16; write_nyr(9,ri); write_com(0 x80+10); break; case 6: x1=yue%16; x2=yue/16; x1+; if(x2=1 x2=0; if(x1=10) x1=0; x2+; yue=x1+x2*16; write_nyr(6,yue); write_com(0 x80+7); break; case 7: x1=nian%16; x2=nian/16; x1+; if(x2=9) x2=0; if(x1=1
14、0) x2+; x1=0; nian=x1+x2*16; write_nyr(3,nian); write_com(0 x80+4); break; if(s3=0) delayms(5); if(s3=0) while(!s3); di(); switch(s1num) case 1: x1=miao%16; x2=miao/16; x1-; if(x1=-1) x1=9; x2-;/ 时钟减键 if(x2=-1) x2=5; miao=x1+x2*16; write_sfm(7,miao); write_com(0 x80+0 x40+8); break; case 2: x1=fen%1
15、6; x2=fen/16; x1-; if(x1=-1) x1=9; x2-; if(x2=-1) x2=5; fen=x1+x2*16; write_sfm(4,fen); write_com(0 x80+0 x40+5); break; case 3: x1=shi%16; x2=shi/16; x1-; if(x1=-1) x1=9; x2-; if(x2=-1) x1=3; x2=2; shi=x1+x2*16; write_sfm(1,shi); write_com(0 x80+0 x40+2); break; case 4: x1=(week)%10; x2=(week)/10;
16、x1-; if(x1=0) x1=7; week=x2*16+x1; write_week(week); write_com(0 x80+14); break; case 5: x1=ri%16; x2=ri/16; x1-; if(x1=-1) x1=9; x2-; if(x2=-1) x1=1; x2=3; ri=x1+x2*16; write_nyr(9,ri); write_com(0 x80+10); break; case 6: x1=yue%16; x2=yue/16; x1-; if(x2=1) x2-; if(x2=0) 35 / 37 x2=1; yue=x1+x2*16;
17、 write_nyr(6,yue); write_com(0 x80+7); break; case 7: x1=nian%16; x2=nian/16; x1-; if(x1=-1) x1=9; x2-; if(x2=-1) x1=9; x2=9; nian=x1+x2*16; write_nyr(3,nian); write_com(0 x80+4); break; if(s1num!=0|s5num!=0)/ 表示时钟或者闹钟处于调整状态 if(s4=0)确定状态的按键 delayms(5); if(s4=0) if(s1num!=0)/ 表示时钟处于调整状态 while(!s4);/
18、确定键被按下 di(); WriteSet1302(0 x8e,0 x00);按了确认键后,把调整了的所有数据当前状态存 入到DS1302中 WriteSet1302(0 x80,miao); WriteSet1302(0 x84,shi); WriteSet1302(0 x82,fen); WriteSet1302(0 x8a,week); WriteSet1302(0 x8c,nian); WriteSet1302(0 x88,yue); WriteSet1302(0 x86,ri); WriteSet1302(0 x8e,0 x80); flag1=0; write_com(0 x0c)
19、; s1num=0; if(s5num!=0) while(!s4); di();/ 表示闹钟处于调整状态 WriteSet1302(0 x8e,0 x00);调整闹钟,不能让时钟暂停,故没把时钟数据写 入 DS1302中 WriteSet1302(0 xc0,ashi);把闹钟数据写入 DS1302中 WriteSet1302(0 xfc,afen); WriteSet1302(0 x8e,0 x80); flag2=0; s5num=0; write_com(0 x0c); if(s5=0 if(s5=0 flag2=1; while(!s5); di(); if(s5num=1) wri
20、te_com(0 x80+0 x40+14); write_com(0 x0f); if(s5num=2) write_com(0 x80+0 x40+11); if(s5num=3)/ 闹钟功能键并且时钟不处于调整状态 s5num=0; flag2=0; WriteSet1302(0 x8e,0 x00); WriteSet1302(0 xfc,afen); WriteSet1302(0 xc0,ashi); WriteSet1302(0 x8e,0 x80); write_com(0 x0c); if(s5num!=0 if(s2=0) while(!s2); di(); if(s5num
21、=1) x1=afen%16; x2=afen/16; x1+; if(x1=10) x1=0; x2+; if(x2=6) x2=0; afen=x1+x2*16; write_sfm(13,afen); write_com(0 x80+0 x40+14); if(s5num=2) x1=ashi%16; x2=ashi/16; x1+; if(x2=2/ 只有闹钟处于调整状态 / 闹钟加键 x2=0; if(x1=10) x1=0; x2+; ashi=x1+x2*16; write_sfm(10,ashi); write_com(0 x80+0 x40+11); if(s3=0) delayms(5); if(s3=0) while(!s3); di(); if(s5num=1) x1=afen%16; x2=afen/16; x1-; if(x1=-1) x1=9; x2-; if(x2=-1) x2=5; afen=x1+x2*16; write_sfm(13,afen); write_com(0 x80+0 x40+
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 16摩擦力(原卷版)-1
- 工程试验检测取样、送检指南大全
- 新高考6选3选科指导与生涯规划课件
- 山东省济南市济钢高中人教版生物选修三专题三第一节体内受精和早期胚胎发育测试
- 104三元一次方程组-2020-2021学年七年级数学下册课堂帮帮帮(苏科版)
- 湖北省孝感市重点高中教科研协作体2023-2024学年高二下学期4月期中联考生物试题
- 人教部编版八年级语文上册《国行公祭为佑世界和平》示范课教学课件
- 一年级下册生态生命安全教案
- 专利技术交易居间合同样本
- 2024个人消防安全责任书(32篇)
- 辽宁省沈阳市铁西区2023-2024学年七年级下学期期中考试地理试卷+
- 2023体育知识竞赛题库及参考答案
- 泰山学院辅导员考试试题2024
- 多图中华民族共同体概论课件第十三讲先锋队与中华民族独立解放(1919-1949)根据高等教育出版社教材制作
- 120急救中心-检伤分类专项试题及答案
- Module4ThingsweenjoyUnit11Chinesefestivals第1课时(课件)牛津上海版英语五年级下册
- sl677-2014水工混凝土施工规范
- 口语交际做手工(课件)语文二年级上册3
- 高中数学新教师培训
- 壳寡糖知识课件
- 电子病历安全保障与隐私保护
评论
0/150
提交评论