|
最近用TM1620驅(qū)動(dòng)數(shù)碼管,但是無(wú)論程序怎么寫(xiě)都沒(méi)有對(duì)應(yīng)輸出,很迷茫。我的接線(xiàn)和說(shuō)明說(shuō)上的總線(xiàn)式的接發(fā)不一樣,想問(wèn)一下是不是這個(gè)原因?qū)е碌模?br />
對(duì)應(yīng)程序如下:
/**
TM1620驅(qū)動(dòng)共陰極數(shù)碼管模塊
**/
#include <reg52.h>
#include <intrins.h>
#include "tm1620.h"
/**
宏定義命令字
**/
#define setDispMode 0x02 //驅(qū)動(dòng)6位8段數(shù)碼管,實(shí)際驅(qū)動(dòng)4位8段
#define setAddrMode 0x44 //地址增加模式為 固定模式
#define setOff 0x80 //顯示關(guān)
#define setOn 0x8f //顯示開(kāi),此時(shí)占空比最高14/16
//定義地址宏
#define addr_00H 0xc0
sbit din = P2^2;
sbit clk = P2^1;
sbit stb = P2^0;
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void sendDataToTM1620(unsigned char sdata){
//在時(shí)鐘的上升沿進(jìn)行移位寫(xiě)入,低位先傳
unsigned char a;
for(a=0;a<8;a++){
if(sdata&0x01)
din = 1;
else
din = 0;
sdata >>= 1;
clk = 0;
_nop_();
_nop_();
clk = 1;
}
}
/**
初始化串口
**/
void initialTM1620(){
unsigned char i;
stb = 1;
_nop_();
_nop_();
stb = 0;
sendDataToTM1620(setDispMode);//4位8段
stb = 1;
_nop_();
_nop_();
stb = 0;
sendDataToTM1620(setAddrMode);//固定地址
clk = 1;
//地址數(shù)據(jù)清零
for(i=0;i<12;i++){
stb = 1;
_nop_();
stb = 0;
sendDataToTM1620(0xc0 + i);//設(shè)置地址
sendDataToTM1620(0x00);
}
//設(shè)置亮度和開(kāi)關(guān)
stb = 1;
_nop_();
_nop_();
stb = 0;
sendDataToTM1620(setOn);
}
/**
display
**/
void display(){
unsigned char numArr[4],i;
numArr[0] = num/1000;
numArr[1] = num%1000/100;
numArr[2] = num%1000%100/10;
numArr[3] = num%1000%100%10;
for(i=0;i<4;i++){
stb = 1;
_nop_();
stb = 0;
sendDataToTM1620(addr_00H + i*2);
sendDataToTM1620(addr_00H);
sendDataToTM1620(0x3f);
//}
//設(shè)置亮度和開(kāi)關(guān)
stb = 1;
_nop_();
_nop_();
stb = 0;
sendDataToTM1620(setOn);
}
void main(){
initialTM1620();
while(1)
{
display();
}
}
|
-
-
|