四位共阳数码管数显温度计.docVIP

  • 10
  • 0
  • 约4.31千字
  • 约 5页
  • 2017-08-31 发布于天津
  • 举报
四位共阳数码管数显温度计.doc

源程序: #includeAT89X52.H #define SMG_data P0 #define SMG_bit P2 #define off 1 #define on 0 #define led P1_1 sbit DQ=P1^0;//ds18b20 端口 sfr dataled=0x80;//显示数据端口 /******************************************************************/ /* 全局变量 */ /******************************************************************/ unsigned int temp; unsigned char flag_get,count,num,minute,second; unsigned char code tab[]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; unsigned char code tab1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10 }; //7段数码管段码表共阳 unsigned char str[6]; /******************************************************************/ /* 函数声明 */ /******************************************************************/ unsigned int ReadTemperature(void); unsigned char ReadOneChar(void); /******************************************************************/ /* 主函数 */ /******************************************************************/ main() { unsigned char TempH,TempL; TMOD=0x01;//定时器设置 TH0=0xef; TL0=0xf0; IE=0x82; TR0=1; P2=0x00; count=0; while(1) { str[2]=tab[(temp%1000)/100]; //十位温度 str[3]=tab1[(temp%100)/10]; //个位温度,带小数点 str[4]=tab[temp%10];//小数 if(flag_get==1) //定时读取当前温度 { temp=ReadTemperature(); flag_get=0; } } } /******************************************************************/ /* 定时器中断 */ /******************************************************************/ void time(void) interrupt 1 using 1//中断,用于数码管扫描和温度检测间隔 { TH0=0xef;//定时器重装值 TL0=0xf0; num++; if (num==50) {num=0; flag_get=1;//标志位有效 second++; if(second=60) {second=0; minute++; } } count++; if(count==3) { P2=0x80; dataled=str[2];

文档评论(0)

1亿VIP精品文档

相关文档