




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
用单片机的模拟串口读取TFmini的数据朱铮南STC15W104单片机只有8个针脚,刚好满足读取激光测距模块TFmini的数据并用74HC595驱动的四位数码管显示所需要的针脚。遗憾的是STC15W104不具有串口功能,只能用普通针脚来模拟串口。本文代码里的“读1帧函数”就是模拟串口。激光测距模块TFmini输出的串口信号的波特率是115200,起始位和结束位各占1位,数据占8位,可以算出传输一位数据的时长是1000000us/115200=8.68us。本例中的模拟串口采用了代码延时和定时器溢出中断相结合的方法,起始位开始后用代码延时3us再启动定时器,定时器溢出中断产生8.68us的时间间隔用来读取每一位的数据。定时器的初始化代码放在主函数一开头的地方。实践证明这个模拟串口工作非常稳定。完整的代码如下。**STC15W104模拟串口读TFmini,74HC595驱动数码管显示。朱铮南编写#include<STC15W.h>#defineuintunsignedint#defineucharunsignedcharsbitDIO=P3A4; 〃串行数据输入sbitRK=P3A2; 〃时钟脉冲信号——上升沿有效sbitSK=P3A3; 〃打入信号——上升沿有sbitRXD=P3A0; 〃模拟串口读入针脚sbitSW_out=P3A5; 〃开关输出针脚ucharK; 〃标志定时器0溢出中断是否发生ucharEND;〃结束位ucharMySBUF; 〃存放1帧数据ucharvalue[9]; 〃存放9字节数据的数组uintdist,dist1; 〃存放距离的变量uintHEADER=0x59; 〃帧头uintth_value=100; 〃设定开关阈值厘米ucharcodetable[]={0xC0,//"0"0xF9,〃T0xA4,//"2"0xB0,//"3"0x99,//"4"0x92,//"5"0x82,//"6"0xF8,//"7"0x80,//"8"0x90 //"9"); 〃八段共阳数码管**延时3usvoidDelay3us()//@30MHz{unsignedchari;i=20;while(--i);)**延时10msvoidDelay10ms()//@30MHz{unsignedchari,j,k;_nop_();_nop_();i=2;j=36;k=206;do{do{while(--k);}while(--j);}while(--i);}**等待中断发生voidWaitTF0(void)(while(!K);K=0;}**读1帧函数(波特率115200)voidRByte(void)(uchari=8;END=0;while(!END)〃循环,直到确认结束位(while(RXD); 〃等待起始位低电平Delay3us(); 〃起始位开始后延时3usTR0=1; 〃定时器0开始计时WaitTF0();〃延迟8.6uswhile(i--) 〃重复8次,每次读1位(先收低位)(MySBUF>>=1; 〃左移1位if(RXD)MySBUF|=0x80; 〃若高电平,则最高位写1WaitTF0(); 〃延迟8.6us}END=RXD;}TR0=0;}**读TFmini函数voidread_TFmini(void)ucharcheck; 〃用来存放校验码uintj;while(dist==0) 〃循环,直到得到距离值(while(value[1]!=HEADER) 〃循坏,直到第1和第2帧都等于0x59(RByte();〃接收1帧if(MySBUF==HEADER) 〃如果接收到的是0x59(value[0]=MySBUF;〃保存到数组RByte(); 〃接收下1帧if(MySBUF==HEADER)〃如果下1帧也等于0x59(value[1]=MySBUF;〃保存到数组)))for(j=2;j<9;j++) 〃循环接收剩余7帧(RByte();〃依次接收各帧value[j]=MySBUF;〃保存到数组)check=value[0]+value[1]+value[2]+value[3]+value[4]+value[5]+value[6]+value[7];if(value[8]==(check&0xFF))〃检验前8字节数据和的低8位是否等于第9位(dist=value⑵+value[3]*256; 〃计算距离值)))**595串入并出函数voidLED_OUT(ucharX)(uchari;for(i=8;i>=1;i--)(if(X&0x80)DIO=1;elseDIO=0;X<<=1;SK=0;SK=1;))**显示函数voidDisplay(uchara,ucharb,ucharc,uchard)(ucharj;for(j=0;j<3;j++)(〃显示千位LED_OUT(table[a]);LED_OUT(0x08);RK=0;RK=1;〃显示百位LED_OUT(table[b]&0x7F);LED_OUT(0x04);RK=0;RK=1;〃显示十位LED_OUT(table[c]);LED_OUT(0x02);RK=0;RK=1;〃显示个位LED_OUT(table[d]);LED_OUT(0x01);RK=0;RK=1;〃关闭个位LED_OUT(0x00);RK=0;RK=1;**函数名称:主函数入口voidmain(void)(〃设置中断1(定时器0溢出中断,时间间隔8.6us@30MHz)AUXR1=0x80; 〃定时器时钟1T模式TMOD&=0xF0; 〃设置定时器模式TL0=0xFC; 〃设置定时初值TH0=0xFE; 〃设置定时初值TF0=0;//清除TF0标志TR0=0; 〃定时器停止计时ET0=1; 〃允许定时器0中断EA=1;〃中断允许总开关while(1)(value[0]=0x00;value[1]=0x00;dist=0; 〃距离清零read_TFmini(); 〃调用读TFmini函数dist1=dist;if(dist<=30||dist>=1200)dist=0000; 〃超出范围就显示0Display(dist/1000,dist%1000/100,dist%100/10,dist%10); 〃调用数码管显示函数value[0]=0x00;value[1]=0x00;dist=0;Delay10ms();read_TFmini();〃间隔10ms再次调用读TFmini函数if(dist/10==dist1/10&&dist1>=th_value)SW_out
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人教版高中物理选择性必修第二册带电粒子在组合场中的运动课件
- 2025部编四年级下学期数学期中复习培优补差
- 2025届甘肃省平凉市崇信县重点达标名校中考生物模拟预测题含解析
- 第10章缔约过失责任和预期违约制度-合同法-教学课件
- 山东省岱岳区马庄中学2025届中考化学最后冲刺卷含解析
- 公有云功能和服务简介
- 八年级地理下册64青藏地区省公开课一等奖新课获奖课件
- 九年级美术上册第6课魅力永恒的建筑教案省公开课一等奖新课获奖课件
- 税收的基本知识
- 二年级上册《狐假虎威》课件市公开课一等奖省赛课获奖课件
- 4.2依法履行义务 教案 -2024-2025学年统编版道德与法治八年级下册
- NB/T 11526-2024煤矿微震监测系统通用技术条件
- 2025年福建长汀金龙稀土有限公司招聘笔试参考题库含答案解析
- 文化差异下的教育国外的小学音乐教育方式探讨
- 2024年黑龙江建筑职业技术学院高职单招语文历年参考题库含答案解析
- 贵州省贵阳市普通中学2024-2025学年高二上学期期末监测历史试题(含答案)
- Python金融数据挖掘与分析实战课程教案教学教案
- 2024年地铁车站照明系统安装与维护劳务分包协议3篇
- 脱硫自动化控制-洞察分析
- 公司安全事故隐患内部举报、报告奖励制度
- 云停车平台商户使用说明
评论
0/150
提交评论