|
|
本人最近在使用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生成的头文件向各位大佬寻求帮助
|
|