数码管不亮为什么?程序如下 求大神指导
/***************************************************/ #include<reg51.h> #include<intrins.h> #define Disdata P0 #define uchar unsigned char #define uint unsigned int sbit b20=P3^7; sbit p20=P2^0; sbit p21=P2^1; sbit p22=P2^2; sbit p23=P2^3; sbit p24=P2^4; sbit p25=P2^5; sbit p26=P2^6; sbit p27=P2^7; sbit beet=P1^5; sbit heat=P1^0; sbit p11=P1^1; sbit qxjr=P1^2; sbit add=P1^3; sbit p14=P1^4; sbit qxss=P1^6; uchar a=35; uint temp,b,wd,h; bit lock0=1;//加热标志位 bitlock1=1; uchar codedis[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf}; uchar datatemp_data[3]={0x00,0x000,0x00}; uintkey_[2]={5,0}; /*****************11us延时函数*************************/ voiddelay(uint t) { for (;t>0;t--); } /******************1ms延时函数*****************************/ voiddelay1ms(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } /****************发音函数***************************/ voidplay(uchar t) { uchar i; for(i=0;i<1000;i++) { beet=~beet; delay1ms(t); } beet=0; } /****************显示扫描函数***************************/ scan() { uint k=0; Disdata=~dis[temp_data[k]]; p26=0; p27=1; delay1ms(5); k++; Disdata=~dis[temp_data[k]]; p26=1; p27=0; delay1ms(5); p26=1; p27=1; } /*********************预置温度******************************/ voidyzwd(uint b) { Disdata=~dis[b%10]; p26=0; p27=1; delay1ms(5); Disdata=~dis[b/10]; p26=1; p27=0; delay1ms(5); p26=1; p27=1; } /****************DS18B20复位函数************************/ ow_reset(void) { char presence=1; while(presence) { while(presence) { b20=1;_nop_();_nop_(); b20=0; delay(50); b20=1; delay(6); presence=b20; } delay(45); presence=~b20; } b20=1; } /****************DS18B20写命令函数************************/ voidwrite_byte(uchar val) { uchar i; for(i=8;i>0;i--) { b20=1;_nop_();_nop_(); b20=0;_nop_();_nop_();_nop_();_nop_(); b20=val&0x01; delay(6); val=val/2; } b20=1; delay(1); } // /****************DS18B20读1字节函数************************/ ucharread_byte(void) { uchar i; ucharvalue=0; for(i=8;i>0;i--) { b20=1;_nop_();_nop_(); value>>=1; b20=0;_nop_();_nop_();_nop_();_nop_(); b20=1;_nop_();_nop_();_nop_();_nop_(); if(b20)value|=0x80; delay(6); } b20=1; return(value); } /****************读出温度函数************************/ uintread_temp() { ow_reset(); delay(200); write_byte(0xcc); write_byte(0x44); ow_reset(); delay(1); write_byte(0xcc); write_byte(0xbe); temp_data[0]=read_byte(); temp_data[1]=read_byte(); temp=temp_data[1]; temp<<=8; temp=temp|temp_data[0]; returntemp; } /****************温度数据处理函数************************/ work_temp(uinttem) { temp_data[2]=tem>>4; temp_data[0]=temp_data[2]%10; temp_data[1]=temp_data[2]/10; } /****************加热子函数************************/ voidheating(void) { if(heat==0) {lock0=0;} if(lock0==0) {p11=0;} else {p11=1;} work_temp(read_temp()); wd=temp_data[1]*10+temp_data[0]; if(wd>=a||qxjr==0) {lock0=1;p11=1;} } /****************上水子函数************************/ voidadding(void) { if(add==0) {lock1=0;} if(lock1==0) {p14=0;} else {p14=1;} if(p20==1||qxss==0) {lock1=1;p14=1;} } /****************主函数************************/ void main() { P0=0xff; p26=1; p27=1; EX0=1; IT0=1; EX1=1; IT1=1; EA=1; ow_reset(); write_byte(0xcc); write_byte(0x44); while(1) { heating(); adding(); work_temp(read_temp()); scan(); wd=temp_data[1]*10+temp_data[0]; if(wd<80) { while(p22==0) { p14=0; delay1ms(1); work_temp(read_temp()); scan(); } } if(wd>=80) { while(p24==1) { p14=0; work_temp(read_temp()); scan(); } while(p24==0) { play(2); p14=1; work_temp(read_temp()); scan(); } } } } /********************外部中断0(设定温度+)**************************/ voidwdxg(void) interrupt 0 { uchari; a=a+1; delay1ms(50); if(a>99) {a=30;} for(i=0;i<100;i++) {yzwd(a);} } /********************外部中断1(设定温度-)**************************/ voidwdxg1(void) interrupt 2 { uchari; a=a-1; delay1ms(50); if(a<30) {a=99;} for(i=0;i<100;i++) {yzwd(a);} } /********************结束**************************/
|