找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1816|回复: 7
收起左侧

如何消除Proteus仿真中数码管中开始显示的8.

[复制链接]
ID:1020806 发表于 2022-5-9 10:57 | 显示全部楼层 |阅读模式
大家好!请看一下这程序和仿真,要实现的是按下K1,就在左一的数码管显3,但按下仿真开始,就出现了右一的数码管显示8.,再按k1才显示3.如何消除按下仿真开始显示8.请指导和修正一下,谢谢!
独立按键显示3仿真.jpg

以下是单片机程序
#include "reg52.h"                         //此文件中定义了单片机的一些特殊功能寄存器

typedef unsigned int u16;          //对数据类型进行声明定义
typedef unsigned char u8;

//138译码器管脚接单片机口
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;

//4个独立按键定义单片机口
sbit k1=P3^0;
sbit k2=P3^1;
sbit k3=P3^2;
sbit k4=P3^3;

//共阴极数码管表码
u8 code smgduan[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                                  0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值

//延时函数,i=1时,大约延时10us
void delay(u16 i)
{
        while(i--);        
}

//数码管左一显示3
void xiangsi1()
{        
        P0 = 0xff;
        LSA=0;LSB=0;LSC=0;        //控制138译码器的Y0输出低电平
        P0=smgduan[3];
       delay(100); //间隔一段时间扫描      
       P0=0x00;//消隐
}


void keypros()//检测按键K1是否按下
{

        if(k1==0)                  //检测按键K1是否按下
        {        
                delay(1000);   //消除抖动 一般大约10ms
                if(k1==0)         //再次判断按键是否按下
                {
                        xiangsi1();        //显示数字3
                }
                while(!k1);         //检测按键是否松开
        }               
}



void main()
{        
    P0 = 0xff;        
        while(1)
        {
         keypros();
        }

}

独立按键显示3(程序).rar

16.34 KB, 下载次数: 2

独立按键显示3(仿真).rar

105.12 KB, 下载次数: 2

回复

使用道具 举报

ID:213173 发表于 2022-5-9 12:25 | 显示全部楼层
void main()
{        
        P0 = 0x3f;//显示0
//        P0 = 0x00;//不显示
        while(1)
        {
                keypros();
        }
}
回复

使用道具 举报

ID:1012735 发表于 2022-5-9 12:47 | 显示全部楼层
Y7置高电平
回复

使用道具 举报

ID:121859 发表于 2022-5-9 13:06 | 显示全部楼层
主程序的开始做一下数据初始化,就可以避免了。
回复

使用道具 举报

ID:336472 发表于 2022-5-9 13:13 | 显示全部楼层
不要给端口悬空即可
回复

使用道具 举报

ID:123289 发表于 2022-5-9 14:08 | 显示全部楼层
自己单步调试可以进步并理解。
回复

使用道具 举报

ID:1020806 发表于 2022-5-9 17:07 | 显示全部楼层
非常感谢大家的回复,学习中。
回复

使用道具 举报

ID:824490 发表于 2022-5-10 16:48 | 显示全部楼层
你的573锁存器不是这么用的!LE和OE必需要有一个是受控的,你这里都不受控,那573有何意义?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表