学校的课程设计,用proteus单片机和keil设计一个LED数码管显示的秒表,如下

仿真运行的时候数码管不能正常计数,应该是程序问题,帮忙看看程序代码出了哪些问题,我检查不出来了,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口那三个从上往下依次是开始暂停清零?

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答