完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
请教一下大家,PC给单片机通过串口发汉字,单片机端如何判断汉字,并执行相应的程序。
比如说 PC发送“亮” ,单片机执行LED亮,发送“灭”,单片机执行LED灭 我在测试过程中先通过发送数字判断数字进行操作,不能准确判断发送的数字,是因为进制的问题吗?
|
|
相关推荐
7个回答
|
|
最好贴上相关部分的程序
|
|
|
|
|
|
|
|
要注意你的数据格式,由pc发送的数据是ascii还是hex格式,5在ascii格式里应该是16进制为0x35,在hex格式里应该是16进制为0x05。
另外如何判断是进入了else,如果是看整个p2口的输出,那容易判断,但是如果看p2.0的话,0x01和0x33的位0均为1。 |
|
|
|
人中狼 发表于 2017-11-3 15:07 那如果我判断是否是一个汉字 比如是否为“亮” 怎么判断呢 |
|
|
|
用串口发送汉字没有实际意义,需要自定义通讯协议发送汉字编码,还得费脑筋写解析程序。只有操作汉字显示器件用汉字字符才有实际意义。
|
|
|
|
中文是两个字节的,比如:亮->0xc100,灭->0xF000,按原理来说pc机发送给单片机一个亮字,单片机接收到的其实是0xc1和0x00这两个数字,但是这样很容易出问题,比如只接收到0xc1。建议用数字1代表开,0代表灭,这样子你不用查汉字编码表,直接查asc表就行了。0对应就是0x30,1对应就是0x31.如果说判断不准确那就是波特率不一致的问题了。
|
|
|
|
我提醒一下楼主KEIL C51编译汉字编码时对一些汉字有BUG。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
205 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1253 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
848 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
853 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
1073 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12010 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 21:20 , Processed in 0.513451 second(s), Total 54, Slave 45 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号