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

仿真运行的时候数码管不能正常计数,应该是程序问题,帮忙看看程序代码出了哪些问题,我检查不出来了,P1口边上那三个按键分别设计成开始、暂停和清零。电路图和代码如下:... 仿真运行的时候数码管不能正常计数,应该是程序问题,帮忙看看程序代码出了哪些问题,我检查不出来了,P1口边上那三个按键分别设计成开始、暂停和清零。电路图和代码如下: 展开
 我来答
lycdl
高粉答主

2019-06-09 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2万
采纳率:94%
帮助的人:4934万
展开全部

你的程序有问题,仿真图不要用三极管驱动,反而不显示。如下画法就行,那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口那三个从上往下依次是开始暂停清零?
科通技术股份
2023-08-29 广告
作为深圳市科通技术股份有限公司的工作人员,我建议使用专业的PCB仿真软件,这样可以更好地模拟和验证PCB设计的功能和性能。在选择PCB仿真软件时,需要考虑以下因素:1. 软件功能和性能:选择功能强大、性能稳定的软件可以更好地满足仿真需求。2... 点击进入详情页
本回答由科通技术股份提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式