版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录第一章 系统概要11.1 系统背景11.2 系统功能框图1第二章 系统硬件设计22.1 系统原理图22.2 单片机(MCU)模块22.2.1 MC908GP32单片机性能概述22.2.2 内部结构简图与引脚功能32.2.3 GP32最小系统52.3 传感器模块62.4 信号放大模块72.5 A/D转换模块72.5.1 进行A/D转换的基本问题72.5.2 A/D转换模块的基本编程方法82.5.3 A/D芯片TCL2543概述82.6 串行通信模块112.6.1 串行通信常用概念112.6.2 RS-232C总线标准12第三章 系统软件设计133.1 MCU方(C)程序133.1.1 A/D
2、转换子程序143.1.2 串行通信子程序173.2 PC方(VB)程序193.3 PC方界面23第四章 系统测试24第五章 总结展望245.1 总结245.2 展望25参考文献25第一章 系统概要1.1 系统背景 温度是日常生活、工业、医学、环境保护、化工等领域遇到的一个物理量。温度测量的基本方法是使用温度计直接读取。最常见的测量温度的工具是各种各样的温度计,它们常常以刻读的形式表示温度的高低,人们必须通过读取刻度的多少来测量温度。由于单片机在检测和控制系统中得到广泛的应用,利用单片机和温度传感器构成的电子式智能温度计就可以直接测量温度,得到温度的数字值并显示出来,既简单方便,又直观准确。 本
3、次课程设计的目的是以MC908GP32单片机为核心设计出一个路温度测量系统。设计将温度传感器采样得到的模拟信号转换成数字信号,通过串口在PC的界面显示出来。本次课程设计用温度传感器将被测温度转换为电量,经过放大滤波电路处理后,由模数转换器将模拟量转换为数字量,再与单片机相连,通过可编程键盘显示接口芯片实现温度限值的设定。.被测量经过温度传感器转换为电量,再放大后送给A/D转换器。电量经过A/D转换为二进制数值,单片机根据设计目的完成相应的软件处理。处理完毕后,送键盘显示处理芯片,然后再由数码管显示。这是一种低成本的利用单片机I/O口实现的温度检测电路, 该电路非常简单, 易
4、于实现, 并且适用于几乎所有类型的单片机。1.2 系统功能框图 数据采集与传输系统一般由信号调理电路,多路开关,采样保持电路,A/D,单片机,电平转换接口,接收端(单片机、PC或其它设备)组成。 A/D转换模块即模/数转换模块,功能是将电压信号转换为对应的数字信号。实际应用中,这个电压信号可能由温度,湿度,压力等实际物理量经过传感器和相应的交换电路转换而来。经过A/D转换后,MCU就可以处理这些物理量。 第二章 系统硬件设计2.1 系统原理图 整个系统软件设计分为两个部分,作为主控的PC端的软件设计及作为数据采集器的单片机终端节点的软件设计。系统采用模块化编程,将各部分功能分别实现,
5、主要的功能子程序有:数据采集、标度变换、数制转换、数值显示、发送、接收和部分中断子程序。 图2.1 系统原理图2.2 单片机(MCU)模块2.2.1 MC908GP32单片机性能概述 MC908GP系列单片机是HC80系列单片机大家族中具有通用性的一族,MC908GP32是MC908GP系列中的一个型号,MC908GP32单片机具有3种封装形式,分别为40脚、42脚、44脚。MC908GP32单片机的主要特点如下:(1)512B片内RAM;32KB片内Flash程序存储器,具有在线编程能力和保密功能。(2)时钟发生器模块,具有PLL电路,可产生各种工作频率;内部总线频率最高可达8MHz。(3)
6、增强的HC50 CPU结构,16种寻址方式(比HC50多8种),16位变址寄存器和堆栈指针,存储器至存储器数据传送,快速8*8指令,扩展的循环控制功能,BCD功能。(4)33根通用I/O脚,包括26根多功能I/O脚和5或7根专用I/O脚;PTA、PTC和PTD的输入口有可选择的上拉电阻;PTC0PTC4有25mA吸流和放流能力,其他口有15mA吸流和放流能力(总体驱动电流应小于150mA);所有口有最高5mA输入电流保护功能。(5) 增强型串行通信口SCI;串行外围接口SPI;两个16位双通道定时器接口模 块(TIM1和TIM2),每个通道可选择为输入捕捉、输出比较和PWM,其时钟可分别选为内
7、部时钟的1、2、4、8、16、32和64的分频值;带时钟预分频的定时基模块有8种周期性实时中断(1、4、16、256、512、1024、2048和4096Hz),可在STOP方式时使用外部32KHz晶振周期性唤醒 CPU;8位键盘唤醒口。(6)系统保护特性:计算机工作正常(COP)复位;低电压检测复位,可选为3V或5V操作;非法指令码检测复位;非法地址检测复位。(7)具有PDIP40、SDIP42和QFP44封装形式。(8)优化用于控制应用;优化支持C语言。2.2.2 内部结构简图与引脚功能1. 内部结构简图(44引脚) 单片机(以下简称GP32单片机)的三种封装形式只是引脚数量和形式有所区别
8、,其它方面是一致的。图中I/O口是按 44引脚的GP32给出的,对于42引脚的GP32单片机则没有PTC5、PTC6两个引脚,对于40引脚的GP32单片机则没有PTC5、PTC6及 PTD6/T2CH0、PTD7/T2CH1四个引脚。从内部结构简图可以看出,GP32内部有以下主要部分:CPU08、存储器、定时器接口模块、定时基模块、看门狗模块、通用I/O接口、串行通信接口 SCI、串行外设接口SPI、断点模块、A/D转换模块、键盘中断模块、时钟发生模块及锁相环电路、低电压禁止模块、复位与中断模块、监控模块MON和系统设置模块。2. GP32单片机的引脚功能40引脚的MC908GP32单片机的引
9、脚图,引脚功能分类简介如下:(1) 电源类引脚VDD、VSS(20脚、19脚):电源供给端。VDDAD /VREFH、VSSAD /VREFL(31脚、32脚):内部A/D转换器的电源供给及参考电压输入端。VDDA、VSSA(1脚、2脚):时钟发生器模块(CGM)的电源供给端。(2) 控制类引脚(6脚):外部低有效复位输入或输出脚,有内部上拉电阻。(14脚):外部中断输入脚,有内部上拉电阻。(3) I/O类引脚PTA7/KBD7PTA0/KBD0(4033脚):8位通用双向I/O口,每个可编程为键盘输入脚。PTB7/AD7PTB0/AD0(3023脚):8位通用双向I/O口,也可作为8路8位A
10、/D转换输入脚。PTC4PTC0(117脚):5位通用双向I/O口。PTD5/T1CH1PTD0/ (22、21、1815脚):6种特殊功能、双向I/O口,其中T1CH1、T1CH0用于定时器模块(TIM1)。SPSCK、MOSI、MISO、 用于串行外围接口(SPI)。PTE0/TxD、PTE1/RxD(12脚、13脚):2位双向I/O口或串行通讯口。(4) 其它CGMXFC(3脚):CGM的外部滤波电容连接脚。OSC1、OSC2(5脚4脚):片内振荡器引脚。2.2.3 GP32最小系统 最小系统图是能够保证单片机正常工作的最小模块,它使用了最少的器件,芯片,并组合了温度测量的一些必备组件,
11、如蜂鸣器,电阻,二极管,电容等。各部件相互配合,共同完成了温度测量系统全部工作。 GP32最小系统1.电源供给与滤波 GP32芯片的20、19脚(VDD、VSS)为芯片的电源输入端,1、2脚(VDDA、VSSA)为内部PLL模块的电源供给。接在电源与地之间的0.1µF电容为滤波电容。PLL电路目的在于由频率小的外部晶振产生较大频率的内部总线时钟,提高芯片的抗干扰性。由于这部分内容涉及的编程内容很少,但原理较难理解,所以放入第14章介绍。这里只要知道GP32内有PLL电路就可以了,而且GP32内的PLL电路模块需要外接电源。在MCU的第3脚,接有内部PLL模块的外部滤波电路。
12、滤波电路的作用主要是增强电路工作稳定性。2.晶振电路 接MCU第4、5脚(OSC2、OSC1)之间的电路为晶振电路,这里选用的晶振频率为f=32.768KHz。通过内部PLL电路模块,可获得小于等于8MHz的内部总线频率。电路及其元件参数是由GP32参考手册确定的。实际开发中,嵌入式应用工程师往往根据参考手册提供的电路及参数,通过自己的实践,构筑MCU的外围支撑电路,而不深究其工作原理。3.复位电路接在MCU第6脚( )的电路为芯片硬件复位电路。正常工作时该脚通过10K电阻接到电源正极(这里设为5V电源供电),所以应为高电平。若按下复位按钮RST,则第6脚通过51Ω接地,为
13、低电平,芯片复位。2.3 传感器模块 温度传感器采用的是NS公司生产的LM35,它具有很高的工作精度和较宽的线性工作范围,该器件输出电压与摄氏温度线性成比例。LM35与用开尔文标准的线性温度传感器相比更有优越之处,LM35无需外部校准或微调,可以提供±1/4的常用的室温精度。 工作电压:直流430V; 工作电流:小于133A 输出电压:+6V-1.0V 输出阻抗:1mA负载时0.1; 精度:0.5精度(在+25时); 漏泄电流:小于60A; 比例因数:线性+10.0mV/; 非线性值:±1/4; 校准方式:直接用摄氏温度校准; 使用温度范围:-55+150额定范围。 基于L
14、M35开发的温控系统,工作稳定可靠,具有体积小、灵敏度高、响应时间短、抗干扰能力强等特点。LM35的输出电压与摄氏温度的线形关系可用下面公式表示,0时输出为0 V,每升高1,输出电压增加10 mV。其电源供应模式有单电源与正负双电源两种。正负双电源的供电模式可提供负温度的测量,单电源模式在25下电流约为50 mA,非常省电。2.4 信号放大模块 由于温度传感器LM35输出的电压范围为00.99 V,虽然该电压范围在AD转换器的输入允许电压范围内,但该电压信号较弱,如果不进行放大直接进行AD转换则会导致转换成的数字量太小、精度低。系统中选用通用型放大器A741对LM35输出的电压信号进行幅度放大
15、,还可对其进行阻抗匹配、波形变换、噪声抑制等处理。系统采取同相输入,电压放大倍数为5倍,电路图如图所示: 信号放大电路图2.5 A/D转换模块2.5.1 进行A/D转换的基本问题A/D转换模块(Analog To Digital Convert Module),即模/数转换模块,是将电压信号转换为对应的数字信号。这个电压量是由压力传感器把压力转换过来,传到MCU处理。(1)采样精度:是指数字量变化一个最小量时模拟信号的变化量,即通常所说的采样位数。 (2)采样速率:是指完成一次A/D采样所要花费的时间。 (3)滤波:为了使采样的数据更准确,对采样的数据进行筛选去掉误差较大的毛刺。通常采用中值滤
16、波和均值滤波来提高采样精度。中值滤波是取3次采样的中间值,均值滤波是取多次采样的算术平均值。 (4)物理量回归:把A/D采样值与实际物理量对应起来。2.5.2 A/D转换模块的基本编程方法(1)A/D转换初始化:对ADCLK写入控制字节,决定时钟输入源是内部总线还是外部晶振,决定分频系数等。 (2)启动A/D转换:对ADSCR写入控制字节,选取要转换的通道、决定转换结束数据获取的方式、设置是连续转换还是一次转换等。 (3)获A/D转换结果:若是中断方式,在A/D中断程序中取得,若是查询方式,通过ADSCR的第7位(COCO位)取得,当COCO=1时可从ADR中取数。2.5.3 A/D芯片TCL
17、2543概述一、引脚:TLC2543为20脚DIP封装,引脚图如下图所示。 TLC2543引脚图 TLC2543具有4线制串行接口,分别为片选端(CS),串行时钟输入端(I/O CLOCK),串行数据输入端(DATA IN)和串行数据输出端(DATA OUT)。它可以直接与SPI器件进行连接,不需要其他外部逻辑。同时,它还在高达4MHz的串行速率下与主机进行通信。 TLC2543除了具有高速的转换速度外,片内还集成了14路多路开关。其中n路为外部模拟量输入,3路为片内自测电压输入。在转换结束后,EOC引脚变为高电平,转换过程中由片内时钟系统提供时钟,无需外部时钟。在AD转换器空
18、闲期间,可以通过编程方式进入断电模式,此时器件耗电只有25pA。AD芯片TLC2543是一种12位开关电容逐次逼近式模数转换器,带有SPI(Serial Peripheral Interface)接口。它消除了以往许多AD芯片并行输出、连线复杂的缺点,并在AD转换结果串行输出的同时,可以串行输入下次AD转换位的控制字。TLC2543的管脚如图所示。它有三个输入控制端:片选()、 IO时钟(IOclock)以及数据输入端(Data Input),同时还可以通过一个串行的三态输出端与主处理器及其外围串行口进行通讯,以输出转换结果。除了高速的转换功能和通用的控制能力外, TLC2543的片内还具有1
19、4通道多路器,可以选择11个模拟输入通道(AIN0AIN10)或3个内部自测电压(selftest)中的一个。转换结束时,EOC输出端变高,指示转换完成。二、控制字:TLC2543的工作过程如下:首先在8、12或16时钟周期里向片内控制寄存器写入8位的控制字,控制字中的2位决定时钟长度,在最后一个时钟周期的下降沿启动AD转换过程,经过一段转换时间,在随后的8、12或16个时钟周期里,从DATA OUT脚读出数据。控制字的定义见下表: 控制字的前四位(D7-D4)代表11个模拟通道的地址;当其为1100-1110时,选择片内检测电压;当其为1111时,为软件选择的断电模式,此时,AD转换器的工作
20、电流只有25uA。控制字的第3位和第4位(D3一D2)决定输出数据的长度,01表示输出数据长度为8位;11表示输出数据长度为16位;X1表示输出数据长度为12位,X可以为1或0。制字的第2位(D1)决定输出数据的格式,0表示高位在前,1表示低位在前。控制字的第1位(D0)决定转换结果输出的格式。当其为0时,为无极性输出(无符号二进制数),即模拟电压为Vnef+,时,转换的结果为0FFFH;模拟电压为Vnef-时,转换的结果为0000H。其为1时,为有极性输出(有符号二进制数),即模拟电压高于(Vnef+-Vnef-)/2时符号位为0;模拟电压低于(Vnef+-Vnef-)/2时符号位为1;模拟
21、电压为Vnef+时,转换的结果为03FFH;模拟电压为Vnef-时,转换的结果为0800H。模拟电压为(Vnef+-Vnef-)/2时,转换的结果为0000H。三、工作时序 :以MSB为前导, 用CS进行12个时钟传送的工作时序如下图所示。1.上电时,EOC=“1”,CS=“1”2.使CS下降,前次转换结果的MSB即A11位数据输出到Dout供读数。3.将输入控制字的MSB位即C7送到Din,在CS之后tsu>=1.425us后,使CLK 上升,将Din上的数据移入输入寄存器。4.CLK下降,转换结果的A10位输出到Dout供读数。5.在第4个CLK下降时,由前4个CLK上升沿移入寄存器
22、的四位通道地址被译码, 相应模入通道接通,其模入电压开始时对内部开关电容充电。6.第8个CLK上升时,将Din脚的输入控制字C0位移入输入寄存器后,Din脚即无效。7.第11个CLK下降,上次AD结果的最低位A0输出到Dout供读数。至此,I/O数据已全部完成,但为实现12位同步,仍用第12个CLK脉冲,且在其第12个CLK下降时,模入通道断开,EOC下降,本周期设置的AD转换开始,此时使CS上升。8.经过时间tconv<=10us,转换完毕,EOC上升。9.使CS下降,转换结果的MSB位B11输出到Dout供读数。10.将新周期的输入控制字的MSB位D7送到Din,在CS下降之处,tS
23、U时间处由CLK上升将Din数据移入输入寄存器。11.CLK下降,将AD结果的B10位输出到Dout。上电时,第一周期读取的Dout数据无效,应舍去。2.6 串行通信模块2.6.1 串行通信常用概念()异步串行通信的格式SCI通常采用NRZ数据格式,即:standard non-return-zero mark/space data format,译为:“标准不归零传号/空号数据格式”。“不归零”的最初含义是:用正、负电平表示二进制值,不使用零电平。“mark/space”即“传号/空号”分别是表示两种状态的物理名称,逻辑名称记为“1/0”。下图给出了 8位数据、无校验情况的传送格式。(2)串
24、行通信的波特率波特率:每秒内传送的位数。 波特率单位是位/秒,记为bps。通常情况下,波特率的单位可以省略。通常使用的波特率有300、600、900、1200、1800、2400、4800、9600、19200、38400。 (3)奇偶校验字符奇偶校验检查称为垂直冗余检查,它是每个字符增加一个额外位使字符中“1”的个数为奇数或偶数。奇校验:如果字符数据位中“1”的数目是偶数,校验位应为“1”,如果“1”的数目是奇数,校验位应为“0”。偶校验:如果字符数据位中“1”的数目是偶数,则校验位应为“0”,如果是奇数则为“1”。 (4)串行通信的传输方式单工:数据传送是单向的,一端为发送端,另一端为接收
25、端。这种传输方式中,除了地线之外,只要一根数据线就可以了。有线广播就是单工的。全双工:数据传送是双向的,且可以同时接收与发送数据。这种传输方式中,除了地线之外,需要两根数据线,站在任何一端的角度看,一根为发送线,另一根为接收线。一般情况下,MCU的异步串行通信接口均是全双工的。半双工:数据传送也是双向的,但是在这种传输方式中,除了地线之外,一般只有一根数据线。任何一个时刻,只能由一方发送数据,另一方接收数据,不能同时收发。2.6.2 RS-232C总线标准 MCU引脚一般输入/输出使用TTL电平,而TTL电平的“1”和“0”的特征电压分别为2.4V和0.4V,适用于板内数据传输。为了使信号传输
26、得更远,美国电子工业协会EIA制订了串行物理接口标准RS-232C。RS-232C采用负逻辑,-3V-15V为逻辑“1”,+3V+15V为逻辑“0”。RS-232C最大的传输距离是30m,通信速率一般低于20Kbps。RS-232接口,简称“串口”,它主要用于连接具有同样接口的室内设备。目前几乎所有计算机上的串行口都是9芯接口。右图给出了9芯串行接口的排列位置,相应引脚含义见表。引脚号功能1接收线信号检测(载波检测DCD)2接收数据线(RxD)3发送数据线(TxD)4数据终端准备就绪(DTR)5信号地(SG)6数据通信设备准备就绪(DSR)7请求发送(RTS)8清除发送9振铃指示 表1 芯串行
27、接口引脚含义表 图2.6(a) 芯串行接口排列图 图2.6(b) MAX232芯片引脚图 在MCU中,若用RS-232C总线进行串行通信,则需要外接电路实现电平转换。在发送端需要用驱动电路将TTL电平转换成RS-232C电平,在接收端需要用接收电路将RS-232C电平转换成TTL电平。电平转换器不仅可以由晶体管分立元件构成,也可以直接使用集成电路。该系统使用MAX232芯片,该芯片使用单一+5V电源供电实现电平转换。图给出了MAX232的引脚。MAX232芯片引脚含义说明如下: VCC(16脚):正电源端,一般接+5V GND(15脚):地 VS+(2脚):VS+=2VCC-1.5V VS-(
28、6脚):VS-=-2VCC-1.5V C2+、C2-(4、5脚):一般接1F的电解电容 C1+、C1-(1、3脚):一般接1F的电解电容输入输出引脚分两组,基本含义见表2。在实际使用时,若只需要一路SCI,可以使用起中的任何一组。组别TTL电平引脚方向典型接口RS-232电平引脚方向典型接口11112输入输出接MCU的TxD接MCU的RxD1314输入输出连接到接口与其他设备通过RS-232相接2109输入输出接MCU的TxD接MCU的RxD87输入输出连接到接口与其他设备通过RS-232相接 表2 MAX232芯片I/O引脚分类与基本接法第三章 系统软件设计3.1 MCU方(C)程序软件设计
29、包括MCU的程序设计和PC机端的软件设计。MCU的所有程序文件如下表所示。文件类型文件名功能简介头文件GP32C. hGP32 MCU映像寄存名定义头文件EnDisInt.h开放或禁止MCU各模块中断头文件Type.h类型别名定义头文件Includes.h总头文件AD.h"A/D转换头文件SCI.h串行通信头文件C语言子函数文件Setup.c芯片初始化文件SCI.c串口通信文件AD.cA/D转换文件C语言主函数Main.c主函数文件3.1.1 A/D转换子程序1. A/D转换有关头文件ADC.h/ADC.hA/D转换头文件-#include "GP32C.h" /
30、GP32 MCU映像寄存器名定义#include "Type.h" /类型别名定义#define COCOBit 7void ADCinit(void); /A/D转换初始化 INT8U ADCvalue(INT8U channel); /1路A/D转换函数INT8U ADCmid(INT8U channel); /1路A/D转换函数(中值滤波) INT8U ADCave(INT8U channel, INT8U n); /1路A/D转换函数(均值滤波)2. A/D转换有关C语言子函数AD.C/*- ADsub.c-*文件描述:本文件包含了A/D转换的3个子函数,分别为:
31、*(1)advalue:获取1路A/D转换结果 * unsigned char advalue(unsigned char channel) *(2)admid:获取中值滤波后的A/D转换结果 * unsigned char admid(unsigned char channel) *(3)adave:获取均值滤波后的A/D转换结果 * unsigned char adave(unsigned char n, * unsigned char channel) /以下为子程序源代码/包含头文件#include "GP32C.H"#define COCOBit 7 /转换完成标
32、志位/*advalue:1路A/D转换函数-*功能:获取通道channel的A/D转换结果 *参数:channel=通道号 *返回:该通道的A/D转换结果 *-*/ unsigned char advalue(unsigned char channel) /选取通道号ADCH4-ADCH0=00000-00111unsigned char tmp;channel&=0b00011111;tmp=ADSCR&0b11100000;tmp=tmp|channel;ADSCR=tmp; /取A/D转换结果 while(1)if(ADSCR&(1<<COCOBit)
33、!=0) tmp=ADR; break;return tmp; /*admid:1路A/D转换函数(中值滤波)-*功能:获取通道channel中值滤波后的A/D转换结果 *参数:channel=通道号 *返回:该通道中值滤波后的A/D转换结果 *-*/ unsigned char admid(unsigned char channel) unsigned char i,j,k,tmp; /取三次A/D转换结果 i=advalue(channel); j=advalue(channel); k=advalue(channel); /从三次A/D转换结果中取中值 if (i>j) tmp=i
34、; i=j; j=tmp; if (k>=j) tmp=j; else if (k>=i) tmp=k; else tmp=i; return tmp; /*adave:1路A/D转换函数(均值滤波)-*功能:对通道channel的A/D转换结果求n次平均值 *参数:n=平均次数,channel=通道号 *返回:该通道均值滤波后的A/D转换结果 *-*/ unsigned char adave(unsigned char n,unsigned char channel) /求n次A/D转换的平均值 unsigned char i; unsigned int j; j=0; for
35、(i=0;i<n;i+) j+=admid(channel); j=j/n; return (unsigned char)j; 3. A/D转换08C测试主程序/总头文件#include "Includes.h"/主程序void main(void) DisableMCUint(); /禁止总中断 /1. 芯片初始化 MCUinit(); /2. 模块初始化 SCIinit(); /(1) 串行口初始化 ADCinit(); /(2) A/D转换初始化 while (1) /在通道0做A/D转换,200次中值滤波,串口发送均值滤波结果 SCIsend1(ADCave(
36、0, 200); 3.1.2 串行通信子程序串行通信驱动文件包括SCI初始化、接收1字节、发送1字节、接收n字节和发送n字/SCI.c串行通信-*/硬件连接: /MCU的串口与PC方的串口相连 /-*#include "SCI.h"/SCIinit:串行口初始化-*/功能:对串行口进行初始化,默认为允许SCI,正常码输出,8位数据,无校验 /允许发送器,允许接收器.查询方式收发,波特率为9600(设fBUS= 2.4576MHz) /-*void SCIinit(void) /1.总线频率fBUS = 2.4576MHz,定义波特率Bt = 9600 SCBR = 0b00
37、000010; /2.设置允许SCI,正常码输出,8位数据,无校验 SCC1 = 0b01000000; /3.设置允许发送,允许接收,查询方式收发 SCC2 = 0b00001100;/SCIsend1:串行发送1个字节-*/功能:串行发送1个字节 /-*void SCIsend1(INT8U o) /判断ReStatusR的第SendTestBit位是否为1,是1可以发送 while (1) if (ReSendStatusR & (1<<SendTestBit) != 0) ReSendDataR = o; break; /SCIsendN:串行发送N个字节-*/功能
38、:发送数组中的N个字节数据 /-*void SCIsendN(INT8U n, INT8U ch) int i; for(i=0; i<n; i+) SCIsend1(chi); /SCIre1:串行收一个字节数据-*/功能:从串行口接收1个字节的数据 /-*INT8U SCIre1(INT8U *p) INT16U k; INT8U i; /ReStatusR第ReTestBit位为1表示可接收数据for(k=0; k < 0xfbbb; k+) if (ReSendStatusR & (1<<ReTestBit) != 0) i = ReSendDataR;
39、 *p = 0x00; break; /接受失败 if (k >= 0xfbbb) i = 0xff; *p = 0x01; return i;/SCIreN:HC08串行接收N个字节-*/功能:接收N个字节数据,并存放在ch数组中 /-*INT8U SCIreN(INT8U n, INT8U ch) int m; INT8U fp; m = 0; while (m < n) chm = SCIre1(&fp); if (fp = 1) return 1; m+; return 0;3.2 PC方(VB)程序Option ExplicitDim i%Dim ww() As
40、ByteDim buf(0 To 1000) As StringDim x!(51)Dim sx As IntegerDim xx As IntegerDim cn As ADODB.ConnectionDim rs As ADODB.RecordsetDim bc As LongDim cc As IntegerPrivate Sub Form_Load() If MSComm1.PortOpen = True Then MSComm1.PortOpen = False End IfMSComm1.Settings = "9600,n,8,1" MSComm1.CommP
41、ort = 1 MSComm1.InputMode = comInputModeTextMSComm1.InputLen = 0MSComm1.RThreshold = 0MSComm1.InBufferCount = 0MSComm1.RThreshold = 1xx = 0 Set cn = New ADODB.ConnectionSet rs = New ADODB.Recordsetcn.Provider = "Microsoft.Jet.OLEDB.4.0"cn.Open App.Path + "wddj.mdb" rs.Open "
42、wddjb", cn, adOpenDynamic, adLockOptimistic, adCmdTable rs.AddNewText1.Text = ""Text2.Text = "" i = 0 bc = 1End SubPrivate Sub Form_Unload(Cancel As Integer) If MSComm1.PortOpen = True Then MSComm1.PortOpen = False End IfEnd SubPrivate Sub Label4_Click()Text1.Text = "&q
43、uot;graph1.Clsbuf(1) = 0 buf(2) = 0 buf(3) = 0 buf(4) = 0 buf(5) = 0 buf(6) = 0 buf(7) = 0 buf(8) = 0 buf(9) = 0 buf(10) = 0 buf(11) = 0 buf(12) = 0 buf(13) = 0 buf(14) = 0 buf(15) = 0 buf(16) = 0 buf(17) = 0 buf(18) = 0 buf(19) = 0 buf(20) = 0 buf(21) = 0 buf(22) = 0 buf(23) = 0 buf(24) = 0 buf(25)
44、 = 0 buf(26) = 0 buf(27) = 0 buf(28) = 0 buf(29) = 0 buf(30) = 0 buf(31) = 0 buf(32) = 0 buf(33) = 0 buf(34) = 0Timer1.Enabled = False: Timer2.Enabled = False: Shape1.Visible = True: Shape2.Visible = Truei = 0graph1.Scale (-100, 100)-(100, -100) graph1.CurrentX = -95 graph1.CurrentY = 0 graph1.Line
45、(-95, 100)-(-95, -100), RGB(255, 255, 255) graph1.Line (100, 0)-(-100, 0), RGB(255, 255, 255)End SubPrivate Sub Label5_Click()EndEnd SubPrivate Sub ll_Click()Form2.ShowEnd SubPrivate Sub MSComm1_OnComm()Dim u As IntegerSelect Case MSComm1.CommEvent Case comEvCD Case comEvCTS Case comEvDSR Case comEv
46、Ring Case comEvReceive ww = MSComm1.Input buf(i) = ww(u) Text1.Text = buf(i) If Text1.Text > sx Then Timer1.Enabled = True: Timer2.Enabled = False: Shape1.Visible = True: Shape2.Visible = True: Shape2.BackColor = &H808080 If Text1.Text < xx Then Timer2.Enabled = True: Timer1.Enabled = False: Shape1.Visible = True: Shape2.Visible = True If Te
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农业机械化与农业生态环境保护法规考核试卷
- 《个人所得税调节城镇居民消费的效应分析》
- 《华蟾毒精对淋巴细胞和巨噬细胞免疫调节活性的研究》
- 《同步监测氧气和温度的新型便携式传感器研究与实现》
- 《一类似星树的谱半径问题研究》
- 2024年度医疗健康产业贷款连带责任借款担保合同范本2篇
- 不含括号的混合运算
- 2024年度智能医疗诊断系统委托技术开发合同范本3篇
- 云计算与物联网融合趋势-洞察分析
- 体育器械模块化设计-洞察分析
- 《建筑工程施工许可管理办法》2021年9月28日修订
- 医生给病人免责协议书(2篇)
- 【格力电器应收账款管理存在的问题及优化建议探析(论文)12000字】
- 透镜及其应用常考易错陷阱分析-2024年中考物理考试易错题
- 记账实操-红十字会的会计账务处理分录
- 空运陆运操作岗位招聘面试题及回答建议(某大型国企)2024年
- 《元旦新气象梦想再起航》主题班会
- 2024年PMP项目管理师考试试卷及答案指导
- 争做“四有好老师”-当好“四个引路人”
- 支持企业建设中试平台实施方案
- 国家开放大学电大本科《工程经济与管理》2023-2024期末试题及答案(试卷号:1141)
评论
0/150
提交评论