1、typedef unsigned int u16; //对数据类型进行声明定义typedef unsigned char u8;sbit LSA=P2^2;sbit LSB=P2^3;sbit LSC=P2^4;
2、char num=0;u8 DisplayData[8];u8 code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};u8 CNCHAR[]=" 摄氏度 ";void delay(u16 i){ while(i--); }void datapros(int temp) {
3、 float tp; if(temp< 0) //当温度值为负数 { DisplayData[0] = 0x40; temp=temp-1; temp=~temp; tp=temp; temp=tp*0.0625*100+0.5; } else { DisplayData[0] = 0x00; tp=temp; temp=tp*0.0625*100+0.5; }
4、DisplayData[1] = smgduan[temp / 10000]; DisplayData[2] = smgduan[te罪焐芡拂mp % 10000 / 1000]; DisplayData[3] = smgduan[temp % 1000 / 100] | 0x80; DisplayData[4] = smgduan[temp % 100 / 10]; DisplayData[5] = smgduan[temp % 10];}void DigDisplay(){ u8 i; for(i=0;i<6;i++) { switch(i) //位选,选择点亮的数码管, { case(0): LSA=0;LSB=0;LSC=0; break;//显示第0位 case(1): LSA=1;LSB=0;LSC=0; break;//显示第1位 case(2): LSA=0;LSB=1;LSC=0; break;//显示第2位 case(3): LSA=1;LSB=1;LSC=0; break;//显示第3位 case(4): LSA=0;LSB=0;LSC=1; break;//显示第4位 case(5): LSA=1;LSB=0;LSC=1; break;//显示第5位 } P0=DisplayData[5-i];//发送数据 delay(100); //间隔一段时间扫描 P0=0x00;//消隐 } }// LCD显示读取到的温度void LcdDisplay(int temp) //lcd显示{
5、 unsigned char i, datas[] = {0, 0, 0, 0, 0}; //定义数组 float tp; if(temp< 0) //当温度值为负数 { LcdWriteCom(0x80); //写地址 80表示初始地址 SBUF='-'; //将接收到的数据放入到发送寄存器 while(!TI); //等待发送数据完成 TI=0; //清除发送完成标志位 LcdWriteData('-'); //显示负
6、 //因为读取的温度是实际温度的补码,所以减1,再取反求出原码 temp=temp-1; temp=~temp; tp=temp; temp=tp*0.0625*100+0.5; //留两个小数点就*100,+0.5是四舍五入,因为C语言浮点数转换为整型的时候把小数点 //后面的数自动去掉,不管是否大于0.5,而+0.5之后大于0.5的就是进1了,小于0.5的就 //算由?.5,还是在小数点后面。