数字钟程序

时间:2017-11-28 11:33:34
【文件属性】:

文件名称:数字钟程序

文件大小:4KB

文件格式:C

更新时间:2017-11-28 11:33:34

程序

#include<reg52 h> #define uchar unsigned char #define uint unsigned int int a b c temp; sbit DS P3^3; 18B20端口设置 uchar code table[] { 0x3F "0" 0x06 "1" 0x5B "2" 0x4F "3" 0x66 "4" 0x6D "5" 0x7D "6" 0x07 "7" 0x7F "8" 0x6F "9" }; void dsdelay int num 延时10约为53us 时钟为11 0592M { while num ; } void delay uint z 延时函数 { uint x y; for x z;x>0;x for y 110;y>0;y ; } int init 18B20初始化 { uchar x 0; DS 1; dsdelay 8 ; 延时44us DS 0; dsdelay 110 ; 延时约500us DS 1; dsdelay 14 ; 稍微延时 读取x x DS; dsdelay 20 ; } uchar readchar 从18B20中读取1个字节 { uchar i 0; uchar dat; for i 8;i>0;i { DS 0; dat>> 1; DS 1; if DS dat| 0x80; dsdelay 4 ; } return dat ; } void writechar uchar dat 向18B20中写数据 { uchar i 0; for i 8;i>0;i { DS 0; DS dat&0x1; dsdelay 5 ; DS 1; dat>> 1; } } uint readtemp 读取温度值 { uchar a; uchar b; uint t; float tt; a 0; b 0; t 0; tt 0; init ; writechar 0xcc ; 跳过读序号列号的操作 writechar 0x44 ; 启动温度转换 init ; writechar 0xcc ; 跳过读序号列号的操作 writechar 0xbe ; 读取温度寄存器 a readchar ; 读高8位 b readchar ; 读高8位 t b; t<< 8; t t|a; 两字节合成一个整型变量 tt t 0 0625; 得到真实十进制温度值 因为DS18B20可以精确到0 0625度 所以读回数据的最低位代表的是0 0625度 t tt 10+0 5; 放大十倍 这样做的目的将小数点后第一位也转换为可显示数字 同时进行一个四舍五入操作 return t ; } void display 数码管显示温度值 { P1 0xf0; 位选 P2 table[a]; 段选 delay 3 ; P1 0xf1; P2 table[b]; delay 3 ; P1 0xf2; P2 0x08; delay 3 ; P1 0xf3; P2 table[c]; } void main 主函数 { int m; m 0; while 1 { if m 0 消除85现象 { delay 500 ; temp readtemp ; delay 500 ; delay 200 ; m 1; } else { temp readtemp ; a temp 100; b temp0 10; c temp; display ; } } }">#include<reg52 h> #define uchar unsigned char #define uint unsigned int int a b c temp; sbit DS P3^3; 18B20端口设置 uchar code table[] { 0x3F "0" 0x06 "1" 0x5B "2" 0x4F " [更多]


网友评论

相关文章