[问答] 中颖单片机关于TM1629B的LED驱动编程,烧录成功,但是LED没有点亮,板没有问题,下附有程序代码

[复制链接]
发表于 2018-3-22 18:19:05   782 查看 5 回复 显示全部楼层 倒序浏览
分享
第一次使用中颖单片机SH79F166A关于TM1629B的LED驱动编程,烧录成功,但是LED没有点亮,板没有问题,下附有程序代码一开始由于没有设置相关的端口为输出端口,导致数据无法输出,但是在设置了相应的端口寄存器之后,还是无法点亮LED



config.h:
#ifndef        _CONFIG_H
#define        _CONFIG_H


#include<SH79F166A.h>
#include<intrins.h>
#include<stdio.h>


typedef        unsigned         char uint8;
typedef        signed                char int8;
typedef        unsigned         int         uint16;
typedef        signed                 int         int16;


sbit        DIO=P3^7;
sbit        CLK=P3^6;
sbit        STB=P3^5;
sbit        SDA=P3^4;
sbit        SCL=P3^3;


#define        dissetmode        0x03        //显示模式设置
#define        WriteDataMode_Auto        0x40        //地址自动加1
#define StartAddr        0xC0
#define        Disp_ON                0x8F        //显示开关
#define        Disp_OFF        0x87
#define        Comm_Key        0x42
#define        DataCount        16       
#define        NOP                _nop_()


void        SystemInit();
void        LEDInit();
void        InData(uint8 p);
void        SelfCheck();
void        display(uint8        Data);
void        KeyScan();
uint8        OutData();


#endif


LED.c:
#include"config.h"


uint8 code        DigitLED[]=
{
        0x3F,                //0
        0x30,                //1
        0x5B,                //2
        0x4F,                //3
        0x66,                //4
        0x6D,                //5
        0x7D,                //6
        0x07,                //7
        0x7F,                //8
        0x6F                //9
};


void        InData(uint8 p)
{
   uint8 i;
   for(i=0;i<8;i++)
   {
           CLK=0;
        if((p&0x01)==0x01)
        {
                DIO=1;
        }
        else
        {
                DIO=0;
        }
        NOP;NOP;NOP;NOP;
        CLK=1;
        p=p>>1;
        NOP;NOP;NOP;NOP;
   }
}


uint8 OutData()
{
        uint8 i;
        uint8 ReadData;
        DIO=1;
        CLK=0;
        for(i=0;i<8;i++)
        {
                CLK=1;
                ReadData=ReadData>>1;
                if(DIO==0x01)
                {
                        ReadData=ReadData|0x80;
                }else
                {
                        ReadData=ReadData&0x7F;
                }
                CLK=0;
                NOP;NOP;
        }
        DIO=1;
        return ReadData;
}


void        LEDInit()
{       
        DIO=1;
        CLK=1;
        STB=1;
        NOP;
        STB=0;
        InData(WriteDataMode_Auto);
        STB=1;
        STB=0;
        InData(StartAddr);
}


void        SelfCheck()
{
        uint8 i;
        LEDInit();
        STB=0;
        for(i=0;i<10;i++)
        {
                InData(DigitLED);       
        }
        STB=1;
        NOP;NOP;NOP;
        STB=0;
        InData(Disp_ON);
        STB=1;
}


main.c:
#include"config.h"


void        main()
{
        SystemInit();
        while(1)
        {       
                //LEDInit();
                SelfCheck();
        }       
}


void SystemInit()
{
        INSCON&=(~(1<<6));
        P3CR=0xF8;
        P3PCR=0x0;
}





押尾不忧桑 2018-3-22

最后问题还是解决了,发现硬件方面还是很重要的,每次进行烧录之前需要把IC的引脚和板子的焊点对应起来。检测到每一个端口都没问题之后,再尝试烧录,如果是我这种新手的话,最好还是先进行简单的方波等波形的检测。在确定能够检测到信号之后,再进行程序的烧录(当然程序也要确定无误才烧录,最好先检测,debug几次)

标签:机关 LED 驱动 编程
发表于 2018-3-22 18:19:06    楼主|
最后问题还是解决了,发现硬件方面还是很重要的,每次进行烧录之前需要把IC的引脚和板子的焊点对应起来。检测到每一个端口都没问题之后,再尝试烧录,如果是我这种新手的话,最好还是先进行简单的方波等波形的检测。在确定能够检测到信号之后,再进行程序的烧录(当然程序也要确定无误才烧录,最好先检测,debug几次)
回复

点赞 举报

高级工程师

发表于 2018-3-24 12:07:14  
怪了,没看出哪里不对呀。
回复

点赞 举报

发表于 2018-3-26 15:43:31    楼主|
houjue 发表于 2018-3-24 12:07
怪了,没看出哪里不对呀。

从头理了一遍,把电路板引脚什么的都测了一遍,发现了一些问题,IC有些引脚没有导通。后面又用定时器分频的方式让输出端口显示正弦波,发现一切正常,难道是TM1629B的时序有问题?这时序看得不是很懂,也没感觉哪里有问题。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

点赞 举报

高级工程师

发表于 2018-3-27 11:37:23  
押尾不忧桑 发表于 2018-3-26 15:43
从头理了一遍,把电路板引脚什么的都测了一遍,发现了一些问题,IC有些引脚没有导通。后面又用定时器分频的方式让输出端口显示正弦波,发现一切正常,难道是TM1629B的时序有问题?这时序看得不是很懂,也没感觉哪里有问题。。 ...

那会不会是【虚焊】引起的呢?

评分

参与人数 1积分 +5 收起 理由
押尾不忧桑 + 5

查看全部评分

回复

点赞 举报

发表于 2018-3-27 17:11:39    楼主|
houjue 发表于 2018-3-27 11:37
那会不会是【虚焊】引起的呢?

也不是,我把IC和线路都重新检查了一遍,一个个脚地检测了一遍,把不通的,感觉有问题的都重新焊了一遍,最后再尝试输出波形,三条IO口都检测出波形之后,再把程序烧录进去,就好了。。。
回复

点赞 举报

高级模式
您需要登录后才可以回帖 登录 | 注册

关闭

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

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

推荐专区

技术干货集中营

专家问答

方案交易

用户帮助┃咨询与建议┃版主议事

工程师杂谈

项目|工程师创意

招聘|求职}工程师职场

论坛电子赛事

社区活动专版

发烧友活动

-

嵌入式论坛

ARM技术论坛

Android论坛

Linux论坛

单片机/MCU论坛

MSP430技术论坛

FPGA|CPLD|ASIC论坛

STM32/STM8技术论坛

NXP MCU 技术论坛

PIC单片机论坛

DSP论坛

瑞萨单片机论坛

嵌入式系统论坛

-

电源技术论坛

电源技术论坛

无线充电技术

-

硬件设计论坛

PCB设计论坛

电路设计论坛

电子元器件论坛

控制|传感

总线技术|接口技术

-

测试测量论坛

LabVIEW论坛

Matlab论坛

测试测量技术专区

仪器仪表技术专区

-

EDA设计论坛

multisim论坛

PADS技术论坛

Protel|AD|DXP论坛

Allegro论坛

proteus论坛|仿真论坛

EasyEDA-中国人自已的EDA工具

Orcad论坛

-

综合技术与应用

电机控制

智能电网

光电及显示

工程资源中心

汽车电子技术论坛

医疗电子论坛

-

开源硬件

-

无线通信论坛

无线通信技术专区

天线|RF射频|微波|雷达技术

-

IC设计论坛

芯片测试与失效分析

Mixed Signal/SOC[数模混合芯片设计]

Analog/RF IC设计

设计与制造封装测试

-

厂商专区

TI论坛

TI Deyisupport社区

-

检测技术与质量

电磁兼容(EMC)设计与整改

安规知识论坛

检测与认证

-

消费电子论坛

手机技术论坛

平板电脑/mid论坛

音视/视频/机顶盒论坛

-

电子论坛综合区

聚丰众筹官方社区

新人报道区

聚丰供应链

-

论坛服务区

-

供求信息发布

供需广告

电子展览展会专区

芯片求购|供应发布区