找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

单片机数码管显示结果不对,大神能不能帮我看看是怎么回事?

查看数: 3184 | 评论数: 6 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-9-5 19:05

正文摘要:

这个代码是改的其他人的,但是仿真的时候不知道是哪里出问题了 单片机源程序如下: #include <reg52.h> #define led P2 sbit LED1 = P3^0; sbit LED2 = P3^1; sbit LED3 = P3^2; sbit LED4 = P3^3; sbit ...

回复

ID:161164 发表于 2021-9-5 22:23
本帖最后由 lkc8210 于 2021-9-5 23:07 编辑

根据unsigned char code LedChar[] = { 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E};//数码管显示字符转换表
LedChar[0]=0xC0=B11000000
这是用于共阳数码管的转换表
所以段位是高电平开启,低电平关闭
在第66行的switch内
各个case的内容都是先关闭后开启自己的段位
于是在第一个循环之后
所有段位都长时期开启
建议在第66行的switch之前加上P3 = 0;先关闭所有段位

第37行LedBuff[0] = LedChar[sec%10];
代表将个位数放进数组0中
但第68行表示数组0会于LED1段显示
令数码管的显示方向上下反转了
需改成LedBuff[5] = LedChar[sec%10];
把个位数放到最下
ID:332444 发表于 2021-9-7 14:02
boboj 发表于 2021-9-7 11:32
我是初学的,能不能具体讲解一下,我之前一直这么干的

访问我的博客搜索51有很多数码管的例子看我怎么写有用数组?https://blog.csdn.net/xianfajushi
ID:950830 发表于 2021-9-7 11:32
xianfajushi 发表于 2021-9-6 11:08
而且数据有存储数组的必要?直接把数据处理送去显示即可,用数组没多大意义.

我是初学的,能不能具体讲解一下,我之前一直这么干的
ID:332444 发表于 2021-9-6 11:08
而且数据有存储数组的必要?直接把数据处理送去显示即可,用数组没多大意义.
ID:332444 发表于 2021-9-6 11:05
unsigned char LedBuff[6] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};//如果数组内的所有值都一样这样使用数组纯属浪费
ID:950830 发表于 2021-9-5 23:08
lkc8210 发表于 2021-9-5 22:23
根据unsigned char code LedChar[] = { 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,0x80, 0x90, 0x88 ...

非常感谢,这个乱码关键是P2最后没有置零。还指出了我位的错误

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

Powered by 单片机教程网

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