




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
钦州学院 数学与计算机科学系 计控081班测控工程测控工程设计基于串口通讯温度控制系统的设计 院 系: 钦州学院数学与计算机科学系 班 级: 计算机控制技术081班 学 号: 姓 名: 指导教师: 2010年7月11日目 录第1节 引 言3(1)串口通讯简介3(2) 51单片机简介3(3) ADC0809模数转换芯片系统简介3(4) RS-232串口通讯系统简介4第2节 项目概述5第3节 设计目的5第4节 设计准备5第5节 设计总框图5第6节 设计流程图6第7节 设计硬件图7第8节 设计接线说明7第9节 上位机软件编程及其说明8(1) 上位机软件效果图8(2) 上位机软件全代码10第10节 下位机软件编程及其说明16第11节 总结201.引言(1)串口通讯简介:串口通信(Serial Communication), 是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。随着计算机系统的应用和微机网络的发展,通信功能越来越显的重要.这里所说的通信是指计算机与外界的信息交换.因此,通信既包括计算机与外部设备之间,也包括计算机和计算机之间的信息交换.由于串行通信是在一根传输线上一位一位的传送信息,所用的传输线少,并且可以借助现成的电话网进行信息传送,因此,特别适合于远距离传输.对于那些与计算机相距不远的人机交换设备和串行存储的外部设备如终端、打印机、逻辑分析仪、磁盘等,采用串行方式交换数据也很普遍.在实时控制和管理方面,采用多台微机处理机组成分级分布控制系统中,各 CPU 之间的通信一般都是串行方式.所以串行接口是微机应用系统常用的接口。许多外设和计算机按串行方式进行通信,这里所说的串行方式,是指外设与接口电路之间的信息传送方式,实际上, CPU 与接口之间仍按并行方式工作.(2) 51单片机简介: 89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器,89C2051是它的一种精简版本。89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。主要特征有:与MCS-51 兼容; 4K字节可编程闪烁存储器;寿命:1000写/擦循环;数据保留时间:10年; 全静态工作:0Hz-24MHz; 三级程序存储器锁定;128*8位内部RAM; 32可编程I/O线; 两个16位定时器/计数器;5个中断源; 可编程串行通道;低功耗的闲置和掉电模式;片内振荡器和时钟电路;(3) ADC0809模数转换芯片系统简介:ADC0809模数转换器,ADC0809是8通道8位CMOS逐次逼近式A/D转换芯片,片内有模拟量通道选择开关及相应的通道锁存、译码电路,A/D转换后的数据由三态锁存器输出,由于片内没有时钟需外接时钟信号。下图为该芯片的引脚图。各引脚功能如下:IN0IN7:八路模拟信号输入端。ADD-A、ADD-B、ADD-C:三位地址码输入端。八路模拟信号转换选择由这三个端口控制。CLOCK:外部时钟输入端(小于1MHz)。D0D7:数字量输出端。OE:A/D转换结果输出允许控制端。当OE为高电平时,允许A/D转换结果从D0D7端输出。ALE:地址锁存允许信号输入端。八路模拟通道地址由A、B、C输入,在ALE信号有效时将该八路地址锁存。START:启动A/D转换信号输入端。当START端输入一个正脉冲时,将进行A/D转换。EOC:A/D转换结束信号输出端。当 A/D转换结束后,EOC输出高电平。Vref(+)、Vref(-):正负基准电压输入端。基准正电压的典型值为+5V。VCC和GND:芯片的电源端和地端。(4) RS-232串口通讯系统简介:EIA RS-232C 是由美国电子工业协会 EIA(Electronic Industry Association)在1969年颁布的一种串行物理接口标准。RS(Recommended Standard)是英文“推荐标准”的缩写,232为标识号,C表示修改次数。RS-232C 总线标准设有25条信号线,包括一个主通道和一个辅助通道。 在多数情况下主要使用主通道,对于一般双工通信,仅需几条信号线就可实现,如一条发送线、一条接收线及一条地线。 RS-232C 标准规定的数据传输速率为每秒150、300、600、1200、2400、4800、9600、19200波特。 RS-232C 标准规定,驱动器允许有2500pF的电容负载,通信距离将受此电容限制,例如,采用150pF/m的通信电缆时,最大通信距离为15m;若每米电缆的电容量减小,通信距离可以增加。传输距离短的另一原因是RS-232属单端信号传送,存在共地噪声和不能抑制共模干扰等问题,因此一般用于20m以内的通信。 串行通信接口标准经过使用和发展,目前已经有几种。但都是在RS-232标准的基础上经过改进而形成的。所以,以RS-232C为主来讨论。RS-232C标准是美国EIA(电子工业联合会)与BELL等公司一起开发的1969年公布的通信协议。它适合于数据传输速率在020000b/s范围内的通信。这个标准对串行通信接口的有关问题,如信号线功能、电器特性都作了明确规定。由于通行设备厂商都生产与RS-232C制式兼容的通信设备,因此,它作为一种标准,目前已在微机通信接口中广泛采用。2.项目概述在工业生产和日常生活中,经常需要对远程设备温度进行监测和控制以及数值进行采集,然后进处理和提示,依据处理的结果对现场的温度开关进行控制; 串口通讯具有高效、简洁,可方便的与可类控制设备及计算机连接,远程传输数据快等特点,基于串口与PC机通讯控制温度传感器控制系统具有设计简单,安全性好的特点,具有广泛的应用前景。3.设计目的(1)了解温度传感器电路的工作原理(2)进一步熟悉A/D变换电路的工作原理及程序编写(3)进一步熟悉led数码管显示的方法(4)进一步熟悉vs2008串口通讯编程4.设计准备器材: RS232/485芯片,AT89s51芯片一块,串口线一根,5个led数码管,ADC0809芯片模数转换系统,导线若干(以上耗材均由实验箱集成),装有vs2008软件PC机一台。5.设计总框图(上位机)PC机(接收串口信息-分析信息显示在pc机上-发送pc机控制信息)(下位机)单片机(接收控制信息-执行控制信息-发送当前采集信息)传送温度控制信息 传送温度采集信息RS232/485串口线连接6.设计流程图下位机温度传感器上位机A/D转换初始化程序温度计算打开串口通讯发送串口判断是否开启加热接收温度接收串口分析数据显示波形图判断报警判断正负加“-”号显示判断显示完7.设计硬件图8.设计接线说明(1)单片机最小应用系统1的 P0口接A/D转换的D0D7口,单片机最小应用系统1的Q0Q7口接0809的A0A7口,单片机最小应用系统1的WR、RD、P2.0、ALE、INT1分别接A/D转换的WR、RD、P2.0、CLOCK、INT1,A/D转换的IN接继电器与温度控制部件的Tout,单片机最小应用系统1的T0、T1连接到串行静态显示实验模块的DIN、CLK,将A/D转换的电位器顺时针旋到底,还有P2.1接口接温度传感器加热接口,并且TXD、RXD分别接RS-232串口通讯的TXD、RXD接口,串口接上位机。(2)用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。(3)打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加 温度传感.ASM源程序,进行编译,直到编译无误。(4)进行软件设置,选择硬件仿真,选择串行口,设置波特率为38400。(5)打开模块电源和总电源,点击开始调试按钮,运行程序,此时LED数码管会以XXC显示当前温度值,即为十进制温度值,当气温低于0时温度值前面出现“-”。*注意:本实验源程序中TH为150但显示只有两位,即最高温度只能显示99,但温度超过99时,显示将出错。9.上位机软件编程及其说明(1)上位机软件效果图:未运行前:由于为了方便,很多控件直接命名了,就不在初始化里面命名。运行软件后:设置各按钮效果图:最终波形动态效果与报警效果图:(2)上位机软件全代码:Imports System.IO.PortsImports System.ThreadingPublic Class Form1 Dim ReadThread As Thread Dim Continued As Boolean = False Dim message As String Dim x1() As Integer = 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 250, 275, 300, 325, 350, 375, 400, 425, 450, 475, 500, 525, 550 picturebox1内画线坐标数组设置 Dim y1() As Integer = 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30 picturebox1内画线坐标数组设置 Dim y As Integer = 30 初始化温度为30C Dim gaowen As Single = 60 初始化高温报警 Dim diwen As Single = 20 初始化低温报警 Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing Me.Continued = False Me.ReadThread.Abort() 关闭窗口时关闭线程 End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim s As String 对窗口进行初始化 With Me .Text = PCRZ-51串口通讯潘杰炜 .MaximizeBox = False .FormBorderStyle = Windows.Forms.FormBorderStyle.FixedSingle .AcceptButton = .Button3 .CancelButton = .Button5 .ReadThread = New Thread(AddressOf Read) .ReadThread.Start() 开启多线程 .GroupBox1.Text = 连接部分 .GroupBox2.Text = 版权信息 .Label1.Text = 选择端口: .Label2.Text = 选择波特率 .Label3.Text = 设备未加热! .Label4.Text = 当前温度: .Label5.Text = .ComboBox1.Text = COM1 .ComboBox2.Text = 4800 .ComboBox1.Enabled = True .ComboBox2.Enabled = True .ComboBox1.Items.Clear() For Each s In SerialPort.GetPortNames() .ComboBox1.Items.Add(s.ToString) Next s .ComboBox2.Items.Add(110) .ComboBox2.Items.Add(300) .ComboBox2.Items.Add(600) .ComboBox2.Items.Add(1200) .ComboBox2.Items.Add(2400) .ComboBox2.Items.Add(4800) .ComboBox2.Items.Add(9600) .ComboBox2.Items.Add(14400) .ComboBox2.Items.Add(19200) .ComboBox2.Items.Add(38400) .ComboBox2.Items.Add(56000) .ComboBox2.Items.Add(57600) .ComboBox2.Items.Add(115200) .ComboBox2.Items.Add(128000) .ComboBox2.Items.Add(256000) .ComboBox2.Items.Add(512000) .Button2.Enabled = False .Button3.Enabled = True .Button4.Enabled = True .ComboBox1.Focus() .TextBox1.ReadOnly = True .TextBox1.Dock = DockStyle.Fill .TextBox1.BorderStyle = BorderStyle.None .TextBox1.Text = 本软件作者:潘杰炜 + Chr(13) + Chr(10) + 本软件专门实现PC机与单片机通讯,同时实现PC机对单片机温度监控系统的控制。 + Chr(13) + Chr(10) + 开启前必须先打开串口按钮,按开启监控按钮能开启波形动态显示和报警监控 + Chr(13) + Chr(10) + + Chr(13) + Chr(10) + 版权所有:潘杰炜 + Chr(13) + Chr(10) + 指导老师:梁家海 .SerialPort1.ReadTimeout = 500 .SerialPort1.WriteTimeout = 500 .SerialPort1.DataBits = 8 .Continued = False End With End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Try 打开串口时设置各参数 Me.SerialPort1.PortName = Me.ComboBox1.Text Me.SerialPort1.BaudRate = Val(Me.ComboBox2.Text) Me.SerialPort1.Open() Catch ex As Exception MsgBox(请选择正确的端口和波特率,请不要自行修改列表框内容!, MsgBoxStyle.Exclamation, 错误) Me.Form1_Load(Nothing, Nothing) End Try If Me.SerialPort1.IsOpen Then Me.Button2.Enabled = True Me.Button1.Enabled = False Me.ComboBox1.Enabled = False Me.ComboBox2.Enabled = False Me.Button3.Enabled = True Me.Button4.Enabled = True Me.Continued = True End If End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Try 关闭串口 Me.SerialPort1.Close() Catch ex As Exception MsgBox(无法关闭端口!, MsgBoxStyle.Exclamation, 错误) End Try If Not Me.SerialPort1.IsOpen Then Me.Button1.Enabled = True Me.Button2.Enabled = False Me.ComboBox1.Enabled = True Me.ComboBox2.Enabled = True Me.ComboBox1.Focus() Me.Button3.Enabled = False Me.Continued = False End If End Sub Private Sub Read() Do 读取串口内容,设置委托 If Me.Continued Then Try Me.message = Me.SerialPort1.ReadChar() Invoke(New Action(Of Object)(AddressOf Work), 1) Catch ex As Exception End Try End If Loop End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Try 发送数据 Me.SerialPort1.Write(a) Me.Label3.Text = 正在加热中! Me.Label3.BackColor = Color.Red Catch ex As Exception MsgBox(无法发送信息!, MsgBoxStyle.Exclamation, 错误) End Try End Sub Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click Me.Close() 退出程序 End Sub Private Sub Work(ByVal O As Object) If O = 1 Then y = &H & message End If End Sub Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click 监控按钮设置 If Button2.Enabled = True Then Timer1.Enabled = True 开始时钟timer1 Label9.Text = 开启监控状态 Else MsgBox(请打开串口!) End If End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Label5.Text = y & C 显示当前温度 Dim Pts(22) As Point For I As Integer = 0 To 22 Pts(I) = New Point(x1(I), y1(I) Next For j As Integer = 21 To 0 Step -1 设置数组向前移动一位 y1(j + 1) = y1(j) Next y1(0) = y If y gaowen Then 判断时候是高温报警 ListBox1.Items.Add(高温报警: 当前温度 & y & C高于最高高温报警温度 & gaowen & C,停止加热!) Me.SerialPort1.Write(z) Me.Label3.Text = 设备未加热! Me.Label3.BackColor = Color.Green End If If y diwen Then 判断时候是低温报警 ListBox1.Items.Add(低温报警: 当前温度 & y & C低于最低低温报警温度 & diwen & C,开启加热!) Me.SerialPort1.Write(a) Me.Label3.Text = 正在加热中! Me.Label3.BackColor = Color.Red End If-使用用GDI+ Graphics类在picturebox内描点画线- Using G As Graphics = PictureBox1.CreateGraphics 为picturebox创建Graphics G.Clear(Color.Black) 清除整个绘图面并以指定背景色填充。 G.DrawLines(Pens.Red, Pts) 绘制一条连接由坐标对指定的两个点的线条。 End Using End Sub Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click Try 发送数据 Me.SerialPort1.Write(z) 向串口发送z用于单片机读取并利用 Me.Label3.Text = 设备未加热! Me.Label3.BackColor = Color.Green Catch ex As Exception MsgBox(无法发送信息!, MsgBoxStyle.Exclamation, 错误) End Try End Sub Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click gaowen = Val(InputBox(设置报警的最高温, , 60) 设置高温报警温度 Label7.Text = gaowen & C End Sub Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click diwen = Val(InputBox(设置报警的最低温, , 20) 设置低温报警温度 Label8.Text = diwen & C End Sub Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click 停止监控 Using G As Graphics = PictureBox1.CreateGraphics G.Clear(Color.Black) 清除整个绘画区背景 Timer1.Enabled = False 关闭时钟 Label9.Text = 停止开启监控状态 End Using End Sub Private Sub ListBox1_DoubleClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.DoubleClick ListBox1.Items.Clear() 双击报警区域可清除里面显示内容 End SubEnd Class上位机软件说明: 上位机软件为原创作品软件设计到的技术有:SerialPort1控件串口通讯技术、Thread多线程技术、串口接收的委托技术、picturebox里面GDI+画线技术。不过程序较为复杂由于时间紧迫制作时期研究了很多不同技术导致里面排版不够清晰、调试次数不够多,不过好在勉强的完成了,在这里我要感谢梁家海老师的大概软件框架和思想以及网友的抓药机器人中的串口通讯技术DYlike前辈的GDI+画线技术的教导。10.下位机软件编程及其说明LowTemp equ -50 ; A/D 0HighTemp equ 150 ; A/D 255ADPort equ 0FEF3HLEDBuf equ 30HTEMP EQU 40HCURTEMP EQU 60Hwendu EQU 61Haaa EQU 62HWD BIT P2.1DINBITP3.4CLKBITP3.5ORG 0000Hmov tmod, #22h /设置定时器1工作方式mov scon,#50h /设置串口方式anl pcon,#7fhmov th1, #0FAh /根据波特率和晶振算mov tl1,#0FAhsetb tr1setb et1setb ealjmp StartORG 0030HLEDMAP:DB3FH,6,5BH,4FH,66H,6DH ;0,1,2,3,4,5DB7DH,7,7FH,6FH,77H,7CH ;6,7,8,9,A,BDB58H,5EH,7BH,71H,0,40H ;C,D,E,F, , -DB 63H,39H;#DisplayLED:MOVR0,#LEDBUFMOVR1,#TEMPMOVR2,#5DP10:MOVDPTR,#LEDMAPMOVA,R0MOVCA,A+DPTRMOVR1,AINCR0INCR1DJNZR2,DP10MOVR0,#TEMPMOVR1,#5DP12:MOVR2,#8MOVA,R0DP13:RLCAMOVDIN,CCLRCLKSETBCLKDJNZR2,DP13INCR0DJNZR1,DP12RET; =DisplayResult:mov a, CurTempjnb acc.7, GE0mov LEDBuf, #11h ;dec acpl aLJMP GoonGE0:mov LEDBuf, #10h ; Goon:mov b, #10div abmov LEDBuf+1, amov a,bmov LEDBuf+2, amov LEDBUF+3,#12HMOV LEDBUF+4,#13HRETReadAD:mov dptr, #ADPortclr amovx dptr, a ; start A/DJNB P3.3,$MOVX A,DPTR ; 读入结果ret;$ReadTemp:ACALL ReadADmov b, #(HighTemp-LowTemp) ;(HighTemp-LowTemp)mul abmov a, b ; /256add a, #LowTempmov CurTemp, aretSend:mov sbuf,CurTemp /把采
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年患儿窒息试题及答案解析
- 2025年呼吸一区VTE防治护理知识考核试卷及答案
- 2025年vte知识试题及答案
- (完整版)混凝土护坡专项施工方案
- 蓄电池充电工测试考核试卷及答案
- 轻冶料浆配料工效率提升考核试卷及答案
- 铁合金电极糊工突发故障应对考核试卷及答案
- 船艇救生员标准化作业考核试卷及答案
- 经济开发区社保待遇享受资格审核与发放合同
- 环保题材动画电影联合摄制与绿色生活倡导合同
- 重庆市南开中学高2026届高三第一次质量检测+化学答案
- 教育培训课程开发与实施指南模板
- 2025保密协议范本:物流行业货物信息保密
- 2025卫星互联网承载网技术白皮书-未来网络发展大会
- 半导体行业面试问题及答案解析
- 2024年中国人寿集团公司招聘笔试参考题库含答案解析
- GB/T 17669.3-1999建筑石膏力学性能的测定
- 压 实 度 试 验 记 录 表
- GA/T 1069-2013法庭科学电子物证手机检验技术规范
- 新版药品管理法培训培训课件
- 单位线法推求流域出口洪水过程工程水文学课件
评论
0/150
提交评论