为什么stc51的1602液晶程序写到stc12c5a60s2里面完全没反应,不是说完全兼容的吗?

2025-01-01 02:52:04
推荐回答(1个)
回答1:

是兼容的,注意1602的时序和检忙。
会用UART吗?可以用printf重定向,通过串口打印出程序运行数据
可以先用1602驱动函数读取1602的每个寄存器,看一下寄存器值是否一样,一样表明1602的读写操作都没弄好。不一样就看看1602数据手册,或者看你自己代码初始化程序有没有错。
printf重定向方法:
char putchar(char c) //printf重定向
{
ES=0;
SBUF = c;
while(TI==0);
TI=0;
ES=1;
return c;
}
void UART_Init(unsigned int baud)
{
SCON = 0x50; //串行控制寄存器
TMOD = 0x20; //Set Timer1 as 8-bit auto reload mode
TH1 = TL1 = -(OSC_FREQ/12/32/baud); //Set auto-reload vaule
TR1 = 1; //Timer1 start run
ES = 1; //Enable UART interrupt
EA = 1; //Open master interrupt switch
}
加入以上两个函数,在一开始进入主函数时执行UART_Init(9600);函数,查看好stc5a60s2的引脚,用下载线连接芯片的Tx和Rx引脚,打开电脑串口监视终端,然后以后就可以用printf函数打印数据了。
用这个方法,以后就可以很方便的调试像这种外面看不出现象的程序了。