单片机51C,主程序为数码管显示,使用外部中断0,每按键一次数字加一

单片机51C,主程序为数码管显示,使用外部中断0,每按键一次数字加一,
串口每隔200ms左右(不要求很精确)循环依次输出1-100的数字,电路图如上。

第1个回答  2013-08-03
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar count;
uint disnum;
sbit dula=P2^6;
sbit wela=P2^7;
uchar code tabledu[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};
display(uchar,uchar,uchar);
delay(uchar);
void main()
{
EA=1;
ET1=1;
TMOD=0x10;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
TR1=1;
while(1)
{
if(count==4)
{
count=0;
if(disnum==100)
disnum=0;
disnum++;
}
display(disnum/100,disnum%100/10,disnum%10);
}
}

void tim1() interrupt 3 using 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
count++;
}

display(uchar bai,uchar shi,uchar ge)
{

P0=tabledu[bai];
dula=1;
dula=0;
P0=0x04;
wela=1;
wela=0;
delay(1);

P0=tabledu[shi];
dula=1;
dula=0;
P0=0x02;
wela=1;
wela=0;
delay(1);

P0=tabledu[ge];
dula=1;
dula=0;
P0=0x01;
wela=1;
wela=0;
delay(1);
}
第2个回答  2013-08-03
自己可以先试试怎么写。写错了大不了改改,不会再问。本回答被提问者采纳
相似回答