系統軟件總體框圖顯示子程序框圖
中斷子程序框圖
顯示電路設計分頻電路設計
信號輸入模塊電路設計
#include <reg52.h >
#include <intrins.h >
#define uint unsigned int
#define uchar unsigned char
sbit k1=P3^0;
sbit k2=P2^0;
sbit LED=P2^1;
unsigned char code dispbit[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char code dispcode[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
unsigned char count [8]={0, 0, 0, 0, 0, 0, 0, 0};
unsigned int T0count =0;
unsigned char time1tick =0;
unsigned char i =0,a=0,j=0,y=0;
unsigned int x ;
void pulse_init (void)
{
TMOD =0x16;
TH0=0x00;
TL0=0x00;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
ET0=1;
ET1=1;
EA=1;
}
void delay (uint ms)
{
unsigned char i,j;
for(i =0; i<ms; i ++)
for(j =0; j<250;j ++)
{
_nop_();
_nop_();
_nop_();
}
}
static void time0_int (void) interrupt 1 using 0
{
T0count ++;
}
void t1(void) interrupt 3 using 0
{
time1tick++;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
if (time1tick==10*a)
{
time1tick=0;
TR0=0;
TR1=0;
ET0=0;
ET1=0;
}
}
void display (void)
{
x=256*T0count+TL0;
i=7;
while(x)
{
count[ i]=x%10;
x=x/10;
i--;
}
while(i--)
{
count[ i]=10;//修改
}
for(i=0;i<8;i++)
{
if(i==7&&j==1)
{
P1=0x80;
delay(1);
}
P0=dispbit[ i];
P1=dispcode[count[ i]];
delay(1);
}
}
void main()
{
if(!k2)
{
delay(5);
if(!k2)
j=0;
else
j=1;
}
switch(j)
{
case(0):a=2; LED=1; break;
case(1):a=20; LED=0; break;
}
pulse_init();
TR1=1;
TR0=1;
do
{
display();
}while(k2);
|