1、目录绪论11、 系统设计方案31.1 系统设计方案比较31.2 系统设计总框图31.3 A/D转换模块设计方案42. AT89C52单片机的基本结构72.1 控制器72.2存储器结构72.3 并行I/O口82.4 时钟电路与时序82.5晶振特性83.最小系统设计83.1 复位电路93.2 控制引脚EA接法94.数字钟的外围电路设计104.1 晶振电路104.2复位电路104.3显示电路114.4 LED显示器114.5共阳极接法124.6共阴极接法124.7 电源电路125相关控制电路135.1 按键电路135.2 定时工作方式145.3中断子程序146. 软件调试问题及解决147. 结 论1
2、4绪论在又可作为分布式计算机控制系统中的前端机,完成模拟量的采集和开关量的输入、处理和控制计算,然后输出控制信号。单片机广泛用于仪器仪表中,与不同类型的传感器相结合,实现诸如电压、功率、频率、湿度、流量、速度、厚度、压力、温度等物理量的测量;在家用电器设备中,单片机已广泛用于电视机、录音机、电冰箱、电饭锅、微波炉、洗衣、高级电子玩具、家用防盗报警等各种家电设备中。在计算机网络和通信、医用设备、工商、金融、科研、教育、国防、航空航天等领域都有着十分广泛的应用。随着科技的发展,液位测量技术趋于智能化、微型化、可视化。1、 系统设计方案1.1 系统设计方案比较对于水位进行控制的方式有很多,而应用较多
3、的主要有2种,一种是简单的机械式控制装置控制,一种是复杂的控制器控制方式。两种方式的实现如下: (1)简单的机械式控制方式。其常用形式有浮标式、电极式等,这种控制形式的优点是结构简单,成本低廉。存在问题是精度不高,不能进行数值显示,另外很容易引起误动作,且只能单独控制,与计算机进行通信较难实现。 (2)复杂控制器控制方式。这种控制方式是通过安装在水泵出口管道上的压力传感器,把出口压力变成标准工业电信号的模拟信号,经过前置放大、多路切换、AD变换成数字信号传送到单片机,经单片机运算和给定参量的比较,进行PID运算,得出调节参量;经由DA变换给调压变频调速装置输入给定端,控制其输出电压变化,来调节
4、电机转速,以达到控制水位的目的。本设计利用单片机设计一个水位控制系统,要求选择合适的水位,当设定完水位后,系统根据水位情况控制电磁阀的开启和关断。1.2 系统设计总框图电机控制模块A/D转换模块按键与显示模块时间模块存储模块通信模块单片片机主控模块 图2-1 系统总体框图1.3 A/D转换模块设计方案TLC1543美国TI司生产的多通道、低价格的模数转换器。采用串行通信接口,具有输入通道多、性价比高、易于和单片机接口的特点,可广泛应用于各种数据采集系统 。 TLC1543为20脚DIP装的CMOS 10位开关电容逐次A/D逼近模数转换器,引脚排列如图1 所示。其中A0A10(19 、11、12
5、脚)为11 个模拟输入端,REF+(14脚,通常为VCC)和REF-(13脚,通常为地)为基准电压正负端,CS(15脚)为片选端,在CS端的一个下降沿变化将复位内部计数器并控制和使能ADDRESS、I/O CLOCK (18脚)和DATA OUT(16脚)。ADDRESS(17脚)为串行数据输入端,是一个1的串行地址用来选择下一个即将被转换的模拟输入或测试电压。DATA OUT 为A/D换结束3态串行输出端,它与微处理器或外围的串行口通信,可对数据长度和格式灵活编程。I/O CLOCK数据输入/输出提供同步时钟,系统时钟由片内产生。芯片内部有一个14通道多路选择器,可选择11个模拟输入通道或3
6、个内部自测电压中的任意一个进行测试。片内设有采样-保持电路,在转换结束时,EOC(19脚)输出端变高表明转换完成。内部转换器具有高速(10S转换时间),高精度(10分辨率,最大1LSB不可调整误差)和低噪声的特点。图1-1 引脚排列1.3.1 TLC1543工作时序 TLC1543工作时序如图1-2示,其工作过程分为两个周期:访问周期和采样周期。工作状态由CS使能或禁止,工作时CS必须置低电平。CS为高电平时,I/O CLOCK、ADDRESS被禁止,同时DATA OUT为高阻状态。当CPU使CS变低时,TLC1543开始数据转换,I/O CLOCK、ADDRESS使能,DATA OUT脱离高
7、阻状态。随后,CPU向ADDRESS提供4位通道地址,控制14个模拟通道选择器从11个外部模拟输入和3个内部自测电压中选通1 路送到采样保持电路。同时,I/O CLOCK输入时钟时序,CPU从DATA OUT 端接收前一次A/D转换结果。I/O CLOCK从CPU 接收10时钟长度的时钟序列。前4个时钟用4位地址从ADDRESS端装载地址寄存器,选择所需的模拟通道,后6个时钟对模拟输入的采样提供控制时序。模拟输入的采样起始于第4个I/O CLOCK下降沿,而采样一直持续6个I/O CLOCK周期,并一直保持到第10个I/O CLOCK下降沿。转换过程中,CS的下降沿使DATA OUT引脚脱离高
8、阻状态并起动一次I/O CLOCK工作过程。CS上升沿终止这个过程并在规定的延迟时间内使DATA OUT引脚返回到高阻状态,经过两个系统时钟周期后禁止I/O CLOCK和ADDRESS端。图1-2 工作时序1.3.2 软硬件设计要点 TLC1543三个控制输入端CS、I/O CLOCK、ADDRESS和一个数据输出端DATA OUT遵循串行外设接口SPI协议,要求微处理器具有SPI口。但大多数单片机均未内置SPI口(如目前国内广泛采用的MCS51和PIC列单片机),需通过软件模拟SPI协议以便和TLC1543接口。TLC 1543芯片的三个输入端和一个输出端与51 系列单片机的I/O口可直接连
9、接。软件设计中,应注意区分TLC1543的11个模拟输入通道和3个内部测试电压地址(后3个地址只用来测试你写的地址是不是正确的,真正使用时不用后三个地址)。附表为模拟通道和内部电压测试地址。程序软件编写应注意TLC1543通道地址必须为写入字节的高四位,而CPU读入的数据是芯片上次A/D转换完成的数据。系统中,显示输出的要求为压缩BCD码,而A/D转换输入的数据是8位16进制码,因此在实现显示之前需要编码的转换。对8位A/D转换器而言,其十六进制、相对满偏电压比率、相对电压幅值的关系对应如表1-1:表1-1 A/D转换幅值数据关系对照表十六进制二进制满刻度比率相对电压幅值Vref=2.5V高四
10、位低四位高四位电压低四位电压F111115/1615/2564.8000.320E111014/1614/2564.4800.280D110113/1613/2564.1600.260C110012/1612/2563.8400.240B101111/1611/2563.5200.220A101010/1610/2563.2000.200910019/169/2562.8800.180010008/168/2562.5600.160701117/167/2562.2400.140601106/166/2561.9200.120501015/165/2561.6000.100401004/164
11、/2561.2800.080300113/163/2560.9600.060200102/162/2560.6400.040100011/161/2560.3200.020000000/160/2560.0000.000 1.3.3 TLC1543的应用 TLC1543在一个通信电源数据采集系统中的实际应用。此例中的TLC1543主要用于完成8组-48V直流电源、2组220V交流电源和1组温度参数的采样。采样数据由89C52单片机通过RS232标准串口送给后台PC机进行处理。各单元的功能介绍如下:看门狗和E2PROM存储器:TLC1543中的X25045(IC4)是一种新型的看门狗和E2PRO
12、M存储芯片,它将电压监控、看门狗定时器和E2PROM三种功能组合在单个芯片之内。X25045为89C52提供上电复位,当程序紊乱或电压失常时启动内部的看门狗电路以强制单片机复位,使程序从头开始执行。X25045还内置512字节E2PROM存储单元,可随时保存各种重要数据,如A/D采样结果等,这使系统掉电后重要数据仍然不会丢失。串行显示驱动器PS7219 PS7219(IC2)是多功能8位LED 显示驱动芯片。接口采用三线SPI 方式,用户只需简单修改内部相关的控制字,便可以实现多位LED 显示。图3中的PS7219 主要用来显示设置参数,如显示通信速率参数等。PC机通信接口电路 MAX232
13、(IC3)为标准RS232接口转换芯片,主要完成TTL至RS232电平的转换,为单片机和PC机通信提供通道。在整个数据采集系统中,PC机除了处理各种采样数据外,还负责对前台单片机系统进行管理,如故障诊断,参数设置等等。参数设置的其中一项为系统通信速率设置,管理人员可通过PC机任意设置单片机和PC机的通信速率,其设置参数保存在X25045的E2PROM存储单元中,在下次设置之前,该参数不会被更改。本例为单个采集系统的应用实例,实际应用中往往存在多系统并存的情况,这时可将MAX232 更换为MAX485 接口芯片,采用485总线标准,通过一台PC 机可在几千米范围内管理数十台前端机。极性转换电路
14、鉴于目前国内采用的通信电源均为负电压,而TLC1543模拟通道输入只能为正电压,因此-48V 直流电压在送到A/D 转换器前除了要分压外,还需将负电压转换为正电压。图4 为一个简单的极性转换电路,仅增加两个电阻便可完成负电压到正电压的转换,省去了复杂的极性转换芯片。图4 中当输入电压为0V时,TLC1543 A0端电压为2.5V;当输入电压为-5V时,A0端电压为0V。通过电阻R1、R2的简单分压便完成了输入通道的负电压到正电压的极性转换。TLC1543与89C52接口程序 TLC1543与89C52接口程序应完全依照TLC1543的工作时序编写,主要由CONVETER 子程序组成。由于转换完
15、成的数据为10位,软件编写时将数据的高位字节存放在2EH单元中,低位字节存放在2FH单元中。其中R4、R3寄存器分别存放TLC1543的通道地址和数量;R1、R2寄存器存放A/D转换结果。本例程序中89C52晶振为11.0592MHz。2. AT89C52单片机的基本结构2.1 控制器控制器是单片机的指挥控制部件,控制器的主要任务是识别指令,并根据指令的性质控制单片机各功能部件,从而保证单片机各部分能自动而协调地工作。单片机执行指令是在控制器的控制下进行的。首先从程序存储器中读出指令,送指令寄存器保存,然后送至指令译码器进行译码,译码结果送定时控制逻辑电路,由定时控制逻辑产生各种定时信号和控制
16、信号,再送到单片机的各个部件去进行相应的操作。这就是执行一条指令的全过程,执行程序就是不断重复这一过程。控制器主要包括程序计数器、程序地址寄存器、指令寄存器IR、指令译码器、条件转移逻辑电路及时序控制逻辑电路。2.2存储器结构 MCS-51器件有单独的程序存储器和数据存储器。外部程序存储器和数据存储器都可以64K寻址。 如果程序存储器在EA引脚接地,程序读取只从外部存储器开始。 对于89C52,如果EA接VCC,程序先从内部存储器(地址为0000H1FFFFH)开始,接着从外部寻址,寻址范围为:2000HFFFFH。 数据存储器AT89C52有256字节RAM。高128字节与特殊功能寄存器重叠
17、。也就是说高128字节与特殊功能寄存器有相同的地址,而物理上是分开的。当一条指令访问高于7FH的地址时,寻址方式决定CPU访问高字节RAM还是特殊功能寄存器空间。直接寻址方式访问特殊功能寄存器(SFR)。2.3 并行I/O口MCS-51单片机共有4个双向的8位并行I/O端口(Port),分别记作P0-P3,共有32根口线,各口的每一位均由锁存器、输出驱动器和输入缓冲器所组成。实际上P0-P3已被归入特殊功能寄存器之列。这四个口除了按字节寻址以外,还可以按位寻址。由于它们在结构上有一些差异,故各口的性质和功能有一些差异。2.4 时钟电路与时序时钟电路用于产生MCS-51单片机工作时所必需的时钟信
18、号。MCS-51单片机本身就是一个复杂的同步时序电路,为保证同步工作方式的实现,MCS-51单片机应在唯一的时钟信号控制下,严格地按时序执行进行工作,而时序所研究的是指令执行中各个信号的关系。2.5晶振特性 AT89C52单片机有一个用于构成内部振荡器的反相放大器,XTAL1和XTAL2分别是放大器的输入、输出端。石英晶体和陶瓷谐振器都可以用来一起构成自激振荡器。从外部时钟远驱动器件的话,XTAL2可以不接,而从XTAL1接入。由于外部时钟信号经过二分频触发后作为外部时钟电路输入的,所以对外部时钟信号的占空比没有其它要求,最长低电平持续时间和最少高电平持续时间等还是要符合要求的。3.最小系统设
19、计AT89C52的结构特点及引脚特性: 为40 脚双列直插封装的8 位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。 各引脚特性:1.P0 口 P0 口是一组8 位漏极开路型双向I/O 口, 也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的 2.P1 口 P1 是一个带内部上拉电阻的8 位双向I/O 口, P1 的输出缓冲级可驱动(吸收或输出电流)4 个TTL
20、逻辑 3.P2 口 P2 是一个带有内部上拉电阻的8 位双向I/O 口,P2 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑 4.P3 口 P3 口是一组带有内部上拉电阻的8 位双向I/O 口。P3 口输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻 5.RST 复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。3.1 复位电路在复位引脚(9脚)持续出现24个振荡器脉冲周期(即2个机器周期)的高电平信号将使单片机复位。如图2-1所示电容C和电阻R构成了单片机上电自动复位电路。复位后,单片机从0000H单元开始执行程序,并初始化一些专用寄存器为复位状态值,受
21、影响的专用寄存器如表2-1所示。表2-1 复位寄存器状态表寄存器状态寄存器状态PC000HTC0N00HACC00HTL000HPSW00HTH000HSP07HTL100HDPTR0000HTH100HP0P3FFHSCON00HIPXXX00000HSBUF不确定IEOXX00000HPCON0XXX0000HTMOD00H3.2 控制引脚EA接法 EA/VPP(31脚)为内外程序存储器选择控制引脚,当EA为低电位时单片机从外部程序存储器取指令;当EA接高电平时单片机从内部程序存储器取指令。AT89S51单片机内部有4KB可反复擦写1000次以上的程序存储器,因此要把EA接+5V高电平,让
22、单片机运行内部的程序,这样就可以通过反复烧写来验证程序了。这就是AT89C52单片机最小化系统的连接,只要把编写好的程序烧写到单片机内部,并接上5V电源就可以正常运行了,在17脚接上的发光二极管可以用来验证系统是否正常。4.数字钟的外围电路设计4.1 晶振电路时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊的一拍一拍地工作。因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。常用的时钟电路有两种方式:一种是内部时钟方式,另一种为外部时钟方式。单片机内部具有一个高增益反相放大器,用于构成振荡器。通常在引脚XTALl和XTAL2跨接石英晶体和两个
23、补偿电容构成自激振荡器,我们选择11.0592mhz晶体。本文用的是内部时钟方式。电路设计如图4-1所示。图4-1 单片机时钟4.2复位电路 单片机小系统采用上电自动复位和手动按键复位两种方式实现系统的复位操作。上电复位要求接通电源后,自动实现复位操作。手动复位要求在电源接通的条件下,在单片机运行期间,用按钮开关操作使单片机复位。复位电路结构如图3所示。上电自动复位通过电容C3充电来实现。手动按键复位是通过按键将电阻R29与VCC接通来实现。上电自动复位是通过外部复位电路的电容充电来实现的。只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。图4-2 复位电路4.3显示电路 系统设置了5
24、个共阳极LED数码管LED1-LED2,单片机P0口提供段码信号,低电平有效,P0口输出端通过限流电阻R1R8与数码管的段码数据线相连,用来送出LED数码管的段码数据信号。图4-3 显示电路4.4 LED显示器LED显示器是由发光二极管显示字段组成的显示块,有7段和“米”字段之分。这种显示块有共阳极和共阴极两种。此外,显示块中还有一个圆点型发光二极管(在图中以dP表示)用于显示小数点。通过发光二极管亮、暗的不同组,可以显示多中数字、字母以及其他符号。LED显示块中的发光二极管共有两种连接方法:4.5共阳极接法发光二极管的阳极连在一起构成公共阳极。使用时公共阳极接5V,这样,阴极端输入低电平的段
25、的发光二极管被点亮,相应的段被显示;而输入高电平的段则不点亮。汇编语言:共阳极:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H4.6共阴极接法发光二极管的阴极连在一起构成公共阴极。使用时公共阴极接地,这样,阳极端输入高电平的段的发光二极管被点亮,相应的段被显示;而输入低电平的段则不点亮。下面是七段数码管的代码如下。共阴极:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH4.7 电源电路电源电路包括变压器、桥式整流器、电容和稳压器。通过变压器变压,使得220V电压变为12 V,在通过桥式整流,电容的滤波作用,稳压器
26、的稳压作用,可输出5V的稳定电压。如图4-4所示。图4-4 系统电源电路5相关控制电路5.1 按键电路按键电路如图3-8所示,按键的开关状态通过一定的电路转换为高、低电平状态。按键闭合过程在相应的I/O端口形成一个负脉冲。闭合和释放过程都要经过一定的过程才能达到稳定,这一过程是处于高、低电平之间的一种不稳定状态,称为抖动。抖动持续时间的常长短与开关的机械特性有关,一般在5-10ms之间。为了避免CPU多次处理按键的一次闭合,应采用措施消除抖动。本文采用的是独立式按键,直接用I/O口线构成单个按键电路,每个按键占用一条I/O口线,每个按键的工作状态不会产生互相影响。 图5-1 按键电路图5.2
27、定时工作方式方式0是13位计数结构的工作方式15,其计数器由TH0高8位和TL0的低五位构成。TL0的高3位弃之不用。当C/=0时,多中开关接通振荡脉冲的12分频输出,13位计数器以此进行计数,这就是所谓定时器工作方式。当C/=116时,多路开关接通计数引脚(T0),外部计数脉冲由引脚T0输入。当计数脉冲发生负跳变时,这就是所谓计数工作方式。不管是哪种工作方式,当TL0的低五位计数溢出时,向TH0进位,而全部13位计数溢出时,则向计数溢出标志位TF0进位。5.3中断子程序MCS-51系列单片机有5个中断源,中断分为2个中断优先级,即高优先级和低优先级,每个中断源的优先级都可以由软件来设定。中断
28、地址如表4-1所示。程序中的中断流程框图如图5-1所示。表5-1 中断地址表五个中断源入口地址外部中断0(/INT0)0003HT0溢出中断000BH外部中断1(/INT1)0013HT1溢出中断001BH串口中断0023H6. 软件调试问题及解决显示程序开始怎么调试就是不通,后来看了一位网友的文章写的是关于水位调试过程中应注意的事项,指出了A/D转换t中的一些错误,这才使我恍然大悟,原来读数据的时间要求是非常严格的。要求在命令字之后的第一个下降沿就要读数据,否则读出的数据就是错误的,也不能说完全错误,那就必须作必要的调整。下次一定要注意:别人的程序很可能有缺陷,能参考,但不能够完全照抄,数据
29、手册一定要细读。这告诉我,自己的汇编语言功夫还不够,具体地说差得好远。提醒自己要努力。一定要学会应用汇编。7. 结 论本设计主要介绍了单片机的功能、用途等,以及水位在日常生活中的具体应用给日常生活带来的方便。参 考 文 献1张毅刚,彭喜元,董继成.单片机原理及应用M.北京:高等教育出版社,2003.2李书旗,沈金荣.液位测量传感器系统的设计与实现J.计算机测量与控制,2009,17(11):2131-2133.3郑伟建,夏扬,夏晴.自抗扰控制器在液位控制中的研究J.计算机仿真,2009,26(10):190-194钟晓强.基于单片机实现的液位控制器设计J.现代电子技术,2009,32(2):5
30、1-53.5蔡黎.一种基于单片机的水位控制系统设计J.仪器仪表用户,2007,14(4):44-45.6陈霞,白小军.基于单片机的液位监控系统J.武汉理工大学学报,2007,29(3):3-5.7陈新昌,王万章,李祥付.单片机在水位控制中的应用J.中国科技信息,2006,(24):89-90,98苏晓龙,王香婷.基于RS-485总线的数据采集系统J.仪表技术与传感器,2007,(12).9张宝伟.基于Lab VIEW的液位监控系统D.哈尔滨:哈尔滨工业大学,2007.10张凤兰.液位测量与监控系统设计D.北京:北方工业大学,2010.11任开春,涂亚庆.20余种液位测量方法分析J.工业仪表与自
31、动化装置,2003,(5):12-16.12柳军,等.基于AVR单片机的液面测量监控系统的设计J.中国医疗设备,2009,24(12):27-313丁希顺.单片微型计算机液位测量系统设计J.安阳师范学院学报,2005(2):71-73.14老虎工作室编著.电路设计与制版:Protel 99SE入门与提高M.北京:人民邮电出版社,200源程序;水位稳定AD_CS BIT P1.6 ;AD片选AD_DOUT BIT P1.3 ;AD数据输出AD_DIN BIT P1.2 ;AD地址输入AD_CLK BIT P1.0 ;AD时钟AD_EOC BIT P3.2 ;AD转换完成AD_H EQU 34H
32、;AD通道地址RS_H EQU 35H ;AD结果高位RS_L EQU 36H ;AD结果地位DA_CLk BIT P1.0 ;DA时钟DA_DIN BIT P1.2 ;DA地址输入DA_CS BIT P1.7 ;DA片选 ORG 0000H LJMP START ORG 0030HSTART: NOP MOV R3,#09FH ;定义水位 MOV R4,#01H MOV AD_H,#70H ;选通道7 MOV RS_L,#00H MOV RS_H,#00H MOV 20H,#00H MOV 21H,#00H MOV 22H,#00H MOV 23H,#01H MOV 24H,#03H MOV
33、 R2,#00H ;调节电压 MOV R1,#00HW1: JB P3.4,W1 ;按键 CALL DELAY ;防止抖动 CALL DELAY JB P3.4,W1W2: CALL DOUT CALL DOUT CALL DISP CALL AD CALL PID LJMP W2PID: NOP ;水位比较 MOV A,R4 CJNE A,RS_H,M3 ;高水位对比 MOV A,R3 CJNE A,RS_L,M3 ;低水位对比 AJMP M5M3: JC M4 MOV R2,#02H MOV R1,#0E7H AJMP M5M4: MOV R2,#00H MOV R1,#00HM5: NO
34、P RETDISP: MOV A,20H MOVDPTR,#SGTB MOVCA,A+DPTR MOV P0,A CLRP2.6;允许数码管显示 CLRP2.0;允许第1位数码管显示 ACALLDELAY;显示延时一段时间 MOVP2,#0FFH;停止所有数码管显示选通,关闭所有显示 MOV A,21H MOVDPTR,#SGTB MOVCA,A+DPTR MOV P0,A CLRP2.6;允许数码管显示 CLRP2.1;允许第2位数码管显示 ACALLDELAY;显示延时一段时间 MOVP2,#0FFH;停止所有数码管显示选通,关闭所有显示 MOV A,22H MOVDPTR,#SGTB M
35、OVCA,A+DPTR MOV P0,A CLRP2.6;允许数码管显示 CLRP2.2;允许第3位数码管显示 ACALLDELAY;显示延时一段时间 MOVP2,#0FFH;停止所有数码管显示选通,关闭所有显示 MOV A,23H MOVDPTR,#SGTB MOVCA,A+DPTR MOV P0,A CLRP2.6;允许数码管显示 CLRP2.3;允许第4位数码管显示 ACALLDELAY;显示延时一段时间 MOVP2,#0FFH;停止所有数码管显示选通,关闭所有显示 MOV A,24H MOVDPTR,#SGTB1 MOVCA,A+DPTR MOV P0,A CLRP2.6;允许数码管显
36、示 CLRP2.4;允许第5位数码管显示 ACALLDELAY;显示延时一段时间 MOVP2,#0FFH;停止所有数码管显示选通,关闭所有显示 RET;* 8位共阳数码管字型表 *SGTB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90HDB88H,83H,0C6H,0A1H,86H,8EH,89H,0A3H,8CH,0C8HSgTB1: DB 24H,7DH,0E0H,70H,39H,32H,22H,7CH,20H,30H,28H,23H,0A6H,61H,0A2H,0AAH ;=串行数据输出DOUT: CLR DA_CLK CLR DA_DIN
37、CLR P1.4 ;tlc1543芯片端口清零 SETB DA_CS ;CS=1 NOP CLR DA_CS ;CS=0 ;输出R2的低2位,就是10位数据的高2位 MOV A,R2 ;转换电压 MOV C,ACC.1 MOV DA_DIN,C NOP SETB DA_CLk NOP CLR DA_CLk MOV C,ACC.0 MOV DA_DIN,C NOP SETB DA_CLk NOP CLR DA_CLk ;=输出R1 MOV A,R1 MOV B,#08HAD_02: RLC A MOV DA_DIN,C NOP SETB DA_CLk NOP CLR DA_CLk DJNZ B,
38、AD_02 ;=输出任意2位 MOV A,#00H MOV B,#02HAD_03: RLC A MOV DA_DIN,C NOP SETB DA_CLk NOP CLR DA_CLk DJNZ B,AD_03 NOP CLR DA_CS ;CS=1 RET;=AD转换子程序=AD: MOV AD_H,#70H CLR AD_CLk ;CLk引脚底 JNB AD_EOC,$ ;转换未完等待 MOV A,#0 MOV RS_H,A ; MOV RS_L,A ;= ;选中TLC143 SETB AD_CS ;CS=1 NOP CLR AD_CS ;CS=0 MOV R0,#2 ;取回转换结果高2位
39、 D9D8AD_21: MOV A,RS_H MOV C,AD_DOUT RLC A MOV RS_H,A MOV A,AD_H ;地址信号 RLC A MOV AD_DIN,C MOV AD_H,A SETB AD_CLk NOP NOP CPL AD_CLk DJNZ R0,AD_21 MOV R0,#2 ;取回转换结果D7 D6AD_22: MOV A,RS_L MOV C,AD_DOUT RLC A MOV RS_L,A MOV A,AD_H RLC A MOV AD_DIN,C MOV AD_H,A SETB AD_CLk NOP NOP CPL AD_CLk DJNZ R0,AD_22 MOV R0,#6 ;取回转换结果 D5 D4 D3 D2 D1 D0AD_3: MOV A,RS_L MOV C,AD_DOUT RLC A MOV RS_L,A SETB AD_CLk NOP