以下是关于数字电压表的个程序,有几点不明白,那位指教一下,谢谢先!! 1.unsigned char dispbuf[8]={10,10,10,10,0,0,0,0}指的是什么? 2.temp=getdata*235; temp=temp/128;这两行起什么作用?为什么要这样写? 3.P1=dispcode[dispbuf][dispcount]]; P2=dispbitcode[dispcount];这两行是什么意思?特别是这两行请详细地解释一下,拜托.举个例子比如测的一个3V的电压,他的工作过程是这么样的? 问题很多,大侠也许会觉得很啰嗦,但还是请您花费点时间解答一下,体谅一下初学者吧!谢谢了!!
#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]={10,10,10,10,0,0,0,0}; unsigned char dispcount; unsigned char getdata; unsigned int temp; unsigned char i;
sbit ST=P3^0; sbit OE=P3^1; sbit EOC=P3^2; sbit CLK=P3^3;
void main(void) { ST=0; OE=0; ET0=1; ET1=1; EA=1; TMOD=0x12; TH0=216; TL0=216; TH1=(65536-4000)/256; TL1=(65536-4000)%256; TR1=1; TR0=1; ST=1; ST=0; while(1) { if(EOC==1) { OE=1; getdata=P0; OE=0; temp=getdata*235; temp=temp/128; i=5; dispbuf[0]=10; dispbuf[1]=10; dispbuf[2]=10; dispbuf[3]=10; dispbuf[4]=10; dispbuf[5]=0; dispbuf[6]=0; dispbuf[7]=0; while(temp/10) { dispbuf=temp%10; temp=temp/10; i++; } dispbuf=temp; ST=1; ST=0; } } }
void t0(void) interrupt 1 using 0 { CLK=~CLK; }
void t1(void) interrupt 3 using 0 { TH1=(65536-4000)/256; TL1=(65536-4000)%256; P1=dispcode[dispbuf][dispcount]]; P2=dispbitcode[dispcount]; if(dispcount==7) { P1=P1 | 0x80; } dispcount++; if(dispcount==8) { dispcount=0; } }
|