版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、#in clude #define uint unsigned int #define uchar unsigned char sbit k1=P3A1;/M 1 sbit k2=P3A2;/ 按钱 2 sbit k3=P3A7;/ 按钱 2 sbit k4=P3A3;/ 按钱 2 sbit Q=P3A6;/ 怜鸣器接口 sbit dat=P1A4;/1302 的数据端 sbit res=P1 A3;/ 使能端 sbit clk=P1 A7;/ 肘钟端 sbit DS=P3A4;/18B20 int temp; sbit rs=P1 A0;/ 液骷 sbit rw=P1 A1;/ 液 /液晶
2、uchar code disdata3;/18B20 void tmpchange(void); /1820 void display_7(tem);/1820 uchar read7=0,0,0,0,0,0,0; uchar write7=0 x40,0 x59,0 x23,0 x01,0 x07,0 x05,0 x13;/时问,秒,分,时,目,月,周, 年 uchar code table7=H吹迎使用我的万年;/毎个汉字2个字节 uchar code table8= Jh ;/ 毎个汉字 2 个字节 uchar code table9= welcome you;/ 每个汉字 2 个字节
3、uchar code tablei 0=My name is ;/ 每个汉字 2 个字节 /n12345678 uchar code tablel 1= *;/ 每个汉字 2 个字节 uchar code table12=n 学号 1001904012 H;/每个汉字 2 个字节 uchar code tablel3=”;毎个汉字 2 个字节 uchar code tablel4=学号 1001904045*;/ 每个汉字 2 个字节 uchar code tablel5=现疫进入町历显示;/每个汉字2个字节 uchar code tablel 6=;/ 每个汉字 2 个字节 uchar co
4、de tablel7= “;每个汉字 2 个字节 uchar code tablel8=n温度检测欢迎使用”;每个汉字2个字节 uchar code table3= 2000 年 00 月 00 目”;每个汉字 2 个字节 uchar code table4= 00 时 00 分00秒,;毎个汉字2个字节uchar code table5=H温度:00度”;毎个汉字2个字节uchar code table6=星期:00;/每个汉字2个字节 void display(uchar); void display_1 (void); void display_2(void); void display
5、_3(void); void display_4(void); void display_5(void); void display_6(void); void display7(uint); void display_8(void); void display_9(void); void display_10(void); void display_11 (void); void display_12(void); void display_13(void); void display_14(void); void display_15(void); void display_16(void
6、); void display_17(void); void dsreset(void); int tmp(); uint i,tempi ,temp2,tvalue,wed=340,xia=310; / 温.度上线时 35 度,下线 30 度 uchar n=0; void tmpchange(void); void tmpwritebyte(uchar dat); uchar tmpread(void); bit tmpreadbit(void) ; /发送温.度转 换令令 void write_command(uchar com); void write_data(uchar dat);
7、 void LCDnit(); void fengming();/ 第鸣器 /void baoshi(); void delayms(uint j) ( uint i,k; for(i=j;i0;i-) for(k=114;k0;k-); void delayus(uint i) ( while(i-); void delayb(uchar z)uint i; while(z) i=200; while(iO)i-; z-; ) void delay_50us(uint z) ( uint x,y; for(x=z;x0;x-) for(y=11O;yO;y-); void delay_50m
8、s(uint t)/ 延时函数 ( uintj; for(;t0;t-) for(j=6245;j0;j-); ) void fengming() Q=0; delay_50ms(1); Q=1; ) /*lcd 国数 xxxxx*/ void write_command(uchar com)/ 写指 令函教 void write_data(uchar dat)/ 写数据函数 LCDnit() ( rw=0; rs=O;/rs=O时是写指令; delay_50us(1); P2=com; e=1; delay_50us(10); e=0; delay_50us(2); void write_d
9、ata(uchar dat)/ 写数据函数 void LCD_init() ( rw=0; rs=1 ;/rs=1 时是写指令shuju ; delay_50us(1); P2=dat; e=1; delay_50us(10); e=0; delay_50us(2); void LCDnit() /delay_50ms(2); write_command(0 x01);请除显示 delay_50us(4); write_command(0 x03);/ 地址归为 delay_50us; write_command(OxOe);/整体显示开,开游标,游标不反勺delay_50us(4); wri
10、te_command(0 x01);/ 请除显示 delay_50us(240); write_command(0 x06);/ 模式J殳计 delay_50us(10); write_command(0 x80);/ 整板显示 delay_50us(10); /*1864 显示函数 xxxxx*/ void display(uchar date) ( uchar ge,shi; shi=date/16; ge=date%16; write_data(shi+0 x30); write_data(ge+0 x30); /*1302 部分函数 xxxxx*W/ void write_byte(u
11、char temp) ( uchar i; for(i=0;iv8;i+) clk=0; delayus(5); if(temp else dat=O; clk=1; delayus(5); temp=1; ) uchar read_byte() ( uchar i,temp=0; for(i=0;i 5 k .m A read o H rend read aCD HreadldaCD (0X83) y 聃孚蒲 read 2HreadldacD(ox85)y、 read 3HreadldaCD (0X87)w m A酬 聃孚蒲議 read 4HreadldacD(0 xoo9)w SIX 聃孚
12、蒲 read 5HreadldacD(ox8b)y、 A M I a A to qA A 6HreadldacD(0 x8d) M蒲 16 岸 Wri(od2.e(ox8pb)/nian ReadHmeo二二 302 wris-command(0 x82)y/祎魁 4類弥 shiHa/10 八 ge=a%10八 year=20*100+shi*10+ge八 wri(Dd2.a(shi+0 x30h w2.-ed2.a(ge+0 x30)-:y 书) ) 亠PL23D才才才才才才才才才才才才才才才才*一 ifT2) wri(Dcommand(oxof)w 険暮類弥冲耳盘 廡盘沦心 if(k3HH
13、0)w 亠产列 E ( fengming?de-ay50ms(4)- al+八 ) if(k4so) ( fengmingo de-ay50ms(4h bf aWO二 6+a-l%lowo 區挣6 $ wriodao(0X8881)0/ H ReadTime(r/1302Wri(ocommand(ox84)*/it 汩4恋处 sh 二 Ha二5? ge1=a1%10; yue=shi1*10+ge1; if(yue12) a1=1; if(yue=O delay_50ms(4); a1 =a1 +12; ) write_data(shi1 +0 x30); write_data(ge 1+0
14、x30); / 年 晋 可 * if(n=3) if(k4=0 delay_50ms(4); a2=a2+27; if(k3=0)/ fengming(); delay_50ms(4); a2+; if(k4=0) fengming(); delay_50ms(4); a2-; if(yue%2=0) if(ri30 if(yue=8) 盒2丄 ) ) e-se if(yue%2lr0) 亠 if(rv31) a2l二 if(year%4HH0)QOQO(year%100F0)=(year%400HH0)2E4 険弼氏* 毬洋 険 淨川汰*五洋400褛弼丫 ( if(yue=H2QOQOriv
15、29) a2八 一 ) e莎e if(yueHH2QO八 b5Ha5 二 O-I6+a5%*6 Wricod2.e(ox82b5)八 / 少 ReadHmeo二二 302 轴 wri(Dcommand(0 x93)y/ 吝矜洽4起弥 shi4=a5/10 八 ge4=a5%10 八 if(a5v60) a5=5? 一 if(a5HH0QO /delay_50ms(1); a6+; if(k4=0) ( fengming(); /delay_50ms(1); b5=a6/10*16+a6%10;/ 转变成 16 进制 write_date(0 x80,b5);/ 秒分 ReadTime(); /
16、1302 哦 write_command(0 x95);/ 地址,定在 哪显示 shi5=a6/10; ge5=a6%10; if(a660) a6=0; if (a6=0 iwrite_data(shi5+0 x30); write_data(ge5+0 x30); / 年 * jf(n7) if(k3=0)/ 7)( a7=1; )if(a7wed|tem0)i-; DS=1; i=4; while(i0)i-; bit tmpreadbit(void) ( uint i; bit dat; DS=0;i+; 小延时一下 DS=1 ;i+;i+; dat=DS; i=8;while(i0)
17、i-; return (dat); uchar tmpread(void) 读一个字节 uchar i,j,dat; dat=0; for(i=1 ;iv=8;i+) ( DAT j=tmpreadbit(); dat=(j7)|(dat1);/犊出的数据最低住衣最前面,这样刖好一个字节 return(dat);将一个字节数据返回 void tmpwritebyte(uchar dat) /写一个字节到DS18B20里 uint i; uchar j; bit testb; for(j=1;j=8;j+) testb=dat dat=dat1; if(testb) / 写 1 部分 0)i-;
18、 else DS=0; 写0部分 i=8;while(i0)i-; DS=1; i+;i+; void tmpchange(void) /发送温度转换命令 dsreset(); delayb(1); tmpwritebyte(Oxcc); tmpwritebyte(0 x44); 初始化DS18B20 延时 /跳过序列号令令 发送温度转换令令 int tmp() ( 获得温度 float tt; uchar a,b; dsreset(); delayb(1); tmpwritebyte(Oxcc); tmpwritebyte(Oxbe); a=tmpread(); b=tmpread(); temp=b; temp=8; temp=temp|a; tt=temp*0.0625; 发送续取数据令令 连续读两个字节数 两字节合成一个整型变量。 得到真卖十进制温度值,因为DS18B20 可以精确到0.0625度,所以读回数据的最低伐代表的 temp=tt*10+0.5; 放大十信,这样做的目的将小数点后第一住 也转换为可显示数字,同时进行一个叨舍五入操作。 return temp; /返回温度值 void dis
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论