仿真运行的时候数码管不能正常计数,应该是程序问题,帮忙看看程序代码出了哪些问题,我检查不出来了,P1口边上那三个按键分别设计成开始、暂停和清零。电路图和代码如下:
你的程序有问题,仿真图不要用三极管驱动,反而不显示。如下画法就行,那4个按键不变,没有画。
程序中的按键处理,方法不当。
先改成如下的程序,先调出能显示,然后你自己再增加按键功能。
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit START = P1 ^0;
sbit STOP = P1 ^1;
sbit RESET = P1 ^2;
sbit dp = P0 ^7;
sbit w1 = P2 ^6;
sbit w2 = P2 ^7;
uchar aa,temp,STOPFLAG,STARTFLAG,miaoshi,miaoge;
uchar code table[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//段码表错误
void display();
void delay( uint z);
void init();
void main()
{
init();
while(1)
{
display();//不用带参数
if(aa == 20)
{
aa = 0;
temp ++;
if(temp == 60)
{
temp = 0;
}
}
}
}
void delay(uint z)
{ uchar x,y;
for(x = z; x > 0; x--)
for(y = 110 ; y > 0; y --);//y不能小于110
}
void display()//不用带参数
{
miaoshi = temp/10;
miaoge = temp%10;
w1 = 1;
P0 = table[miaoshi];
delay(2);
w1 = 0;
w2 = 1;
P0 = table[miaoge];
delay(2);
w2 = 0;
}
void init()
{ TMOD = 0x01;
TH0 = (65536 - 50000)/256;
TL0 = (65536 - 50000)%256;
EA = 1;
ET0 = 1;
TR0 = 1;
}
void timer0() interrupt 1
{ TH0 = (65536 - 50000)/256;
TL0 = (65536 - 50000)%256;
aa ++;
}
追问数字能显示了,接下来如何设置按键代码。刚才忘记说了,P1口那三个从上往下依次是开始暂停清零?