|
lcd1602显示,只能显示正温度
单片机程序源码:
- #include<reg52.h>
- #include "Cry1602.h"
- #include "Cry1602.c"
- #define out P1
- #define uint unsigned int
- #define uchar unsigned char
- #define set_DQ P3|=0x80;
- #define clr_DQ P3&=~0x80;
- uchar i=0,t=0,j;
- uchar count[2]=0;
- void delay(uint z)
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=114;y>0;y--);
- }
- void tmp_reset(void) //send tmp_reset and initialization command 18B20复位,初始化函数
- {
- uint i;
- clr_DQ;
- for(i=103;i>0;i--);
- set_DQ;
- for(i=4;i>0;i--);
- }
- bit tmp_read1bit(void)
- {
- uint i;
- bit dat;
- clr_DQ;i++;
- set_DQ;i++;i++;
- dat=P3&0x80;
- for(i=8;i>0;i--);
- return (dat);
- }
- uchar tmp_readbyte(void) //read a byte date 读1字节函数
- {
- uchar i,j,dat;
- dat=0;
- for(i=1;i<=8;i++)
- {
- j=tmp_read1bit();
- dat=(j<<7)|(dat>>1); //读出的数据最低位在最前面,这样刚好一个字节在DAT里
- }
- return(dat);
- }
- void tmp_writebyte(uchar dat) //write a byte to ds18b20 向1820写一个字节数据函数
- {
- uint i;
- uchar j;
- bit testb;
- for(j=1;j<=8;j++)
- {
- testb=dat&0x01;
- dat=dat>>1;
- if(testb) //write 1
- {
- clr_DQ;
- i++;i++;
- set_DQ;
- for(i=8;i>0;i--);
- }
- else
- {
- clr_DQ; //write 0
- for(i=8;i>0;i--);
- set_DQ;
- i++;i++;
- }
- }
- }
- uint get_tmp() //get the temperature 读取寄存器中存储的温度数据
- {
- float tt;
- uchar a,b;
- uint temp;
- tmp_reset();
- delay(1);
- tmp_writebyte(0xcc); // address all drivers on bus 写跳过读ROM指令
- tmp_writebyte(0x44);
- tmp_reset();
- delay(1);
- tmp_writebyte(0xcc);
- tmp_writebyte(0xbe);
- a=tmp_readbyte(); //读低8位
- b=tmp_readbyte(); //读高8位
- temp=b;
- temp<<=8; //two byte compose a int variable 两个字节组合为1个字
- temp=temp|a;
- tt=temp*0.0625; //温度在寄存器中是12位,分辨率是0.0625
- temp=(tt*10+0.5)/10; //乘10表示小数点后只取1位,加0.5是四折五入
- return temp;
- }
- void timer_init();
- void main()
- {
- timer_init();
- LcdReset();
- DispStr(0x80,0,"welcom!");
- while(1)
- {
- temp=get_tmp();
- for(j=0;j<2;j++)
- {
- count[1-j]=temp%10+0x30;
- temp/=10;
- }
- DispStr(0x85,1,count);
- }
- }
- void timer_init()
- {
- EA=1;
- ET1=1;
- TR1=1;
- TMOD=0x10;
- TH1=(65536-10000)/256;
- TL1=(65536-10000)%256;
- }
复制代码
|
-
-
温度显示.rar
77.91 KB, 下载次数: 32, 下载积分: 黑币 -5
评分
-
查看全部评分
|