




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、摘要在实际的工作中需要对现场的温度、湿度、压力、流量等各种工艺参数随时进 行采集、检测和监控,同时还要将采集到的数据及时传递给上位机,以实现对参数的 随机查询,对信息的存储与处理,及时调整控制方案,捉高生产效率和产品的质量。 为此我们利用at89c51snd1单片机作为主控制器,设计了一个简单易行的数据采集系 统。我们的系统利用at89c51snd1的强大功能來实现对模拟信号的采集和输出、显示。 通过其口带的ad转换采集來口实际生活中的各种模拟信号(比如:温度、压力、还 有连续的芦咅信号等),并且利用一个多路模拟开关cd4051可以实现多路数据的采 集。采集到的数据误并小于0. 1%, 旦出现
2、故障且具有报警功能。在软件设计过程中, 使用的编程工具是c语言,它可读性强,简单可靠。关键词:数据采集c语言单片机abstractin the actual work, the scene temperature, the humidity, the pressure, the current capacity and each kind of craft parameter need to be carried on gathering, examinating and monitoring whenever needed. simultaneously, the gathered data
3、 is promptly transmitted to the position machine, so as to realize stochastically inquiry to the parameter, process and memorize with the information, adjust the control plan promptly, and enhance the production efficiency and the product quality. thus, we use the at89c51snd1 microprocessor control
4、unit as the host controller to have designed a design a simple and feasible data acquisition system. our system realizes gathering and the output, the display of the simulated signal with formidable function of the at89c5 isndl.it gathers each kind of simulated signal (for instance: the temperature,
5、 the pressure, the continual sound signal and so on ) of the practical life with the ad transformation. it also can realize multichannel data gathering with a multichannel analog switch cd4051. the gathered data error is smaller than 0.1%, once it appears the break soon makes the police function wor
6、k. in the software design process, the programming tool is the c language it has strongly readability, and it's simple and reliable.keywords: data acquisition c language mcu引言11概述211本课题研究的背景和意义21. 2本课题的任务和要求31. 3课题设计总体方案的确定32数据采集系统的组成与基本原理52. 1数据采集系统的基本纽成52. 2数据采集系统的工作原理92. 3数据采集系统的硬件框图23数据采集系统的
7、软件设计23.1主程序流程图及说明23. 2初始化显示了程序的编程73.3 lcd数据显示程序的编程93. 4键盘模块的编程124数据采集系统的调试134.1主程序功能的调试134. 2 lcd显示程序的调试144. 3键盘功能的调试14致谢15附录16m寸录a16p付录b16m寸录c16参考文献17引言在工业生产过程中,为了保证系统的安全止常运行以及实时的监控与检测但在 实际工作现场中要做到实时监测却很难,这要用到数据采集系统。数据釆集系统的主要功能是把检测到的來口生产过程中的各种模拟信号变成数 字信号,并进行分析、处理、存储和显示。在过去30到40年以來数据采集技术已经 取得了很大的飞跃。
8、举例來说,在40年以前,在一个著名的学院实验室中,为追踪用 青铜做的土ii圳中的温度上升情况的装置是由热电偶、继电器、杳询台、一捆纸和一支 铅笔。今天的大学学生很可能在pc机上口动处理和分析数据,有很多种可供你选择的 方法去采集数据。至于选择哪一种方法取决于多种因素,包扌舌任务的复杂度、你所需 要的速度和精度、你想要的证据资料等等。无论是简单的还是复杂的,数据采集系统 都能够运行并发挥它的作用。随着技术的发展,通过电了设备,数据采集的已经得到简化和变得比较精确、 多用途和可靠。设备从简单的存储器发展到复杂的电脑系统。数据采集产品像聚焦点 一样为系统服务,和一系列产品一起,诸如传感器显示温度、水
9、流、程度或者过程。 但数据采集系统最重要的部分还是控制器部分和数据采集部分。为此,我们以at89c51snd1c单片机作为主控制器设计了一种简单易行的数据 采集系统。1概述1.1本课题研究的背景和意义在实际工业生产,生产工作现场,往往为了生产安全等需耍,要对工作参数如 温度、电压、液位、声咅等进行实时检测与监控,但由于工作现场条件差,数据动态 性等原因,要做到实时监测往往很难。为解决这一问题可以先将现场的工作参数进行实时采集,然后再通过数据通信 方式将采集到的数据传送到远端的主控室。这就耍用到数据采集系统。数据采集系统就是将模拟信号经ad转换后,进行信号处理,最后经da转换器 将数字信号转换为
10、模拟信号输出。数字采集系统的简单框图如卜图图11所示。图1-1数据采集简单框图由单片机作为控制单元的数据采集系统的工作过程可以分为以下几个步骤:数 据采集是将被测量参数的信号转换为能够识别的信号并输入给单片机;数据处理是由 单片机执行算法,得到与被测量相对应的数字信号;数据输岀是将处理结果送到输岀 设备进行显示、存储等操作。在生产实践和科学研究中,采集的数据往往都是犬量的。而从数据采集的角度 来看,进行整个系统的全部数据采集需耍教多的吋间,会降低系统的实吋性。从这个 系统而言,如何提高系统的可靠性是关键所在,所以必须在硬件设计、芯片选择和软 件编程等方面综合考虑,以满足实际系统对系统可靠性、实
11、时性的耍求。1. 2本课题的任务和要求通过学习单片机c51语言的基本知识,熟悉开发环境keilc和和flip使用,掌 握at89c51snd1c单片机的基本特性,设计基于at89c51snd1c单片机的数据采集系统。 虽然我使用的单片机和8051系列可以兼容,但是他的相当强大的功能以及软件设计 过程屮要求使用的是c语言编程,使得在设计中要先立足对基础认识的学习和掌握, 并月要对毕业设计的实验板jmb1e学习板有相当程度的掌握,这样也使设计工作更繁 重。不过这样对我以后的工作是一个锻炼。在进行设计前要先对数据采集系统软件设 计的开发环境进行了解。1、数据釆集。在数据采集模块,主要采集直流信号,经
12、过一个简单的滤波,如 平均值滤波。然后把采集的数值存储起来。可以通过按键和通过串口把数据主动或由 上位机通过命令索要把采集数据传递上去,ad采集部分采用at89c51snd1c内部自带 ad,但耍采集多路数据,因此需要另增加一个多路模拟开关(cd4051) o由于这部分 采用cpu内部自带的ad,所以比较简单,定时采集,多次采集求一次平均,如采集8 次平均得到一次的采集值,然后把采集的值放在数据存储器屮保存起来。2、液晶显示。主要用来采集当前采集的数据,并月可以通过按键设定需要完成 的功能,液品显示模块选用的cm12232液品显示屏。这部分程序主要完成对数字和汉 字的显示包括字库的编写。3、键
13、盘。采用定时器实现,定时扫描键盘,发现冇按键按下执行相应的键盘功 能设定数据采集,并通过rs-232和usb完成通信。4个功能键依次是确定键、返回键、 加一键和移位键。4、rs-232通信,完成与电脑的通信。(可在完成数据采集的基础上选作)1. 3课题设计总体方案的确定数据采集的主要功能是把检测到的来口牛产过程中的各种模拟信号变成数字信 号,并精心分析、处理、存储和显示。该数据采集系统的总体设计包描以下儿个部件, 详见表l-lo多路模拟开关cd4051单片机主要芯片:at89c51snd1c (含键盘和ad转换)闪存:扩展的flash闪存(k9d5608);显示:lcd 显示(cm 12232
14、)电源:釆用的是双电源驱动(电池驱动和mac586):通讯方式:采用rs232通讯接口表1-1数据采集系统部件表在木设计方案中最重要的核心元件就是at89c51snd1,该芯片兼自键盘和ad 转换功能。下面对这一芯片进行简单介绍。方案中系统芯片at89c51snd1 口带ad转换模块,外加一个8路的模拟开关 cd4051 o显然采用系统口带的ad转换模块给设计带來方便。而且at89c51snd1 功能非常强大。atmel公司生产的at89c51snd1这款芯片是专门为mp3而设计的单片机芯片。其 主要特点是内部集成了 mpeg2解码器和usb通讯接口,内含64k的内部程序存储器, 支持在系统编
15、辑isp功能,通过usb或者串行口对芯片进行编程操作,内部数据存储 器为2056字节。它最高支持20mhz的工作频率,工作电压为3v,内部集成的mpeg2 解码功能支持48, 44. 1, 32, 24, 22. 05及16赫兹的釆样序列,可直接与dac咅频 转换芯片连接,支持usb1. 1协议全速引擎,并提供和应的键盘中断、ide/ata、tpi /mmc 及isp接口。由此可见其功能十分强大。通过这次毕业设计可以对这一芯片进行一定 的了解,这一单片机芯片的典型应用主要是有4个方面。(1)mp3播放器;(2) pda, 照相机,mp3移动电话;(3)汽车多媒体mp3; (4)家庭多媒体mp3
16、。2数据采集系统的组成与基本原理2. 1数据采集系统的基本组成该系统主要包括5个部分。分别是数据采集模块、显示模块、键盘功能模块、 串口通信模块和报警部分。数据采集模块:它主要包括多路模拟开关、ad转换、flash存储器和控制单 元。在该数据采集系统中选用的是多路开关是cd4051 ,转换部分采用的是 at89c51snd1内部口带的2路ad采集通道°at89c51snd1具有2路10位ad转 换接口,基本上由通道选择、采样保持电路、逐次逼近逻辑、梯形电阻dac转换器、 比较器和控制逻辑等构成。ad接口框图如图2-1所示:adcon 5addon.3aden | | adsst1ad
17、con .4adccontrol adeoc hclock -/adcinterruptrevestaddhrsarr.7r dac arefp arefn1023adda型vrefadcsadcgn.orl eadcen13:sample and hold;addl图2-1、ad电路框图ad转换接口具有aino、ain1两个模拟电压输入引脚,这两个通道由adcon寄 存器的adcs位來选择。还有arefp、arefn两个参考电压输入引脚,其中arefn负 参考引脚内部和gnd连接,所以aino和ain1输入的电压是对地的。arefp止参考 端电压vrcf限定最大可转换的模拟电压值,也就是ai
18、)输入的模拟电压vin的最大 值,当vin=vrcf时ad转换的结果是10位二进制的最大值1023。这样可以确保采 集精度小于0. 1%。图中adc clock是ad转换电路的时钟,来口于单片机的外围电路时钟per clocko在xi模式卜,per clock是晶体振荡频率的2分频。per clock经过2分 频后,再按adclk寄存器指定的分频系数进行分频便得到adcclocko因此可通过adclk寄存器来配置ad转换器的时钟,决定其转换时间,影响最大转换速率。adclk 寄存器的分频系数adcd有效5位,取值范围031。但如果adcd为0,则和adcd为 32时效果相同。多路模拟开关使用的
19、是cd4051 o cd4051是微机控制系统中广泛使用的八选一 模拟开关,具有双向传输性能。直流供电电压电源为+5v到+15v,输入电压所能传送 的数字信号电位变化范围为3到15v,模拟信号的峰峰值为15v。其引脚、功能如图 2-2所示。1n/dutut/inin/qutinhvcevss/ 4116215c3 d14440135511261171089vdd1 jn/out0 fa图2.2cd4051引脚图cd4051是由逻辑电平转化,二进制译码器及八个开关电路组成。c、b、a为 二进制控制输入端,改变c、b、a的数值(从000-111),二进制译码器可译岀8种 状态,并选出其屮的一个通道
20、,使输入与输出接通。以上转换过程是在允许输入端控 制下进行的,当inh=1时,通道全断开,到inh=0时,其中一个通道接通。其真值 表如表2-1所示。改变in/out和out/in的接法可以完成“多到1 ”或“ 1到多"的 转换。输入状态接通通道号输入状态接通通道号1nhcb acd4051inhcb acd405100000#01004#00011#01015#00102#01106#00113#01117#表2-1 cd4051真值表键盘功能模块:at89c51snd1单片机具冇键盘接口,包括4个键盘输入引脚, 可接4个独立按键或者扩展矩阵键盘。在扩展为矩阵键盘吋还需要另外4个i
21、o端口 作扫描用,但只需在键盘中断产生后扫描一个循环。键盘功能包括“加一键”、“移 位键”、“设定键”和“确定键”共4个按键,分别对应单片机的4个键盘输入引 脚。键盘的引脚对应关系和屯路原理图如图2-3和图2-4所示。s1kinokin1kin2kin3kinokin1kin2kin3456pl.o/kinop1.1/kin1p1.2/ktn2p1.3/ktn3图23键盘电路kinokin1kin2kin31en 1.4图2-4键盘接口电路框图4个键盘输入引脚可以看作是4个独立的屮断源,但他们共享一个中断向量。ien1.4位即ekb是键盘中断的总使能位,由于at89c51snd1的中断向量比较
22、多, 所以中断使能寄存器是ien0和ien1两个,其中ien0和普通51单片机的ie寄存器 基本一致。键盘接口有两个sfr:键盘控制寄存器kbcon和键盘状态寄存器kbstaokbcon的高4位kinl3:0设置键盘输入引脚的有效检测电平,本系统设置低电 平有效;低4位kinm3:0是4个键盘输入引脚的独立屏蔽位,可以单独设定某个引脚 是否为键盘输入,不作为键盘输入的引脚(通过kinmx屏蔽掉)还可以作为10端口 使用。kbsta的低4位kinf3:0实际上是4个键盘屮断源的屮断标志位,当有输入 引脚岀现有效电平时,对应标志位置位。键盘中断可以认为是边沿触发的外部屮断, 并且读取kbsta寄存
23、器时自动清除标志位。单片机响应键盘中断后,在中断服务程 序屮读取kbsta并判断是具体哪个按键引起的中断并作出相应动作。lcd显示模块:lcd液晶屏扩展模块。本学习板配套的cm12232图形点阵液晶屏 是接在扩展插座上的,占用p1.o1.7和p4 口。lcd扩展接线如图2-5所示。图2-5 lcd扩展模块接线图lcd型号是cm12232兼容点阵图形stn液晶屏,是一个独立的模块。其分辨率是 水平122个点,垂直分两组共32个点,可以显示两行汉字或四行英文字母,也可以显 示简单的图形。12231型lcd模块包含两个驱动扫描芯片,分别工作于主、从状态。 每个芯片有独立的使能端,但其他控制信号并联。
24、每个芯片有61根列线和16根行线, 通过主从芯片z间的时序控制,使得它们可以协作完成对122根列线和32根行线的扫 描动作。由于两个芯片的这种接口,在访问lcd的时候必须分别或同时将命令或数据 写到指定芯片屮。比如,需耍两个芯片都执行的控制命令,可以同时使能e1和e2; 而写入显示数据时则必须分清所写字节是要写到哪个芯片,这由该字节数据所对应的 显示点阵信息所在的区域决定。而且,作为整个屏幕来说,我们认为从左到右应该为 从0到121的象素坐标排列,但对于每个芯片而言都是从0至ij60的范帀,也就是说驱 动程序需要完成这样的转换。另外还有串行通讯模块和报警功能模块。这里不是本设计的重点不再做详细
25、介 绍。2. 2数据采集系统的工作原理多路数据实时监控系统常用于口动化工业生产或大型设备(如激光器)中,经 常需要对生产过程或运行状态的各种工作参数(如压力、温度、流量、电压、电流等) 实时的巡冋检测、监视并报警,以确保系统的稳定可靠性。该系统主要是利用at89c51snd1作为数据采集系统的主控制器,通过ad采 集模块对外界的模拟信号进行采集和处理,通过键盘功能将采集到的数据显示在液晶 模块cm 12232上,对被采集的数据进行上限设置,一旦高于设定值将会报警。at89c51snd1是该数据采集系统中的核心部件,at89c51snd1是atmel公 司的基于8位c51核的单片机,与at89c
26、51等8051单片机兼容。该芯片共80引 脚,封装为tqfp80,就是四边各20引脚的贴片封装。at89c51snd1内部主要资 源见图2-6:图2-6 at89c51snd1内部架构框图at89c51snd1的引脚使用情况分类说明如下:1)键盘中断输入引脚ktn0vktn3,和pl. 0>1. 3复用。外接4个键盘作为数据 采集控制端口。键盘电路见图2-32) 时钟电路filt、0scx1和0scx2o接在filt引脚的阻容网络是单片机内部 pll锁相环的滤波电路,以给usb和mp3部件提供更高的频率。0scx1和0sc2外接晶 体振荡器,为系统提供基本的20m时钟。3) adc电路引
27、脚arefp、arefn、a1n0和ain1。这些引脚主要用在外接输入模 拟信号,用一个5芯插排引出,以供用户使用。如图2-6所示,其屮arefn已经接 地。avdd33 |11areep12ain03ain14gnd |52-6 adc部分引脚图2.3数据采集系统的硬件框图该数据采集系统的硬件框图如下图2-7所示,硬件原理图详见附录b。图2-7系统原理框图3数据采集系统的软件设计3.1主程序流程图及说明下面介绍该数据采集系统的软件设计。并对设计进行说明。主流程图如图3-1所示:图3-1数据采集主程序流程图说明:主程序流程图主要用来实现整个程序的初始化部分,及部分功能程序的扫描完成,如完成对键
28、盘按键有无按下的扫描、串口通信接收数据的扫描、串口发送数据标志的扫描。以下简单介绍各部分功能程序的实现思想及部分子程序流程图。1、键盘扫描在定时器0屮使用定时10ms扫描,如果发现有按键按下,将此按键 编码存储起来,在接下来的一次扫描如果得到的编码与上次-样,说明的却有按键按 下,如果不一样或扫描不到按键按下,就认为是键盘抖动,无需处理,将键码扔掉。 如果发现有按键按下,在主循环屮扫描有按键按下执行键盘功能程序。中断入口键盘延时公抖动读键盘10 口中断返回图3-2键盘中断子程序流程图2、ad传换。在数据采集系统中,ad传换是其中重要的一个部分。因为只冇通 过它才能对实际数据进行传换,转换成数字
29、信号后,才能被计算机识别。下而就是ad 转换部分的说明和介绍。ad转换电路用到的寄存器有adcon、adclk、addh和addl共4个。adc0n控制 寄存器的aden位使能ad转换电路,iflj adsst位则启动一次转换过程。编程ad转换 接口的大致流程是:1)配置adclk寄存器的adcd分频系数值,mp3学习板品振为20m, adcd值不 能太小否则传换结呆容易出错。2)置位adc0n寄存器的aden位使能ad转换电路并等待几个微秒的延迟时间; 由adcs位选择通道,adcs-0为通道1, a1n1冇效,反z adcs=1则为通道0, a1n0冇 效;置位adsst位,启动转换过程。
30、3)ad转换结束后adc0n寄存器的ade0c标志位由硬件置位,表示转换结呆可读。 ade0c标志位必须由软件清零。如果屮断使能寄存器1en1的eadc位置位(允许adc 中断),adeoc标志位可以产生屮断。当然,程序中也可以查询adeoc标志位来判断 转换是否结束,如果adeoc置位则可以读取保存在寄存器addh和addl的转换结果。 addh是转换结果的高8位,addl的低2位是转换结果的最低2位。查询到adeoc置 位后必须由软件将其清零。编写一个配置,使能ad转换接口的程序,循环连续启动ad转换并显示结果的程 序。这部分代码参考及流程图如下:adclk = oxof; /设置adc的
31、时钟分频系数adcon |= aden; /使能 adcfor(i=0;i<5;i+);adcon |= adcs; /选择通道 0/ adcon gadcs; /选择通道 1while (1)/ adcon |= ad1dl; /转换期间挂起cpu核adcon |= adsst; /启动转换while(! (adcon & adeoc) ; /等待转换结束adcon &二adeoc; /软件清除结束标志adcvalue = addh;printuc v); /清除显示行内容并回车printuf c'a/d = %drz,, adc value) ; /显示转换结
32、果并回车(adc_value>128)?(led = 0) : (led = 1) ;/如果大于 128 点亮 leddelayo ; /延时控制采集频率在程序中从串口显示字符串以乜回车符结束,而不是换行符',这样可 以看到在同一位置显示数据的效果。为了取得好的显示效果,采集频率不要太快,以 免超级终端显示闪烁。另外,如果ad转换结果大于128将点亮led,反之熄灭。注 意,ad转换接口的有效结果只有8位,也就是说只需读取addh即可,这样程序也方 便处理和显示。adcon寄存器是不可位寻址的,所以不能直接置位或清零adsst等位。程序屮都 是通过位运算完成对某一位的改变的。首先
33、按照adcon寄存器的位说明来定义各位名 称的宏:sdefine ad1dl 0x40sdefine aden 0x20sdefine adeoc 0x10sdefine adsst 0x08sdefine adcs 0x01这样的宏定义实际上指明了各位名称对应的位掩码,例如aden定义成0x20是因 为aden是adcon寄存器的第5位,该位掩码是00100000b即0x20。有了这样的宏定 义,我们要置位aden位就可以用adcon | = aden;来完成;而清除adeoc位可以用adcon &= adeoc;来完成。许多类似的程序都可以这样实现对不可位寻址寄存器某位的置位 或清
34、零。图3-3 ad转换流程图3、定时器中断定时器中断主要用来工作状态指示,报警指示和定时启动ad转换,其程序流程图如下:图3-4 to定时屮断子程序流程图3. 2初始化显示子程序的编程在该数据采集系统中,显示芯片用的是cm 12232,前面已对该芯片作过介绍,这 里不在进行描述,只对要显示的功能进行说明。开机进行初始化操作,显示液晶屏开 机显示“姓名学号”如“魏方合32”。在显示数据之前首先要做的是显示初始化, 参考代码如下:void lcd_init() unsigned char i,j;sendcommand(lcdcomd_disoff);sendcommand(lcdcomd_sta
35、ticoff); sendcommand(lcdcomd_duty32); /必须指定32位显示模式,32行扫描。sendcommand(lcdcomd_adccw);sendcommand(lcdcomd_disoff);sendcommand(lcdcomd_reset); /start line=0,segment addr=o,page addr=() sendcommand(lcdcomd_dison);只有做了以上工作才可以根据lcd写数据的时序,编写程序。发送数据的参考代 码如下:void senddata(unsigned char seg,unsigned char page
36、,unsigned char dots) /seg is from 0 to 121 and page is from 0 to 3.page=3-page; 将 page 反转sendcommand(lcdcomd_pageaddripage);/发送命令指定 pageif (seg<61)/如果逻辑地址小于61则将数据送到从芯片 seg=60-seg; /反转段地址sendcommand(lcdcomd_segaddriseg);/ 发送命令指定段地址lcd_di=1;lcd_rw =0;lcd_bus =dots;lcd_e2=1;lcddelayo;lcd_e2 =0;lcdde
37、layo;else /如果逻辑地址大于61则将数据送到主芯片seg=121-seg; /反转段地址,主芯片实际地址依然61到0sendcommand(lcdcomd_segaddriseg);lcd_di=1;lcd_rw =0;lcd_bus =dots;lcd_e1 =1;lcddelayo;lcd_e1 =0;lcddelayo;lcd_bus=oxff;该函数的参数分别指定所写字节的段、页地址和点阵内容。参照前面给出的地址 表,该函数将指定的逻辑段、页的值转换成lcd芯片的实际地址。有了以上的准备工作后,要想显示字符还不够,还需要冇字符的点阵字模。也就 是要将代表该字符的点阵信息保存为
38、数据。并11要建立汉字和字符库,以便程序调用。 比如显示“魏”字要通过字模板写岀对应的数组,根据程序需要,写入库中。0x12,0x54,0x58,ox7f,0x98,0x94,0x10,ox3f,0x25,0x65,oxbf,0x25,0x25,ox3f,0x00,0 xoo,0x42,0x52,oxec,0x48,0x74,0x40,0x02,0x04,0x18,oxeo,0x00,oxfe,0x32,0x52,0x36,0 xoo,以上代码就是魏字的编写代码。当然如果定义的页地址和列地址不同,上述代码 也不同。3. 3 lcd数据显示程序的编程lcd显示主要是为了对远端的实际工作参数进行现
39、场监控,以便控制需要,一旦 出现故障及时发现,及时处理。借用ad转换器以及单片机的高速处理数据特点就可 以实现需要。在该数据采集系统中,显示当前釆集值,并通过键盘设定采集阀值和 运行数据采集。一旦出现故障(超出设定值),将执行报警。lcd数据显示程序的部分代码如下所示:(1) 、初始化:void lcd_init() unsigned char i,j;sendcommand(lcdcomd_disoff);sendcommand(lcdcomd_staticoff);sendcommand(lcdcomd_duty32);sendcommand(lcdcomd_adccw);sendcomm
40、and(lcdcomd_disoff);sendcommand(lcdcomd_reset); /start line=0,segment addr=o,page addr=osendcommand(lcdcomd_dison);for(i=0;i< 122;i+)for(j=0;j<4;j+)senddata(i,j,oxoo);(2) 、清屏显示void cleandis()uchar i,j;for(i=0;i< 122;i+)for(j=0;j<4;j+)senddata(i,j,oxoo);(3) 、发送数据代码void senddata(unsigned c
41、har seg,unsigned char page,unsigned char dots)/seg is from 0 to 121 and page is from 0 to 3.page=3-page;sendcommand(lcdcomd_pageaddripage);讦(seg<61) seg=60-seg;sendcommand(lcdcomd_segaddriseg);lcd_di=1;lcd_rw =0;lcd_bus =dots;lcd_e2=1;lcddelayo;lcd_e2 =0;lcddelayo;elseseg=121-seg;sendcommand(lcdc
42、omd_segaddriseg);lcd_di=1;lcd_rw =0;lcd_bus =dots;lcd_e1 =1;lcddelayo;lcd_e1 =0;lcddelayo;lcd_bus=oxff;(4) 、显示当前采集值显示当前采集值void displ()dishz(0,0,3);dishz( 17,0,4);dishz(34,0,5);dishz(51,0,6);dishz(68,0,7);diszf(0,2,adqianwei);diszf(9,2,adbaiwei);diszf(l 8,2,adshiwei);diszf(27,2,adgewei);(5) 、显示设定阀值显示
43、设定采集阀值void disp2()dishz(0,0,8);dishz( 17,0,9);dishz(34,0,5);dishz(51,0,6);dishz(68,0,10);dishz(85,0,7);diszf(0,2,sdqianwei);diszf(9,2,sdbaiwei);diszf(l 8,2,sdshiwei);diszf(27,2,sdgewei);3. 4键盘模块的编程at89c51snd1单片机的键盘接口并没有硬件去抖能力,甚至寄生的干扰也可能 导致中断。因此键盘去抖动是键盘程序中必须面对的一个问题。如果软件没有去抖处 理的话,可能岀现一退岀中断服务程序就立刻乂响应中断
44、的现象,从而造成错误。因 为键盘屮断属于边沿触发并且kbsta寄存器读后口动清零,如果在进入中断服务程 序后立刻读kbsta并处理,则随后的抖动可能使kbsta再次置位,等本次中断服务 完成后,就会立刻进入第2次中断。所以,中断服务程序中读取kbsta并保存其值 后需要延时约20ms,再比较该值和pl 口状态是否对应,如果不对应则认为是无效按 键,不作任何处理;在退岀中断服务程序之前要再读一次kbsta以使其清零,也就 是清除在延时和中断处理过程中产生的抖动。这部分代码可参考如下,键盘中断的向 量是11。void key_interrupt() interrupt 11unsigned cha
45、r i,j,k;k = kbsta&0x0f; 保存kbsta 的kinf3:0 值for(i=0;i<50;i+)for(j=0;j<200;j+); 延时if(k=(pl&0x0f)如果延时后pl 口状态和所保存的kinf3:0值对应.处理键码k二kbsta;/读取kbsta并舍弃其值,清除抖动产生的中断标志return;4数据采集系统的调试4.1主程序功能的调试该数据采集系统的主要的功能就是利用at89c51snd1作为核心处理器通过输入 采样开关cd4051将外界的模拟信号采集并通过ad转换部分将采集到的数据转换成 计算机能够识别的数字信号,并且通过键盘控制
46、來设定采集数据的范围和故障设定, 以便实时对数据进行监控。经过长期的学习,编程,在经过了 10()多天的毕业设计终于完成了基于 at89c51snd1单片机的数据采集系统的软件设计。主程序调试过程中遇到了一些问题,由于所用的at89c51snd1芯片十分复杂, 具有80个引脚,而且里面兼有2路的ad采集通道,虽然给设计带来方便,带由于在 进行宏定义时对要进行定义的参数考虑不周全,漏掉了#define aden 0x20,以至无法 完成ad采集,后来再参考学习版中的资料后,找到了原因。经过改正很好的实现了 对0-5v模拟电压的采集,通过lcd显示很好的验证了结果。在ad转换程序设计时,原本采用的
47、是延时查询的方式。为了较好的实现实时数 据的采集,改用了定时中断和ad中断,采用定时中断来启动ad转换,这样可以大 大提高工作效率。利用定时屮断,系统自动的检查是否需要启动ad转换,4. 2 lcd显乔程序的调试在该数据采集系统中,lcd占了很大的一块,数据的采集监控离开了它就实现不 了。通过它,人可以直接与计算机进行数据的交互联系。它是反映数据实时采集,进 行监控的窗口。在该模块的调试中,最初由于对lcd显示原理了解不足,以致编写出來的初始化 显示字符都是反的,因为cm12232芯片对数据的显示采用的是字模显示格式为单色点 阵液晶字模,纵向取模,字节止序/32字节。若采用倒序,则显示字符为反写。另外还 有就是由于没有对数据显示前对lcd进行初
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 木工工具采购合同
- 校园专线接送服务合同
- 阿坝职业学院《地学英语阅读与翻译》2023-2024学年第二学期期末试卷
- 陇东学院《中国特色美食文化鉴赏》2023-2024学年第二学期期末试卷
- 陕西中医药大学《二维动画技术》2023-2024学年第一学期期末试卷
- 陕西学前师范学院《园林规划设计I》2023-2024学年第二学期期末试卷
- 陕西旅游烹饪职业学院《井巷工程》2023-2024学年第二学期期末试卷
- 陕西省五校重点中学2024-2025学年高考物理试题命题比赛模拟试卷(2)含解析
- 陕西省商洛市丹凤中学2025年高三质量检测试题英语试题含解析
- 陕西省安康市旬阳县2025年三下数学期末考试模拟试题含解析
- 2023年江苏省生物学联赛初赛预赛试题及答案(word版可编辑)
- (中职)饭店信息技术第六单元 客史档案的管理教学课件
- 人员能力矩阵图
- 员工请假审批表模板
- 整机结构设计规范
- 种鸭饲养管理手册
- 语文新课标实践与探索:《石壕吏》《茅屋为秋风所破歌》整合教学设计
- (高清正版)JJF(浙) 1137-2017《电容电流测试仪校准规范》
- 呼吸囊检测(课堂PPT)
- 无机化学第4版下册(吉大宋天佑)2019
- 损伤控制性复苏课件
评论
0/150
提交评论