1、uchar code table2=温馨提示:00.0延时函数 */void delay(uint z) uint x,y; for(x=z;x0;x-) for(y=110;yy-);/* 功能:蜂鸣器响应 */void fengmingqi() beet=0;delay(1);beet=1;液晶12864读写数据 */void xieling_shu(uchar aa,uchar bb) if(aa=1)rs=0; if(aa=0)rs=1; P0=bb; en=1; delay(1); en=0;液晶12864写入地址 */void xieludizhi(uchar x, uchar y
2、) switch(x) case 1: xieling_shu(1,0x80 + y ); return;/return 返回的意思 case 2: xieling_shu(1,0x90 + y ); case 3: xieling_shu(1,0x88 + y ); case 4: xieling_shu(1,0x98 + y ); 液晶12864写入字符串 */void xiezifuchuan(uchar *dd) while(*dd != 0) xieling_shu(0,*dd+ );液晶12864清屏函数 */void qingping() xieling_shu(1,0x01);
3、 /清屏 xieling_shu(1,0x01); delay(20);液晶12864初始化指令操作 */void init_12864() xieling_shu(1,0x30); /基本指令操作 xieling_shu(1,0x0C); /0x0c: 无光标, OXOF: 光标反白显示 /清屏 xieling_shu(1,0x06);液晶12864初始化字串显示 */void init_zifu() xieludizhi(1,0);xiezifuchuan( 欢迎使用 ); xieludizhi(2,0); xieludizhi(3,0); 订购热线 xieludizhi(4,0);Pho
4、ne:0777-66914 delay(9534); qingping(); xieludizhi(1,0);xiezifuchuan(table1);xiezifuchuan(table2); xieludizhi(3,5);星期 xieludizhi(2,2);年 月 日 时间、年月日 显示函数 */void display() xieludizhi(3,0); / 显示 时 分 秒 xieling_shu(0,0x30+hour/10); xieling_shu(0,0x30+hour%10); xieling_shu(0,: xieling_shu(0,0x30+minute/10);
5、 xieling_shu(0,0x30+minute%10); xieling_shu(0,0x30+second/10); xieling_shu(0,0x30+second%10); / 显示 年 xieling_shu(0,0x30+years/1000); xieling_shu(0,0x30+years%1000/100); xieling_shu(0,0x30+years%100/10); xieling_shu(0,0x30+years%10); xieludizhi(2,3); / 显示 月 xieling_shu(0,0x30+month/10); xieling_shu(0
6、,0x30+month%10); xieludizhi(2,5); / 显示 日 xieling_shu(0,0x30+day/10); xieling_shu(0,0x30+day%10);闹钟(时间、年月日) 显示函数 */void display1() xieling_shu(0,0x30+shi/10); xieling_shu(0,0x30+shi%10); xieling_shu(0,0x30+fen/10); xieling_shu(0,0x30+fen%10); xieling_shu(0,0x30+miao/10); xieling_shu(0,0x30+miao%10);星
7、期函数 */void xingqi() switch(cc) xieludizhi(3,7); xiezifuchuan(一二叁四 case 5:五 case 6:六 case 7:日按键程序 */void anjian() if(key4=0)delay(1);hm=hm;while(key4=0); key1按键选择功能 */ if(key1=0) mm+;if(hm!=0)if(mm=4)mm=0; if(mm=1)xieludizhi(3,3);xieling_shu(0,0x5f); if(mm=2)TR0=1;xieludizhi(3,2); if(mm=3)xieludizhi(
8、3,0); if(mm=4)xieludizhi(2,5); if(mm=5)xieludizhi(2,3); if(mm=6)xieludizhi(2,1); if(mm=7)xieludizhi(3,7); if(mm=8)xieludizhi(2,7);xieling_shu(0,0x02); if(mm=9)xieludizhi(2,7);xieling_shu(0,0x20);mm=0; / mm=0;跳出调整时间 while(key1=0); key2按键 加减 功能 */ if(mm=1&key2=0) /秒加1 if(hm=0)TR0=0;if(key2=0)second+;i
9、f(second=60)second=0; if(hm!=0)delay(1);if(key2=0)miao+;if(miao=60)miao=0; while(key2=0);key3=0) /秒减1if(key3=0)second-;if(second=-1)second=59;if(key3=0)miao-;if(miao=60)minute=0;if(key2=0)fen+;if(fen=60)fen=0; key3=0) /分减1if(key3=0)minute-;if(minute=-1)minute=59;if(key3=0)fen-;if(fen=24)hour=0;if(ke
10、y2=0)shi+;if(shi=24)shi=0;key3=0) /时减1if(key3=0)hour-;if(hour=-1)hour=23;if(key3=0)shi-;if(shi=31)day=1;key3=0) /日减1 if(key3=0) day-; if(day=13)month=1;key3=0) /月减1 month-; if(month=8)cc=1;key3=0) /星期减1 cc-; if(cc=0)cc=7; /* 功能:18B20 所有函数*/* 18B20复位,初始化函数 */void dsreset(void) uint i; wd=0; i=103; wh
11、ile(i0)i-; wd=1; i=4;/* 18B20 读1位 函数 */bit tempreadbit(void) bit dat;i+; /i+ 起延时作用 dat=wd; i=8;while(i return (dat);/* 18B20 读1个字节 函数 */uchar tempread(void) uchar i,j,dat; dat=0; for(i=1;i=8;i+) j=tempreadbit(); dat=(j1); /读出的数据最低位在最前面,这样刚好一个字节在DAT里 return(dat);/* 18B20 写一个字节数据 函数 */void tempwriteby
12、te(uchar dat) uchar j; bit testb; for(j=1;j1; if(testb) /写 1 i+; else /写 0/* 18B20 开始获取温度并转换 函数 */void tempchange(void) dsreset(); tempwritebyte(0xcc); / 写跳过读ROM指令 tempwritebyte(0x44); / 写温度转换指令/* 18B20 读取寄存器中存储的温度数据 函数 */uint get_temp() uchar a,b; tempwritebyte(0xbe); a=tempread(); /读低8位 b=tempread(); /读高8位 temp=b; temp5&count18) tempchange(); /开始获取温度 get_temp(); /读取寄存温度 sprintf(buff,%f,f_temp); comm(buff); xieludizhi(4,5);xieling_shu(0,0x30+ temp/100);xieling_shu(0,0x30
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1