DSP温度采集与显示课程设计_第1页
DSP温度采集与显示课程设计_第2页
DSP温度采集与显示课程设计_第3页
DSP温度采集与显示课程设计_第4页
DSP温度采集与显示课程设计_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计说明书课程名称:DSP控制器及其应用题目:温度采集与显示毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教 师的指导下进行的研究工作及取得的成果。 尽我所知,除文中特别加 以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研 究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体, 均已在文中作了明确的说明并表示了谢意。作者签名: 日 期:指导教师签名: 日 期: 使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文

2、)的印刷本和电 子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供 目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制 手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分 或全部内容。学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外, 本论文 不包含任何其他个人或集体已经发表或撰写的成果作品。 对本文的研 究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完 全意识到本声明的法律后果由本人承担。作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学

3、位论文的规定, 同意学校保留并向国家有关部门或机构送交论文的复印件和电子版, 允许论文被查阅和借阅。本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。导师签名:日期: 年 月作者签名:日期:年月日指导教师评阅书指导教师评价:一、撰写(设计)过程1、学生在论文(设计)过程中的治学态度、工作精神优 良 中 及格 不及格2、学生掌握专业知识、技能的扎实程度优良中及格不及格3、学生综合运用所学知识和专业技能分析和解决问题的能力优良中及格不及格4、研究方法的科学性;技术线路的可行性;设计方案的合理性优良中

4、及格不及格5、完成毕业论文(设计)期间的出勤情况优良中及格不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范?优良中及格不及格2、是否完成指定的论文(设计)任务(包括装订及附件)?优良中及格不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意?优良中及格不及格3、论文(设计说明书)所体现的整体水平优良中及格不及格建议成绩:优 良 中 及格 不及格(在所选等级前的内画“ V")评阅教师评阅书评阅教师评价:一、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范?优良中及格不

5、及格2、是否完成指定的论文(设计)任务(包括装订及附件)?优良中及格不及格二、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意?优良中及格不及格3、论文(设计说明书)所体现的整体水平优良中及格不及格建议成绩:优 良 中 及格 不及格(在所选等级前的内画“ V”)指导教师:(签名)单位:(盖章)年 月 日温度采集与显示教研室(或答辩小组)及教学系意见教研室(或答辩小组)评价:一、答辩过程1毕业论文(设计)的基本要点和见解的叙述情况 优 良 中 及格 不及格2、对答辩问题的反应、理解、表达情况优良中及格不及格3、

6、学生答辩过程中的精神状态优良中及格不及格二、论文(设计)质量1论文(设计)的整体结构是否符合撰写规范? 优良中及格不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优良中及格不及格三、论文(设计)水平1论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意?优良中及格不及格3、论文(设计说明书)所体现的整体水平优良中及格不及格评定成绩:优 良 中 及格 不及格(在所选等级前的内画“ V")教研室主任(或答辩小组组长):(签名)年 月 日教学系意见:系主任:(签名)年 月 日1课程设计目的通过我们对DSP控制器及其

7、应用课程的学习和理解,综合运用课本中所学到的理论知识完成一个温度 采集与显示的课程设计。通过这次实践锻炼我们查阅资料、方案比较、团结合作的能力。在这个过程我们 必须掌握温度采集技术的硬件设计、熟悉A/D转换技术和DSP夜晶显示功能的软件设计。学会采用简单电路的实验调试和整机指标测试方法,增强我们的动手能力,为以后学习和工作打下坚实基础 2课程设计正文 2.1系统分析2.1.1设计的任务及步骤(1)熟悉MC1403芯片的应用;(2)根据实验测得热敏电阻和温度的一些数据,设计温度一一电阻公式;(3)设计外部硬件电路;(4) 软件完成程序流程图设计和编程,其中包括A/D转换和液晶显示部分;(5 )编

8、写上位机程序(6)软硬件联合调试;(7)书写设计说明书。2.1.2技术要求此系统利用热敏电阻测得电阻一温度之间的关系,找到电阻和温度之间的代数关系,从而检测温度, 设计硬件外扩电路,同时设计软件程序,包括A/D程序设计,进行软硬件联系调试,能在液晶显示屏上显示温度。2.1.3设计思路首先设计温度采集电路,由于考虑到使用的是非线性负温度系数的热敏电阻,因此采用了桥式电路尽 量减小因外接不必要因素导致的误差,通过多次试验测得几个点,并拟合出一条合适的线性函数关系。其 次进行软件设计,主要包括AD转换模块、液晶显示模块、算法转换模块、主函数模块以及上位机模块。最后进行软硬件联系调试,并能在液晶上正常

9、显示温度值。2.2总体设计2.2.1硬件设计TMS320F2812作为本次课设使用的 DSP芯片。它包含33个电源引脚(为使器件正常运行,所有电源 引脚必须正确连接且不能悬空)时钟源模块,DSP有六种信号可以使 DSP控制器复位,即电源复位、复位引脚RS软件复位、非法地址复位、看门狗定时器溢出、欠压复位六种复位信号。所以在设计的初期, 把它分成了五个模块。其中复位采用电源复位的方式,由引脚PCRESE引起。为了可靠复位,其中低电平的有效时间至少 6个CPU寸钟周期。DSP最小系统组成框图如图 1所示。图1 DSP最小系统其中:开关SW-PB电容以及电阻构成一个简单的抚慰电路;晶振与两个并联电容

10、接在 XTAL1与XTAL2为2812提供外部时钟;HT7133芯片将5V直流电源转换为3.3V直流电源构成电源模块为2812供电。2.2.2系统框图设计该系统包括温度采集模块、F2812芯片、AD转换模块以及液晶显示模块,首先通过热敏电阻对外界温度的变化,从而改变其电位的变化,F2812芯片等待中断并接收数据,然后送入AD转换模块,AD对模拟信号进行转换,并将转换结果存放在结果寄存器的高12位,为保证数据精确多次采样求平均值,最后通过算法转换,将结果显示在LCD液晶上。系统设计流程如图2所示。图2系统设计流程图2.3单元电路的设计2.3.1温度采集电路考虑到此次使用的是非线性负温度系数的热敏

11、电阻,因此采用桥式电路尽量确保其精度,并使用低压基准芯片MC1403为电路提供基准电压,确保其尽量减少外界不必要因素的影响。温度采集电路如图 示。232单元模块的分析(1) MC1403氐压基准芯片引脚如图 4所示。-NC-NC-NCVin - %ut - GND-NC-图4 MC1403低压基准芯片引脚图Vin端口输入一个4.540V的模拟电压值(接P2 口的1引脚),在Vout端输出了一个稳定的电压值 (接 P2 口的1引脚,为AD模块提供参考模拟高电平),GND端接模拟地(接 P2 口的33引脚)为AD提供参考 模拟低电平,并与数字地短接。(2)AD转换模块当模/数转换完成后,读取结果寄

12、存器前,最好先读取模/数转换控制寄存器 ADCRL2的 ADCRESULT或ADCRESULT1以确定当前结果寄存器的状态,保证读取的结果是正确。另外,要注意12位的转换结果放在结果寄存器中的高12位上,要进行位移转换,该 12位数据与外部模拟输入电压的关系为:12位数字结果=4095* (输入电压/基准电压)基准电压:3V输入电压:A/D采集的电压12位数字结果:12位的转换结果是放在结果寄存器的高12位上。(3) LCD液晶显示模块DSP经常会对读写周期较慢的输入 /输出设备(如液晶显示模块、打印机、键盘等)进行访问,通常以下两种方法来解决 DSP与这些慢速设备之间的输入 /输出时序匹配问

13、题。直接访问方式是将DSP的读写信号限于慢速设备接口控制板引出的读写信号线直接相连,时序由DSP内部读写逻辑控制。由于慢速外设的读写周期相对 DSP较慢,是两者的时序匹配,还必须进行一些时序方面的控制处理。一中处理方法是软件 编程等待状态发生器,将外部总线周期扩展到数个机器周期。由于受硬件条件的限制,这种扩展通常也是 有限的。液晶显示为128行和64列的矩阵,它分左右两个平面,而一个字是16行和16列的矩阵,在按页的显示中每一页是一个 8行和128列的矩阵,所以每一行字是分两页显示的系统设计总电路图如图 5所示。(4)单片机与PC机串口通信DSP有 一个全双工的串行通讯口,所以DSP和电脑之间

14、可以方便地进行串口通讯。进行串行通讯时要满足疋的条件,比如电脑的串口疋RS232电平的,而DSP的串口是TTL电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。我们采用了三线制连接串口,也就是说和电脑的9针串口只连接其中的 3根线: 第5脚的GND第2脚的RXD第3脚的TXD。这是最简单的连接方法,但是对我们来说已经足够使用了, 电路如下图所示,图6异步串行通讯原理图DSP控制器串行通信接口( SCI)是一个标准的通用异步接收 /发送(UART通信接口。它的接收器和发送器都是双缓冲的。 DSP控制器

15、串行通信接口( SCI )有自已的使能和中断位,它们可以半双工或全双工方式工作。为了保证数据的完整性,串行通信接口对接收的数据进行间断检测、奇偶性、超时和帧错误的检查。位速率(波特率)可通过一个16位的比特率选择寄存器进行编程,因此,可以有超过65000种不同的速率。SCI模块是一个8位片内外设,通过 DSP的16位外部数据总线的低 8位与外部设备通信。SCI的物理描述:(1)两个I/O引脚。*SCIRXD( SCI接收数据输入)*SCITXD( SCI发送数据输出)(2) 通过一个16位波特率选择寄存器的编程,可得到超过65000种不同的可编程位速率。(3)18的可编程数据字长。(4)长度为

16、1位或2位的可编程停止位。(5 )内部产生的串行时钟。(6)四个错误检测标志。*奇偶性错误* 超限错误*帧错误 *间断检验(7 )两种唤醒多处理器模式,可与任意通信格式一起使用。*空闲线路唤醒* 位寻址唤醒(8 )半双工或全双工操作。(9)双缓冲接收和发送功能。(10)接收和发送操作均可通过中断或查询操作进行,相应的状态标志如下:发送器:TXRDY标志(发送器缓冲寄存器准备好接收另一个字符)和TXEMPT标志(发送移位寄存器空)。接收器:RXRDY标志(准备从接收缓冲寄存器中读出一个新字符)、BRKDT标志(间断条件发生)和RXERRQR可用来监视四个中断条件。(11 )发送器和接收器中断的分

17、立的使能位(间断除外)。(12) SCI数据,不管是接收的、还是发送的,都是NRZ(非归零)格式的。2.4软件程序设计2.4.1软件系统流程图软件系统流程如图6所示。图7软件系统流程图2.4.2软件程序设计程序主要包括主程序、中断、延时、A/D转换、算法转换、液晶显示等子程序,实现温度采集与显示的功能,程序详见附录。此次课设我主要负责AD转换、算法转换和主程序部分。AD转换部分我采用单通道采样方式对温度采集电路发送的值进行转换,并使用了第一组的6号中断对电路进行定时采样,由于考虑到热敏电阻比较灵敏,我采用了多次采样求平均值的方法确保数据精确。算法转换部分主要是对AD采集并转换的值进行进一步的转

18、换,主要是将桥式电路的电压与热敏电阻的关系和拟合的温度与电阻的关系整合在一起,使其转换为我们能看懂的温度,并将其一位一位拆分开来 复制到LCD液晶显示子程序,将结果显示字液晶屏上。(1)NTC热敏电阻原理及应用NTC热敏电阻器在室温下的变化范围在1001000000欧姆,温度系数-2%-6.5%。NTC热敏电阻器可广泛应用于温度测量、温度补偿、抑制浪涌电流等场合。NTC热敏电阻为负温度系数热敏电阻。零功率电阻值 RT ( Q ): RT指在规定温度T时,采用引起电阻值变化相对于总的测量误差来说可以忽 略不计的测量功率测得的电阻值。电阻值和温度变化的关系式为:RT = RN expB(1/T -

19、 1/TN)RT :在温度T ( K )时的NTC热敏电阻阻值。RN :在额定温度 TN ( K )时的NTC热敏电阻阻值。T :规定温度(K )。B : NTC热敏电阻的材料常数,又叫热敏指数。exp :以自然数e为底的指数(e = 2.71828 ,)。该关系式是经验公式,只在额定温度TN或额定电阻阻值 RN的有限范围内才具有一定的精确度,因为材料常数B本身也是温度T的函数。额定零功率电阻值 R25 ( Q ):根据国标规定,额定零功率电阻值是 NTC热敏电阻在基准温度 25 C 时测得的电阻值 R25,这个电阻值就是 NTC热敏电阻的标称电阻值。通常所说NTC热敏电阻多少阻值,亦指该值。

20、材料常数(热敏指数)B值(K )TiTjRjiB 二一In T-TiRnRT1 :温度T1 ( K )时的零功率电阻值。RT2 :温度T2 ( K )时的零功率电阻值。T1, T2 :两个被指定的温度(K )。对于常用的NTC热敏电阻,B值范围一般在 2000K6000K之间。已知150Q时为25C,即卩R25 =150 Q , 120Q时为45C,经计算,B约为2121.7K。代入得:r=150*exp(2121.7*(1/t)-1/298)取曲线上的任意几点,再用 Matlab进行曲线拟合,得到几条直线,经筛选后得到如图7的图形。经变换单位后,得到温度与电阻值之间的关系式:T = 125-

21、 2/3*R图8拟合后的直线其中横坐标为温度,单位为K;纵坐标为电阻值。由硬件部分(电桥电路)得到电压与电阻值之间的关系:V = 2.5*R1/(R1+R),其中R1=200Q,与上式相结合并经调试修改后,得到温度值与电压之间的关系:T=140.0-0.67*(500.0/V-200.0)/温度计算子程序void Wen du(float c)temperature=140.0-0.67*(500.0/c-200.0);T_tempe=(i nt)temperature;T_tempe1=T_tempe/10;T_tempe0=T_tempe%10;D_tempe=(i nt)(10*(tem

22、perature-T_tempe);(2)上位机SCI波特率的设置:16位的波特率数值用 BRR表示。SCI使用16位的波特率选择寄存器值来选择64K种不同的串行时钟频率中的一种。选择可以通过以下方法来确定:当BRR =165535时(BRR波特率选择寄存器中的16位值):SCI异步波特率SYSCLKmRR 聞 I <波特率是按位计算的,而每位需要8个SCICLK周期。当BRR = 0 时SCI异步波特率SYSCLK串行通信过程: 在进行串行通信之前,先对 SCI通信控制寄存器 SCICCR进行设置。信息块的起始位始终是 1位,停止位可选择1位或2位。数据位的长度是可编程的,可设置 18

23、位,由SCICCR的SCICHAR2 0设置。数据位长度小于 8位时, 写到发送缓冲寄存器 SCITXBUF的数据只有低L位被发送(这些数据位必须右对齐,因为对于少于8位的字符,左边的位是被忽略的)。校验位可设,由 SCICCR的PARITY ENABLE ( 5位)设置。校验方式有两种,奇、偶校验,由SCICCR的PARITY( 6位)设置。空闲线方式与地址位方式的选择,由SCICCR的 ADDR/IDLE MOD( 3位)设置。SCICCR的SCIENA( 4位)是一个总开关位。 在信息块的格式确定后就要确定串行通信的波特率。串行通信的时钟SCICLK是由时钟源模块的 SYSCLK按照SC

24、I波特率寄存器规定的分频系数分频后得到 的。16位的波特率寄存器 SCIHBAU刖SCILBAUD分别决定了波特率寄存器的高、低8位,二者共同构成了16位的波特率数值。 设置好串行通信的波特率后,就要确定接收、发送部分的控制位,这些由SCI控制寄存器SCICTL1、2来完成, 当数据写入 SCITXBUF时,SCICTL2的TXRDY( 7位)被清0;当SCITXBUF的数据全部移出后,贝U SCICTL2的TXRDY被置 1,并且产生发送中断 TXINT。(3)SCI下位机程序#inelude ” DSP281x_Device.h"/使用的函数原型声明void Gpio_selec

25、t(void);void SpeedUpRevA(void);void SCI_I nit(void);in terrupt void SCI_TX_isr(void);in terrupt void SCI_RX_isr(void);/全局变量char message=temperature;void mai n(void)InitSystem();初始化DSP内核寄存器Gpio_select();配置GPIO复用功能寄存器Ini tPieCtrl();调用外设中断扩展初始化单元PIE-u nit/(代码:DSP281x_PieCtrl.c)InitPieVectTable();初始化 PI

26、E vector 向量表/ (代码:DSP281x_PieCtrl.c)EALLOW;/解除寄存器保护PieVectTable.TXAINT=& SCI_TX_isr;PieVectTable.RXAINT=& SCI_RX_isr;EDIS;/使能寄存器保护/使能PIE中的SCI_A_TX_INT中断PieCtrlRegs.PIEIER9.bit.lNTx2=1;/使能PIE中的SCI_A_RX_INT中断PieCtrlRegs.PIEIER9.bit.INTx 1=1;/ 使能 CPU INT 9IER |=ox100;/全局中断使能和更高优先级的实时调试事件EINT;/

27、全局中断使能 INTMERTM;/使能实时调试中断 DBGMSCI_I nit();While(1)PieCtrlRegs.WDKEY=ox55; 看门狗控制PieCtrlRegs.WDKEY=oxAA;EDIS;/使能寄存器保护void Gpio_select(void)EALLOW;/解除寄存器保护GpioMuxRegs.GPAMUX.all=oxO; 所有 GPIO端口配置为 I/OGpioMuxRegs.GPBMUX.all=oxO;GpioMuxRegs.GPFMUX.all=oxO;GpioMuxRegs.GPDMUX.all=oxO;GpioMuxRegs.GPAMUX.bit.

28、SCIRXDA_GPIOF5=1; 配置 SCI_RX GpioMuxRegs.GPAMUX.bit.SCIXTDA_GPIOF4=1; 配置 SCI_TX GpioMuxRegs.GPEMUX.all=oxO;GpioMuxRegs.GPGMUX.all=oxO;GpioMuxRegs.GPADIR.all=oxO;/GPIO PORT 配置为输入GpioMuxRegs.GPBDIR.all=oxO; /GPIO PORT配置为输入GpioMuxRegs.GPDDIR.all=oxO; /GPIO PORT配置为输入GpioMuxRegs.GPEDIR.all=oxO; /GPIO PORT

29、配置为输入GpioMuxRegs.GPFDIR.all=oxO; /GPIO PORT配置为输入GpioMuxRegs.GPGDIR.all=oxO; /GPIO PORT配置为输入/设置所有GPIO输入的量化值等于 0 GpioMuxRegs.GPAQUAL.all=oxO;GpioMuxRegs.GPBQUAL.all=ox0;GpioMuxRegs.GPDQUAL.all=ox0;GpioMuxRegs.GPEQUAL.all=ox0;EDIS;/使能寄存器保护void InitSystem(void) /初始化 DSP内核寄存器EALLOW;/解除寄存器保护SysCtrlRegs.WD

30、CR=ox00AF; 配置看门狗ox00E8 禁止看门狗,预定标系数Prescaler=1/ox00AF不禁止看门狗,预定标系数Prescaler=64SysCtrlRegs.SCSR=0;/ 看门狗产生复位SysCtrlRegs. PLLCR.bit.DIV=10;/SysCtrlRegs.HISPCP.all=ox1;SysCtrlRegs. LOSPCP.all=ox2;/设置使用的外设时钟配置处理器锁相环,倍频系数为5配置高速外设时钟分频系数为2配置低速外设时钟分频系数为4/ 一般不使用的外设时钟禁止,降低系统功能SysCtrlRegs .P CLKCR.bit.EVAENCLK=0;

31、SysCtrlRegs .P CLKCR.bit.EVBENCLK=0;SysCtrlRegs.PCLKCR.bit.SCIAENCLK=1;/ 使能 SCI 模块的时钟SysCtrlRegs .P CLKCR.bit.SCIBENCLK=1;SysCtrIRegs .P CLKCR.bit.MCBSPENCLK=O;SysCtrIRegs .P CLKCR.bit.SPIENCLK=1;SysCtrIRegs. PCLKCR.bit.ECANENCLK=O;SysCtrIRegs .P CLKCR.bit.ADCENCLK=O;EDIS;/使能寄存器保护void SCI_Init(void)

32、SciaRegs.SCICCR.all=ox0007;/1bit 停止位无循环模式/无极性,字符长度:8bit/异步模式,空闲线协议SciaRegs.SCICTL1.all=ox0003;使能 TX RX 内部 SCICLK/RX ERR、SLEEP TXWAKESciaRegs.SCIHBAUD=487>>8; 波特率:9600(LSPCLK=37.5MHz) SciaRegs.SCILBAUD=487&oxOOFF;SciaRegs.SCICTL2.bit.TXINTENA=1; 使能 SCI 发送中断SciaRegs.SCICTL2.bit.RXBKINTENA=1;

33、使能 SCI 接收中断SciaRegs.SCIFFTX.all=oxE060;/bit15=1:退出复位/bit14=1 :使FIFO增强模式/bit13=1 :使能 TX FIFO 操作/bit6=1: CLR TXEFINT-标志/bit5=1 :使能 TX FIFO 匹配bit4O :如果 TX FIFO=0,产生 TX_ISR 中断SciaRegs.SCIFFRX.all=oxE065;/Rx中断级设置为 5SciaRegs.SCICTLI.all=ox0023;使 SCI 退出复位/SCI_A发送中断服务程序/发送字符串messagedin terrupt void SCI_TX_i

34、sr(void)int i;for(i=0;i<16;i+)SciaRegs.SCITXBUF= message"/重新初始化PIE,为SCI_A TX准备接收下一次中断PieCtrlRegs.PIEACK.all=ox0100;响应中断(4) 上位机程序如下:using System;using System.Collect ion s.Ge neric;using System.Comp onen tModel;using System.Data;using System.Draw ing;using System.Text;using System.Wi ndows.Fo

35、rms;using Syste m.IO;using Syste m.IO .Ports;namespace WEUDUCELIANGpublic partial class Form1 : Formstring serialReadString, ss, cc, string1;int i = 0;public Form1()In itializeComp onen t();timer1.Interval =1;/设置 timer 控件时间间隔timer1.E nabled = false;serialPort1.DataBits = 8;serialPort1.StopBits = Sys

36、tem.IO.Ports.StopBits. On e;serialPort1.ReadBufferSize = 500000;serialPort1.RtsEnable = true; /如果是 RS232转RS485,此句必须要,否则不能通讯serialPort1.NewLi ne = "rn"private void butt on 1_Click(object sen der, Even tArgs e)if (butt on 1.Text ="打开串口 ”)if (!serialPort1.lsOpe n)/如果串口是关闭的/设定串口信息和波特率seri

37、alPortl.PortName = boBoxl.Selectedltem.ToStri ng();serialPortl.BaudRate =Con vert.ToI nt32(boBox2.Selectedltem.ToStri ng(); serialPort1.Parity = Parity. None;serialPort1.DataBits =Con vert.ToI nt16(boBox4.Selectedltem.ToStri ng();serialPort1.StopBits = StopBits. On e;tryserialPort1.Ope n();/button1.

38、Text ="关闭串口 "comboBox1.E nabled = false;comboBox2.E nabled = false;comboBox3.E nabled = false;comboBox4.E nabled = false;comboBox5.E nabled = false;catch打开串口/改变按钮上的字符MessageBox.Show(”elseserialPort1.Close();butt on 1.Text ="串口打开失败!n可能是串口已被占用!");/如果串口是打开的/打开串口 "/关闭串口改变按钮上的字符c

39、omboBox1.E nabled = true;comboBox2.E nabled = true; comboBox3.E nabled = true; comboBox4.E nabled = true; comboBox5.E nabled = true;Illi)elseserialPort1.Close();serialPort1.Dispose();/关闭串口buttonl.Text ="打开串口 "/改变按钮上的字符comboBoxl.E nabled = true;comboBox2.E nabled = true;comboBox3.E nabled =

40、 true;comboBox4.E nabled = true;comboBox5.E nabled = true;btn CJ.E nabled = true;butt on4.En abled = false;private void btn CJ_Click(object sen der, Even tArgs e)tryif (serialPort1.lsOpe n)bt nCJ.E nabled = false;butt on4.En abled = true;serialReadStri ng = serialPort1_DataReceived1();if(serialReadS

41、tri ng != ""&&( serialReadStri ng!= cc| textBox1.Text =textBox1.AppendText(”时间:"+ DateTime.Now.ToString() + "温度:"+ serialReadString + "°C " + "r n");cc = serialReadStri ng;timer1.Start();elseMessageBox.Show(”串口未打开请先打开串口!");catch/抛出异常Mess

42、ageBox.Show(”没找到设备”);serialPort1.Close();serialPort1.Dispose();private void butt on 4_Click1(object sen der, Even tArgs e)timer1.Stop();butt on4.En abled = false;btn CJ.E nabled = true;stri ng1 =""serialPort1.Close();serialPort1.Dispose();/privatevoid butt on 2_Click(objectsen der, Even tA

43、rgs e)清除listbox 控件中的内容textBox1.Text =""/privatevoid butt on 3_Click(objectsen der, Even tArgs e)保存温度数据System.lO.FileStream objfile;saveFileDialog1.ShowDialog();if (saveFileDialog1.FileName != null)objfile = System.IO.File.Create(saveFileDialog1.FileName);objfile.Close();objfile.Close();obj

44、file.Dispose();Syste m.I O.StreamWriter objfiles = newStreamWriter(saveFileDialog1.FileName);objfiles.Write(textBoxl.Text);objfiles.Close();objfiles.Dispose();elseMessageBox.Show(”路径不可为空!");private void timer1_Tick(object sen der, Even tArgs e)serialReadStri ng = serialPort1_DataReceived1();时间:

45、” + DateTime.Now.ToStri ng() + " 温度:” +时间:” + DateTime.Now.ToStri ng() + " 温度:” + ccif (serialReadStri ng != "" && (serialReadStri ng != cc | textBox1.Text ="") textBox1.Appe ndText("serialReadString + "C " + "rn");cc = serialReadStri ng

46、;serialReadStri ng =""else textBox1.Appe ndText(”+ " C " + "rn");/ <summary>III接收信息/ </summary>/ <param n ame="data">存储接收的信息</param>/ <param n ame="offset">缓冲区数组中开始与入的偏移量</param>/ <param n ame="co un t"

47、;>要读取的字节数</param>/ <param n ame="serialPort">串行口 </param>/ <retur ns></retur ns> public bool ReceiveData(byte data, int offset, int count, SerialPort serialPort) if (serialPort1.lsOpe n)tryserialPort1.Read(data, offset, coun t);return true;catchreturn false

48、;elsereturn false;private void comboBox1_Selectedl ndexCha nged(object sen der, Even tArgs e)this.serialPort1.PortName = boBox1.Selectedltem.ToStri ng();private void comboBox2_Selectedl ndexCha nged(object sen der, Even tArgs e)this.serialPort1.BaudRate = Co nvert.ToI nt32(boBox2.Selectedltem);priva

49、te void comboBox3_Selectedl ndexCha nged(object sen der, Even tArgs e)switch (boBox3.Selectedltem.ToStri ng()case "Non e":this.serialPort1.Parity = Parity. None;break;case "Eve n":this.serialPortl.Parity = Parity.Eve n; break;case "Odd":this.serialPortl .P arity = Parit

50、y.Odd;break;default: this.serialPort1.Parity = Parity. None;break;private void comboBox4_Selectedl ndexCha nged(object sen der, Even tArgs e)this.serialPort1.DataBits = Co nvert.ToI nt16(boBox4.Selectedltem);private void comboBox5_Selectedl ndexCha nged(object sen der, Even tArgs e)switch (Co nvert.

51、ToI nt16(boBox5.Selectedltem)case 1:this.serialPort1.StopBits = StopBits. On e; break;case 2:this.serialPortl.StopBits = StopBits.Two; break;default:this.serialPortl.StopBits = StopBits. On e; break;private void Form1_Load(object sen der, Even tArgs e)#region以下各赋值语句都会触发相应的口进行初始化设boBoxl.Selectedltem

52、= boBox1.ltems3;boBox2.Selectedltem = boBox2 .l tems3;boBox3.Selectedltem = boBox3 .l tems0;Selectedl ndexCha nged 事件,同时会对串"C0M4"9600;8;boBox4.Selectedltem = boBox4.ltems0;/Parity. None;boBox5.Selectedltem =boBox5 .I tems0;/StopBits. One#en dregi onstring serialPort1_DataReceived1()/ss = n

53、u II;serialPort1.Write("rn");把数据写入输入缓冲器区stri ng1 += serialPort1.ReadExist in g();if (i >= stri ng1.Le ngth)i = 0; stri ng1 =""return stri ng1;elseif (string1.Length >= 5)for (; i < stri ng1.Le ngth;)ss = string1.Substring(i, 5);i += 5;return ss;return string1.Substring(i-5, 5);elsestri ng1 = ss;return ss;private void Form1_FormClos in g(object sen der, FormClos in gEve ntArgs e)DialogResult rst = MessageBox.Show(this,"您真的要退出温度测量系统吗?","提示”MessageBoxButt on s.YesNo, MessageBoxIco n.Questio n);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论