1、智能仪表综合训练设计说明书中文摘要以PC作为上位机,以调制解调器(Modem)、串行打印机、各种监控模块、PLC、摄像头云台、数控机床、单片机及智能设备等作为下位机广泛应用于测控领域。LabVIEW是目前应用最广泛的虚拟仪器开发平台软件之一,LABVIEW有很多优点,尤其是在某些特殊领域其特点尤其突出。测试测量:LABVIEW最初就是为测试测量而设计的,因而测试测量也就是现在LABVIEW最广泛的应用领域。经过多年的发展,LABVIEW在测试测量领域获得了广泛的承认。至今,大多数主流的测试仪器、数据采集设备都拥有专门的LabVIEW驱动程序,使用LabVIEW可以非常便捷的控制这些硬件设备。关
2、键词:虚拟仪器;液位控制;PID;Labview;串口通信;单片机;LCD目录第1章 前言.1第2章 总体方案设计22.1控制理论22.2控制规律的选择22.3串口的介绍和使用42.3.1串口VI介绍42.3.2使用说明5第3章 上位机软件设计73.1各系统应用模块程序7第4章 系统软件的具体实现94.1 系统监控界面94.2调试结果104.3 接收的PID数据与液位的显示值104.4 发送PID数据与串口数据接收11第5章 下位机125.1单片机的硬件连接125.2硬件介绍135.3单片机电路135.3.1 STC89C52单片机135.3.2主要性能参数145.4输入设备175.5显示设备
3、185.6 MAX232 芯片195.6.1 RS-232电气特性205.6.2串口通信连线205.7软件流程图21第6章 设计总结22参考文献23附录一 源程序24第1章 前言随着现代软件和硬件技术的飞速发展,仪器的智能化和虚拟化已经成为未来各级实验室以及研究机构发展的方向。自动化,测试仪器仪表行业中,虚拟仪器概念的出现。是对传统仪器概念的重大突破。“软件就是仪器”测底打破了传统仪器由厂家定义,用户无法改变的模式,使用户将数据采集,数据分析,仪器控制,硬件以及现有的仪器设备予以整合集成,来建立完全符合自己特殊要求的虚拟仪器控制系统。在计算机分布式测控系统中,经常要利用串行通信方式进行数据通信
4、。它包括单片机和上位机之间、客户端和服务器之间以及客户端和客户端之间的通信,而单片机和上位机之间数据通信则是整个系统的基础。串口通信具有连接简单,使用灵活方便、数据传输可靠等优点,在工业和日常生活中等有了广泛的应用,尤其是在数据采集和工业监控中更是不可替代的技术。本文设计一种基于单片机和labview 上位机数据采集。主要包括键盘设计,LCD或LED显示的,还有对数据的接收和发送。在用labview开发上位机,实现数据的显示,和对下位机的数据控制。以及对控制效果的显示。第2章 总体方案设计 PC通过串行口将数字(00,01,02,03.,十六进制)发送给单片机,单片机收到后回传这个数字,PC接
5、收到回传数据后显示出来,若发送的数据和接收到的数据相等,则串行通信正确,否则有错误。启始符是数字00,结束符是数字FF。完成对液位数据的读取。2.1控制理论PID控制器(比例-积分-微分控制器),由比例单元P积分单元 I 和微分单元 D 组成。通过Kp,Ki和Kd三个参数的设定。PID控制器主要适用于基本线性和动态性不随时间变化的系统。 图2.12.2控制规律的选择尽管不同类型的控制器,其结构、原理各不相同,但是基本控制规律只有三个:比例(P)控制、积分(I)控制和微分(D)控制。这几种控制规律可以单独使用,但是更多场合是组合使用。如比例(P)控制、比例-积分(PI)控制、比例-积分-微分(P
6、ID)控制等。 比例(P)控制单独的比例控制也称“有差控制”,输出的变化与输入控制器的偏差成比例关系,偏差越大输出越大。实际应用中,比例度的大小应视具体情况而定,比例度太大,控制作用太弱,不利于系统克服扰动,余差太大,控制质量差,也没有什么控制作用;比例度太小,控制作用太强,容易导致系统的稳定性变差,引发振荡。 对于反应灵敏、放大能力强的被控对象,为提高系统的稳定性,应当使比例度稍大些;而对于反应迟钝,放大能力又较弱的被控对象,比例度可选小一些,以提高整个系统的灵敏度,也可以相应减小余差。 单纯的比例控制适用于扰动不大,滞后较小,负荷变化小,要求不高,允许有一定余差存在的场合。工业生产中比例控
7、制规律使用较为普遍。 比例积分(PI)控制比例控制规律是基本控制规律中最基本的、应用最普遍的一种,其最大优点就是控制及时、迅速。只要有偏差产生,控制器立即产生控制作用。但是,不能最终消除余差的缺点限制了它的单独使用。克服余差的办法是在比例控制的基础上加上积分控制作用。 积分控制器的输出与输入偏差对时间的积分成正比。这里的“积分”指的是“积累”的意思。积分控制器的输出不仅与输入偏差的大小有关,而且还与偏差存在的时间有关。只要偏差存在,输出就会不断累积(输出值越来越大或越来越小),一直到偏差为零,累积才会停止。所以,积分控制可以消除余差。积分控制规律又称无差控制规律。 积分时间的大小表征了积分控制
8、作用的强弱。积分时间越小,控制作用越强;反之,控制作用越弱。 积分控制虽然能消除余差,但它存在着控制不及时的缺点。因为积分输出的累积是渐进的,其产生的控制作用总是落后于偏差的变化,不能及时有效地克服干扰的影响,难以使控制系统稳定下来。所以,实用中一般不单独使用积分控制,而是和比例控制作用结合起来,构成比例积分控制。这样取二者之长,互相弥补,既有比例控制作用的迅速及时,又有积分控制作用消除余差的能力。因此,比例积分控制可以实现较为理想的过程控制。比例积分控制器是目前应用最为广泛的一种控制器,多用于工业生产中液位、压力、流量等控制系统。由于引入积分作用能消除余差,弥补了纯比例控制的缺陷,获得较好的
9、控制质量。但是积分作用的引入,会使系统稳定性变差。对于有较大惯性滞后的控制系统,要尽量避免使用。 比例微分(PD)控制比例积分控制对于时间滞后的被控对象使用不够理想。所谓“时间滞后”指的是:当被控对象受到扰动作用后,被控变量没有立即发生变化,而是有一个时间上的延迟,比如容量滞后,此时比例积分控制显得迟钝、不及时。为此,人们设想:能否根据偏差的变化趋势来做出相应的控制动作呢?犹如有经验的操作人员,即可根据偏差的大小来改变阀门的开度(比例作用),又可根据偏差变化的速度大小来预计将要出现的情况,提前进行过量控制,“防患于未然”。这就是具有“超前”控制作用的微分控制规律。微分控制器输出的大小取决于输入
10、偏差变化的速度。 微分输出只与偏差的变化速度有关,而与偏差的大小以及偏差是否存在与否无关。如果偏差为一固定值,不管多大,只要不变化,则输出的变化一定为零,控制器没有任何控制作用。微分时间越大,微分输出维持的时间就越长,因此微分作用越强;反之则越弱。当微分时间为0时,就没有微分控制作用了。同理,微分时间的选取,也是需要根据实际情况来确定的。 微分控制作用的特点是:动作迅速,具有超前调节功能,可有效改善被控对象有较大时间滞后的控制品质;但是它不能消除余差,尤其是对于恒定偏差输入时,根本就没有控制作用。因此,不能单独使用微分控制规律。比例和微分作用结合,比单纯的比例作用更快。尤其是对容量滞后大的对象
11、,可以减小动偏差的幅度,节省控制时间,显著改善控制质量。 比例积分微分(PID)控制最为理想的控制当属比例-积分-微分控制规律。它集三者之长:既有比例作用的及时迅速,又有积分作用的消除余差能力,还有微分作用的超前控制功能。当偏差阶跃出现时,微分立即大幅度动作,抑制偏差的这种跃变;比例也同时起消除偏差的作用,使偏差幅度减小,由于比例作用是持久和起主要作用的控制规律,因此可使系统比较稳定;而积分作用慢慢把余差克服掉。只要三个作用的控制参数选择得当,便可充分发挥三种控制规律的优点,得到较为理想的控制效果。2.3串口的介绍和使用2.3.1串口VI介绍LabVIEW的串口通讯VI位于Instrument
12、 I/O Platte的Serial中,包括:VI名称VI功能VISA Configure Serial Port初始化VISA resource name指定的串口通讯参数VISA Write将输出缓冲区中的数据发送到VISA resource name指定的串口VISA Read将VISA resource name指定的串口接收缓冲区中的数据读取指定字节数的数据到计算机内存中VISA Serial Break向VISA resource name指定的串口发送一个暂停信号VISA Bytes at Serial Port查询VISA resource name指定的串口接收缓冲区中的数据
13、字节数VISA Close结束与VISA resource name指定的串口资源之间的会话VISA Set I/O Buffer Size设置VISA resource name指定的串口的输入输出缓冲区大小VISA Flush I/O Buffer清空VISA resource name指定的串口的输入输出缓冲区2.3.2使用说明在LabVIEW环境中使用串口与在其它开发环境中开发过程类似,基本的流程框图如下。图2.2串口操作数据流图首先需要调用VISA Configure Serial Port完成串口参数的设置,包括串口资源分配、波特率、数据位、停止位、校验位和流控等等。图2.3初始化
14、串口如果初始化没有问题,就可以使用这个串口进行数据收发。发送数据使用VISA Write,接收数据使用VISA Read。在接收数据之前需要使用VISA Bytes at Serial Port查询当前串口接收缓冲区中的数据字节数,如果VISA Read要读取的字节数大于缓冲区中的数据字节数,VISA Read操作将一直等待,直至Timeout或者缓冲区中的数据字节数达到要求的字节数。当然也可以分批读取接收缓冲区或者只从中读取一定字节的数据。图2.4从串口发送数据图2.5从串口接收数据在某些特殊情况下,需要设置串口接收/发送缓冲区的大小,此时可以使用VISA Set I/O Buffer Si
15、ze;而使用VISA Flush I/O Buffer则可以清空接收与发送缓冲区。在串口使用结束后,使用VISA Close结束与VISA resource name指定的串口之间的会话。图2.6设置缓冲区大小图2.7清空缓冲区图2.8结束会话/线程具体的例子可以参考:examplesinstrsmplserl.llb。第3章 上位机软件设计3.1各系统应用模块程序(1)主要的采集参数的设置包括采样与输出通道的选择,采样模式、采样周期等。图3.1串口接收与数据采集(2)接收PID和液位数值显示程序串口输出的字符串,由字符串由字符数组转换,转变成数组然后在对应的位置显示。图3.2接收PID和液位
16、数值显示(3) 发送PID数值和处理的程序发送PID由字节数组至字符串转换原件,把不带符号的字节数组转换为字符串。图3.3 PID的发送第4章 系统软件的具体实现4.1 系统监控界面LABVIEW前面板对VISA,参数的选择,主要是发送和接收PID的显示。图4.1 PID、液位上位机的显示4.2调试结果图4.24.3 接收的PID数据与液位的显示值图4.3 PID、液位的显示4.4 发送PID数据与串口数据接收 通过串口助手代替下位机进行发送接收。 图4.4 第5章 下位机5.1单片机的硬件连接单片机完成通信数据的收发功能主要分为2个步骤。 串口波特率的设定通常使用单片机的串口时,选用的晶振比
17、较固定,常用于何微机通信的波特率也相对固定。本设计设定通讯波特率为9600。 串口初始化串口初始化主要是设置产生波特率的定时器1、串行口控制和串口的中断控制。具体步骤如下。确定定时器1的工作方式写TMOD寄存器。计算定时器1的初值装载TH1、TL1。启动定时器1写TCON中的TR1位。确定串口的控制写SCON。使用串口中断方式时,开CPU和中断源写IE寄存器。本设计设定定时器T1工作在模式2,串行口工作于方式3。5.2硬件介绍 图5.1硬件主要由主芯片ATC89C52,五个独立按键,一块RS-232接口, LCD1602显示屏, 晶振,以及相应的电容与电阻等组成。5.3单片机电路5.3.1 S
18、TC89C52单片机单片机是指一个集成在一块芯片上的完整计算机系统。尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存。同时集成诸如通讯接口、定时器,实时时钟等外围设备。而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。STC89C52 是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。使用高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥
19、有灵巧的8 位CPU 和在线系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 5.3.2主要性能参数兼容MCS51指令系统8K可反复擦写Flash ROM32个双向I/O口256x8bit内部RAM3个16位可编程定时/计数器中断时钟频率0-24MHz2个串行中断可编程UART串行通道2个外部中断源 共6个中断源2个读写中断口线3级加密位低功耗空闲和掉电模式软件设置睡眠和唤醒功能图5.25.3.3 STC89C52单片机 各引脚功能及管脚电压P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“
20、1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下, P0具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个 TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2 的触发输入
21、(P1.1/T2EX),具体如下表所示。 在flash编程和校验时,P1口接收低8位地址字节。脚号第二功能P1.0 T2(定时器/计数器T2的外部计数输入),时钟输出P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)P1.5 MOSI(在线系统编程用)P1.6 MISO(在线系统编程用)P1.7 SCK(在线系统编程用)P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个 TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
22、在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX DPTR) 时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用 8位地址(如MOVX RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p2 输出缓冲器能驱动4 个 TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。 P3口亦作为STC89C5
23、2特殊功能(第二功能)使用,如下表所示。在flash编程和校验时,P3口也接收一些控制信号。端口引脚 第二功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 INTO(外中断0)P3.3 INT1(外中断1)P3.4 TO(定时/计数器0)P3.5 T1(定时/计数器1)P3.6 WR(外部数据存储器写选通)P3.7 RD(外部数据存储器读选通)此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。RST复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。LE/PROG当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲
24、用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。PSEN程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当STC89C52由外部程序存储器取指令(或数据)时,每个机器周
25、期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。EA/VPP外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。XTAL1振荡器反相放大器的及内部时钟发生器的输入端。XTAL2振荡器反相放大器的输出端5.4输入设备单片机的输入设备由四个按键组成。其电路图如图3
26、.3所示,四个按键功能分别是PID显示切换、加一、减一、发送。将四个按键的一端共同接在一个电源上,而按键的另一端连接至单片机的特定I/O口。此时,只要检测到该端口的低电平,就说明有键按下。图5.35.5显示设备液晶显示器各种图形的显示原理线段的显示:点阵图形式液晶由MN个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共168=128个点组成,屏上6416个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。例如屏的第一行的亮暗由RAM区的000H00FH的16字节的内容决定,当(000H)=FFH时,则屏幕的
27、左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,则屏幕的右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)=00H,(00EH)=00H,(00FH)=00H时,则在屏幕的顶部显示一条由8段亮线和8条暗线组成的虚线。这就是LCD显示的基本原理。本设计的显示设备是由LCD1602来显示的。LCD1602的引脚功能第1脚:VSS为地电源 第2脚:VDD接5V正电源 第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度 第4脚:RS为寄存器选择,高电平时选择
28、数据寄存器、低电平时选择指令寄存器。 第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。 第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 第714脚:D0D7为8位双向数据线。 第1516脚:空脚 图5.45.6 MAX232 芯片该产品是由德州仪器公司(TI)推出的一款兼容RS232标准的芯片。由于电脑串口rs232电平是-10v +10v,而一般的单片机应用系统的信号电压是ttl电平0 +5v,max232就是用来进
29、行电平转换的,该器件包含2驱动器、2接收器和一个电压发生器电路提供TIA/EIA-232-F电平。该器件符合TIA/EIA-232-F标准,每一个接收器将TIA/EIA-232-F电平转换成5-V TTL/CMOS电平。每一个发送器将TTL/CMOS电平转换成TIA/EIA-232-F电平。主要特点 单5V电源工作2、 LinBiCMOSTM工艺技术3、 两个驱动器及两个接收器4、 30V输入电平5、低电源电流:典型值是8mA6、符合甚至优于ANSI标准 EIA/TIA-232-E及ITU推荐标准V.287、ESD保护大于MIL-STD-883(方 法3015)标准的2000V 5.6.1 R
30、S-232电气特性EIA-RS-232C对电器特性、逻辑电平和各种信号线功能都作了规定。 在TxD和RxD上:逻辑1(MARK)=-3V-15V 逻辑0(SPACE)=+315V 在RTS、CTS、DSR、DTR和DCD等控制线上信号有效(接通,ON状态,正电压)+3V+15V信号无效(断开,OFF状态,负电压)=-3V-15V 以上规定说明了RS-323C标准对逻辑电平的定义。对于数据(信息码):逻辑“1”(传号)的电平低于-3V,逻辑“0”(空号)的电平告语+3V;对于控制信号;接通状态(ON)即信号有效的电平高于+3V,断开状态(OFF)即信号无效的电平低于-3V,也就是当传输电平的绝对
31、值大于3V时,电路可以有效地检查出来,介于-3+3V之间的电压无意义,低于-15V或高于+15V的电压也认为无意义,因此,实际工作时,应保证电平在(315)V之间。 EIA-RS-232C与TTL转换:EIA-RS-232C是用正负电压来表示逻辑状态,与TTL以高低电平表示逻辑状态的规定不同。因此,为了能够同计算机接口或终端的TTL器件连接,必须在EIA-RS-232C与TTL电路之间进行电平和逻辑关系的变换。实现这种变换的方法可用分立元件,也可用集成电路芯片。目前较为广泛地使用集成电路转换器件,如MC1488、SN75150芯片可完成TTL电平到EIA电平的转换,而MC1489、SN7515
32、4可实现EIA电平到TTL电平的转换。MAX232芯片可完成TTLEIA双向电平转换。图5.55.6.2串口通信连线用RS-232总线连接系统是,有近程通讯方式和远程通讯方式两种,近程通讯是指传输距离小于15米的通讯,可以用RS-232 电缆直接连接。15米以上的长距离通讯,需要采用调制调解器。本设计采用最常用的三线制接法,即地、接收数据和发送数据三脚相连。首先,串口传输数据只要有接受数据真叫发送数据就能实现,图5.65.7软件流程图图5.7 第6章 设计总结经过6个周的课设,对LabVIEW又有了深一步的了解,LabVIEW入门很容易,如果要深入做下去,完成一个像样的工程,就必须懂得各方面的
33、知识,好在LabVIEW本身提供了各种方法可以方便的调用。需要学会使用数据库,需要用别的编程语言别写可供LabVIEW能调用的模块。这是一门实践性很强的课,很多知识是从书上看来的,而且看完之后,自己还觉的不错,觉得自己已经掌握的很好了,但真到实际做东西的时候,就会觉得困难重重,这时再去查书,便有了对知识的更深层次的理解,其实在这方面更应该感谢网络给我们带来的方便,有任何问题,上网搜一下,很多问题都可以迎刃而解,而且很多网友都有自己独特的见解,在他们的讨论中看到了很多有用的东西。学以促用,用以促学,我们感觉这也是这门课教给我们的重要知识。带着问题学习才能学到真正的知识。在整个设计中我学会了在复杂
34、的问题面前怎样去分析,找到问题的关键所在,而且认识到这种能力的重要性。在这学期的学习中我们学到了很多,也认识到我们需要学的东西更多,仅凭现在学到的东西是远远不够的,要想在这方面作出一些成绩,必须继续学下去。参考文献1. 程德福,林君.智能仪器M. 北京:机械工业出版社,2005.2.2. 侯国屏.LabVIEW 7.1编程与虚拟仪器设计M. 北京:清华大学出版社, 20053. 杨乐平.labview高级程序设计M. 北京:清华大学出版社,20034.周明德. 微型计算机硬件软件及其应用M . 北京: 清华大学出版社, 2000 .5. 韩 峰 ,徐永祥.虚拟变送器和 PID调节器的设计和应用
35、J .自动化技术及应用 ,2006, 27(4) :46 - 48.2005.407415.6. 康伟,郑正奇.Windows下实时数据采集的实现J,计算机应用研究,2001,18(3),105106.7. 郑耀添,吴浚浩. 信号调理电路的设计与研究J,中国科技信息,2006年第2期.8. 余成波,冯丽辉,潘盛辉等编著. 虚拟仪器技术与设计M,重庆大学出版社,2006.7.9. 刘君华主编. 基于Labview的虚拟仪器设计M,电子工业出版社,2003.710. 王海宝主编. LABVIEW虚拟仪器程序设计与应用M,西南交通大学出版社,2005.4.11. 王磊,陶梅等编著. 精通Labvie
36、wM,电子工业出版社,2006.7.12. 陈江波. 多通道数据采集系统J,仪表技术与传感器,2002年第12期.13. 孙春龙. 基于Labview多通道数据采集分析系统开发D,硕士,武汉大学,2004.11.附录一 源程序#include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#includevoid SendStr(unsigned char *s);sbit RS = P10; /定义端口 sbit RW = P11; /写数据端sbit EN = P12; /使能端sbit key1=P14;sbit key2=P15;sbit key3=P16;sbit
37、key4=P17;#define RS_CLR RS=0 #define RS_SET RS=1#define RW_CLR RW=0 #define RW_SET RW=1 #define EN_CLR EN=0#define EN_SET EN=1#define DataPort P0unsigned char showbuf116=0;unsigned char showbuf216=0;unsigned char serialbuf6;unsigned char addr=0,showflag=0,showflag2=0;/*- uS延时函数,含有输入参数 unsigned char
38、t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0255 这里使用晶振12M,精确延时请使用汇编,大致延时 长度如下 T=tx2+5 uS -*/void DelayUs2x(unsigned char t) while(-t);/*- mS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0255 这里使用晶振12M,精确延时请使用汇编-*/void DelayMs(unsigned char t) while(t-) /大致延时1mS DelayUs2x(245); DelayUs
39、2x(245); /*- 判忙函数-*/ bit LCD_Check_Busy(void) DataPort= 0xFF; RS_CLR; RW_SET; EN_CLR; _nop_(); EN_SET; return (bit)(DataPort & 0x80); /*- 写入命令函数-*/ void LCD_Write_Com(unsigned char com) while(LCD_Check_Busy(); /忙则等待 RS_CLR; RW_CLR; EN_SET; DataPort= com; _nop_(); EN_CLR; /*- 写入数据函数-*/ void LCD_Write
40、_Data(unsigned char Data) while(LCD_Check_Busy(); /忙则等待 RS_SET; RW_CLR; EN_SET; DataPort= Data; _nop_(); EN_CLR; /*- 清屏函数-*/ void LCD_Clear(void) LCD_Write_Com(0x01); DelayMs(5); /*- 写入字符串函数-*/ void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) if (y = 0) LCD_Write_Com(0x80 + x)
41、; /表示第一行 else LCD_Write_Com(0xC0 + x); /表示第二行 while (*s) LCD_Write_Data( *s); s +; /*- 写入字符函数-*/ void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data) if (y = 0) LCD_Write_Com(0x80 + x); else LCD_Write_Com(0xC0 + x); LCD_Write_Data( Data); /*- 初始化函数-*/ void LCD_Init(void) LCD_Write_Com(0x38); /*显示模式设置*/ DelayMs(5); LCD_Write_Com(0x38); DelayMs(5); LCD_Write_Com(0
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。
Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1
陕公网安备 61072602000132号 违法和不良信息举报:0916-4228922