基于I2C总线的数字电压表设计.doc_第1页
基于I2C总线的数字电压表设计.doc_第2页
基于I2C总线的数字电压表设计.doc_第3页
基于I2C总线的数字电压表设计.doc_第4页
基于I2C总线的数字电压表设计.doc_第5页
免费预览已结束,剩余17页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目 录1、 绪 论12、I2C总线的介绍12.1总线特征及原理12.1.1总线特征12.1.2 I2C总线上的数据传送12.2 I2C器件输入输出电特性技术说明22.3 I2C总线线路的电气规范和时序33、I2C总线接口通用器件的结构与工作原理43.1 四位LED驱动器 SAA1064T43.1.1、 概述43.1.2、引脚功能及封装形式43.2 E2PROM AT24C系列53.2.1、概述53.2.2 功能及管脚描述64、I2C总线应用系统硬件设计64.1 概述64.2硬件结构原理64.2.1、硬件整体电路的构思64.2.2、整个实现电路的电路原理图64.3各电路功能分析64.3.1、A/D转换器的基本原理ADC080464.3.2、电压档位调节电路94.3.3、显示电路104.4 硬件实物图104.5硬件调试与测试104.5.1、 调试104.5.2、测试115、 I2C总线的应用程序设计原理125.1、概述125.2、软件的整体构思125.3、应用程序设计实例125.3.1、模拟I2C总线的程序设计125.3.2、数字电压表程序设计135.3.3、源代码156、小结197、致谢19参考文献191基于I2C总线的数字电压表设计摘 要 文章介绍了I2C总线特点、性能、数据传输及在AT89C51上的I/O口线的实现方法。本文介绍的应用实例是应用单片机AT89C51和飞利蒲专用四位LED驱动芯片SAA1064T及串行E2PROM构成的一套数字终端显示和存储系统,并给出相应的代码。该设计可用于需要数码显示和存储的仪器仪表中. 关键词:I2C总线 单片机 串行E2PROM 四位LED驱动器 数字电压表1、 绪 论在现代电子系统中,有许多的IC需要进行相互之间以及与外界的通信。 近年来,随着电子技术和半导体技术的不断发展和进步,为了更好地协调IC器件之间的通信,提高硬件使用效率和简化电路设计,许多厂家相继提出了一些器件接口协议,比较著名的有Motorola公司的SPI串行协议,NS公司的Microwave总线协议和Philips公司的I2C总线协议。Philips开发用于内部IC控制的简单的双向两线串行总线I2C,协议因其规范的完整性、结构的独立性和使用的简单性而被广泛地使用,I2C总线支持任何一种IC制造工艺, 1980年Philips公司推出I2C总线,目前世界上采用的I2C总线有两个规范,它们分别是由荷兰飞利浦公司和日本索尼公司提出的。现在广泛采用的是飞利浦公司的I2C总线技术规范,I2C总线可以方便地构成外围器件扩展系统。I2C总线可以直接连接具有I2C总线接口的单片机,如8XC552和8XC652等;也可以挂接各种类型的外围器件,如存储器、时钟日历(clockcalendar)、A/D、D/A、I/O口、键盘、LCD显示驱动器等。采用I2C技术的单片机以及外围器件已广泛应用于家用电器、通讯设备及各类电子产品中,而且应用范围将会越来越广。2、I2C总线的介绍I2C总线就是IIC(Inter Integrated Circuit(内部集成线路)BUS)全称为芯片间总线。它用两条线(SDA和SCL)进行设备间双向的数据传送。通过上拉电阻将两条线拉升至5V。因此,对每个芯片说来,每条线既是输入线,又是输出线。I2C总线支持所有NMOS、CMOS、T2L工艺制造的器件。2.1 总体特征及原理 2.1.1总线特征I2C总线为同步传输总线,数据传送采用主从方式(主器件寻址从器件)。启动总线,产生时钟,传送数据及结束数据的传送。SDA和SCL都是双向I/O线,通过上拉电阻RP接正电源(见图1),上拉电阻与电源电压VDD、总线串接电阻有关,通常取5-10K欧姆。SDA/SCL总线上挂接的单片机或外围器件,其接口电路都应具有I2C总线接口,作为主控器的单片机,可以具有I2C总线接口,也可以不带I2C总线接口,但被控器必须带有I2C总线接口。总线上的器件数量仅受总线电容400pF(包括连线本身的电容与和它相连的引脚电容)的限制。I2C总线传输速率为100Kbit/s,在快速模式下可达400Kbit/s,在高速模式主机器件的信息可达3.4Mbit/s。2.1.2 I2C总线上的数据传送1、数据传送I2C总线上每传输一位数据都有一个时钟脉冲相对应。在时钟高电平期间,SDA上的数图1 I2C总线的器件连接据必须保持稳定的逻辑电平状态。只有在SCL为低电平期间时,才允许SDA线上电平状态变化。I2C总线对传送的字节数没有限制,只要求每传送一字节后,对方回答一个应答位。在发送时,首先发送的是数据的最高位。 I2C总线上与数据传输有关的信号有起始信号(S)、终止信号(P)、应答信号(A)、非应答信号(NA)以及总线数据位。图2 I2C总线上的数据传送当SCL为高电平时,SDA发生高到低跳变定义为开始信号(S)。当SCL为高电平时,SDA发生低到高跳变为结束信号(P)。这两个信号均由主器件产生的,如果连到总线上的器件具有I2C总线接口,则这两个信号很容易被检测到。若没有必须在一个时钟周期内对数据线至少进行两次采样才能检测到这些信号。2、数据传送格式 1I2C数据传送遵循图3所示的格式。在开始信号以后送出一个从器件地址,地址为7位,第8位为方向位(R/W),0表示发送(写),“1”表示请求数据(读)。一次数据传送总是由主器件产生的结束信号而终止的。若主器件想传送多个字节数据,可以产生另外一个开始信号和寻址另一个从器件,不需要先产生一个停止信号。图3 完整的数据传送过程的格式2.2 I2C器件输入输出电特性技术说明I2C总线允许在不同工艺制作和供电电源的器件之间通信。对于工作电源固定为+5V10%输入电平一定的器件,其逻辑电平规定如下: VILMAX =1.5V(最大输入低电平) VIHMIN =3V(最小输入高电平)对于工作电源范围比较大的器件(如CMOS),其逻辑电平规定如下:VILMAX =0.3VDD (最大输入低电平) VIHMIN =0.7 VDD (最小输入高电平)I2C器件的SDA和SCL引脚在VDDMAX 最大低电平输入电流为10A;在 0.9VDD 最大高电平输入电流为10A。I2C器件的SDA和SCL引脚最大电容为10PF.对于输入电平固定的器件可以分别使用适合自己的电源,上拉电阻必须和+5V10%的电源相连。对于输入电平与VDD 有关的器件必须有一个公共电源。当前二者混用时,后者必须用一个公共电源,并将上拉电阻接到该电源上,前者器件可分别使用适合自己的电源。另外,器件输入级的噪声容限有如下要求:低电平噪声容限为0.1VDD; 高电平噪声容限为0.2 VDD 为了抑制由于环境电磁干扰在SDA和SCL线上引起的过高的尖脉冲,需在器件引脚上串接电阻,一般该电阻阻值为300。2.3 I2C总线线路的电气规范和时序I2C总线上时钟在标准模式最小低电平周期为4.7S,在快速模式最小低电平周期为1.3S;在标准模式最小高电平周期为4S,在快速模式最小高电平周期为0.6S。主器件产生的总线时钟频率为0400KHZ。连到I2C总线上的所有器件必要性遵从这个传送频率上限(标准模式为100KHZ,在快速模式为400KHZ)。图4给出了定时的详细要求,表1给出有用缩写符号表示的说明。所有的定时基准是VILMAX 和VIHMIN 。2图4 I2C总线F/S模式器件的时序定义表1 F/S模式I2C总线器件SDA和SCL总线线路的特性参 数符号标准模式高速模式单位最小值最大值最小值最大值SCL时钟频率fSCCL01000400kHz在一个终止信号和起始信号之间总线必须空闲的时间tBUF4.71.3S起始信号保持时间(在这段时间过后可产生第一个时钟脉冲)tHD;STA4.00.6SSCL时钟信号低电平周期tLOW4.71.3SSCL时钟信号高电平周期tHIGH4.00.6S一个重复起始信号的建立时间tSU;STA4.70.6S数据保持时间:与CBUS兼容的主控器I2C总线器件tHD;DAT5.0000.9SS数据建立时间tSU;DAT250100nsSDA和SCL信号的上升时间tR10020+0.1Cb300nsSDA和SCL信号的下降时间tF30020+0.1Cb300ns终止信号的建立时间tSU;STO4.00.6S总线上每条线的负载电容Cb400400pF213、I2C总线接口通用器件的结构与工作原理下面以SAA1064T和AT24C01为例,介绍其结构及工作原理。 3.1 四位LED驱动器 SAA1064T3.1.1、 概述SAA1064是Philips公司生产的4位LED驱动器,为双极型电路,具有I2C接口。该芯片可静态驱动2位8段LED显示器或动态驱动4位8段LED显示器,通过多路开关可对两个2位显示器进行切换显示。可按ADR的输入电平大小将A1A0编程4个不同的从地址。内部的模式控制器可以控制LED的各个位,使其能够工作于静态模式、动态模式、熄灭模式及段测试模式。主要特性如下:n 电源电压 4.5V-15V,典型值为5V;n 所有输出口断开时,电源电流为9.5mA; n 一根模拟引脚地址端ADR,两位可编程地址位;n 输出端口的吸收电流可由软件控制,最大为21mA;3.1.2、引脚功能及封装形式SAA1064采用24脚DIP和SOT两种封装形式,图5所示为24脚DIP封装的引脚排列。各主要引脚的功能如下:ADR(1):地址输入线;CEXT(2):内部振荡器电容输入端,典型值为2.7nF;P8P1(310):段数据输出口1;P9P16(1522):段数据输出口2;MX1(11):多路选择开关输出1;MX2(14):多路选择开关输出2: VCC(13):电源;VEE(12):地; SDA(23):I2C总线串行数据线;SCL(24):I2C总线串行时钟线; 图5 SAA1064T引脚图数据字节高位对应于输出端P8或P16,低位对应于输出端P1或P9。为防止SDA、SCL引脚上出现过压脉冲,应接一个稳压管(5.5V)至地,即正常的线电压不应超过5.5V。1、传送格式主器件CPU通过I2C总线对SAA1064进行读或写,其I2C总线上的信息传送格式如图6所示从地址 状态字节A 读模式从地址 指令字节 控制字节数字1 数字2 数字3 数字4 B 写模式 图6 信息传送格式图中:S为启动信号;P为结束信号;A为响应位;X为任意值;A1A0(从地址)由ADR输入电位确定;SC SB SA为单元地址位;C6C0为控制位;PR为上电复位标志。2、SAA1064的从地址表2 从地址ADR接不同电压值所对应的从地址00(VEE)01(3/8 VCC)10(5/8 VCC)11(VCC)写时对应的从地址字节值70H72H74H76H读时对应的从地址字节值71H73H75H77H3、状态字节(上电复位) SAA1064的状态字节中只用1位:即上电复位标志位PR(SAA1064芯片的内部产生的),它能使内部各位清0而显示全暗。4、单元地址用SC、SB、SA形成1个指针以确定指令字节以后的数据应写入哪个寄存器,而其它的数据依次写入后继单元中,称为单元地址增量。单元地址指针范围为07(见表3)。 表3 单元地址分配SCSBSA子地址功能0000100110010100001020304控制寄存器数字位1数字位2数字位3数字位45、控制字节 静态显示,数字位1和2可以连续显示;动态显示,数字位1、3和2、4交替显示;C3=1 所有段导通以便段测试,其电流由C4、C5、C6所决定。表4 控制字节含义C0C1C2C3C4C5C60静态显示数字位1、3暗2、4暗/1动态显示数字位1、3亮2、4亮所有段导通IO=3mAIO=6mAIO=12mA其他引脚功能说明: 在SAA1064的引脚(2脚)上接一个定时电容到地可使内部多路转换的振荡器工作。在静态工作方式中,不需要振荡器工作,因此,该引脚可接或浮空。 SAA1064的多路输出端MX1和MX2在动态显示方式中交替导通,它们均由内部时钟的分频信号驱动。在静态方式中,MX1总是导通。如果超过了电路的总功耗,应当用晶体管把11脚和14脚相连在一起。3.2 E2PROM AT24C系列3.2.1、概述 在单片机系统中,存储器起着非常重要的作用。常用的有基于并行总线接口的存储器,但近年来,随着半导体技术的发展,出现了不少串行总线接口的存储器,基于I2C总线的存储器(即24系列)就是其中用得较广的一种,其特点如下:1、 数据是串行出入;2、 芯片掉电后数据不会丢失,并可以反复擦写,在正常工作条件下数据可以保存几十年甚至上百年;3、 与单片机的接口仅占用两个I/O口,使用此种芯片可以最大限度地节省单片机资源;、自身功耗很低(A级),价格便宜。AT24C系列是由美国ATMEL公司生产的串行E2PROM芯片,其容量不等。AT24C01/02/04/08/16 是一个1K/2K/4K/8K/16K 位串行CMOS E2PROM。容量分别为128*8/256*8/512*8/1024*8/2048*8。AT24C01/02/04/08/16的页写字节数分别为4/8/16/16/16。3.2.2 功能及管脚描述AT24C01 支持I2C 总线数据传送协议,数据传送是由主器件控制的,但是由主器件控制数据传送(发送或接收)的模式通过器件地址输入端A0 A1 和A2实现。SCL串行时钟输入管脚:用于产生器件所有数据发送或接收的时钟。SDA串行数据/地址(双向):用于器件所有数据的发送或接收。A0 A1 A2 器件地址输入端(1,2,3):对A0 A1 A2 可进行编址,地址可从000到111。 WP 写保护(7): WP为高电平时,被写保护, WP 管脚连接到 Vss 或悬空允许器件进行正常的读/写操作。图6 AT24C01管脚图4、I2C总线应用系统硬件设计 4.1 概述本设计是通过设计一个数字电压表来研究I2C总线的实际应用。在电压表的设计中,用了两块具有I2C总线接口的芯片:四位LED驱动器SAA1064T和用于存储数据的E2PROM AT24C01。主控制器件为89C51,由于89C51没有内置I2C总线接口,因此用软件的方法模拟I2C总线的传输来完成整体电路的数据传输。4.2硬件结构原理4.2.1、硬件整体电路的构思用ADC0804来采集要测量的电压信号,进行A/D转换,把转换完的数据经过89C51处理,把数据经软件模拟I2C总线传输协议传送给LED驱动SAA1064T,由SAA1064T驱动LED发光,即显示出要测量电压,同时亦可以把电压值存储在AT24C01中,这样可以在没有进行测量时查看测量的数据,一个8档位选择开关,可以选择要测量电压的量程。硬件电路原理框图:图7 电路原理框图4.2.2、 整个实现电路的电路原理图 如图84.3 各电路功能分析4.3.1、 A/D转换器的基本原理ADC08041. 概述A/D转换器即模拟/数字转换器(Analog to Digital Converter 简称ADC),是将输入的模拟信号转换成为数字信号。信号输入端的信号可以是传感器(Sensor)或转换器(Transducer)的输出,而ADC输出的数字信号可以提供给微处理器,以便广泛地应用。本文所介绍的ADC转换应用是做为数字电压表的数据采集。2 .ADC0804的规格及引脚图8位COMS逐次逼近型的A/D转换器;三态锁定输出;存取时间:135s;分辨率:8位;转换时间:100s;总误差:1LSB; 工作温度:ADC0804LCN0+70;ADC0804LCD -40+85; 引脚图及说明如图所示: 图9 ADC0804引脚图 /CS:芯片选择信号。/RD:外部读取转换结果的控制脚输出信号。/RD为HIGH时,DB0DB7处于高阻抗; /RD为LOW时,数字数据才会输出。/WR:用来启动转换的控制输入,相当于ADC的转换开始(/CS=0时),当/WR由HIGH变为LOW时,转换器被清除;当/WR回到HIGH时,转换正式开始。CLK IN,CLK R:时钟输入或接振荡元件(R,C),频率约限制在100KHZ1460KHZ如果使用RC电路则其振荡频率为1/(1.1RC)。/INTR:中断请求信号输出,低电平动作。VIN(+)、VIN():差动模拟电压输入。输入单端正电压时,VIN()接地;而差动输入时,直接加入VIN(+)、VIN()。AGND,DGND:模拟信号以及数字信号的接地。VREF:辅助参考电压。DB0DB7:8位的数字输出。VCC:电源供应以及作为电路的参考电压。3、 ADC0804与89C51连接(见图10)通过调节电位器来调节参考电压,使其稳定在2.56V 图10 ADC0804与89C51连接图 图8 数字电压表原理电路图4、在电压表中A/D转换原理把ADC0804转换出来的数据转换成可显示的十进制数据方法如下:以5伏档为例,若测试端输入为4伏,实际进入ADC0804为4V(1) 经A/D转换后为11001000B=C8H(查对照表)。(2) C8经十进制转换为0200,则令R4=20,R5=00(3) 再将此02002=0400,令R4=40,R5=00。(4) 将小数点设在D3上,并将其分别显示为:0 4 0 0 D4 D3 D2 D1(5) 若档位不同,只要移动小数点的位置就可以了。表5 ADC0804电压输入与数字输出关系十六进制二进制与满刻度的比率相对电压值VREF=2.560伏高4位字节低4位字节高4位字节电压低4位字节电压F111115/1615/2564.8000.300E111014/1614/2564.4800.28D110113/1613/2564.1600.260C110012/1612/2563.8400.240B101111/1611/2563.5200.220A101010/1610/2563.2000.200910019/169/2562.8800.180810008/168/2562.5600.160701117/167/2562.4000.140601106/166/2561.9200.120501015/165/2561.6000.100401004/164/2561.2800.080300113/163/2560.9600.060200102/162/2560.6400.040100011/161/2560.3200.020000000000按照上面转化规则即可实现数字电压表的数据采集、A/D转换、十进制转化。4.3.2、 电压档位调节电路直流500mV档:由LM324作为运放,对输入电压进行放大,放大10倍,使输入到ADC0804的电压范围在0-5V之间。直流50V,500V档:输入电压经由分压1/10、1/100后送入ADC0804。交流档:交流电压输入进行分压,然后由整流桥进行全波整流,由三个电容滤波,输出的直流电压再输入ADC0804。电压档位调节器有双层,上层作为电压输入,下层作为单片机判别档位。图11 电压档位调节电路4.3.3、显示电路本电路采用动态模式显示(见图12)由程序控制SAA1064使MX1、MX2连接的两个三极管交替导通。图12显示电路4.4 硬件实物图 如图134.5硬件调试与测试把写完的软件烧写到89C51芯片中,电路中所要用到的各芯片对号入座,插到电路板相应的插槽中即可进行调试与测试。4.5.1、 调试打开电源开关,用另一个数字万用表做校准工作,先对ADC0804的参考电压进行校准,调节电位器,使参考电压稳定在2.56V,然后对每个档位进行校准,也是调节各电位器,使显示值与另一个数字电压表的显示值一致,按下按键2,看LED亮度是否变化;旋转电压档位,看LED的小数点亮的位置是否会变化。由于所使用的A/D转换器误差为1LSB,在此电路中的显示的精度为0.02V,因此,测量时最后一位会出现2的跳变。4.5.2、测试打开电源开关时,四个LED都显示为“0”,把档位调节器调到待测档,在此档状态下,按下按键2,可以看到右边第1个LED显示数字,其数字即为LED 的亮度等级,同时所有的图13数字电压表的硬件实物图LED的亮度会随着数字不同呈不同的亮度。把档位调节到5V档,此时电路板上的两根测量线可以接上待测电压,进行电压测试,在测试状态下,按下按键1,可进行数据储存,如:测试电压显示为1.74V时,按下按键1,即把1.74这个数据存储到AT24C01中,当把档位再调到待测档,按一下按键1,即可在次显示1.74这个值,这说明存储数据成功。5、 I2C总线的应用程序设计原理5.1、概述 下面是用软件实现I2C总线控制数字电压表的显示和存储。用单片机的两个I/O口来模拟SDA,SCL两条传输线上的传输时序,把从A/D转换完的数据传送到指定的从器件,实现单片机对整个系统的控制。5.2、软件的整体构思程序中用两个中断,一个用来控制SAA1064T的输出电流以控制LED显示的亮度;另一个中断用来控制E2PROM的读写,在没有测试电压时此中断的产生进行读操作,在测电压时中断产生进行写操作(即进行电压值的存储)。模拟I2C总线的子程序设置了器件的入口地址,这样可以在使用各器件时进行调用。5.3、应用程序设计实例5.3.1、 模拟I2C总线的程序设计以AT89C51作为I2C总线的主控制器件,进行I2C总线的模拟传输。程序是严格按照I2C传输协议要求来编写的,主要控制SCL和SDA两条信号线的时序来完成寻址和数据的传输。本设计的要求是对采集的电压进行显示,因此,传输速度要求不是很高,在程序中采用标准模式编写即参照表1参数值进行时序设计。模拟I2C总线的设计程序可以写成一个软件包的形式,只要在主程序中加上文件名,就可以进行直接调用。I2C总线的初始化及通用读、写子程序:根据表1的参数值写I2C总线启动子程序、数据传输(读、写)子程序,时序的调整是用NOP指令,由于CPU的电路中所用的晶振为12MHZ,则可以用4个单片机周期(1S)指令“NOP”模拟SCL时钟高电平的宽度。开始SDA置0SDA置1SCL置1创建延时4S创建延时4.7S结束SDA置0SCL置0开始SDA置1SDA置0SCL置1创建延时4us创建延时4.7SSCL置0,钳住总线,准备发送数据结束图14启动I2C总线(START)子程序流程图 图15结束总线(STOP)子程序流程图开始启动I2C总线送被控器地址有应答?发送一个字节数据送单元地址有应答?有应答?数据发送完?结束发送停止信号延时10ms等待写完NYY结束开始SDA置1使C=SDASCL置1ACK置0SCL置0ACK置1C=0?NNNNYYY 图16 应答信号(MACK)子程序流程图 图17写N字节数据子程序流程图5.3.2、数字电压表程序设计 本程序设计是以AT89C51为中心,读取前端A/D转换的数据,进行数据十进制调整,然后进行显示,必要时进行数据存储。硬件中设计了两个按键,在程序中对应两个中断,其分别是用来控制LED亮度和AT24C01的读写。P2.0-P2.3作为电压档位识别和切换测量与待测量状态。当P2.0=0时,待测状态,此时,不能进行电压测量,只能响应外部两个中断。响应中断0时,LED亮度变化,同时显示亮度等级;响应中断1,读取24C01数据并进行显示。P2.1=0时,小数点在最低位(即第4个LED的小数点亮)当P2.2=0时,第3个LED小数点亮,当P2.3=0时,第2个LED小数点亮。程序初始化,开机显示为0000。主程序流程图见图19。各个调用子程序流程图:中断0:此中断为设置电流输出等级(即LED的亮度调节),主要是控制SAA1064中的状态字节寄存器00H的值,其取值范围为:07H-77H,因此,有八级亮度显示。中断1:此中断控制24C01的读写,当P2.0=0时,进行读24C01,当P2.0=1时写24C01。程序初始化开始P2.0=0?A/D转换调用十进制调整子程序调用显示子程序调用延时子程序P2.0=0?NYN开始启动I2C总线送被控器地址有应答?送单元地址有应答?发送重复启动信号送被控器地址并置位第0位进入读模式有应答?接收一个字节数据数据发送完?发送非应答信号发送停止信号结束YNNYYNYNY图18 读N字节数据子程序流程图 图19 主程序流程图NY写24C01数据中断入口取26H的值查数字表调用显示子程序26H值增1中断返回(26)8?(26)=0中断入口P2.0=0?读24C01数据调用显示子程序中断返回NY Y 图20 中断0子程序流程图图21中断1子程序流程图5.3.3、源代码源程序:I2CBUS.ASM SCL BIT P3.5 SDA BIT P3.4 SLA DATA 50H SUBA DATA 51H MTD EQU 30H MRD EQU 40HACK BIT 10H NUNDATA DATA 52H AT24C01 EQU 0A0H SAA1064 EQU 70H ;*主程序* ORG 0000H SJMP MAIN ORG 03H LJMP INTR0 ORG 13H LJMP INTR1 ORG 0080HMAIN: MOV R4,#0FFH DJNZ R4,$ MOV IE,#10000101B MOV IP,#00000001B MOV TCON,#00000101B MOV SP,#70H MOV 25H,#00H MOV 26H,#00H MOV 27H,#00H MOV 28H,#00H MOV SLA ,#SAA1064 MOV SUBA,#00H MOV NUNDATA,#05H MOV MTD,#37H MOV MTD+1,#3FH MOV MTD+2,#3FH MOV MTD+3,#3FH MOV MTD+4,#3FH LCALL WRITING JNB P2.0,$ SADC:MOVX R0,A WAIT:JNB P2.7,ADC JMP WAITADC: MOVX A,R0 MOV 20H,#00H MOV C,ACC.7 MOV 00H,C MOV C,ACC.6 MOV 01H,C MOV C,ACC.5 MOV 02H,C MOV C,ACC.4 MOV 03H,C MOV C,ACC.3 MOV 04H,C MOV C,ACC.2 MOV 05H,C MOV C,ACC.1 MOV 06H,C MOV C,ACC.0 MOV 07H,C MOV A,20H LCALL CHAN LCALL DISP LOP11: MOV 22H,#10 LOP01: LCALL DELAY DJNZ 22H,LOP01 JNB P2.0,$ JMP SADC;*数制转换子程序*CHAN:CLR C MOV R5,#00H MOV R4,#00H MOV 21H,#08HNEXT:RLC A MOV R2,A MOV A,R5 ADDC A,R5 DA A MOV R5,A MOV A,R4 ADDC A,R4 DA A MOV R4,A MOV A,R2 DJNZ 21H,NEXTQ2: MOV A,R5 ADD A,R5 DA A MOV R5,A MOV A,R4 ADDC A,R4 DA A MOV R4,A RET;*显示子程序* DISP:MOV A,R5 ANL A,#0FH MOV DPTR,#TABLE MOVC A,A+DPTRJB P2.1,AA0 ORL A,#80HAA0: MOV MTD+1,A MOV 15H,A MOV A,R5 ANL A,#0F0H SWAP A MOVC A,A+DPTR JB P2.3,AA1 ORL A,#80H AA1:MOV MTD+2,A MOV 16H,A MOV A,R4 ANL A,#0FH MOVC A,A+DPTR JB P2.2,AA2 ORL A,#80H AA2:MOV MTD+3,A MOV 17H,A MOV SLA ,#SAA1064 MOV SUBA,#00H MOV NUNDATA,#05H MOV MTD,28H MOV MTD+4,#3EH LCALL WRITING CLR A RET;*中断0* INTR0:PUSH ACC PUSH PSW MOV A,26H CJNE A,#08H,PPP0 MOV 26H,#00H MOV A,26H PPP0:MOV DPTR,#TABLE MOVC A,A+DPTR MOV MTD+1,A MOV A,26H SWAP A MOV MTD,#07H ADD A,MTD MOV 28H,A MOV MTD,A MOV SLA ,#SAA1064 MOV SUBA,#00H MOV NUNDATA,#05H LCALL WRITING INC 26H POP PSW POP ACC RETI;*中断1*INTR1:PUSH ACC PUSH PSW JB P2.0,MMM0 MOV SLA,#AT24C01 MOV NUNDATA,#03H MOV SUBA,27H LCALL READING LCALL DELAY INC 27H INC 27H INC 27H MOV SLA ,#SAA1064 MOV SUBA,#00H MOV NUNDATA,#05H MOV MTD,#37H MOV MTD+4,MRD MOV MTD+3,MRD+1 MOV MTD+2,MRD+2 LCALL WRITING SJMP MMM1MMM0: MOV SLA,#AT24C01 MOV NUNDATA,#03H MOV MTD,15H MOV MTD+1,16H MOV MTD+2,17H MOV SUBA,25H LCALL WRITING LCALL DELAY INC 25H INC 25H INC 25H MMM1:POP PSW POP ACC RETI;*TABLE:DB 3FH,06H,5BH,4FH DB 66H, 6DH,7DH,07H DB 7FH,6FH,77H,7CH DB 39H,5EH,79H,73HDELAY:MOV R6,#150 D1: MOV R

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论