DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 180|回复: 0
打印 上一主题 下一主题

将AT89C52单片机用作多功能外围器件使用

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-27 14:38:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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×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信号线。该引脚在定时器工作于连续脉冲方式时,可输出通断比与频率可编程的连续脉冲;工作在计数器方式时,该引脚作为外部计数脉冲输入端输入计数脉冲。由于多功能接口接收指令的工作用软件进行,因此,图中的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

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-12-26 07:14 , 耗时 0.086356 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表