第一章前言
在中国,服装制造加工业在工业结构中占据重要的比例。而染色机作为一种适应范围广泛的成品之理想的漂染设备,广泛应用于羊毛衫、晴纶和棉毛衫等成衣的染色、漂白、煮炼和水洗等工艺,也可应用于手套、袜子、毛巾等成品的漂染处理。在染色机染色的生产过程中,温度是一个大的滞后系统,且受多种因素的影响,这些因素的变化范围虽然不大,但他们是不确定的。染色工艺对于温度控制要求非常严格,染液的升温、保温和降温必须符合工艺要求,否则将会产生色差、缸差、着色不匀等次品。
温度是工业生产和科学实验中的重要参数之一,具有非线性、强耦合、时变、时滞等特性。在化工、冶金、工业炉窑等工业生产中,对温度的控制直接影响到许多产品的质量及使用寿命。而随着现代科技的发展,电子计算机已用于温室环境的控制。
自70年代以来,由于工业过程控制的需要,特别是在微电子技术和计算机技术的迅猛发展以及自动控制理论和设计方法发展的推动下,国外温度控制系统发展迅速,并在智能化、自适应、参数自整定等方面取得成果。在这方面,以日本、美国、德国、瑞典等国家技术领先,都生产出了一批商品化的、性能优异的温度控制器以及仪器仪表,并在各行业广泛应用。它们主要具有以下特点:
1、适应大惯性、大滞后等复杂温度控制系统的控制。
2、能够适应于受控系统数学模型难以建立的温度控制系统的控制。
3、能够适应于受控系统过程复杂、参数时变的温度控制系统的控制。
4、这些温度控制系统普遍采用自适应控制、自校正控制、模糊控制、人
工智能等理论以及计算机技术,运用先进的算法,适用范围广泛。
5、温度控制系统具有控制精度高、抗干扰能力强、鲁棒性好的特点。
例如LM56是美国国家半导体公司(NSC)推出的低功耗、可编程集成温度控制器,内部含有温度传感器和基准电压源。两个集电极开路的数字信号输出端,用来进行温度控制,利用外接电阻分压器可以方便地对上下限温度进行设定。当温度超过上限温度或低于下限温度时,其数字信号输出端输出相应的逻辑电平,经驱动电路实现对温度的控制,控温范围为一40~+125℃,控温误差小于士2℃。内部含有迟滞电压比较器,利用迟滞电压比较器的滞后特性,可有效地避免执行机构在控温点附近频繁动作,滞后温度为5℃。另有一个模拟信号输出端,输出与摄氏温度成线性关系的电压信号。
该电压信号经模/数转换后,可用来驱动显示装置,以实现对自身温度的精确测量。集成温度控制器DS56是美国Dallas半导体公司推出的低功耗、可编程集成温度控制器,内部包含有温度传感器和高精度基准电压源。有两个集电极开路的数字信号输出端,专门用来进行温度控制,利用外接的精密电阻分压器可以实现对上下限温度的准确设定,当温度超过上限温度或低于下限温度时,其数字信号输出端将输出相应的逻辑电平,经驱动电路以实现对温度的控制。控温范围为40℃~+125℃,在40℃~0℃内,精度为±3℃,在0℃~85℃内,精度为±2℃,在85℃~125℃内,精度为±3 ℃。内部含有迟滞电压比较器,利用迟滞电压比较器的滞后特性,可有效地避免执行机构在控温点附近频繁动作,滞后温度THYST为+5℃。另有一个模拟信号输出端,输出与摄氏温度成线性关系的电压信号,该电压信号经模/ 数转换后,可用来驱动显示装置,以实现对自身温度的精确测量。该集成温度控制器可广泛应用于家用电器和办公设备的过热保护、数据采集系统及电池供电系统的温度监测、工业过程控制、降温风扇控制、电器设备的过热保护等领域。
相对于国外的发展水平,国内生产的温度控制器总体水平不高。目前,我国在这方面的总体水平处于20世纪80年代中后期的水平,成熟产品主要以“点位”控制以及常规的PID控制器为主,它只能适应一般温度系统控制,难于控制滞后、复杂、时变温度系统控制。而适应于较高控制场合的智能化、自适应控制器,国内技术还十分不成熟。但我国在温度控制系统上还是取得了一些成果和进步的。例如唐山钢铁公司高速线材厂运用模糊控制理论和传统的PID控制相结合,不仅成功的实现了温度自动控制,而且还使吨钢油耗指标大幅度下降,取得了近千万元的经济效益。
随着生产力的发展和对温度控制精度要求的不断提高,温度控制系统的控制技术得到迅猛发展,当前比较流行的温度控制系统有基于单片机的温度控制系统、基于PLC的温度控制系统、基于工控机(IPC)的温度控制系统、集散型温度控制系统(DCS)、现场总线控制系统(FCS)等。
第二章系统组成及工作原理
2.1系统设计要求与技术指标
本课题要求采用铂热电阻测温,其控温范围为:25℃-135℃;采用数字PID算法,使控温精度达到±2℃;能实时输入控温工艺,实时显示染缸实测温度,超温时能报警。该控制器能对8台染色机实现温度控制。
其具体技术要求如下:
1、实现对多路温度信号进行采集;
2、采用数字PID控制算法对系统进行控制;
3、控温范围为:25℃-135℃,控温精度达到±2℃;
2.2 系统功能及工作原理
系统采用STC89C52单片机作为核心控制器,控制系统正常工作。通过由PT-100构成的电桥电路采集温度信号,由于电桥产生的电压信号过低,通过TLC084构成的放大电路将输出电压控制在0-5V的范围内,并将输出电压信号送入ADC0804进行模数转换,将转换数据送入单片机进行显示,并通过PID算法实现对系统的加热与制冷时间长短进行控制。各模块具体功能如下所示:
1、通过CD4051模拟开关采集8路染色机信号,并将模拟信号转换成数字信号送
入单片机处理;
2、键盘及显示模块实现对控制温度和时间的设定及显示,以及实现通道的选择
与显示;
3、PT-100电桥电路模块实现对温度信号的采集,并通过放大电路使输出电压范
围控制在-5V;
4、报警模块由ISD1420组成,实现超温时的报警功能;
5、加热,降温模块由光耦及双向可控硅构成,通过单片机控制实现对系统的加
热及降温。
2.3 系统组成及框图
系统由硬件与软件两大部分组成,硬件电路由以下几个部分组成:温度采集部分、单片机最小系统控制部分、7279键盘部分、时钟电路部分、加热控制电路部分、制冷控制部分、语音报警电路部分和液晶显示部分。其中温度采集部分由PT-100电桥电路、TL084放大电路、CD4051模拟开关以及ADC0804模数转换电路构成;加热控制电路部分和制冷控制部分电路由光耦和双向可控硅组成;单片机控制部分由MAX232通信模块、复位电路和时钟晶振组成;语音报警电路部分由ISD1420及其外围电路组
成,采用LM386驱动功率为1W 的喇叭。系统的硬件电路组成框图如图2.1所示:
图2.1 系统硬件电路组成框图
系统的软件部分采用模块化的设计方法,将软件分为主程序模块、中断服务模块、
温度采集模块、7279键盘模块、时钟模块、液晶显示模块、语音报警模块、PID 算法模块和PID 控制模块。其中AD 数据采样及处理、语音报警、PID 控制算法子程序和PID 控制值输出用中断服务模块来处理。在中断程序中,将定时器0定时为1秒,当开定时器0时,每隔一秒进入中断处理程序进行数据的采集和处理。键盘显示模块通过直接使用7279芯片的读键盘数据指令来获取键值进行比较处理后转入相应的处理程序,能达到更好的人机交互效果。加温降温控制通过使用PID 算法计算出控制值,然后使用定时器1产生的PWM 波控制P2.1口和P2.2口的高低电平转换来控制双向可控硅的通断来实现加热降温的控制。
STC 89C52
温度采集 电路
模拟开 关
放大电路
键盘控制电路
液晶显示电路
语音报警电路
电 源
复位电路
A/D 转换电路 加温降温控制电路
时钟电路
第三章微电脑多路染色机温度控制器的硬件设计
硬件是整个系统正常工作的基础,硬件电路的优劣与合理设计关系到系统能否正常及其稳定性。本系统硬件电路主要由温度采集部分、单片机最小系统控制部分、7279键盘部分、时钟电路部分、加热控制电路部分、制冷控制部分、语音报警电路部分和液晶显示部分组成,其各部分设计如下。
3.1 单片机最小系统
单片机最小系统主要由单片机、时钟电路、复位电路组成。其电路图如图3.1所示:
图3.1 单片机最小系统电路图
为将程序通过Keil uVision2软件写入单片机,通过MAX232串口通信电路实现单片机与计算机之间的通信,其电路如图3.2所示:
图3.2 MAX232串口通信电路
图3.1中,STC89C52的X1、X2端分别是反相放大器输入和输出端,外接晶振产生时钟送至单片机内部的各个部件,在本次实验中使用的是12M频率的晶振。其中C10、C11是33pF的反馈电容。其作用有两个:其一是使振荡器起振,其二是对振荡器的频率f起微调作用。同时,由于P0口作为语音芯片ISD1420的地址输出口,且STC89C52中P1口没有上拉电阻,故在P1口接阻值为10K的上拉电阻。在本系统中采用的复位方式是手动复位。手动复位是直接通过按键S2使RES信号维持高电平一段时间即可。当单片机复位以后,除SP=07,P0、P1、P2、P3为0FF外,其它寄存器都为0。
3.2 温度采集部分
3.2.1 温度转换电路
温度转换电路是由PT-100电桥电路和TL084放大电路组成。PT-100电桥电路采用PT-100型铂热电阻作为温度传感器,铂热电阻是利用阻值随温度变化而变化的特性来测量温度,它有很好的稳定性和测量精度,测量范围宽,被广泛应用于作温度的基准,PT-100将温度的变化转化为电阻的变化,并通过桥堆将电阻的变化转化为电压的变化,因为所得的压差只有毫伏级,所以要经过TL084放大器放大,再通过A/D 转换器,把电压量转换成数字量,然后将转换的数值送CPU处理。
温度转换电路如图3.3所示:
图3.3 温度转换电路
TL084是四输入运算放大放大器,具有高转换率、低输入偏置和偏置电流以及低失调电压温度系数的特点。在图3.3中,运放结构的测量放大器由TLC084两级组成,两个对称的同相放大器构成第一级,第二级为差动放大器—减法器。通过改变电阻
R 38的大小,可方便地调节放大器的增益,在集成化的测量放大器中,R
38
是外接电阻,
用户可根据整机的增益要求来选择R
38
的大小。
3.2.2 A/D转换电路
A/D转换电路由模拟开关CD4051和模数转换器ADC0804组成,其作用是将经模拟开关选通的模拟信号转换成对应的数字信号,从而实现多路温度采集。ADC0804是8 位COMS 依次逼近型的A/D 转换器,其转换时间是100us。转换结束时,可由CPU打开三态门,读出8位的转换结果。A/D转换电路如图3.4所示:
图3.4 A/D转换电路图
3.3 7279键盘部分
HD7279是一片具有串行接口的可同时驱动8位共阴式数码管(或64只独立LED)的智能显示驱动芯片,该芯片同时还可连接多达64键的键盘矩阵,单片即可完成LED显示、键盘接口的全部功能。HD7279内部含有译码器,可直接接受BCD码或16进制码,而且具有2种译码方式。HD7279还具有多种控制指令,如左移(A1H)、右移(A0H)、消隐(98H)、闪烁(88H)、段寻址等。
在本系统中,考虑到单片机的I/O口使用个数的限制,故舍弃矩阵式键盘的按键方式,采用7279显示板上的键盘来进行按键操作。在操作过程中,只需接4根接口线,分别为:片选线CS、串行时钟线CLK、串行数据线DATA以及键盘申请线KEY,其中CS为片选信号(低电平有效)。其原理图如图3.5所示。
图3.5 7279显示板原理图
3.4 时钟电路部分
在本系统中,时钟电路部分采用串行时钟芯片DS1302,它是一种高性能、低功耗的时钟芯片,包括实时时钟/日历和31个字节的静态RAM 。可实时的对秒、分、时、日、周、月、年进行计数处理,可通过外部可充电池加电长期保存数据,并能为电池慢速充电。它与单片机之间能简单地采用同步串行的方式进行通信,因此连线简单,仅需用到 、I/O 和SCLK 三个口线。其电路图如图3.6所示:
图3.6时钟电路图
RST
3.5 液晶显示部分
液晶显示部分采用的是FYD12864汉字图形点阵液晶显示模块,它具有非常完备的字库,内置8192个16x16点汉字,128个16x8点ASCII字符集,还可以显示自定义图形,能够满足多种显示的需要。同时它具有并行和串行两种工作方式,考虑到单片机I/O使用数目的限制,故在使用液晶显示是采用的是串行通信的工作方式。其与单片机的连线图如图3.7所示:
图3.7 液晶模块连线图
3.6 语音报警电路部分
语音报警电路部分由ISD1420语音芯片及其外围电路组成。其中,A0-A7为语音芯片的地址端,每位地址代表125ms的寻址,l60个地址覆盖20s(160xO.125s=20s)的语音范围,录音及放音功能均从设定的起始地址开始。地址端与单片机的P0口相连,通过软件将ISD1420的地址置为Ox00作为起始地址来进行录放音。录音过程中,通过长按S1键,此时LED点亮表示录音正常。17、18管脚为:MIC、MICREF,两管脚之间接咪
头,进行录音。14、15管脚为SP+、SP-,由于采用的喇叭功率为1W,若接两管脚间容易失真。故采用单端输出,SP-接10uf到地以防止烧坏ISD1420芯片,SP+接外部功率放大器LM386。喇叭功放电路如图3.9所示。图3.9中R21为电位器,通过调节电位器阻值的大小可以调节喇叭声音的高低。语音报警电路如图3.8所示。
图3.8 语音报警电路
图3.9 喇叭功放电路
3.7加热控制电路部分
本部分设计主要由驱动器7407、光耦MOC3041和双向可控硅构成。加热控制电路主要利用光电耦合器实现强电与弱电的隔离,避免回执机构的运行对前端电路的影响,并将光耦输出的控制信号送至双向可控硅的控光制端,实现控制其开关状态的关断与闭合,从而控制加热器件的加热时间,以实现对系统温度的控制,并且此电路还有低噪声、可靠性高、驱动功率小、对电源电压适应能力强和抗干扰能力强等优点。所以在控制电路的设计中,采用了此电路作为加热控制开关。
在加热部分中,采用电烙铁作为加热器件。当双向可控硅导通时,电烙铁加热。
其具体电路如图3.10所示。
图3.10 加热控制电路图
3.8 降温控制电路部分
本部分电路设计原理和加热控制电路原理相同,由驱动器7407、光耦MOC3041、双向可控硅组成。降温器件为直流电机,双向可控硅导通后,直流电机驱动进行降温处理。其原理图如图3.11所示。
图3.11 降温控制电路图
第四章微电脑多路染色机温度控制器的软件设计
系统软件设计采用C51语言,在Windows XP环境下采用Keil uVision2软件进行编写,对STC89C52进行编程。
4.1软件整体设计思路
系统的软件一般由主程序和若干子程序以及中断程序组成。在主程序中调用子程序,子程序中对每个模块进行实际的操作。通过对每个子程序的调试并结合硬件实现每个功能模块的作用。然后在主程序中,合理的排列子程序的执行顺序,关键是要将整个程序的逻辑顺序表示清楚。在系统软件的设计过程中,采用模块化的结构设计思想能使每个模块的设计无须过多地关联其它模块,可以独立进行修改和调试。为系统的开发及调试提供了相当大的便利。
系统软件包括九个模块:主模块、中断服务模块、温度采集模块、7279键盘模块、时钟模块、液晶显示模块、语音报警模块、PID算法模块和PID控制模块。主程序主要完成液晶显示及键盘处理功能,通过判断是否有键按下,按下的键值与功能键是否相等来执行相应的功能,如对温度参数的设定、时间的设定、通道选择等。中断程序主要完成对AD数据采样及处理、语音报警、PID控制算法子程序和PID控制值输出等功能。其余子程序则是对系统功能的丰富及完善,如时钟模块。
4.2 系统变量定义及I/O口分配
在编写软件程序前,将STC89C52的I/O口进行合理地分配,能使软件编写过程方便且资源不产生冲突。单片机的I/O口分配表如表4.1所示。
表4.1 单片机I/O分配表
FYD12864液晶DS1302时钟ADC0804
P1.0 CS_LCD P1.3 SCLK_DS1302 P3.6 WR P1.1 SID_LCD P1.4 IO_DS1302 P3.7 RD P1.2 SCLK_LCD P1.5 RST_DS1302 P2.0 CS_AD 7279键盘CD4051 加热降温控制P1.6 CS P2.3 CD_A P2.1 K_JIAN P1.7 CLK P2.4 CD_B P2.2 K_JIA P3.4 DAT P2.5 CD_C ISD1420
P3.5 KEY P2.6 PLAY_E
编写程序时,由于采用的程序语言为C51,在软件编写前应定义全局变量,以供整体程序使用。全局变量定义情况如下所述:
STR[4][16] 存放四行十六列的液晶数据变量
STR_Temp[3] 存放三位的温度数据变量
keynum 定义键值变量 flag 定义液晶界面切换标志位
flag1 定义温度设定值个位/十位/百位切换标志位
flag2 定义通道选择标志位 chanl 定义所选通道号变量
Set_flag 定义时间设定值秒/分/时等的切换标志位
cc[3] 存放三次温度采样值 bai 定义温度设定值的百位
shi 定义温度设定值的十位 ge 定义温度设定值的个位
同时,在DS1302时钟模块变量和PID算法模块变量的定义中,采用结构体的定义方式将所需的变量定义在一个结构体中,使数据处理清晰方便。其定义情况如下所示:
1、DS1302时钟模块结构体定义
typedef struct Time_struct
{
uchar Second; 定义DS1302时钟芯片的秒位变量
uchar Minute; 定义DS1302时钟芯片的分位变量
uchar Hour; 定义DS1302时钟芯片的时位变量
uchar Week; 定义DS1302时钟芯片的星期变量
uchar Day; 定义DS1302时钟芯片的日变量
uchar Month; 定义DS1302时钟芯片的月变量
uchar Year; 定义DS1302时钟芯片的年变量
};
struct Time_struct time_;
2、PID算法模块结构体定义
typedef struct PIDValue
{
uchar Ek[3]; 存放采样值与设定值之间的差值
uchar EkFlag[3]; 存放采样值与设定值之间的差值的符号位
uchar KP; 定义PID中的P系数
uchar KI; 定义PID中的I系数
uchar KD; 定义PID中的D系数
uchar Uk; 定义PID的输出值
uchar RK; 定义PID中的设定值
uchar CK; 定义PID中的实际值
};
struct PIDValue PID;
4.3 软件模块化分析
系统的软件设计主要包括以下几个模块:主模块、中断服务模块、温度采集模块、7279键盘模块、时钟模块、液晶显示模块、语音报警模块、PID 算法模块和PID 控制模块。下面是关于这几个模块的设计过程。 4.3.1 主程序模块
在系统上电以后,主程序进行时钟芯片初始化、液晶初始化、定时器/计数器初
始化、定时器/计数器启动、液晶显示初始界面及键盘扫描判断有键按下否。如无键按下,则显示液晶初始化界面;有键按下,则分析标志位根据所得标志位的值执行相应的子程序。然后通过相应的键值执行时间的设定、控制温度的设定以及通道选择的子程序。系统主流程图如图4.1所示: 0
1
2
图4.1 主程序流程
4.3.2 中断服务模块
本次软件设计中,中断服务模块的设计是整个软件设计的重要部分。在中断服务
模块中,通过开启定时器T0来定时调用一些子程序进行操作。在中断服务模块中执
开始
LCD 初始化 时钟芯片初始化
定时器初始化 调用液晶初始化界面子程序
键盘扫描,判断
flag=?
调用screen_2(),开定时器0中断
调用screen_3()
中断入口
保护现场 重赋定时器初值
时间变量aa++ aa=20? 调用A/D 子程序,清零aa
采样T=设定T ? 采样T>设定T ?
语音报警 PID 控制算法 PID 控制输出
恢复现场 中断返回 行下列操作:调用ADC0804进行温度数据的采集和处理;将采集到的温度与设定的温度进行比较,判断系统是要加热还是制冷,同时判断是否进行超温报警的操作;然后启动PID 算法和PID 控制输出等。
在中断服务模块的设计中,通过设置Th0=(65536-50000)/256、Tl0=(65536-50000
)%256。使得定时器T0的时间为50ms 。其流程图如图4.2所示: N
Y
Y
N
Y
N
图4.2 中断服务程序流程图
4.3.3 DS1302时钟模块
时钟芯片DS1302内含有一个实时时钟/日历和31字节静态RAM,通过简单的串行接口与单片机进行通信。实时时钟/日历电路提供秒、分、时、日、日期、月、年的信息,每月的天数和闰年的天数可自动调整。时钟程序模块主要完成对DS1302的读写以及将读出值送入显存单元等功能,并能够在按键按下时进行时钟调整。
DS1302主要由移位寄存器、控制逻辑、振荡器、实时时钟以及RAM组成。在串行传输任何数据前,必须先把RST置为高电平“1”,数据输入(写操作)是在SCLK 的上升沿进行,即在上升沿到达前,数据必须有效;数据的输出(读操作)是在SCLK 的下降沿进行。如果RST为低电平,那么所有的数据传输终止,且I/O引脚变为高阻抗状态。
写入时,最先传入的一个字节为命令字,命令字节中包含读/写操作、操作对象和地址信息,随后的时钟周期在读操作时输出数据,在写操作时输入数据。无论是命令字还是数据,它们的传送都是低位在前,高位在后。
对时钟芯片的操作,一般有以下六个步骤:
1.通过对写保护寄存器的操作,关闭写保护,使DS1302允许写入;
2.通过将秒寄存器最高位置1,使时钟振荡器停止,以便设定初值;
3.初始化DS1302,将设定值写入各时钟寄存器;
4.将设定值读出;
5.将秒寄存器的最高位置0,启动时钟;
6.打开写保护,禁止对任何寄存器进行写操作。
要正确读写DS1302,关键在于时序。在控制命令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始,
同样,在紧跟8位的控制命令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位至高位7。单字节数据读写时序如图4.3所示。
图4.3 单字节数据读写时序图
在对DS1302操作时,定义一个结构体Time_struct来存储时钟的时、分、秒、
日期等数据。在DS1302时钟芯片的程序编写中,关键是搞懂DS1302的写子程序以及读子程序。写子程序及读子程序的流程图如图4.4、图4.5所示。在时钟模块中,通过写子程序将时间初值写入DS1302芯片寄存器中,然后通过读子程序将写入的初值读出并通过液晶显示子程序将时间显示出来。由于在硬件电路中并没有外接干电池故在程序中写入“2011年5月25日 Wed 02:30:00”。
图4.4 写子程序流程图
图4.5 读子程序流程图
DS1302中共有12个寄存器,其中7个寄存器与日历、时钟有关,它们均以BCD 码格式存放,如表4.2所示:
表4.2 DS1302时钟寄存器地址与格式
寄存器名 命令字 取值范围
格 式 读操作 写操作 D7 D6 D5 D4 D3 D2 D1 D0 秒寄存器 81H 80H 00~59 CH 秒(十位) 秒(个位) 分寄存器 83H 82H 00~59
分(十位) 分(个位) 时寄存器 85H 54H 01~12或
01~23 12或24
A/P
时(十位)
时(十位)
时(个位) 日寄存器 87H 86H 01~28/30/31 0 0 日(十位) 日(个位) 月寄存器 89H 88H
01~12
0 0 0 月(十位) 月(个位) 周寄存器 8BH 8AH 01~07 0
周 年寄存器 8DH
8CH 00~99
年(十位)
年(个位)
4.3.4 温度采集模块
在温度采集模块中,通过CD4051八路模拟开关与模数转换器ADC0804相结合的
方法达到多路温度采集的功能。CD4051是单8通道数字控制模拟电子开关,有三
入口
允许传输数据
发送地址
发送数据
返回
关闭传输数据 入口
允许传输数据
发送地址
接受数据
关闭传输数据
返回
个二进制控制输入端A、B、C和INH输入,具有低导通阻抗和很低的截止漏电流。在操作过程中,只要改变A、B、C的值,就可以选通不同的通道。其中,INH是禁止端,当INH置1时,所有通道截止。CD4051的真值表如表4.3所示。
表4.3 CD4051真值表
INH C B A 输出
0 0 0 0 0
0 0 0 1 1
0 0 1 0 2
0 0 1 1 3
0 1 0 0 4
0 1 0 1 5
0 1 1 0 6
0 1 1 1 7
1 均不导通
ADC0804是8位逐次逼近型A/D转换器,它的转换时间是100us,ADC0804进行模拟/数字的转换时,控制ADC0804动作的信号只有CS、WR、RD。因此,在进行A/D转换的软件编写中,只需要送出所需的CS、WR、RD的控制信号。其流程图如图4.6所示。
入口
启动A/D转换
P0=0xff,允许输入数据
调用100us延时子程序
P0口数据处理送显示
返回
图4.6 A/D转换流程图
4.3.5 液晶显示模块
在液晶显示模块中,采用的是FYD12864液晶显示模块。它具有两种通讯模式:并行通讯模式和串行通讯模式。由于I/O口的限制和考虑到接线数量的简单,采用串行通讯模式将PSB直接接地,则液晶显示模块为串口通讯模式。
在液晶显示模块与单片机STC89C52的连接中,只需连接CS、SID、CLK三
根口线,它们分别为:模组片选端、串行数据输入端、串行同步时钟。该模块的
液晶每行可以显示8个汉字(双字节)或16个半角字符(单字节),共可以显示四行。在对每行进行送数时,要先把要显示的汉字或字符的位置算好,否则很容易
显示乱码。字符显示RAM在液晶模块中的地址为80H~90H,字符显示RAM的
地址与32个字符显示区域有着一一对应的关系,其对应关系如表4.4所示:
表4.4 字符显示RAM地址表
第一行首址80H81H82H83H84H85H86H87H
第二行首址90H91H92H93H94H95H96H97H
第三行首址88H89H8AH8BH8CH8DH8EH8FH
第四行首址98H99H9AH9BH9CH9DH9EH9FH 在对液晶显示程序的编写过程中,要对液晶的相关时序图有所了解,这是将液晶显示子程序写好的重点和难点。其串行模式数据传输时序图如图4.7所示,串口方式读写数据时序图如图4.8所示。
图4.7 串行模式数据传输时序图