|
不知道这样标题对不对?
单片机用的是STC12C5608AD,
准备用他的4路PWM做一个电脑风扇的调速器。但是刚开始折腾显示部分就遇到了一个小麻烦。
屏幕用了两个,一个是MP3拆的12864液晶。显示正常。
另一个是某宝买的串口通讯彩屏。
在使用“sprintf”函数然后输出串口时,里面的变量会有一个随机的初始值(比如照片中原本应显示0,实际显示221)。然后变量会自动扩大256倍,实际显示出来的数值就是变量扩大256倍在加上这个初始值(比如第二张照片中原本应该显示1,现在显示“221+1*256”=477)
除了变量以外的数值显示正常!
折腾了好久也没有一个所以然……
所以请各位大神帮忙出出主意
相关代码:
#include "stdio.h"
uchar Aold=0,Bold=0,st=0,num=0;//±àÂëÆ÷²âÊÔ
uchar idata buf[64];
void SendData(uchar dat1)
{
ES=0;
TI=0;
//TB8=~P;
SBUF=dat1;
while(!TI);
TI=0;
}
void SendString(char *s)
{
while(*s)
{
SendData(*s++);
}
delay(10);
}
sprintf(buf,"DS16(115,147,'0-255:%02d',15);\r\n",num);
SendString(buf);
下面是图:
初始值应为0,实际显示221
原本应该显示1,现在显示“221+1*256”=477
串口传出的数据,除变量外其他正常
原本应显示2,实际显示733
原本应显示9,实际显示2525
整个“小玩意儿”,网线没有协议,纯粹当做延长线用
“完整”源代码,就算不能解决问题,也可以给初学者一个参考,(st7567液晶当做字符屏,中断方式驱动旋转编码器)
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|