|
|
本人最近在使用STC8H1K08芯片驅動TM1652,晶振是外部 12M
主要核心的驅動邏輯就是使用一根TX發數據給TM1652,不需要有數據回傳,一直發就可以。但是由于最初設計時沒有使用tx線,所以采用了io模擬tx的方式,19200的波特率用延時換算是52us,52us由stc-isp生成,目前遇到的問題是為什么這個延時不能正常點亮?
#include "main.h"
unsigned char LedSegs[]={63, 6, 91, 79, 102, 109, 125, 7, 127, 111, 119, 124, 57, 94, 121, 113};
void Delay52us(void) //@12.000MHz
{
unsigned char data i;
i = 206;
while (--i);
}
void sd1(unsigned char dat)
{
unsigned int i=0;
bit CY = 0,TB = 0;
ACC = dat;
if(P)
{
TB = 0;
}
else
{
TB = 1;
}
Tm1652_SDA=0; //將串口發送端口TXD置高
Delay52us();
for(i= 0;i<8;i++)
{
Tm1652_SDA = dat & 0x01;
dat = dat>>1;
Delay52us();
}
Tm1652_SDA = TB;
Delay52us();
Tm1652_SDA=1; //將串口發送端口TXD置高
Delay52us();
}
void SendInt1(int ss){
int qian,bai,shi,ge;
qian = ss /1000;
bai = ss / 100;
shi = ss % 100 / 10;
ge = ss % 10;
sd1(LedSegs[qian]);
sd1(LedSegs[bai]);
sd1(LedSegs[shi] | 0x80);
sd1(LedSegs[ge]);
}
void main()
{
P1M0 = 0x00;
P1M1 = 0x00;
while(1)
{
SendInt1(8888);
}
}#ifndef _MAIN_H_
#define _MAIN_H
#include "STC8H.h"
sbit Tm1652_SDA = P1^3;
#endif
文件STC8H.h也是由stc-isp生成的頭文件向各位大佬尋求幫助
|
|