找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4451|回复: 15
收起左侧

八段数码管显示问题。

  [复制链接]
ID:129083 发表于 2016-7-21 16:45 | 显示全部楼层 |阅读模式
4、用定时器以间隔500MS在6位数码管上依次显示0、1、2、3….C、D、E、F,重复。
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define GPIO_DIG P0
unsigned char code DIG_CODE[16]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07,
                                 0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71};
uchar num,j,z;
void main()
{        num=0;j=0;
        TMOD=0x01;
        EA=1;
        ET0=1;
        TR0=1;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        while(1);
}
void TO()interrupt 1
{        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        num++;
        if(num==10)
                {        j++;
                        num=0;
                        GPIO_DIG = DIG_CODE[j];
                }
                if(j==16)
                {
                        j=0;
                }       

}
无法显示出字形,完全乱了
求大神解答

回复

使用道具 举报

ID:71099 发表于 2016-7-21 17:07 | 显示全部楼层
你这没有指定在哪一位显示(没有使能),要是真的希望快点解决问题,那就把你的原理图也PO上来,大家也容易找到问题所在
回复

使用道具 举报

ID:130196 发表于 2016-7-21 21:39 来自手机 | 显示全部楼层
没有进行位选
回复

使用道具 举报

ID:84299 发表于 2016-7-21 21:46 | 显示全部楼层
没有数码管位选吗,数码管一般都有一个引脚是位选口
回复

使用道具 举报

ID:61840 发表于 2016-7-21 22:19 | 显示全部楼层
本帖最后由 无罪之宾 于 2016-7-21 22:22 编辑

没有定位是一个方面(显示在哪一位上,如果只有一位就算了),还有共阴共阳有区别(代码)。
看你的代码,主要还是码有问题。
程序中的显示码属于共阴码,高电平点亮
回复

使用道具 举报

ID:7485 发表于 2016-7-21 23:26 | 显示全部楼层
仅仅有:GPIO_DIG = DIG_CODE[j];
在哪一位呢?

在同一个数码管上以那么快的速度变换,当然看不清楚是什么啦。
回复

使用道具 举报

ID:61390 发表于 2016-7-22 06:58 来自手机 | 显示全部楼层
语法与时序错误,第一个if语句没有包括j判断,然后应是j判断后,Io口再赋值会好点!
回复

使用道具 举报

ID:129083 发表于 2016-7-22 07:37 | 显示全部楼层
ahshmj 发表于 2016-7-21 23:26
仅仅有:GPIO_DIG = DIG_CODE[j];
在哪一位呢?

加延时也还是没用啊
回复

使用道具 举报

ID:129083 发表于 2016-7-22 07:48 | 显示全部楼层
无罪之宾 发表于 2016-7-21 22:19
没有定位是一个方面(显示在哪一位上,如果只有一位就算了),还有共阴共阳有区别(代码)。
看你的代码, ...

解决了 确实我是共阳极的 编码错了 ,但奇怪的是另一个程序如下
/*******************************************************************************
*                 
*                                        普中科技
--------------------------------------------------------------------------------
* 实 验 名                 : 静态数码管试验
* 实验说明       : 静态数码管流动显示0~9
* 连接方式       : 见连接图
* 注    意                 :
*******************************************************************************/

#include<reg51.h>

//--定义你要使用的IO口--//
#define GPIO_DIG P0

//--声明全局函数--//
void Delay10ms(unsigned int c);   //误差 0us

//--定义全局变量--//
//RAM,ROM
unsigned char code DIG_CODE[16]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07,
                                 0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71};

//0~F段码
//0:0011_1111
/*******************************************************************************
* 函 数 名         : main
* 函数功能                   : 主函数
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void main(void)
{
        unsigned char i = 0;

        while(1)
        {
                GPIO_DIG =~DIG_CODE;
                i++;
                if(i == 16)
                {
                        i = 0;
                }
                Delay10ms(50);
        }                               
}

/*******************************************************************************
* 函 数 名         : Delay10ms
* 函数功能                   : 延时函数,延时10ms
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/

void Delay10ms(unsigned int c)   //误差 0us
{
    unsigned char a, b;

        //--c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了--//
    for (;c>0;c--)
        {
                for (b=38;b>0;b--)
                {
                        for (a=130;a>0;a--);
                }         
        }      
}
他用共阴的编码也能显示字形,但原理图上显示着确实是个共阳数码管
回复

使用道具 举报

ID:57149 发表于 2016-7-22 08:07 | 显示全部楼层
P0口是段,位在哪?
回复

使用道具 举报

ID:61840 发表于 2016-11-2 22:24 | 显示全部楼层
他用了驱动模块,进行了倒相
了解芯片和看懂电路与硬件编程息息相关,这就是软硬结合的难度
回复

使用道具 举报

ID:111634 发表于 2016-11-3 10:09 | 显示全部楼层
没打好基础,怎么造出高楼?
回复

使用道具 举报

ID:145892 发表于 2016-11-3 11:17 | 显示全部楼层
主要还是码有问题。
程序中的显示码属于共阴码,高电平点亮
回复

使用道具 举报

ID:123732 发表于 2016-11-3 12:55 | 显示全部楼层
陆小贱 发表于 2016-7-22 07:48
解决了 确实我是共阳极的 编码错了 ,但奇怪的是另一个程序如下
/************************************ ...

GPIO_DIG =~DIG_CODE;这句把共阴的编码取反了,共阳数码管自然就能用了。
回复

使用道具 举报

ID:145906 发表于 2016-11-3 13:22 | 显示全部楼层
位选没写
回复

使用道具 举报

ID:145925 发表于 2016-11-3 15:24 来自手机 | 显示全部楼层
没定义位选
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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