logo资料库

多点温度采集原理图与C语言程序.doc

第1页 / 共20页
第2页 / 共20页
第3页 / 共20页
第4页 / 共20页
第5页 / 共20页
第6页 / 共20页
第7页 / 共20页
第8页 / 共20页
资料共20页,剩余部分请下载后查看
主要程序,已经实验通过 #include #define uchar unsigned char #define uint unsigned int P 1 . 0 1 P 1 . 1 2 P 1 . 2 3 P 1 . 3 4 P 1 . 4 5 P 1 . 5 ( M O S I ) 6 P 1 . 6 ( M O S 0 ) 7 P 1 . 7 ( S C K ) 8 R S T 9 P 3 . 0 1 0 P 3 . 1 ( T X D ) 1 1 P 3 . 2 ( I N T 0 ) 1 2 P 3 . 3 ( I N T 1 ) 1 3 P 3 . 4 ( T 0 ) 1 4 P 3 . 5 ( T 1 ) 1 5 P 3 . 6 ( W R ) 1 6 P 3 . 7 ( R D ) 1 7 X T A L 2 1 8 X T A L 1 1 9 G N D 2 0 P 2 . 0 2 1 P 2 . 1 2 2 P 2 . 2 2 3 P 2 . 3 2 4 P 2 . 4 2 5 P 2 . 5 2 6 P 2 . 6 2 7 P 2 . 7 2 8 P S E N 2 9 A L E / P R O G 3 0 E A / V P P 3 1 P 0 . 7 3 2 P 0 . 6 3 3 P 0 . 5 3 4 P 0 . 4 3 5 P 0 . 3 3 6 P 0 . 2 3 7 P 0 . 1 3 8 P 0 . 0 3 9 V C C 4 0 U 1 S T C 8 9 C 5 X - 8 9 S 5 X V C C C 1 1 0 u f / 2 5 v K 1 R E S T R 1 1 0 K C 2 3 0 P C 3 3 0 P 1 2 Z 1 1 1 . 0 5 9 2 M H z P 3 . 3 P 3 . 4 P 3 . 5 P 3 . 7 P 0 . 0 P 0 . 1 P 0 . 2 P 0 . 3 P 0 . 4 P 0 . 5 P 0 . 6 P 0 . 7 P 2 . 0 P 2 . 1 P 2 . 2 P 2 . 3 V C C 1 2 3 4 5 6 7 8 9 R 1 R 2 R 3 R 4 R 5 R 6 R 7 R 0 R 2 1 K * 8 V C C P 0 . 0 P 0 . 1 P 0 . 2 P 0 . 3 P 0 . 4 P 0 . 5 P 0 . 6 P 0 . 7 K 2 K 3 K 4 P 3 . 3 P 3 . 4 P 3 . 5 G N D 1 D Q 2 V C C 3 1 8 B 2 0 U 2 1 8 B 2 0 P 3 . 7 R 3 5 0 0 R V C C 1 G N D 2 P W 1 V C C a a b b c c d d e e f f g g d p d p v 1 v 2 v 3 v 4 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 L E D 1 L E D - 4 - 8 R 1 3 5 1 0 R R 1 4 5 1 0 R R 1 5 5 1 0 R R 1 6 5 1 0 R R 1 7 5 1 0 R R 1 8 5 1 0 R R 1 9 5 1 0 R R 2 0 5 1 0 R Q 1 9 0 1 5 Q 2 9 0 1 5 Q 3 9 0 1 5 Q 4 9 0 1 5 1 K R 9 1 K R 1 0 1 K R 1 1 1 K R 1 2 V C C P 2 . 0 P 2 . 1 P 2 . 2 P 2 . 3 P 0 . 0 P 0 . 1 P 0 . 2 P 0 . 3 P 0 . 4 P 0 . 5 P 0 . 6 P 0 . 7 A L E R S T G N D 1 D Q 2 V C C 3 1 8 B 2 0 U 3 1 8 B 2 0 G N D 1 D Q 2 V C C 3 1 8 B 2 0 U 4 1 8 B 2 0 V C C 《 数 码 管 显 示 模 块 》 《 单 片 机 最 小 系 统 模 块 》 《 键 盘 模 块 》 《 多 个 1 8 B 2 0 模 块 》 《 电 源 模 块 》
sbit DQ=P3^7; sbit D1=P2^3; sbit D2=P2^2; sbit D3=P2^1; sbit D4=P2^0; sbit key1=P3^3; sbit key2=P3^4; sbit key3=P3^5; uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; uchar code tabnum1[]={0x28,0x5B,0x2E,0xC7,0x02,0x00,0x00,0x62}; uchar code tabnum2[]={0x28,0x38,0x0E,0x3B,0x02,0x00,0x00,0x63}; uchar code tabnum3[]={0x28,0x39,0xF5,0x3A,0x02,0x00,0x00,0x0D};
uint tvalue;//温度值 uchar tflag,flagdat,t,hh1;//温度正负标志 uchar tt,kk,dd; void delay(uint z) { } { } uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); void delay_18B20(unsigned int i)//延时 1 微秒 while(i--);
void ds1820rst()//ds1820 复位* { unsigned char x=0; DQ = 1; //DQ 复位 delay_18B20(4); //延时 DQ = 0; //DQ 拉低 delay_18B20(100); //精确延时大于 480us DQ = 1; //拉高 delay_18B20(40); } unsigned char ds1820rd()//读数据 { unsigned char i=0; unsigned char dat = 0;
for (i=8;i>0;i--) { DQ = 0; //给脉冲信号 dat>>=1; DQ = 1; //给脉冲信号 if(DQ) dat|=0x80; delay_18B20(10); } } return(dat); void ds1820wr(uchar wdata)//写数据 {unsigned char i=0; for (i=8; i>0; i--)
{ DQ = 0; DQ = wdata&0x01; delay_18B20(10); DQ = 1; wdata>>=1; } } void changds18b20_1(uchar a[8]) //往 18B20 写序列号 { ds1820rst(); delay(1);
ds1820wr(0x55); //285B 2E C7 02 00 00 62 delay(1); ds1820wr(a[0]); ds1820wr(a[1]); ds1820wr(a[2]); ds1820wr(a[3]); ds1820wr(a[4]); ds1820wr(a[5]); ds1820wr(a[6]); ds1820wr(a[7]); } read_temp1()//读取温度值并转换
{uchar a,b; ds1820rst(); changds18b20_1(tabnum1); //写序列号 ds1820wr(0x44);//启动温度转换 ds1820rst(); changds18b20_1(tabnum1); ds1820wr(0xbe);//读取温度 a=ds1820rd(); b=ds1820rd(); tvalue=b; tvalue<<=8; tvalue=tvalue|a; if(tvalue<0x0fff)
分享到:
收藏