



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机RS232与VB通信/-函数声明,变量定义- #include #define COUNT 10/ 定义接收缓冲区大小 unsigned char bufferCOUNT;/定义接收缓冲区 unsigned char point; /定义接收数据个数指示变量 void UART_init(); /串口初始化函数 void COM_send(void); /串口接收函数 unsigned char CLU_checkdata(void);/计算校验位函数 /- / 函数名称: UART_init()串口初始化函数 / 函数功能: 在系统时钟为11.059MHZ时,设定串口波特率为9600bit/s / 串口接收中断允许,发送中断禁止 /- void UART_init() /初始化串行口和波特率发生器 SCON =0x58;/选择串口工作方式,打开接收允许 TMOD =0x21;/定时器1工作在方式2,定时器0工作在方式1 TH1 =0xfd;/实现波特率9600(系统时钟11.0592MHZ) TR1 =1;/启动定时器T1 ET1 =0; ES=1;/允许串行口中断 PS=1;/设计串行口中断优先级 EA =1; /单片机中断允许 /- / 函数名称: com_interrup()串口接收中断处理函数 / 函数功能: 接收包括起始位S在内的十位数据到数据缓冲区 /- com_interrupt(void) interrupt 4 using 3 unsigned char RECEIVR_buffer; if(RI)/处理接收中断 RI=0;/清除中断标志位 RECEIVR_buffer=SBUF; /接收串口数据 if(point=0)/如果还没有接收到起始位 if(RECEIVR_buffer=S)/判断是否起始标志位 point+;/是准备接收下一位 else point=0;/不是,继续等待起始位 else if(point0&point10)/判断是否接收够十位数据 bufferpoint+=RECEIVR_buffer;/不够,把接收到的数据放入接收缓存区 else point=0;/缓冲区已满,清除缓存区内数据重新接收 If(TI)/处理发送中断 TI=0; /- / 函数名称: COM_send()串口发送函数 / 函数功能: 把数据缓冲区的十位数据发送出去 /- void COM_send(void) for(point=0;point=10,TI=1;point+) /连续发送十位数据 /把缓存区的数据都发送到串口 SBUF=bufferpoint; TI=0; /- / 函数名称: CLU_checkdata()计算校验位函数 / 输入变量: 无 / 输出变量: checkdata,包括起始位在内的前九位数据的校验和 / 函数功能: 计算校验和 /- unsigned char CLU_checkdata(void) /计算校验位 unsigned char checkdata=0; for(point=0;point9,TI=1;point+) checkdata=checkdata|bufferpoint; return(checkdata); /- / 函数名称: 主函数 / 函数功能: 调度个子函数,完成通信过程 /- void main(void) unsigned char checkdata; do UART_init();/初始化串口 if(point=10)/判断数据是否接收完成 checkdata=CLU_checkdata;/调用求校验和函数 if(checkdata=buffer9)/判断校验和是否正确 COM_send(); /正确则调用发送程序 point=0; while(1); VB控制通信程序:/-SComm控件的常用属性和方法- Commport;设置或返回串口号。 SettingS:以字符串的形式设置或返回串口通信参数。 Portopen:设置或返回串口状态。 InputMode:设置或返回接收数据的类型。 Inputlen:设置或返回一次从接收缓冲区中读取字节数。 InBufferSize:设置或返回接收缓冲区的大小,缺省值为l 024字节。 InBufferCount:设置或返回接收缓冲区中等待计算机接收的字符数。 Input:从接收缓冲区中读取数据并清空该缓冲区,该属性设计时无效,运行时只读。 OutBufferSize:设置或返回发送缓冲区的大小,缺省值为512字节。 OutBufferCount:设置或返回发送缓冲区中等待计算机发送的字符数。 Output:向发送缓冲区发送数据,该属性设计时无效,运行时只读。 设置好这些属性和方法,程序很容易就可以编出来了,其中要注意的是串口的波特串设置,OnComm事件的程序编写。程序的设计是这样的,计算机向单片机发送一个S,表示通信开始。然后紧接着又发送9个字符,其中最后一个字符是前面9个字符(包括S)的校验和。单片机正确接收到10个字符后,把10个字符从新又送回来。 /-初始化串口设计- Private Sub Form_Load() Comm1.Setting9600,n,8,1,设置波特率和发送字符格式 Comm1.CommPort1 设置通讯串口 Comm1.InputLen0 设置或返回一次从接收缓冲区中读取字节数,0表示一次读取所有数据 Comm1.InBuffersize512 Comm1.InBufferCount0 Comm1.OutBufferCount=0 Comm1.Rthreshold1 Comm1.PortOpenTrue End Sub 打开串口 /-给单片机发送S,开始通信- Private Sub Command1_C1ick() Timer1.EnabledTrue End Sub Private Sub Command2_C1ick() Varbuffet“S”Comm1.Ouputvarbuffe Timer2.EnabledTrue End Sub Private Sub Form_Unload(Cancel As Integer) Comm1.PortOpenFalse End Sub /-向单片机发送数据- Private Sub Timer2_ Timer() OutputsignalStr(Text2.text)向单片机发送数据 Temp(1)Cbyte(outputsignal) Varbuffertemp Comml.Outputvarbuffer Timer2.EnabledFalse End Sub /-接收单片机发送的数据,并显示- Private Sub Comm1_OnComm() Select Case C
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030功能性食品配方研发与消费趋势洞察报告
- 2025-2030功能性碳酸饮料市场技术突破与应用前景研究报告
- 2025-2030功能性微生物菌群在精准农业中的应用趋势报告
- 2025-2030共享办公文具柜企业采购决策流程与供应商选择报告
- 2025新能源行业协同创新技术路径与市场前景报告
- 2025年太阳能硅片硅碇行业光伏农业应用分析报告
- 2025年放射介入治疗科介入手术并发症护理试题答案及解析
- 2025年辽宁省营口市国家公务员行政职业能力测验模拟题(附答案)
- 智能家居系统互联互通标准2025年产业投资与产业推进分析报告
- 2025年劳动法知识竞赛题库及答案
- 电力安全微课堂
- 质量部长述职报告
- 无人机技术在农业领域的可行性分析报告
- 规模灵活资源广域接入的新型配电系统分层分群架构与规划技术研究
- 音乐心理学理论-洞察分析
- 法院报名登记表
- 上海市闵行区区管国企招聘笔试冲刺题2025
- 中外建筑史课件
- 2024年度商业保理合同:保理公司与出口商之间的商业保理协议3篇
- 宣传网络安全文明上网
- 应急管理部14号令《生产安全事故罚款处罚规定》 修改前后对照表及解读
评论
0/150
提交评论