版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选文档#include<reg52.h>#define uchar unsigned char #define uint unsigned intsbit lcdws=P21; /1602管脚定义sbit lcden=P20;sbit lcdrs=P22;sbit key1=P23; /闹钟设置键 sbit key2=P24; sbit key3=P15;/功能键定义sbit key4=P16;/增大键定义sbit key5=P17;/减小键定义uchar shi,fen,miao,ashi,afen,amiao,year,month,day,week;uchar s1num=0
2、,s1num2=0,temp;bit flag; float f_temp;uint i,d;uchar code table2=0x20,0x20,0x2e,0x20,0xdf,0x43;uchar code table="20 - - "uchar code table1=" : : "sbit ds=P10;/ds18b20信号线sbit beep=P14; /蜂鸣器管脚定义sbit ACC_7 = ACC7; /位寻址寄存器定义sbit SCLK = P12; / DS1302时钟信号 sbit DIO= P11; / DS1302数据信号 sb
3、it CE = P13;/地址、数据发送子程序 /void delay2(uint ms)/ / uchar t;/ while(ms-); for(t=0;t<120;t+); / void playmusic()/ / uint i2=0,j2,k2;/ while(jiepaii2!=0|songi2!=0)/ / for(j2=0;j2<jiepaii2*20;j2+)/ / beep=beep;/ for(k2=0;k2<songi2/3;k2+);/delay2(10);/i2+;/ / void write_1302( uchar addr,uchar dat
4、) uchar i,temp; CE=0; /CE 引脚为低, 数据传送中止 SCLK=0; /清零时钟总线 CE = 1; /CE 引脚为高,逻辑控制有效 /发送地址 for ( i=8; i>0; i- ) /循环8次移位 SCLK = 0; temp = addr; DIO = (bit)(temp&0x01); /每次传输低字节 addr >>= 1; /右移一位 SCLK = 1; /发送数据 for ( i=8; i>0; i- ) SCLK = 0; temp = dat; DIO = (bit)(temp&0x01); dat >&
5、gt;= 1; SCLK = 1; CE = 0; /数据读取子程序 uchar Read1302 ( uchar addr ) unsigned char i,temp,dat1,dat2; CE=0; SCLK=0; CE = 1; /发送地址 for ( i=8; i>0; i- ) /循环8次移位 SCLK = 0; temp = addr; DIO = (bit)(temp&0x01); /每次传输低字节 addr >>= 1; /右移一位 SCLK = 1; /读取数据 for ( i=8; i>0; i- ) ACC_7=DIO; SCLK = 1
6、; ACC>>=1; SCLK = 0; CE=0; dat1=ACC; dat2=dat1/16; /数据进制转换 /十六进制转十进制 dat1=dat1%16; dat1=dat1+dat2*10; return (dat1); /初始化 DS1302 void Initial(void) /初始化1302 2010年09月30日23点58分56秒 星期一 write_1302 (0x8e,0x00); /允许写保护 write_1302 (0x80,0x56); /秒位初始化 write_1302 (0x82,0x58); /分钟初始化 write_1302 (0x84,0x
7、23); /小时初始化 write_1302 (0x86,0x30); /日初始化 write_1302 (0x88,0x09); /月初始化 write_1302 (0x8c,0x10); /年初始化 write_1302 (0x8a,0x01); /日期始化 write_1302 (0x8e,0x80); /禁止写保护void delay(uint z)/延时1msuint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);void write_com(uchar com)/1602写命令lcdrs=0;lcden=0;P0=com;delay(5);l
8、cden=1;delay(5);lcden=0;void write_data(uchar date)/1602写数据lcdrs=1;lcden=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;void dsreset(void) /DS18B20,初始化函数uint i;ds=0;i=103;while(i>0)i-;ds=1;i=4;while(i>0)i-;bit tempreadbit(void)/读1位数据函数uint i;bit dat;ds=0;i+;ds=1;i+;i+;/i+起到延时作用dat=ds;i=8;while(i&
9、gt;0)i-;return(dat);uchar tempread(void) /读一个字节数据函数uchar i,j,dat;dat=0;for(i=1;i<=8;i+)j=tempreadbit();dat=(j<<7)|(dat>>1);return(dat);void tempwritebyte(uchar dat) /向DS18B20写一个字节数据函数uint i;uchar j;bit testb;for(j=1;j<=8;j+)testb=dat&0x01;dat=dat>>1;if(testb)/写1ds=0;i+;i+
10、;ds=1;i=8;while(i>0)i-;elseds=0; /写0i=8;while(i>0)i-;ds=1;i+;i+;void tempchange(void) /DS18B20开始获取温度并转换dsreset();delay(1);tempwritebyte(0xcc);tempwritebyte(0x44);uint get_temp() /获取温度uchar a,b;dsreset();delay(1);tempwritebyte(0xcc);tempwritebyte(0xbe);a=tempread(); /读高8位b=tempread(); /读低8位temp
11、=b;temp<<=8; /两个字节组合成1个字节temp=temp|a;f_temp=temp*0.0625;temp=f_temp*10+0.5;f_temp=f_temp+0.05; /温度在寄存器中为12位,分辨率为0.0625return temp;void display(uchar addr,uchar dat)write_com(0x80+0x40+addr);write_data(0x30+dat);delay(5);void dis_temp(uint t)uchar i;i=t/100;display(10,i);i=t%100/10;display(11,i
12、);i=t%100%10;display(13,i);void init()/初始化程序uchar num;flag=1;lcden=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);for(num=0;num<15;num+)write_data(tablenum);delay(5);write_com(0x80+0x40);for(num=0;num<8;num+)write_data(table1num);delay(5);write_com(0x80+0x40+
13、10);for(num=0;num<6;num+)write_data(table2num);delay(10);void di()/蜂鸣器响函数beep=0;delay(100);beep=1;void write_sfm(uchar add,uchar date)uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+0x40+add);write_data(0x30+shi);write_data(0x30+ge);void write_nyrz(uchar add,uchar date)/显示年,月,日,周uchar shi,ge;s
14、hi=date/10;ge=date%10;write_com(0x80+add);write_data(0x30+shi);write_data(0x30+ge);void display_week(uchar we)write_com(0x80+12);switch(we)case 1: write_data('M');delay(5);write_data('O');delay(5);write_data('N');break;case 2: write_data('T');delay(5);write_data('
15、U');delay(5);write_data('E');break;case 3: write_data('W');delay(5);write_data('E');delay(5);write_data('D');break;case 4: write_data('T');delay(5);write_data('H');delay(5);write_data('U');break;case 5: write_data('F');delay(5);writ
16、e_data('R');delay(5);write_data('T');break;case 6: write_data('S');delay(5);write_data('A');delay(5);write_data('T');break;case 7: write_data('S');delay(5);write_data('U');delay(5);write_data('N');break;void keyscan()/按键设置if(key3=0)/功能键
17、按下flag=0;delay(5);if(key3=0)s1num+;while(!key3);di();switch(s1num)/光标闪烁定位case 1:write_com(0x80+0x40+7);/定位到秒的位置 write_com(0x0f);break;case 2:write_com(0x80+0x40+4);/定位到分的位置 write_com(0x0f);break;case 3:write_com(0x80+0x40+1);/定位到小时的位置 write_com(0x0f);break;case 4:write_com(0x80+0x0e);/定位到星期的位置 write
18、_com(0x0f);break;case 5:write_com(0x80+0x9);/定位到日的位置 write_com(0x0f);break;case 6:write_com(0x80+0x6);/定位到月的位置 write_com(0x0f);break;case 7:write_com(0x80+0x3);/定位到年的位置 write_com(0x0f);break;case 8: s1num=0;/复位,时钟走write_com(0x0c);flag=1; write_1302 (0x8e,0x00); /允许写保护 write_1302 (0x80,miao); /秒位初始化
19、write_1302 (0x82,fen); /分钟初始化 write_1302 (0x84,shi); /小时初始化 write_1302 (0x86,day); /日初始化 write_1302 (0x88,month); /月初始化 write_1302 (0x8c,year); /年初始化 write_1302 (0x8a,week); /日期始化 write_1302 (0x8e,0x80); /禁止写¥break;if(s1num!=0)/只有功能键按下后,增大,增小建才有效if(key4=0)/增大建delay(5);if(key4=0)while(!key4);di();swi
20、tch(s1num)case 1: miao+; if(miao=60)miao=0;write_sfm(6,miao);/write_1302(write_second,miao);write_com(0x80+0x40+7);break;case 2: fen+; if(fen=60)fen=0;write_sfm(3,fen);/write_1302(write_minute,fen);write_com(0x80+0x40+4);break;case 3: shi+; if(shi=24)shi=0;write_sfm(0,shi);write_com(0x80+0x40+1);bre
21、ak;case 4: week+; if(week=8) week=1;display_week(week);write_com(0x80+14);break;case 5: day+; if(day=31)day=1;write_nyrz(8,day);write_com(0x80+9);break;case 6: month+; if(month=13)month=1;write_nyrz(5,month);write_com(0x80+6);break;case 7: year+; if(year=99)year=0;write_nyrz(2,year);write_com(0x80+3
22、);break;if(key5=0)/减小键delay(5);if(key5=0)while(!key5);di();switch(s1num)case 1: miao-; if(miao=-1)miao=59;write_sfm(6,miao);write_com(0x80+0x40+7);break;case 2: fen-; if(fen=-1)fen=59;write_sfm(3,fen);write_com(0x80+0x40+4);break;case 3: shi-; if(shi=-1)shi=23;write_sfm(0,shi);write_com(0x80+0x40+1)
23、;break;case 4: week-; if(week=-1) week=7;display_week(week);write_com(0x80+14);break;case 5: day-; if(day=0)day=31;write_nyrz(8,day);write_com(0x80+9);break;case 6: month-; if(month=0)month=12;write_nyrz(5,month);write_com(0x80+6);break;case 7: year-; if(year=-1)year=99;write_nyrz(2,year);write_com(
24、0x80+3);break;void set_alarm() if(key1=0)/功能键按下 delay(5);if(key1=0) while(!key1); flag=0; s1num2+; write_sfm(6,amiao); write_com(0x80+0x40+7); write_sfm(3,afen); write_com(0x80+0x40+4); write_sfm(0,ashi); write_com(0x80+0x40+1);di();switch(s1num2)/光标闪烁定位case 1:write_com(0x80+0x40+7);/定位到秒的位置 write_c
25、om(0x0f);break;case 2:write_com(0x80+0x40+4);/定位到分的位置 write_com(0x0f);break;case 3:write_com(0x80+0x40+1);/定位到小时的位置 write_com(0x0f);break;case 4: s1num2=0;/复位,时钟走write_com(0x0c);flag=1;/write_1302(0x8e,0x00);/允许写保护write_1302 (0x8e,0x80);break; if(s1num2!=0)/只有功能键按下后,增大,增小建才有效 if(key2=0)/增大建delay(5);if(key2=0)while(!key2);di();switch(s1num2)case 1: amiao+; if(amiao=60)amiao=0;writ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023年-2024年公司项目部负责人安全教育培训试题附答案【黄金题型】
- 立秋文化在新媒体的传播
- 《材料工程原理绪论》课件
- 《监督培训材料》课件
- 激光打标机打标软件与PLC通信稳定性的研究
- 部编版七年级历史下册期末复习专题课件2024版
- 云安全隐私保护机制-洞察分析
- 营养产业可持续发展-洞察分析
- 外观模式可维护性-洞察分析
- 稀有金属国际市场动态-洞察分析
- 栏杆百叶安装施工方案
- (高速公路)工程施工便道施工方案-
- 低压配电电源质量测试记录
- 安徽省水利工程质量检测和建筑材料试验服务收费标准
- 2022课程标准解读及学习心得:大单元教学的实践与思考
- OA协同办公系统运行管理规定
- 公安警察工作汇报PPT模板课件
- 某小区建筑节能保温工程监理实施细则
- 污水处理中常用的专业术语
- 石英砂过滤器说明书
- 外市电引入工程实施管理要求(重要)
评论
0/150
提交评论