我用51做的电压表有时候很正常,有时候不正常,在调节滑动变组器时候会出现不正常显示,再调节若干回又恢复正常了,不知道是为什么还请各位大侠帮忙看看。另附上正常和不正常的图片两张。
#include <AT89X52.H> unsigned char code dispbitcode[]={0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f}; unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,0x00}; unsigned char dispbuf[8]={0,0,10,10,10,10,10,10}; unsigned char dispcount; unsigned char getdata; unsigned int temp; long int i; unsigned int R1;
sbit ST=P3^0; sbit OE=P3^1; sbit EOC=P3^2; sbit CLK=P3^3;
void Delay1ms(unsigned int count) { unsigned int i,j; for(i=0;i<count;i++) for(j=0;j<120;j++); } void main(void) { ST=0; OE=0; ET0=1; ET1=1; EA=1; TMOD=0x12; TH0=216; TL0=216; TH1=(65536-5000)/256; TL1=(65536-5000)%256; TR1=1; TR0=1; ST=1; ST=0; while(1) { if(EOC==1) { OE=1; getdata=P0; OE=0; i=getdata*48; //dispbuf[5]=i/10000; //i=i%10000; dispbuf[0]=i/10000; i=i%10000; dispbuf[1]=i/1000; ST=1; //Delay1ms(1000); ST=0; //Delay1ms(100); } } } void t0(void) interrupt 1 using 0 //定时器0 中断服务 { //Delay1ms(10); CLK=~CLK; } void t1(void) interrupt 3 using 0 //定时器1 中断服务 { TH1=(65536-6000)/256; TL1=(65536-6000)%256; P2=0xff; P1=dispcode[dispbuf[dispcount]]; P2=dispbitcode[dispcount]; //if(dispcount==6) //{ // P1=P1 | 0x80; // } dispcount++; if(dispcount==2) { dispcount=0; } }
[ 本帖最后由 yangxf1217 于 2012-6-4 17:38 编辑 ]
|