- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
.
PAGE/NUMPAGES
单片机与上位机通信协议的制定
单片机和上位机的串口通信协议分为上行协议和下行协议,要分别制定!
上行协议,即由单片机向上位机发送数据。
下行协议,即由上位机向单片机发送数据。
?
而通信协议又要分固定长度和不定长度两种
本文所介绍的协议属于简单的固定字长的通信协议!
?
下行协议由四个字节构成
?
1byte
1byte
1byte
1byte
BBH
AAH(ORD_SATA)
单片机状态转换命令标识
01H
EEH
模式1:空闲
02H
EEH
模式2:温度采集
03H
EEH
模式3:温度采集向上位机传送采集值
04H
EEH
模式4:PWM测试
BBH
DDH(ORD_PWM)
value
EEH
PWM占空比值修改指令
BBH
FFH(ORD_TEM)
value
EEH
目标温度控制指令
?
上表是简单的上位机对单片机的控制指令
下述函数是C#中封装的串口通信类中的发送函数的封装
???????publicvoidSerSendCommu(byteorderDef,bytedata)//参数1为命令字,参数二为要发送的数
???????????????????????????????????????????????????????????//据,需要时可直接调用
???????{
???????????Byte[]BSendTemp=newByte[SEND_LENTH];
???????????BSendTemp[0]=PRE;
???????????BSendTemp[1]=orderDef;
???????????BSendTemp[2]=data;
???????????BSendTemp[3]=END;
???????????this.serialPort1.Write(BSendTemp,0,SEND_LENTH);
???????}
下位机中用中断方式接收字符,本文用的是GCC语言,下面是串口接收数据中断
ISR(USART_RXC_vect)//串口接收中断
{
?unsignedcharstatus,data;
?status=UCSRA;????//**首先读取UCSRA的值,再读取UDR值,顺序不能颠倒,否则读取UDR后的UCSRA的
????????????????????????????????????????????????//值即会改变**
???data=UDR;
?if(!Uart_RecvFlag)//判断缓存中的数据是否读完,读完则接收指令
?{
??if((status((1FE)|(1PE)|(1DOR)))==0)
??{
???rx_buffer[rx_counter]=data;
???rx_counter++;
???switch(rx_counter)
???{
????case1:
???????if(data!=USART_BEGIN_STX)
????????rx_counter=0;
????????break;
????case4:
???????rx_counter=0;
???????if(data==USART_END_STX)
???????Uart_RecvFlag=1;
???????break;
???}
??}
?}
?
}
在单片机主循环程序的最前部分进行指令译码
?if(Uart_RecvFlag)//接收到命令
??{
???
???switch(rx_buffer[1])
???{
????case0xAA://单片机状态命令控制;
??????ucWorkStatue=rx_buffer[2];//指令数据
?????????break;
????case0xDD://PWM值修改指令
??????OCR2=rx_buffer[2];
??????????break;
????case0xFF://初始温度设定
??????break;???
???}
???Uart_RecvFlag=0;
??}
//随后进行执行指令
??switch(ucWorkStatue)
??{
???case1://空闲模式
??????????break;
???case2://测量模式,但不输出
?????????break;
???case3://测量模式,由串口输出?
??????????break;
???case4://PWM输出测试???
?????break;?
???default:
?????break;
??}
这
您可能关注的文档
- 单片机速度里程表设计毕业论文.doc
- 单片机实验-数据排序实验模板.docx
- 单元语法专题复习过去将来时高一英语下学期期末专项复习牛津译林版2020解析版.doc
- 单元复习一固学案.docx
- 单元AB卷六年级语文下册-第六单元检测B卷含答案部编版.docx
- 卓越联盟2021届新高考省份高三年级9月份检测数学试题.doc
- 十二月下旬内科主治医师考试高频考点含答案.docx
- 医院资产清查工作报告.doc
- 医院科室承包协议书.doc
- 2025年西藏革吉县财政局招聘财会监督人员的备考题库完整答案详解.docx
- 银联智策2026年校园招聘备考题库及一套答案详解.docx
- 2025年金华市金东区教育体育局体育特长教师招聘5人备考题库完整答案详解.docx
- 2025年重庆大学大数据与软件学院科研团队劳务派遣助理招聘备考题库及参考答案详解一套.docx
- 2025年金华市技师学院招聘编外工作人员备考题库完整参考答案详解.docx
- 2025年遂宁市大数据中心遂宁数字经济研究院的招聘备考题库及参考答案详解1套.docx
- 2025年锡林郭勒盟应急管理局公开招聘驻矿安全生产监管专家的备考题库及一套答案详解.docx
- 银联智策2026年校园招聘备考题库参考答案详解.docx
- 2025年英德市公安公开招聘警务辅助人员57人备考题库及答案详解参考.docx
- 2025年盐城市机关事务管理局直属事业单位公开选调工作人员备考题库参考答案详解.docx
- 2025年第十师北屯市公安局面向社会公开招聘警务辅助人员备考题库及答案详解1套.docx
最近下载
- 【大单元·任务式】人美版八上第四单元第2课《彰显文化传承》精品课件(30页).pptx VIP
- 2023年太原铁路局招聘192人(共500题含答案解析)笔试历年难、易错考点试题含答案附详解.docx VIP
- 静脉血栓的诊断与治疗.pptx VIP
- 《音乐之声》台词(中英对照).doc VIP
- 七年级语文期末模拟卷(考试版A4)【测试范围:上册1~6单元】(贵州专用).docx VIP
- 生物医学大数据分析.pptx VIP
- 国家开放大学(电大)《经济法学》2021年7月春季期末考试真题及答案(试卷代号:2096).pdf VIP
- DB51_T 3039-2023 大熊猫国家公园保护站点网格化管理建设规范.docx VIP
- 消毒供应中心与临床科室的沟通.pptx VIP
- 2026-2030激光雷达行业市场发展分析及前景趋势与投资研究报告.docx
原创力文档


文档评论(0)