版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于485总线的超声波的液位测量与控制系统一、 设计任务和性能指标 设计任务1、从机能够在现场对油罐或水罐的液位高度和现场的温度进行采集,能够基于液位的情况对油泵或水泵进行控制,能够把现场采集到的信息和设备的状态信息传送给上位机485总线。2、对上位机,要求能够动态显示不同485节点的液位、温度及泵的工作状态。能够方便的通过人机界面对通讯参数进行设置。3、基于上述要求,用protel完成硬件系统设计主要是485节点的硬件局部,要考虑电磁兼容和抗干扰设计等内容。4、软件系统设计,要求学院能够熟练应用VB(或VC)、汇编、C语言等工具编写应用程序从机数据采集、通讯、上位机人机界面设计、通讯程序。性
2、能指标液位显示:用三位LED数码管进行显示单位是CM;在上位机上动态显示。环境温度:用四位数码管进行显示温度,单位是mm。测距范围:20mm到 4000mm之间。键盘功能定义:1.当enter键按下之后,锁定led,使显示的数字固定,便于计数。cancel键按下之后,取消led锁定。2.按下up键,屏幕显示当前温度,按下cancel键后,恢复显示位移单片机接口: 5 P3.3为触发信号的输出TRIG, P3.2外部方式0,接回响信号ECHO, P3.4为RS-485的控制信号, P0.6接18b20的端口, P0.4为设备1的接口, P0.5为设备2的接口。6 通信标准:转换部件把上位机的RS
3、232转换成RS485,然后单片机接收到485电平之后,通过MAX485把485电平转换成TTL电平,从而实现了上位机和单片机的通信二、 设计方案按照系统设计的功能的要求,初步确定设计系统由单片机主控模块、电源模块、显示模块、键扫描模块、超声波发射模块,超声波接收模块,温度补偿模块共七个模块组成。主控芯片使用51系列STC89C52单片机,该单片机工作性能稳定,同时也是在单片机课程设计中经常使用到的控制芯片。本设计在接受模块采用了由索尼公司生产的CX2016A红外接收芯片来实现超声波的接收。本大作业用的是HC-SR04超声波传感器,可提供20mm4000mm的非接触式距离感测功能,测距精度可达
4、3mm;模块包括超声波发射器、接收器与控制电路。工作电压为DC 5v,测量角度为15度,输入触发信号为10us的TTL脉冲,输出TTL电平信号,与射程成比例。实验证明其具有很高的灵敏度和较强的抗干扰能力。同时通过改变局部参数来改变接受电路的灵敏度和抗干扰能力,所以我们采用该芯片作为接收模块主要组成局部。HC-SR04超声波模块测距采用IO口TRIG触发测距,给至少10us的高电平信号,模块自动发送8个40khz的方波,自动检测是否有信号返回。有信号返回,那么通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=高电平时间*声速/2;系统设计框图如图2-1超声
5、波接收模块超声波发射模块单片机控制系统STC89C52显示模块键盘模块温度补偿模块DS18B20图2-1系统设计框图 三、系统硬件设计硬件电路的设计主要包括单片机系统及显示电路、温度补偿电路,超声波发射电路和超声波检测接收电路四局部。单片机采用STC89S52或其兼容系列。采用12MHz高精度的晶振,以获得较稳定时钟频率,减小测量误差。单片机用P端口输出超声波换能器所需的40kHz的方波信号,利用外中断0口监测超声波接收电路输出的返回信号。显示电路采用简单实用的4位共阳LED数码管,段码用74LS273驱动。3.1 单片机最小系统5l系列单片机中典型芯片(STC89S52)采用40引脚双列直插
6、封装(DIP)形式,内部由CPU, ROM、 RAM、定时计数器TO和T1,4个8 位的全双工IO端 P0,P1,P2,P3,一个全双功串行通信口等组成。特别是该系列单片机片内的Flash可编程、可擦除只读存储器(EPROM),使其在实际中有着十分广泛的用途,在便携式、省电及特殊信息保存的仪器和系统中更为有用。该系列单片机所组成的最小系统如图3-1所示。图3-1单片机最小系统原理图3.2 超声波发射电路超声波发射电路原理图如图2-2所示。单片机P1.0端口输出的40kHz的方波信号.HC-SR04超声波模块测距采用IO口TRIG触发测距,给至少10us的高电平信号,模块自动发送8个40khz的
7、方波,自动检测是否有信号返回。有信号返回,那么通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=高电平时间*声速/2。P1.0连接TRIG引脚,发送驱动信号,INT0连接ECHO引脚接收回响信号。VCC接+5V引脚,GND接地。 图3-2 超声波发射电路原理图 3.3 超声波检测超声波通过ECHO接收超声波发生器产生的超声波的回响信号,然后接收引脚产生一段时间的高电平,然后这就是超声波从发送到接收到的时间。如果测出这段时间的长度,就可以求出具体的距离是多少。图3-3 超声波接收电路原理图 3.4 温度补偿电路温度传感器使用了DSl8B20数字温度计提供可
8、选择的12位(二进制)温度读数来指示周围环境的温度信息。经过单线接口DQ与单片机进行数据交互。从主机CPU到DSl8B20仅需一条数据接线(和地线)。DSl8B20的电源可以由数据线本身提供而不需要接外部电源。由于每一个DSl8B20在出厂时已经给定了唯一的序号因此任意多个DSl8B20可以存放在同一条单线总线上实现多点温度测量。温度传感器DSl8B20的测温范围从-55摄 氏度到+125摄氏度增量值为度可在l s(典型值)内把温度变换成数字量,因此采用DS18B20实现温度补偿电路的设计。图3-4 温度补偿电路原理图 3.5 显示电路 显示电路主要由74ls273芯片驱动,用PNPC8550
9、三级管进行位选,七段共阳极数码管显示,硬件电路图如图3-5所示:图3-5 显示电路原理图 四. 系统软件设计4.1 主程序设计主程序中包括温度补偿子程序,计算子程序,显示子程序,键盘扫描程序,测距程序,校正偏差程序:在主程序设计中,我们采用了汇编编程。首先进行系统初始化。然后键盘扫描,判断那个键按下,然后执行相应的操作。第三,执行测距程序,测得当前的距离对应的时间,然后通过时间*速度=位移,求出相应的距离,然后放在显示缓冲区数码管显示。第四,复位18b20,然后经过一系列过程测得当前的温度。第五,因为超声波在空气中的传播速度跟温度有关,所以根据第四步得到的温度进行温度校正。最后,运行显示程序,
10、显示得到的距离。;*主程序*MAIN:MOV SP,#70HCLR P3.2 ;与超声波传感器有关的接口MOV A,#00HMOV BUFGAO,A MOV BUF0,#00H ;最后温度 MOV BUF1,A MOV BUF2,A MOV BUF3,A CLR FLAG_SERIAL CLR FLAG03 CLR FLAG07 CLR FLAG11 CLR FLAG13 CLR FLAG14 CLR FLAG15 MOV KEY_NUM,#00H CLR FLAG3 ;正or负标志位 CLR FLAG1 ;初始化标志 SETB EA ;开总中断 SETB ET0 ;T0 MOV TMOD,#
11、21H ;T0方式1,T1方式2 MOV TL1,#0FDH ;设置T1的波特率 MOV TH1,#0FDH SETB TR1 MOV SCON,#50H ;方式1,REN=1允许接受; MOV SCON,#0F0H SETB ES CLR P3.4 ;控制RS_485的控制引脚,使RS-485处于接收状态 MOV TL0,#00H MOV TH0,#00H MOV TEMP,#2LOOP:LCALL KEY_SCAN;*以下为标志位定义*;判断各标志位是否为1,然后执行相应的动作 JNB FLAG_SERIAL,C0 ; 串行中断标志位如果为1,那么把当前求出的位移,一定时间内往上位机发送一
12、次。C0: JNB FLAG14,C1 ;cancel键 CLR FLAG03 CLR FLAG07 CLR FLAG11 CLR FLAG13 CLR FLAG14 CLR FLAG15C1: JNB FLAG03,C2 ;up键 LJMP DDDDC2: JNB FLAG07,C3 ;down键 C3: JNB FLAG11,C4 ;setup键C4: JNB FLAG13,C5 ;偏移量为十三的,键按下,动作,小数点C5: JNB FLAG15,C6 ;enter键 LJMP BBBBC6: LCALL DISPLAY DJNZ TEMP,LOOP LCALL MEASURE ;测得时间
13、 LCALL CHULI ;时间*速度=位移 LCALL JIAOZHENG ;校正偏差 LCALL BTOD ;把二进制转换成十进制,然后放在显示区显示; LCALL DISPLAY LCALL DISPLAYDDDD:LCALL INITIAL ;复位程序 JB FLAG1,AAAA ;复位成功跳转 RETAAAA: LCALL TEMPERATURE ;复位成功跳转 JNB FLAG03,CCCC ;显示温度 MOV A,BUF0 ;取出温度 MOV B,#100 DIV AB MOV BUF1,A ;BUF1是第四位置上的led,最右边的 MOV A,B MOV B,#10 DIV A
14、B MOV BUF2,A ;BUF2是第三位置上的led,倒数第二位 MOV BUF3,B ;BUF3是第二位置上的led,第二位 CCCC:LCALL DISPLAY LCALL GET_CURRENT_V BBBB:LCALL DISPLAY LCALL DISPLAY MOV TEMP,#0;100 LJMP LOOP 温度补偿子程序图4-2 DS18B20时序图 DS18B20正常工作需要严格的工作时序,操作起来很复杂,图4-2给出的是DS18B20的时序图,其控制程序如下:TEMP: SETB DQ NOP CLR DQ MOV R0,#0FBH TSR1: DJNZ R0,TSR1
15、 SETB DQ MOV R0,#25H ; TSR2: JNB DQ TSR3 DJNZ R0,TSR2 ; TSR3: SETB FLAG1 CLR P2.0 AJMP TSR5 TSR4: CLR FLAG1 LJMP TSR7 TSR5: MOV R0,#06BH TSR6: DJNZ R0,TSR6 TSR7:SETB DQ RET*读转换后的温度值*GET_TEMPER: SETB DQ LCALL TEMP JB FLAG1,TSS2 RET TSS2:MOVA,#0CCH LCALL WRITE_18B20 MOVA,#44H LCALL WRITE_18B20 LCALL T
16、EMP MOV A,#0CCH LCALL WRITE_18B20 MOV A,#0BEH ; LCALL WRITE_18B20 LCALL READ2_18B20 ; RET*写ds18b20汇编程序* WRITE_18B20: MOV R2,#8 CLR C WR1:CLR DQ MOV R3,#6 DJNZ R3,$ RRC A MOV DQ,C MOV R3,#23 DJNZ R3,$ SETB DQ NOP DJNZ R2,WR1 SETB DQ RET ; *读18B20程序,读出两个字节的温度* READ2_18B20: MOV R4,#2 ; MOV R1,#29H RE00
17、: MOV R2,#8 RE01: CLR C SETB C NOP NOP CLR DQ NOP NOP NOP SETB DQ MOV R3,#7 DJNZ R3,$ MOV C,DQ MOV R3,#23 DJNZ R3,$ RRC A DJNZ R2,RE01 MOV R1,A DEC R1 DJNZ R4,RE00 RET*读出的温度进行数据转换*CHANGE: MOV A,29H ; MOVC,28H.0 RRC A RRC A RRC A RRC A MOV 29H,A4.3 测距程序设计 HC-SR04超声波模块测距采用IO口TRIG触发测距,给至少10us的高电平信号,模块自
18、动发送8个40khz的方波,自动检测是否有信号返回。有信号返回,那么通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=高电平时间*声速/2 程序如下: ;*测距程序*;入口信息:无;出口信息:位移mm为单位,位于R2,R3中;影响资源:R1 R7MEASURE: MOV R0,#06H ;等待大于10us DJNZ R0,$ JNC A1 ;等待接收回响信号;*计时程序*TIMER: SETB TR0 ;外部中断0,计算回响信号的时间进行测距A2: MOV C,P3.2 ;p3.2是echo信号,等待端口变为低电平 JC A2 CLR TR0 CLR E
19、X0 MOV A,TH0 ;时间的高位放在60H MOV 60H,A MOV A,TL0 ;时间的低位放在61H MOV 61H,A MOV TL0,#00H MOV TH0,#00H RET 单片机编程中问题处理1. 在编程序时最好直接用medwin编程。否那么,有的逗号分号medwin不能够识别,会使程序产生错误的判断。直接用仿真软件会防止这些错误。2. 在位运算中,从20H,到2FH这16个单元,每个内存单元对应8个位地址。从20H单元的D0位开始,至2FH单元的D7位,对应的地址依次为00H到7FH,即有:位地址=单元地址-20H)*8+位。如22H单元第零位的位地址为:位地址=22H
20、-20H)*8+0=10H。在程序中会定义许多标志位,这就用到了定义位,必须了解上面的位操作才能够正确的分配位地址。然后正确定义位,然后用位操作完成相应的操作,因为汇编语言中的位操作语句很多,用起来很方便。3.在单片机编程中,会有很多函数需要编写,在编写的时候最好在函数的头部写明白入口的那几个存放器,有什么作用,这个函数有什么作用等,让自己以后一看这个函数的开始就能够知道这个函数具体干什么的,方面自己以后在修改或者调用函数。并且,在汇编中调用函数的时候很多需要的量都是通过先前的存放器传入函数的,所以一定要标记各个存放器作用。养成良好的编程习惯。以前,编程不太注意这个,然后就是什么内容都写在主函
21、数中,看起来很乱,但是这次编程写的比拟好,具体见后面的程序清单。五. 上位机程序设计在上位机中主要采用的是visual basic 编程,通过mscomm控件把下位机测得的距离和温度传输到电脑中进行动态显示,并且通过上位机电脑控制着单片机的设备的起停。以及监控单片机的工作情况。5.1 Mscomm 控件编程 Private Sub MSComm1_OnComm()Dim i As IntegerDim outbte(0) As Byte 定义为byte型0255Dim indata As VariantDim z1 As IntegerDim z2 As IntegerDim z3 As In
22、tegerDim bte(0 To 5) As Byte If flag_commandword = True Then 保证以下程序只执行一次 If flag_send = True Then If Val(Text9.Text) = &HB1 Then Timer1.Interval = 0 关闭定时器1,防止时序冲突,影响单片机活动 out(0) = Val(Text8.Text) out(1) = &HA1 out(2) = &HB1 接受温度 For i = 0 To 2 outbte(0) = out(i) MSComm1.OutBufferCount = 0 发送缓冲区清零 MS
23、Comm1.Output = outbte 把num发送出去 Next i Timer1.Interval = 500 开放定时器1,使定时器继续发送上位机命令 flag_commandword = False End If End IfEnd If Case comEvReceive bte(0) = AscB(indata) bte(1) = AscB(Mid(indata, 2, 1)If out(2) &HB1 Then 如果上位机要求停止接受温度是,关闭发送标志位 Shape14.Width = 0 把温度显示的进度条宽度变为0 Text2.Text = 清空温度显示 flag_se
24、nd = FalseEnd IfIf flag_send = True Then 如果发送键按下之后,那么接收后两个字节 If out(2) = &HB1 Then bte(2) = AscB(Mid(indata, 3, 1) bte(3) = AscB(Mid(indata, 4, 1) End IfEnd If5.2 Visual Bisic界面5.3 Visual Basic 程序问题处理1.在上位机编程中用到了延时程序,由于单片机中用到的是软件延时,但是在vb中很难实现。于是用下面一种方法进行延时,既能够到达延时的目的,又能够不耽误其他的程序执行。Private Declare Fu
25、nction timeGetTime Lib winmm.dll () As LongPublic Function YanShi(HaoMiao As Double) 延时子程序,以毫秒为单位,调用时yanshi 1000,就是延时1sDim t1t1 = timeGetTimeWhile (timeGetTime - t1 HaoMiao) DoEventsWendEnd Function2.当在画动态显示液位的时候要画液罐,而且要形象立体的展现在面前,我画成双层的,外面是罐壁,里面是显示具体的液位,这个灵感来源于 上的电池中的电量显示。具体形状见上图的总体vb界面。3.在控制单片机工作的
26、时间上,由于单片机只有两个定时器,一个用来产生波特率,另一个用来测得echo返回的高电平时间。因此不够用,我就把启动定时设备的时间设置在上位机上,用上位机的定时器来进行定时。然后完成相应的动作。4.当然还遇到了很多问题大多是借助了MSDN解决的,尤其是对许多函数不太了解的时候,通常用“帮助然后查询具体的参数是怎么样定义的,这个很有用,再就是在函数出错时,MSDN会直接给出错误原因并且有解决的建议,调试程序的时候有了它真的很方便。所以学会用它,对自己的vb学习是很有帮助的。 六. 调试及性能分析6.1 调试步骤调试的时候,我是调试单片机的程序,因为单片机测距是主要实现的功能,所以先要调试,根据显
27、示程序的显示结果进行调试,这样可以更快的调试出程序。把各局部程序调试成功之后然后合在一起,再看看有没有互相矛盾的地方,这样单片机的程序就调试完了。上位机的调试也是重点,关键在mscomm控件处的调试。这个控件负责串行通信是否成功,关系到单片机测得的温度和距离能否传到上位机,上位机的控制命令字能否传到单片机,即上位机能否控制单片机的设备。这个地方处理完后,在调试与温度,液位的显示相关的程序,因为它们是一些辅助的功能,为了更好的实现人机交互,所以也是重要的环节,在这也要引起足够的重视。6.2 性能分析虽然结果和预想的有很大的差距,但总体来说已经根本上到达了要求,刚开始没有矫正的时候,1m 误差大约
28、有10cm,但是经过校正之后,误差在2mm左右,根本上到达要求。测试的距离也没有厂家说的那么远,不能到达4m,造成这种原因我想有以下几个方面:1.由于我们采用的是11.0592MHZ的晶振,理论上是按照12MHZ的晶振计算的,所以对系统造成了一定的误差。2.由于温度传感器DS18B20距离单片机较近,所采集到的温度严重受到单片机的影响,造成系统误差。6.3 系统电平标准转化1.本大作业中用到了RS-485通信,用的就是RS-485电平,信号传播距离远。单片机的TTL电平经过单片机电路板上的MAX485把电平转化成485电平,然后通过网线把单片机 和上位机连接在一起。在网线的另一端接上一个RS-
29、485转RS-232的接口器件,把电平转换成计算机用的电平RS-232电平标准,实现单片机与计算机的通信过程。心得体会在这次完成大作业的过程中,我感觉受益匪浅,尤其是对单片机的理解上,更是上了一层楼,我觉得单片机如果你给了他完美的程序他就会像人一样去思考去工作,很是智能的去完成任务。现在可以做一个比喻,我们平时的许多行为在单片机上都有实现。比方我们现在正在工作,突然肚子饿了,我们就回去吃饭。在这个过程中,就像单片机的一个中断处理程序,产生了一个内部中断,像单片机的定时器产生的中断一样是来自内部的。在这个中断程序中单片机来完成“吃饭这件事情。刚想要去吃饭,一看外面下雨了,然后我们就会带上伞。在单
30、片机中,这有对应着外部中断,比方INT0,INT1一样,中断时来自外部的情况,这样单片机就会通过中断处理程序来完成带伞这个动作。另外还有串行通信,在平时我们要通过 接收很多信息,当 接收到短信时会有提示音或者是震动,这样就会引起我们的注意,然后就引发串行中断,我们看短信回短信的过程就完成了单片机的串行中断中的接受和发送数据的过程。在完成大作业期间,必须自己设计整个系统,根据系统资源整体完成系统的资源分配。比方单片机的定时器不够用,那么有很多定时就必须放在上位机上完成。还有IO口的安排上,也是不能够重复的。因为系统比拟大,所以有很多外部设备需要接在IO口上,这样就必须分配好,具体的分配情况要做出
31、详细的说明,以便以后阅读或者有新的功能需要添加的时候,知道哪个口已经用过哪个口没有用过,可以很快的选择好,这样以后功能扩展就会很轻松。现在感觉编程序容易调试程序难,编程序就是按照自己的想法完成编写,但是有时候会出现语法或者逻辑上的错误,这样就要调试,很多情况要都要花上编程的几倍的时间来完成调试工作。到现在我觉得,编程高手不但要编程有思路并且调试要快,这样才能在单位时间内完成更多事情。还有,就是在接触新事物的时候不要想当然,要看具体的使用说明,然后在进行操作或者说应用。在RS-485这个地方我就是一开始没有看说明,具体怎么用不知道我就开始接上线开始调试看看能不能通信成功,后来不行,然后才看的说明
32、书,看后我大吃一惊,原来就是一个接口的问题,设置一个接口就解决掉了这个问题,但是当时只是感觉RS-485跟RS-232一样,就因为这个当时浪费了很长的时间。做大作业还有一点很关键,就是,有的知识没有熟悉的情况下怎么处理,我们现在的信息都是全部公开的,可以通过书籍、网络,等等来查找你需要的知识。比方当时要想在vb上实现延时功能,然后当时就是想了很多方法都没有实现,后来在网上看了一篇文章介绍到vb延时,然后这才解决了这个问题。大作业不像是考试,不然查阅资料,不让讨论,其实现实工作中肯定不能像考试那样来完成一件事情。所以,我们要学会借助于身边的资源,然后完成自己的任务,这才是明智的,古人说的好,“君
33、子性非异也,善假于物也。说确实实有道理。参考文献1 徐维祥、刘旭敏. 单片微型机原理及应用. 大连:大连理工大学出版社,19962 李光飞、楼然苗、胡佳文、谢象佐. 单片机课程设计与实例指导. 北京: 北京航空航天大学出版社,2004 3 余永权. 89系列FLASH单片机原理及应用. 北京:电子工业出版社,20024 李群芳,黄建. 单片机微型计算机与接口技术. 北京:电子工业出版社,20015 楼然苗、李光飞. 51系列单片机设计实例. 北京:北京航空航天大学出版社,20036 王守中 51单片机开发入门与典型实例. 北京:人民邮电出版社,2021附录1 单片机程序清单TEMP1 EQU
34、36HTEP1 EQU 37HFLAG1 EQU 38HORG 0000HJMP STARTORG 0003HJMP PINT0;*主程序*START:MOV P3,0FFHMOV P0,0FFHMOV P1,0FFHMOV P2,0FFHMOV TMOD,#01HMOV TH0,#00HMOV TL0,#00HCLR IE0SETB PX0SETB EASETB EX0CLR IT0MOV R4,#4SETB TR0NOPNOPNOPNOPNOPNOPNOPNOPNOPDJNZ R4,KJNB IE0,$LCALL TEMPLCALL GET_TEMPERLCALL CHANGELCALL
35、WORKLCALL DISPLAY1LJMP STARTPINT0:CLR TR0CLR EX0MOV 30H,TL0MOV 31H,TH0RETITEMP: SETB DQNOPCLR DQMOV R0,#0FBH;给延时程序赋初值TSR1: DJNZ R0,TSR1;延时SETB DQMOV R0,#25H ;给延时程序赋初值TSR2: JNB DQ ,TSR3 ; S18B20是否存在,存在就跳转到TSR3DJNZ R0,TSR2 ;不存在等待TSR3: SETB FLAG1 ;置标志位,说明DS18B20存在;CLR P2.0 ;二极管指示AJMP TSR5TSR4: CLR FLAG
36、1LJMP TSR7TSR5: MOV R0,#06BHTSR6: DJNZ R0,TSR6 ;延时TSR7:SETB DQ ;说明不存在RET*读转换后的温度值*GET_TEMPER:SETB DQLCALL TEMPJB FLAG1,TSS2RET ;假设不存在那么返回TSS2: MOV A,#0CCH ;跳过ROMLCALL WRITE_18B20MOV A,#44H;发出温度转换命令LCALL WRITE_18B20LCALL TEMPMOV A,#0CCH ;跳过ROMLCALL WRITE_18B20MOV A,#0BEH ;发出读温度换命令LCALL WRITE_18B20LCA
37、LL READ2_18B20 ;读两个字节的温度RET; *写ds18b20汇编程序*WRITE_18B20:MOV R2,#8CLR CWR1:CLR DQMOV R3,#6DJNZ R3,$RRC AMOV DQ,CMOV R3,#23DJNZ R3,$SETB DQNOPDJNZ R2,WR1SETB DQRET; *读18B20程序,读出两个字节的温度*READ2_18B20:MOV R4,#2 ;低位存在29 H,高位存在28HMOV R1,#29HRE00: MOV R2,#8RE01: CLR CSETB CNOPNOPCLR DQNOPNOPNOPSETB DQMOV R3,#
38、7DJNZ R3,$MOV C,DQMOV R3,#23DJNZ R3,$RRC ADJNZ R2,RE01MOV R1,ADEC R1DJNZ R4,RE00RET; *读出的温度进行数据转换*CHANGE: MOV A,29H ;MOV C,28H.0 ;将28H中的最低位移入CRRC ARRC ARRC ARRC AMOV 29H,ALCALL CONVERSERET;* *DISPLAY*CONVERSE: MOV A,29H;将29H中的十六进制数转换成10进制MOV DPTR,#TABLEMOVC A,A+DPTRMOV TEMP1,ATABLE: DB 165D,165D,165
39、D,166D,166D,166D,167D,167D,167D,167DDB 168D,168D,168D,169D,169D,169D,170D,170D,170D,171DDB 171D,171D,172D,172D,172D,173D,173D,173D,174D,174DDB 174D,174D,175D,175D,175DRET;* *计算子程序*WORK: ; MOV PSW, #18h ;选择3区R系列存放器MOV R3, 31HMOV R2, 30HMOV R1, #00DMOV R0, TEMP1LCALL MUL2BY2MOV R3, #27HMOV R2, #10HLCA
40、LL DIV4BY2LCALL HBCDRET*两字节无符号数乘法程序*; R7R6R5R4 0) Then 如果是要启动设备1,那么翻开定时器5 flag1 = True 置位标志位flag1 Timer5.Interval = Val(Text10.Text) * 1000 开放定时器5,开始定时Else If (Val(Text9.Text) = &HD1 And Val(Text10.Text) 0) Then 如果是要启动设备1,那么翻开定时器5 flag2 = True 置位标志位flag2 Timer6.Interval = Val(Text10.Text) * 1000 End
41、 IfEnd IfIf Val(Text9.Text) = &HC1 Then 如果命令字要求开放设备一,那么置位flag_led1 flag1 = TrueEnd IfIf Val(Text9.Text) = &HD1 Then 如果命令字要求开放设备二,那么置位flag_led2 flag2 = TrueEnd IfIf out(0) = 1 Then 寻址那个罐子单片机 Label8.Visible = False Label2.Visible = TrueEnd IfIf out(0) = 2 Then Label8.Visible = True Label2.Visible = Fa
42、lseEnd IfEnd SubPrivate Sub MSComm1_OnComm()Dim i As IntegerDim outbte(0) As Byte 定义为byte型0255Dim indata As VariantDim z1 As IntegerDim z2 As IntegerDim z3 As IntegerDim bte(0 To 5) As Byte 必须保证命令字为“返回温度的时候命令已经发送给单片机,否那么单片机接收不到数据,产生错误,此处提前发送一下保证能接收到温度If flag_commandword = True Then 保证以下程序只执行一次 If fl
43、ag_send = True Then If Val(Text9.Text) = &HB1 Then Timer1.Interval = 0 关闭定时器1,防止时序冲突,影响单片机活动 out(0) = Val(Text8.Text) out(1) = &HA1 out(2) = &HB1 接受温度 For i = 0 To 2 outbte(0) = out(i) MSComm1.OutBufferCount = 0 发送缓冲区清零 MSComm1.Output = outbte 把num发送出去 Next i Timer1.Interval = 500 开放定时器1,使定时器继续发送上位机
44、命令 flag_commandword = False End If End IfEnd If Case comEvReceive bte(0) = AscB(indata) bte(1) = AscB(Mid(indata, 2, 1)If out(2) &HB1 Then 如果上位机要求停止接受温度是,关闭发送标志位 Shape14.Width = 0 把温度显示的进度条宽度变为0 Text2.Text = 清空温度显示 flag_send = FalseEnd IfIf flag_send = True Then 如果发送键按下之后,那么接收后两个字节 If out(2) = &HB1
45、Then bte(2) = AscB(Mid(indata, 3, 1) bte(3) = AscB(Mid(indata, 4, 1) End IfEnd Ifbuf = Str(bte(0) + Str(bte(1) + Str(bte(2) + Str(bte(3)*buf = bte(0) * 100 + bte(1)Select Case buf 对每一个阶段的液位进行校正 Case 0 To 100 buf = buf + 19 Case 100 To 200 buf = buf + 17 Case 200 To 300 buf = buf + 14 Case 300 To 400
46、 buf = buf + 8 Case 400 To 500 buf = buf + 10 Case 500 To 600 buf = buf + 7 Case 600 To 700 buf = buf + 5 Case 700 To 800 buf = buf + 3 Case 800 To 900 buf = buf + 0 Case 900 To 1000 buf = buf + 0 Case 1000 To 1100 buf = buf - 3 Case 1100 To 1200 buf = buf - 6 Case 1200 To 1300 buf = buf - 11 Case 1
47、300 To 1400 buf = buf - 15 Case 1400 To 1500 buf = buf - 22 Case 1500 To 1600 buf = buf - 22 Case 1600 To 1700 buf = buf - 25 Case 1700 To 1800 buf = buf - 32End SelectIf buf 4000 Then buf = 4000End Ifz = buf 取三次的平均值z1 = z2z2 = z3z3 = zIf z2 = 0 Then buf = z3Else If z1 = 0 Then buf = Int(z2 + z3) /
48、2) Else buf = Int(z1 + z2 + z3) / 3) End IfEnd IfIf buf 4000 Then 防止有时候单片机出现错误造成上位机溢出 buf = 4000End IfIf Val(Text4.Text) 0 Then 只设上限的情况and上限下限都设了的情况 If buf Val(Text4.Text) Then 大于上限时,使上面的脸变红,警告 Shape5.FillColor = &HFF& Shape6.FillColor = &HFF00& Else If buf Val(Text5.Text) Then 当在设定的范围内时,两个脸都是绿色,表示
49、Shape5.FillColor = &HFF00& Shape6.FillColor = &HFF00& Else 小于下限时,使下面的脸变红,警告 Shape6.FillColor = &HFF& Shape5.FillColor = &HFF00& End If End IfElseShape5.FillColor = &HFF00&End IfIf Val(Text5.Text) 0 And Val(Text4.Text) = 0 Then 只设下限的情况 If buf 90000 Then 大于上限时,使上面的脸变红,警告 Shape5.FillColor = &HFF& Shape
50、6.FillColor = &HFF00& Else If buf Val(Text5.Text) Then 当在设定的范围内时,两个脸都是绿色,表示正常 Shape5.FillColor = &HFF00& Shape6.FillColor = &HFF00& Else 小于下限时,使下面的脸变红,警告 Shape6.FillColor = &HFF& Shape5.FillColor = &HFF00& End If End IfElseEnd Ifbuf = Trim(Str(buf)Text1.Text = buf + mmIf out(2) = &HB1 Then 如果返回温度的话,
51、显示温度If bte(2) = 1 Then Text2.Text = Trim(- + Str(bte(3)Else: Text2.Text = Trim(Str(bte(3)End IfEnd IfCircle (2887.5, 5467.5), 1567.5, , 3.14, 6.28, 0.273 画下面的椭圆弧End SelectEnd Sub原文已完。下文为附加文档,如不需要,下载后可以编辑删除,谢谢!施工组织设计本施工组织设计是本着“一流的质量、一流的工期、科学管理来进行编制的。编制时,我公司技术开展部、质检科以及工程部经过精心研究、合理组织、充分利用先进工艺,特制定本施工组织设
52、计。工程概况:西夏建材城生活区27#、30#住宅楼位于银川市新市区,橡胶厂对面。本工程由宁夏燕宝房地产开发开发,银川市规划建筑设计院设计。本工程耐火等级二级,屋面防水等级三级,地震防烈度为8度,设计使用年限50年。本工程建筑面积:27#m2;30# m2。室内地坪 m为准,总长27#m;30# m。总宽27#m;30# m。设计室外地坪至檐口高度18.6 00m,呈长方形布置,东西向,三个单元。本工程设计屋面为坡屋面防水采用防水涂料。外墙水泥砂浆抹面,外刷浅灰色墙漆。内墙面除卫生间200300瓷砖,高到顶外,其余均水泥砂桨罩面,刮二遍腻子;楼梯间内墙采用50厚胶粉聚苯颗粒保温。地面除卫生间20
53、0200防滑地砖,楼梯间50厚细石砼1:1水泥砂浆压光外,其余均采用50厚豆石砼毛地面。楼梯间单元门采用楼宇对讲门,卧室门、卫生间门采用木门,进户门采用保温防盗门。本工程窗均采用塑钢单框双玻窗,开启窗均加纱扇。本工程设计为节能型住宅,外墙均贴保温板。本工程设计为砖混结构,共六层。根底采用C30钢筋砼条形根底,上砌MU30毛石根底,砂浆采用M10水泥砂浆。一、二、三、四层墙体采用M10混合砂浆砌筑MU15多孔砖;五层以上采用M混合砂浆砌筑MU15多孔砖。本工程结构中使用主要材料:钢材: = 1 * ROMAN I级钢, = 2 * ROMAN II级钢;砼:根底垫层C10,根底底板、地圈梁、根底
54、构造柱均采用C30,其余均C20。本工程设计给水管采用PPR塑料管,热熔连接;排水管采用UPVC硬聚氯乙烯管,粘接;给水管道安装除立管及安装IC卡水表的管段明设计外,其余均暗设。本工程设计采暖为钢制高频焊翅片管散热器。本工程设计照明电源采用BV铜芯线,插座电源等采用BV4铜芯线;除客厅为吸顶灯外,其余均采用座灯。施工部署及进度方案1、工期安排本工程合同方案开工日期:2004年8月21日,竣工日期:2005年7月10日,合同工期315天。方案2004年9月15日前完成根底工程,2004年12月30日完成主体结构工程,2005年6月20日完成装修工种,安装工程穿插进行,于2005年7月1日前完成。
55、具体进度方案详见附图1施工进度方案。2、施工顺序 = 1 * GB2 根底工程工程定位线验线挖坑钎探验坑砂砾垫层的施工根底砼垫层刷环保沥青 根底放线预检砼条形根底刷环保沥青 毛石根底的砌筑构造柱砼地圈梁地沟回填工。 = 2 * GB2 结构工程结构定位放线预检构造柱钢筋绑扎、定位隐检砖墙砌筑50cm线找平、预检柱梁、顶板支模预检梁板钢筋绑扎隐检、开盘申请砼浇筑下一层结构定位放线重复上述施工工序直至顶。 = 3 * GB2 内装修工程门窗框安装室内墙面抹灰楼地面门窗安装、油漆五金安装、内部清理通水通电、竣工。 = 4 * GB2 外装修工程外装修工程遵循先上后下原那么,屋面工程包括烟道、透气孔、
56、压顶、找平层结束后,进行大面积装饰,塑钢门窗在装修中逐步插入。施工准备现场道路本工程北靠北京西路,南临规划道路,交通较为方便。场内道路采用级配砂石铺垫,压路机压。机械准备 = 1 * GB2 设2台搅拌机,2台水泵。 = 2 * GB2 现场设钢筋切断机1台,调直机1台,电焊机2台,1台对焊机。 = 3 * GB2 现场设木工锯,木工刨各1台。 = 4 * GB2 回填期间设打夯机2台。 = 5 * GB2 现场设塔吊2台。3、施工用电施工用电已由建设单位引入现场;根据工程特点,设总配电箱1个,塔吊、搅抖站、搅拌机、切断机、调直机、对焊机、木工棚、楼层用电、生活区各配置配电箱1个;电源均采用三
57、相五线制;各分支均采用钢管埋地;各种机械均设置接零、接地保护。具体配电箱位置详见总施工平面图。施工用水施工用水采用深井水自来水,并砌筑一蓄水池进行蓄水。楼层用水采用钢管焊接给水管,每层留一出水口;给水管不置蓄水池内,由潜水泵进行送水。生活用水生活用水采用自来水。劳动力安排 = 1 * GB2 结构期间:瓦工40人;钢筋工15人;木工15人;放线工2人;材料1人;机工4人;电工2人;水暖工2人;架子工8人;电焊工2人;壮工20人。 = 2 * GB2 装修期间抹灰工60人;木工4人;油工8人;电工6人;水暖工10人。四、主要施工方法1、施工测量放线 = 1 * GB2 施工测量根本要求A、西夏建
58、材城生活区17#、30#住宅楼定位依据:西夏建材城生活区工程总体规划图,北京路、规划道路永久性定位B、根据工程特点及建筑工程施工测量规程DBI012195,4、3、2条,此工程设置精度等级为二级,测角中误差12,边长相对误差1/15000。C、根据施工组织设计中进度控制测量工作进度,明确对工程效劳,对工程进度负责的工作目的。 = 2 * GB2 工程定位A、根据工程特点,平面布置和定位原那么,设置一横一纵两条主控线即27#楼:A轴线和1轴线;30#楼:A轴线和1轴线。根据主轴线设置两条次轴线即27#楼:H轴线和27轴线;30#楼:H轴线和27轴线。 B、主、次控轴线定位时均布置引桩,引桩采用木
59、桩,后砌一水泥砂浆砖墩;并将轴线标注在四周永久性建筑物或构造物上,施测完成后报建设单位、监理单位确认后另以妥善保护。C、控轴线沿结构逐层弹在墙上,用以控制楼层定位。D、水准点:建设单位给定准点,建筑物.500m。 = 3 * GB2 根底测量A、在开挖前,基坑根据平面布置,轴线控制桩为基准定出基坑长、宽度,作为拉小线的依据;根据结构要求,条基外侧1100mm为砂砾垫层边,考虑放坡,撒上白灰线,进行开挖。B、在垫层上进行根底定位放线前,以建筑物平面控制线为准,校测建筑物轴线控制桩无误后,再用经纬仪以正倒镜挑直法直接投测各轴线。C、标高由水准点引测至坑底。 = 4 * GB2 结构施工测量A、首层
60、放线验收后,主控轴一引至外墙立面上,作为以上务层主轴线竖身高以测的基准。B、施工层放线时,应在结构平面上校投测轴线,闭合后再测设细部尺寸和边线。C、标高竖向传递设置3个标高点,以其平均点引测水平线折平时,尽量将水准仪安置在测点范围内中心位置,进行测设。2、基坑开挖本工种设计地基换工,夯填砂砾垫层1100mm;根据此特点,采用机械大开挖,留200mm厚进行挖工、铲平。开挖时,根据现场实际土质,按标准要求1:0.33放坡,反铲挖掘机挖土。开挖出的土,根据现场实际情况,尽量留足需用的好土,多余土方挖出,防止二次搬运。人工开挖时,由技术员抄平好水平控制小木桩,用方铲铲平。挖掘机挖土应该从上而下施工,禁
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 药物微生物检定员安全生产基础知识能力考核试卷含答案
- 高分子防水卷材生产工变更管理知识考核试卷含答案
- 两栖类繁育工班组协作考核试卷含答案
- 化学铣切工班组建设模拟考核试卷含答案
- 扬声器装调工安全实践竞赛考核试卷含答案
- 圆珠笔制造工岗前基础实战考核试卷含答案
- 四年级数学下册第三单元第七课时《手拉手》教学设计
- 2025年辽宁省公需课学习-主要污染物总量减排监测办法
- 护理护理心理支持课件制作
- 2026年高标准农田建设中心招聘真题及参考答案
- 6.1.2 有性生殖(教学设计)生物新教材人教版八年级下册
- GB/T 46584-2025精细陶瓷界面恒定振幅下室温拉伸和剪切疲劳性能试验方法十字交叉法
- 程序员私人合同范本
- 截肢护理小讲课
- 2025年考研法硕(非法学)真题含答案解析
- 脑疝护理应急预案
- 学习与解读国家十五五规划
- 2025年内蒙化工单招考试题及答案
- 2025年重庆市公务员考试公安岗位专项卷
- 2025年学位英语山东题库及答案
- 《教育系统重大事故隐患判定指南》深度解读课件
评论
0/150
提交评论