找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1521|回复: 3
打印 上一主题 下一主题
收起左侧

单片机数码管倒计时显示乱码 求帮助

[复制链接]
跳转到指定楼层
楼主
ID:969516 发表于 2021-11-21 16:34 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uint);
sbit DULA=P2^6;                //声明U2锁存端,段选
sbit WELA=P2^7;                //位选
uchar code Tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};        //0-9段码
void main()
{
        uint k;
        while(1)
        {
                WELA=1;
//                P0=0XF8;
                                P0=0Xc7;

                WELA=0;//关闭位选
               
                DULA=1;
//                for(k=0;k<10;k++)
//                {
//                        P0=Tab[k];
//                        delay(500);
//                }        
                for(k=10;k>=0;k--)
                {
                        P0=Tab[k];
                        delay(500);
                }        
        }
}

void delay(uint xms)
{
        uint i ,j;
        for(i=xms;i>0;i--)
        {
                for(j=110;j>0;j--)
                {
                        
                }
        }
}

数码管倒计数.rar

83.89 KB, 下载次数: 2

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

地板
ID:584814 发表于 2021-11-23 09:12 | 只看该作者
你这个肯定是乱码。关键代码修改建议如下:
                for(k=10;k>=0;k--) //从10到1循环
                {
                        P0=Tab[k];   //显示循环数
                        delay(500);   //延时
//这里要加消隐P0=0x00和延时delay(??),而且和上面的延时配合得当,让视觉暂留现象出现的残影呵呵
                }        
回复

使用道具 举报

板凳
ID:844772 发表于 2021-11-23 09:05 | 只看该作者
你在用锁存器控制数码管, DULA=1; 打开锁存器送完数据之后,应该有个 DULA=0;再delay,这样应该可以防止乱码。
回复

使用道具 举报

沙发
ID:752974 发表于 2021-11-23 08:42 | 只看该作者
做任何事情都是有规律的,按着处理数据、分离个,十,百。。。位、查段吗、送显的顺序做,不会出问题的。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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