发帖 |
[问答] 中颖单片机关于TM1629B的LED驱动编程,烧录成功,但是LED没有点亮,板没有问题,下附有程序代码
2018-3-22 18:19:05  1533 机关 LED 驱动 编程
收藏 0 收藏 推荐 0 推荐
分享
第一次使用中颖单片机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 18:19:05   评论 邀请回答
5个回答
最后问题还是解决了,发现硬件方面还是很重要的,每次进行烧录之前需要把IC的引脚和板子的焊点对应起来。检测到每一个端口都没问题之后,再尝试烧录,如果是我这种新手的话,最好还是先进行简单的方波等波形的检测。在确定能够检测到信号之后,再进行程序的烧录(当然程序也要确定无误才烧录,最好先检测,debug几次)
最佳答案
2018-3-22 18:19:06 评论

举报

怪了,没看出哪里不对呀。
2018-3-24 12:07:14 评论

举报

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

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

举报

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

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

评分

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

查看全部评分

2018-3-27 11:37:23 评论

举报

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

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

举报

撰写答案

你正在撰写答案

如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。

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

提问题
关闭

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

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