您的位置 首页 国产IC

将AT89C52用作多功能外围器材运用

摘要:介绍利用AT89C52单片机作为多功能可编程接口的方法。该接口具有1个键盘/显示接口,2个16位定时/计数器和1个全双工异步串行通信口。其模块化的设计,可以给用户使用带来许多方便。 关键词:多

摘要:介绍运用AT89C52单片机作为多功用可编程接口的办法。该接口具有1个键盘/显现接口,2个16位守时/计数器和1个全双工异步串行通讯口。其模块化的规划,能够给用户运用带来许多便利。 关键词:多功用接口 串行通讯 软件译码 AT89C52(简称89C52)的广泛运用,使单片机的价格大大下降。现在,89C52的商场零售价现已低于8255、8279、8253、8250等专用接口芯片中的任何一种;而89C52的功用实际上远远超越以上芯片。因而,如把89C52作为接口芯片运用,在经济上是合算的。在自己规划的体系中,将89C52规划为多功用可编程接口,其相关程序固化在片内的Flash ROM中。该芯片(以下简称多功用接口)具有如下功用:①有1个专用的键盘/显现接口;②有1个全双工异步串行通讯接口;③有2个16位守时/计数器。这样,1个89C52芯片,承当了3个专用接口芯片的作业;不只使本钱大大下降,并且优化了硬件结构和软件规划,给用户带来许多便利。 1 硬件结构 把89C52当作接口运用,接口本身有必要尽或许地少占用硬件资源,与主体系之间的衔接线也应尽或许少,这样才干少占主机引脚,把更多的资源留给体系。本规划中,主机与多功用接口之间选用串行通讯。主机与多功用接口之间有四根衔接线:CE、CLK、DAT、INTR。CE用于作片选信号输入端。此引脚为低电平时,主机能与多功用接口进行数据传送。CLK为时钟输入端,当主机向多功用接口发送指令时,此引脚电平上升表明数据有用。DAT为串行数据输入/输出端。INTR为多功用接口输出端。当多功用接口内的数据准备好时,由INTR向主机发低电平,告诉主机,数据已准备就绪,能够进行读操作。该信号可供主机查询,也可用作发向主机的中止请求信号。 89C52的P0、P1、P2口用作键盘/显现接口。用程序扫描的办法进行键盘输入和显现输出。P0口作为字段口,P1口作为键盘的列输进口,P2作为显现器的字位口以及键盘的行扫描输出口。因为显现器字位口电流较大,P2口需进行电流驱动。该多功用接口最多可衔接8个LED显现器和1个 8%26;#215;8链盘矩阵。其硬件原理如图1所示。 P3.2、P3.3、P3.6、P3.7别离用作CE、CLK、DAT和INTR信号;而P3.0、P3.1用作异步串行通讯数据线RXD和 TXD;P3.4、P3.5别离是OUT0/T0和OUT1/T1信号线。该引脚在守时器作业于接连脉冲办法时,可输出通断比与频率可编程的接连脉冲;作业在计数器办法时,该引脚作为外部计数脉冲输入端输入计数脉冲。 图1 2 通讯协议 完结多功用接口的关键是主机和多功用接口之间的通讯。在本规划中,选用主从办法进行通讯,一切的操作都由主机宣布操作指令。多功用接口在收到主机发来的操作指令后,对操作码进行软件译码。依据操作码的内容转入相应的作业通道,并从操作数部分获取所需求的数据。 多功用接口选用串行办法与主机通讯。串行数据从DAT引脚送入芯片,并由CLK端同步。当片选信号CE变低后,DAT引脚上的数据在CLK引脚的上升沿被写入多功用接口的寄存器中。 串行接口的时序如图2所示。 图2 因为多功用接口接纳指令的作业用软件进行,因而,图中的t1、t2、t3、t4、t5时刻较长,要求t1-t4时刻在10μs~1000μs。指令有两类:一类写指令,一类是读指令。写指令中不管是操作码仍是操作数,其数据传送方向均为从主机到多功用接口;而对读指令来讲,操作码部分的数据方向是从主机到多功用接口,而操作数部分的数据方向是从多功用接口到主机。 t5是读指令中操作码与操作数之间需求的时刻距离,t5应在30μs~1000μs的规模。在读操作时,CLK时钟的上升沿来届时,多功用接口将数据送到 DAT引脚上。 3 指令编码 多功用接口共有13条指令。指令长度为1字节、2字节、3字节和4字节不等。 (1)复位指令 机器码为00H。当多功用接口收到复位指令后,一切字符消隐,一切守时器清零,守时中止和串行中止封闭。其状况与体系上电复位的状况类似。 (2)显现数据指令 该指令向多功用接口的显现缓冲器中发送显现数据。这是一个2字节指令,其指令编码如下: D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 1 0 0 0 0 D7 D6 D5 D4 D3 D2 D1 D0 dip 0 0 0 d3 d2 d1 d0 其间dip为小数点操控位,a2、a1、a0为位地址,d3、d2、d1、d0为待显现的字符,其格局如表1、2所列。 (3)闪耀指令 该指令操控各个数码管的闪耀特点。d7~d0别离对应数码管1~8,1为闪耀,0为不闪耀。 D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 1 0 0 0 0 D7 D6 D5 D4 D3 D2 D1 D0 d7 d6 d5 d4 d3 d2 d1 d0 (4)循环左移指令 指令码为11H。该指令将一切显现从左向右移动1位。 表1 a2 a1 a0 显现位 0 0 0 1 0 0 1 2 0 1 0 3 0 1 1 4 1 0 0 5 1 0 1 6 1 1 0 7 1 1 1 8 表2 d3 d2 d1 d0 显现字符 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 0 0 0 8 1 0 0 1 9 1 0 1 0 – 1 0 1 1 H 1 1 0 0 L 1 1 0 1 P 1 1 1 0 E 1 1 1 1 空(5)循环右移指令 指令码为12H。该指令将一切显现从右向左移动1位。 (6)读键盘指令 指令为2字节指令,操作数为读到的键值。各键盘的键值如图1所示。该指令格局如下: D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 1 0 0 1 1 D7 D6 D5 D4 D3 D2 D1 D0 d7 d6 d5 d4 d3 d2 d1 d0 (7)接连脉冲输出指令 该指令对守时器进行编程。使OUT0/OUT1输出接连脉冲,脉冲的通断比和频率能够经过编程设定。其指令为4,格局如下: 第1字节 D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 1 0 0 1 1/0 第2字节 D7 D6 D5 D4 D3 D2 D1 D0 M3 M2 M1 M0 N3 N2 N1 N0 第3字节 D7 D6 D5 D4 D3 D2 D1 D0 f15 f14 f13 f12 f11 f10 f9 F8 第4字节 D7 D6 D5 D4 D3 D2 D1 D0 f7 f6 f5 f4 f3 f2 f1 f0 其间M:N是脉冲的通断比,M或N的设置规模是1~10。f15~f0是频率设置,其设置规模是1~9999Hz。选用BCD码设置。指令操作码中,D0 设置守时器0或守时器1作业。 (8)守时器办法指令 该指令为3字节指令。操作码为22H、23H,其间D0位确认对守时器0仍是守时器1进行操作。第2、第3字节为守时时刻。 (9)计数器办法指令 该指令为3字节指令。操作码为24H、25H,其间D0位确认对守时器0仍是守时器1进行操作。第2、第3字节为计数初值。 (10)读计数器指令 为3字节指令。操作码为26H、27H,第2、第3字节为从计数器读到的计数值。操作码的D0位确认对计数器0仍是计数器1进行操作。经过该指令读以16 位计数器的当时计数值。 (11)串行发送指令 该指令对异步串行通讯进行初始化,其指令格局如下: 第1字节 D7 D6 D5 D4 D3 D2 D1 D0 0 0 1 1 0 a2 a1 a0 表2字节 D7 D6 D5 D4 D3 D2 D1 D0 b1 b0 d5 d4 d3 d2 d1 d0 第3字节 D7 D6 D5 D4 D3 D2 D1 D0 d7 d6 d5 d4 d3 d2 d1 d0 第4字节 D7 D6 D5 D4 D3 D2 D1 D0 d7 d6 d5 d4 d3 d2 d1 d0 串行通讯选用批传送的办法进行。每条指令传送1个数据帧。指令中,第1、第2字节用来进行串行通讯初始化,第3字节今后是发送的各个数据。b1、b0用来确认奇校验、偶校验仍是不校验。第2字节的操作数d5、d4、d3、d2、d1、d0用来设定该帧数据的个数,最多1帧可发送64个字符。a2、a1、 a0设定串行通讯的波特率。其波特率如表3所列。 表3 a2 a1 a0 波特率/baud 0 0 0 110 0 0 1 150 0 1 0 300 0 1 1 600 1 0 0 1200 1 0 1 2400 1 1 0 4800 1 1 1 9600 (12)串行接纳指令 指令格局如下: 第1字节 D7 D6 D5 D4 D3 D2 D1 D0 0 0 1 1 1 a2 a1 a0 第2字节 D7 D6 D5 D4 D3 D2 D1 D0 b1 b0 d5 d4 d3 d2 d1 d0 第3字节 D7 D6 D5 D4 D3 D2 D1 D0 d7 d6 d5 d4 d3 d2 d1 d0 第4字节 D7 D6 D5 D4 D3 D2 D1 D0 d7 d6 d5 d4 d3 d2 d1 d0 指令编码与串行发送送似,第3字节之后为接纳到的数据。 (13)读状况指令 指令格局如下: D7 D6 D5 D4 D3 D2 D1 D0 0 1 0 0 0 0 0 0 D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 d4 d3 d2 d1 d0 在键盘输入、计数器回等或串行通讯中止时,多功用接口将向INTR宣布负脉冲,主机在呼应后应发读状况指令,查询状况标志,确认是哪个状况标志动作。其间 d0为键盘输入标志,d1为计数器0回零动作。d2为计数器1回零标志。d3为串行接纳完毕标志,d4为串行发送完毕标志。 4 多功用接口的软件规划 在主程序中进行显现扫描和键盘扫描,如有键盘输入,则找出键盘矩阵的键号。键号存入键值寄存器,并置位状况标志,一起宣布INTR负脉冲,告诉主机来取键值。 主机经过指令对多功用接口进行操作。主机首要要将CE置0。该下降沿经过P3.2向多功用接口宣布外部中止。在中止服务程序中,多功用接口进行取指和译码操作,并经过散转指令转入相应的处理通道。则中止回来。至此,一条指令的取指-译码-履行的进程才告完毕。程序回到主循环继续进行显现扫描和键盘扫描。 所谓取指操作实际上便是多功用接口与主机进行通讯的进程。因为采纳软件进行通讯,t1、t2、t3、t4、t5的宽度有必定的规模。 在接纳到主机的操作指令后,多功用接口与外设的串行通讯及有关守时器的操作选用中止办法进行。在中止完毕时,置位状况标志,并向主机发INTR负脉冲。该负脉冲可供主机查询,也可作为向主机宣布的中止请求信号。完结以上作业后,回来主程序。 89C52有三个守时器,其间T2在中串行通讯时刻来作为串行通讯的波特率发生器。这样T0和T1就能够出借给用户作守时器内。T2在波特率发生器办法时,可置位T2CON寄存器中的TCLK位或RCLK位。在TH2、TL2中装入计数初值,使T2从这个初值开端计数,但并不置位FT2。RCAR2H和 RCAP2L中的常数由软件设定后,T2的溢出率是严厉不变的,因而使串行通讯的波特率十分安稳。 5 使用实例 在本刊网络弥补版(http://www.dpj.com.cn)中,给出主机为AT89C52时的使用实例。程序的功用为等候键盘输入,然后将所读到的键盘码转换成十进制后送LED数码管显现。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/ic/292317.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部