|
发表于 2020-5-20 16:51:45
|
显示全部楼层
#include<reg52.h> #include<temp.h> typedef unsigned int u8; typedef unsigned char u16; sbit led1=P2^0; sbit smgwA=P2^2; sbit smgwB=P2^3; sbit smgwC=P2^4; u8 i; u8 DisplayData[8]; u8 code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void delay(u16 j) { while(j--); } void Time0Init() { EA=1; //总中断开关 ET0=1; //选择定时器中断 TMOD|=0x01; //定时器工作方式T0 TH0=0xFC; //定义初值 1ms TL0=0x66; TR0=1; //启动定时器T0 } void datapros(int temp) { 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; } DisplayData[1]=smgduan[temp%10000/1000]; DisplayData[2]=smgduan[temp%1000/100]|0x80; DisplayData[3]=smgduan[temp%100/10]; DisplayData[4]=smgduan[temp%10/1]; } //void smgdisplay() //{ // u8 i; // for(i=0;i<5;i++) // { // switch(i) // { case (0): // smgwA=1;smgwB=1;smgwC=1;break; // case (1): // smgwA=0;smgwB=1;smgwC=1;break; // case (2): // smgwA=1;smgwB=0;smgwC=1;break; // case (3): // smgwA=0;smgwB=0;smgwC=1;break; // case (4): // smgwA=1;smgwB=1;smgwC=0;break; // } // // P0=DisplayData[i]; // delay(100); //延时 // P0=0x00; //消隐 // // } // //} void main() { while(1) { Time0Init(); datapros(DS18B20ReadTemp()); } } void Timer0in() interrupt 1 { static j; TH0=0xFC; //定义初值 TL0=0x66; j++; if(j==5) { for(i=0;i<6;i++) { switch(i) { case (0): smgwA=1;smgwB=1;smgwC=1;break; case (1): smgwA=0;smgwB=1;smgwC=1;break; case (2): smgwA=1;smgwB=0;smgwC=1;break; case (3): smgwA=0;smgwB=0;smgwC=1;break; case (4): smgwA=1;smgwB=1;smgwC=0;break; } P0=DisplayData[i]; delay(100); //延时 P0=0x00; //消隐 } j=0; } } |
|