下载

1下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 单片机18B20串口仿真

单片机18B20串口仿真.doc

单片机18B20串口仿真

海阔天空
2012-07-23 0人阅读 举报 0 0 暂无简介

简介:本文档为《单片机18B20串口仿真doc》,可适用于IT/计算机领域

虚拟串口仿真。通过串口获得b测得的温度的结果。#include<regh>#defineucharunsignedchar#defineuintunsignedintucharcodeLEDSEG={xC,xF,xA,xB,x,x,x,xF,x,x,xc,x,xa,xa,x,xe,xff,xc}ucharUartRes=x,TNum=x,tem,bai,ge,shi,c,flag,TempLimsbitDQ=P^sbitbeer=P^bitSendNum===============================================函数名:延时函数输入参数:时延长短iuint型==============================================voiddelay(uinti)延时函数{while(i)}==============================================函数名:B初始化输入参数:无功能:初始化B==============================================voidInitDSB(void){ucharx=DQ=DQ复位delay()稍做延时DQ=单片机将DQ拉低delay()精确延时大于usDQ=拉高总线delay()x=DQ稍做延时后如果x=则初始化成功x=则初始化失败delay()}==============================================函数名:从B中读一个字节输入参数:无输出参数:读出的数据功能:读出数据==============================================ucharReadOneChar(void){uchari=uchardat=for(i=i>i){DQ=给脉冲信号dat>>=DQ=给脉冲信号if(DQ)dat|=xdelay()}return(dat)}==============================================函数名:向B中写一个字节输入参数:无功能:写B==============================================voidWriteOneChar(uchardat){uchari=for(i=i>i){DQ=DQ=datxdelay()DQ=dat>>=}delay()}==============================================函数名:B测温度输入参数:无输出参数:测出的温度功能:初始化B==============================================ucharReadTemperature(void){uchara=ucharb=intt=floattt=InitDSB()WriteOneChar(xCC)跳过读序号列号的操作WriteOneChar(x)启动温度转换delay()InitDSB()WriteOneChar(xCC)跳过读序号列号的操作WriteOneChar(xBE)读取温度寄存器等(共可读个寄存器)前两个就是温度a=ReadOneChar()b=ReadOneChar()b<<=b=(axf)>>t=btt=t*t=tt*放大倍输出并四舍五入return(t)}==============================================函数名:串口初始化输入参数:无输出参数:测出的温度功能:初始化B==============================================voidUARTInit(void){SCON=xSCON:serailmode,bitUART,enableucvrTMOD=xTMOD:timer,mode,bitreloadPCON|=xSMOD=TH=xfaxFABaud:fosc=""MHzTL=xEBES=TR=timerrunEA=}==============================================函数名:串口发送数据输入参数:要发送的数据输出参数:无功能:向上位机发送数据==============================================voidUartSendData(uchardat){inta,b,d,euchardat,date=datd=data=datb=datdat=edat=a*xbUartRes=SBUF=datwhile(TI==)TI=delay()SBUF=dat写SBUF开始发送while(TI==)等待发送TI=清发送标志位}==============================================函数名:数码管是显示函数输入参数:无输出参数:无功能:在数码管上显示实时温度==============================================voidDatDisp(){tem=ReadTemperature()if(tem>TempLim){beer=}elsebeer=bai=temc=temshi=cge=cP=xP=LEDSEGbaidelay()P=xP=LEDSEGshidelay()P=xP=LEDSEGgedelay()P=xP=xcdelay()}==============================================函数名:蜂鸣器警报输入参数:无输出参数:无功能:报警==============================================voidBeerRing(){inti=flagbeer=while(i)if(flag==){UartRes=flag=}}==============================================函数名:串口发送数据输入参数:无输出参数:无功能:向上位机发送警报值==============================================voidTempSend(){UartSendData(TempLim)}==============================================函数名:增大警报值输入参数:无输出参数:无功能:警报值加==============================================voidTempSetOn(){UartRes=TempLimUartSendData(TempLim)}==============================================函数名:减小警报值输入参数:无输出参数:无功能:警报值减==============================================voidTempSetDow(){UartRes=TempLimUartSendData(TempLim)}voidmain(){TempLim=flag=UARTInit()tem=ReadTemperature()delay()beer=while(){DatDisp()flag=xswitch(UartRes){casex:UartSendData(tem)break收到时发送即时数据casex:BeerRing()break收到时定时报警casex:TempSend()break收到时发送警报值casex:TempSetOn()break收到时警报值加并发送casex:TempSetDow()break收到时警报值减并发送default:break}UartSendData(tem)UartSend()}}voidINTUartRcv(void)interrupt{ucharRcvif(RI){RI=Rcv=SBUFswitch(Rcv){casex:UartRes=xbreakcasex:UartRes=xbreakcasex:UartRes=xbreakcasex:UartRes=xbreakcasex:UartRes=xbreakdefault:break}}}

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/8

单片机18B20串口仿真

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利