X
首页
技术
模拟电子
单片机
半导体
电源管理
嵌入式
传感器
最能打国产芯
应用
汽车电子
工业控制
家用电子
手机便携
安防电子
医疗电子
网络通信
测试测量
物联网
最能打国产芯
大学堂
首页
直播
专题
TI 培训
论坛
汽车电子
国产芯片
电机驱动控制
电源技术
单片机
模拟电子
PCB设计
电子竞赛
DIY/开源
嵌入式系统
医疗电子
颁奖专区
【厂商专区】
【电子技术】
【创意与实践】
【行业应用】
【休息一下】
最能打国产芯
活动中心
直播
发现活动
颁奖区
电子头条
参考设计
下载中心
分类资源
文集
排行榜
电路图
Datasheet
最能打国产芯
51单片机
[求助] 新手求助帖:51单片机串口控制LED灯
电子曾金河
2012-10-7 12:26
楼主
刚接触51单片机的串口知识,遇到一个问题,希望大家解答
串口控制LED灯的程序:
#include
unsigned char flag;
unsigned char temp;
main()
{
TMOD=0x20;
TH1=0xFD;
TL1=0xFD;
TR1=1;
EA=1;
ES=1;
SCON=0x50;
while(1)
{
if(flag==1)
{
ES=0;
flag=0;
SBUF=temp;
while(!TI);
TI=0;
ES=1;
}
}
}
void ser() interrupt 4
{
RI=0;
P0 = SBUF;
temp = SBUF;
flag=1;
}
理论来说程序的发送和接收的数据是一致的。
我用串口调试助手这软件,发现发送的数据为什么和PC机接收的数据不一样的呢?如图,
我的发送框中分别是:01 55 aa ff 00,为什么PC机中接收的数据是:81,F5,8A,FF,80呢?
当发送aa和ff的确可以全亮或者全灭。并且低四位的LED灯能准确控制,就是当发送01到0f都能正确显示。
但当发生的数据的高四位不为0时,LED灯就不能准确显示了。比如当我发送是1f时,理论来说,LED灯应正确显示10001111,就是第五、第六、第七位的灯会亮。而实际上它显示是:00111111。
再比如我发送是3f,而实际上LED灯显示的是01111111.就是只有最高位亮,其他都是灭的。
为什么是这样子的呢?望解答!
点赞
回复评论 (4)
沙发
电子曾金河
新手求助帖:51单片机串口控制LED灯
补充一下:我表达有误,应该是:比如当我发送是1f时,理论来说,LED灯应正确显示00011111,就是第六、第七位、第八的灯会亮。而实际上它显示是:00111111。
点赞
2012-10-7 15:28
板凳
jishuaihu
你的晶振是多大了啊?如果是12MHz的话波特率在9600的时候的误差可达8.5%,也就是波特率误差太大了,所以单片机接收到的数可能会错其中的一位或两位。你举的例子里错的也都是一位或两位,而0xFF因为都是1,所以没错,0x80就一位是1,其他都为0,出错的机会也就少了。我觉得这样的解释算是比较合理的。
用12MHz晶振的时候就1200和600的波特率误差还小一些,只有0.16%。你可以把波特率换成1200试一下。这个时候TH1的值应该为0xE6。你可以试一下,如果使用9600的波特率的话必须使用11.0592MHz的晶振,一般用51做串口通讯的都是用这个频率的晶振的,因为这个频率的晶振就是为了做51通讯而专门算出来生产的!
点赞
2012-10-7 19:30
4楼
电子曾金河
回复 板凳 jishuaihu 的帖子
十分感谢,我刚换了11.0592M的晶振,问题解决了!!!
发送和接收的数据一致了!!!:carnation: 因为我是用买回来的开发板,也是第一次做串口实验,所以不知道也没注意到板子上是用了12M的晶振、、、
点赞
2012-10-8 13:39
5楼
jishuaihu
不客气,新手经常遇到类似的问题
点赞
2012-10-8 21:02
最新活动
免费申请 | 上百份MPS MIE模块,免费试用还有礼!
TI 有奖直播 | 使用基于 Arm 的 AM6xA 处理器设计智能化楼宇
Follow me第二季第3期来啦!与得捷一起解锁高性能开发板【EK-RA6M5】超能力!
报名直播赢【双肩包、京东卡、水杯】| 高可靠性IGBT的新选择——安世半导体650V IGBT
30套RV1106 Linux开发板(带摄像头),邀您动手挑战边缘AI~
安世半导体理想二极管与负载开关,保障物联网应用的稳健高效运行
随便看看
继电器驱动
WINCE支持少数民族语言问题!
电脑鼠走迷宫
求助电源芯片
江湖告急:各位大神,小弟在做atmega16的twi接口遇到了一些问题,请大神们帮忙啊
MSP430死机问题
关于干扰的问题
关于进程通信问题
讨论一下如何正确测试电源的纹波?
EEWORLD大学堂----TI精密实验室 - 隔离
AD中如何设置规则,让顶层直插件后的底层贴片器件不报错。
LM3S811学习心得四--GPIO输入的程序流程
单片机显示gif动画
我的LED应急灯制作过程(1)人家都拿到奖品了,我才开始制作!请你看好戏在后面
想请教大家一个比较简单的问题(汇编语言的调用子程序)
TMS320F28335 的bootloader问题请教
ldrom启动不了
整理:安防常用英语单词英中对照表
基于嵌入式系统的协议转换器
请问多大电流的dcdc适合用同步整流?
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
京公网安备 11010802033920号
回复
写回复
收藏
回复