搜索
bottom↓
回复: 9

CH451驱动8个数码管,只能显示8个一样的怎么回事啊?

[复制链接]

出0入0汤圆

发表于 2014-9-19 10:35:11 | 显示全部楼层 |阅读模式
[ 本帖最后由 Doci 于 2014-9-19 11:15 编辑 ]\n\n[ 本帖最后由 Doci 于 2014-9-19 11:05 编辑 ]\n\nCH451驱动8个数码管,只能显示8个一样的怎么回事啊?显示01234567时不正确,数码管段全亮,还不均匀。

电路图没有什么就是 451的段驱动按顺序接的数码管的段,位选按顺序接的各个数码管的公共极

见下面while(1)。
#include<reg52.h>
#define uhar unsigned char
#define uint unsigned int
#define CH451_DIG0 0x0800                      //数码管位0显示
#define CH451_DIG1 0x0900                      //数码管位1显示
#define CH451_DIG2 0x0a00                      //数码管位2显示
#define CH451_DIG3 0x0b00                      //数码管位3显示
#define CH451_DIG4 0x0c00                      //数码管位4显示
#define CH451_DIG5 0x0d00                      //数码管位5显示
#define CH451_DIG6 0x0e00                      //数码管位6显示
#define CH451_DIG7 0x0f00                      //数码管位7显示
sbit ch451_load=P1^5;
sbit ch451_din=P1^6;
sbit ch451_dclk=P1^7;
sbit ch451_dout=P3^3;
unsigned char code NUMTAB[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
unsigned int code CH451_DIG[8]={0x0800,0x0900,0x0A00,0x0B00,0x0C00,0x0D00,0x0E00,0x0F00};
void led_shift();
void delay(uint z);
/********************************************************************

函 数 名:ch451_init()
功    能:对ch451芯片进行初始化

********************************************************************/
void ch451_init()
{
ch451_din=0;                                            //先低后高,选择4线输入
ch451_din=1;
ch451_load=1;
ch451_dclk=1;
}

/********************************************************************

函 数 名:ch451_write()
功    能:把12位的指令或数据写入ch451
说    明:12位数据或指令的写入顺序是低位         
********************************************************************/
void ch451_write(uint command)
{
unsigned char i;
ch451_load=0;                                               //命令开始
for(i=0;i<12;i++)
{                                                                     //送入12位数据,低位在前
  ch451_din=command&1;
  ch451_dclk=0;                                          
  command>>=1;
  ch451_dclk=1;                                              //上升沿有效
}                                                                  
ch451_load=1;                                              //加载数据
}

void main()
{
unsigned char i,j;
ch451_init();
ch451_write(0x201);
ch451_write(0x403);                                    
ch451_write(0x500);                                   

while(1)
{
for(j=0;j<16;j++)
        {
                for(i=0;i<8;i++)
                     {
                 ch451_write(CH451_DIG[i]|NUMTAB[j]);//此处NUMTAB[j]改为NUMTAB[i]就显示不对了//////////////////////////////////////////
                 }
       delay(920);
        }               

}
}

/********************************************************************
? ? ?:delay()
?    ?:?????         
********************************************************************/

void delay(uint z)
{
uint x,y;
for(x=100;x>0;x--)
  for(y=z;y>0;y--);
}

已找到问题。焊板子的把数码管焊错了!

阿莫论坛20周年了!感谢大家的支持与爱护!!

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入0汤圆

发表于 2014-9-19 10:49:18 | 显示全部楼层
要动态扫,改变位选

出0入0汤圆

发表于 2014-9-19 10:49:35 | 显示全部楼层
建议楼主先把原图发上来

出0入0汤圆

发表于 2014-9-19 10:52:43 | 显示全部楼层
动图,位选,看原理图才知道程序

出0入0汤圆

发表于 2014-9-19 10:56:09 | 显示全部楼层
别听2楼忽悠,这是驱动数码管的芯片,不需要单片机动态扫描,只要送显示数据就可以了,
目测程序不完整,ch451_write(CH451_DIG[i]|NUMTAB[j]);这样也能编译通过?NUMTAB[]内容呢?

出0入0汤圆

 楼主| 发表于 2014-9-19 11:01:44 | 显示全部楼层
little_Monkey 发表于 2014-9-19 10:56
别听2楼忽悠,这是驱动数码管的芯片,不需要单片机动态扫描,只要送显示数据就可以了,
目测程序不完整,ch ...

不好意思拷错了

出0入0汤圆

 楼主| 发表于 2014-9-19 11:03:59 | 显示全部楼层
本帖最后由 Doci 于 2014-9-19 11:14 编辑
haibaogk 发表于 2014-9-19 10:52
动图,位选,看原理图才知道程序


电路图没有什么就是 451的段驱动按顺序接的数码管的短,位选按顺序接的各个数码管的公共极



晕!他们焊板子的把数码管焊错了!

出0入0汤圆

发表于 2014-9-19 11:05:42 | 显示全部楼层
跟max7219差不多吧,设置好寄存器直接送需要显示的位跟数据就行了吧

出0入0汤圆

发表于 2014-9-24 08:49:32 | 显示全部楼层
手底下最好备个万用表

出0入0汤圆

发表于 2014-9-24 10:02:12 | 显示全部楼层
这个网上程序蛮多的吧,看看别人原理图如何,程序怎么写
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-3 00:48

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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