普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 3411|回复: 3

数码管动态显示

 关闭 [复制链接]

2

主题

3

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2017-2-20 14:27:43 | 显示全部楼层 |阅读模式
#include "reg52.h"       
typedef unsigned int u16;          //对数据类型进行声明定义
typedef unsigned char u8;

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;


u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                                        0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值
void delay(u16 i)
{
        while(i--);
}
void DigDisplay()
{
       
                 u8 i;
                 for(i=0;i<8;i++);
                {
                        switch(i)         //位选,选择点亮的数码管,
                        {
                                case(0):
                                        LSA=0;LSB=0;LSC=0; break;//显示第0位
                                case(1):
                                        LSA=1;LSB=0;LSC=0; break;//显示第1位
                                case(2):
                                        LSA=0;LSB=1;LSC=0; break;//显示第2位
                                case(3):
                                        LSA=1;LSB=1;LSC=0; break;//显示第3位
                                case(4):
                                        LSA=0;LSB=0;LSC=1; break;//显示第4位
                                case(5):
                                        LSA=1;LSB=0;LSC=1; break;//显示第5位
                                case(6):
                                        LSA=0;LSB=1;LSC=1; break;//显示第6位
                                case(7):
                                        LSA=1;LSB=1;LSC=1; break;//显示第7位
               
                        }
                P0=smgduan[i];//发送段码
                delay(100); //间隔一段时间扫描       
                P0=0x00;//消隐
       
                }
        }
void main()
{       
        while(1)
        {       
                DigDisplay();  //数码管显示函数       
        }               
}
这个程序有什么问题吗?数码管动态显示,用开发板给的程序显示01234567,这个程序编译没问题,只在最高位数码管显示一个8其他不显示,端口和接线已经用开发板程序测试过了没问题,新手求教。
回复

使用道具 举报

4

主题

42

帖子

303

积分

中级会员

Rank: 3Rank: 3

积分
303
发表于 2017-2-20 16:48:10 | 显示全部楼层
for(i=0;i<8;i++);把这句话后面的分号去掉,你在这里加分号下面语句就不执行了
回复 支持 1 反对 0

使用道具 举报

42

主题

563

帖子

1907

积分

金牌会员

Rank: 6Rank: 6

积分
1907
发表于 2017-2-20 16:42:12 | 显示全部楼层
貌似程序没什么问题
回复 支持 反对

使用道具 举报

6

主题

65

帖子

338

积分

中级会员

Rank: 3Rank: 3

积分
338
发表于 2017-2-20 21:09:15 | 显示全部楼层
本帖最后由 13660606781 于 2017-2-20 21:12 编辑

把for循环的;去掉
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-4-26 18:14 , Processed in 0.095907 second(s), 31 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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