我接触单片机有些年头了,对CPLD有些了解,但说来惭愧,从未在设计中使用过。
曾经有一次面试,有位老工程师,就问我一些问题,其中就有CPLD,我实话实说没有用过,他就问我为什么不用;我答复他说,可能是设计的东西比较简单,在设计时用不着;他说你端口不够怎么办,我回答说可以扩展。
下面我就以51为例,介绍他的几个常用的外部芯片。
用单片机设计电路,无非就是输入,输出和界面显示。本文以按键式和光耦隔离输入.继电器和LED为输出,显示界面为数码管,外部为ADC0809,一一进行介绍。
设计指标:
按键输入 8只 七段数码管 5只
光耦隔离输入 8只 继电器输出 8只
LED灯指示 16只
按键和光耦隔离输入.数码管显示和ADC0809共用P0端口,继电器和LED显示灯控制采用P1端口,P2端口作为其他一些外设的控制输出和扩展芯片的选通,P3作为复用和选通端口。这样便可以满足设计的需要。
外围芯片统计及分配:
按键输入 74HC244 1只 光耦隔离输入 74HC244 1只
数码管 CD4511 4只 74HC273 1只
继电器输出 74HC273 1只 LED指示 74HC273 2只
ADC0809 1只 74HC373 1只 74HC02 1只
74HC14 1只
74HC244为八同相三态缓冲器/线驱动器,内部框图和真值表如下:
典型运用原理图如下:
由真值表,看出当使能端1,19脚为低电平时,输出与输入同相,当使能端为高电平时,输出呈高阻状态。[page]
74HC273为8D触发器,内部框图和真值表如下:
典型运用原理图如下:
有真值表看出,273在1脚为低时,输出全部为0.图中R3.C5就是为了利用这个功能实现上电后清零,避免误操作;当1脚(CLR)为高时,11脚(CLK)为上升沿时,输出与输入相同。
CD4511是一个用于驱动共阴极 LED (数码管)显示器的 BCD 码—七段码译码器,特点:具有BCD转换、消隐和锁存控制、七段译码及驱动功能的CMOS电路能提供较大的拉电流。可直接驱动LED。
内部框图和真值表:
典型运用原理图如下:
CD4511显示方式为静态显示,与动态显示相比,静态显示要亮很多,但使用的资源也较多些;动态显示是利用人眼的余辉效应,通过循环扫描数码管来实现。也就是说在同一时刻只有一个数码管点亮,由于扫描速度很快,所以人眼是分辨不出的,这种方法在LED显示屏上运用很多的。
其他的芯片基本同理, 由于篇幅有限,不一一介绍
整机电路图大致如下:
关键字:51单片机 外部接口扩展 74HC273
引用地址:
51单片机的外部接口扩展
推荐阅读最新更新时间:2024-03-16 13:33
基于AT89C51单片机设计的简易智能机器人
引言 随着微电子技术的不断发展,微处理器芯片的集成程度越来越高,单片机已可以在一块芯片上同时集成CPU、存储器、定时器/计数器、并行和串行接口、看门狗、前置放大器、A/D转换器、D/A转换器等多种电路,这就很容易将计算机技术与测量控制技术结合,组成智能化测量控制系统。这种技术促使机器人技术也有了突飞猛进的发展,目前人们已经完全可以设计并制造出具有某些特殊功能的简易智能机器人。 1 设计思想与总体方案 1.1 简易智能机器人的设计思想 本机器人能在任意区域内沿引导线行走,自动绕障,在有光源引导的条件下能沿光源行走。同时,能检测埋在地下的金属片,发出声光指示信息,并能实时存储、显示检测到的断点数目以及各断点至起跑线间的距离,
[单片机]
51单片机学习:ADC模数转换实验--光敏电阻AD采集
实验名称:ADC模数转换实验--光敏电阻AD采集 接线说明: 实验现象:下载程序后,数码管上显示AD模块采集光敏电阻的AD值 注意事项: ***************************************************************************************/ #include public.h #include smg.h #include xpt2046.h /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数
[单片机]
51单片机:定时器
定时器:单条指令时间(us) = 1/单片机频率*单条指令时钟周期 TH0和TL0共16位,最多只能表示65535,所以要设定一个Base值,再利用循环多计数几次 比如0.002s:0.02 = (1/11.0592M * 12)*指令个数,指令个数 = 0.02(1/11.0592M * 12) = 0.018432 因为频率用的是M,所以结果0.018432*1000000 = 18432 使用16位寄存器的情况下,TH0和TL初始值:65536 - 18432 = 47104 = 0xB8 00 编写定时器延时函数: #include sbit LED = P0^0; void Delay(un
[单片机]
51单片机串口的问题
想问一下:单片机串口在接收的时候是怎么接收的?如上位机一次发送一个字符串11223344,通过串口助手下发给单片机。用下面的程序 /***********************************************************/ /* 串口中断程序 */ /********************************************************/ void UART_SER () interrupt 4 { uchar Temp; // 定义临时变量 if(RI) // 判断是接收中断产生 { RI=0; // 标志位清零 Temp=SBUF; // 读入缓冲区的值 P1=Temp;
[单片机]
51单片机 漩涡流水点阵
#include reg52.h typedef unsigned char uchar; typedef unsigned int uint; typedef unsigned long ulong; sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; uchar image = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; uchar T0RH, T0RL;
[单片机]
51单片机按键控制数码管0~9
前面为大家介绍的点亮LED灯、数码管、按键只用到了51单片机的IO资源,我们要是仅仅用单片机点灯、操作数码管,那可真是大才小用了。这些都只是51单片机资源的冰山一角,51单片机还有好多的功能,我后面将为大家一一介绍。今天为大家介绍单片机一个重要的外设——中断。 中断 没接触过单片机的朋友听到这个词肯定很陌生,大家对打断这个词应该不陌生吧,中断字面意思可以理解为中途被打断。大家可以思考一下,什么的中途被什么给打断了呢?想明白了这个问题就说明理解中断了。下面看看百度的解释: 中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情 况的程序,处理完毕后又返回原被暂停的程序继续运行。
[单片机]
基于51单片机的 汽车速度时间表的毕业设计
一、 前 言 1.1 汽车速度时间表原理 以AT89C51为核心,通过光电传感器来检测汽画的运转情况进而实现对自行车的速度的计算,存储,最后用6位的LED能直观的将速度显示给用户,并且在速度高于一定的值时可自动向用户报警,从而达到智能速度里程表。 1.2 单片机最小系统 1 单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。 对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路。下面给出一个51单片机的最小系统电路图(图1): 图11 2 详细
[单片机]
51单片机实现独立按键控制LED灯
3-1独立按键控制LED亮灭 本段代码主要使用了if...else...语句实现按下按下灯亮,松开按键时灯灭 #include REGX51.H void main() { while(1) { if(P3_1==0&&P3_0==0) { P2_0=0; } else { P2_0=1; } } } 3-2独立按键控制LED状态 首先使用较为灵活的延时函数生成代码,进行修改后如下 void Delay(unsigned int xms) { unsigned char i, j; while(xms) { i = 2; j = 2
[单片机]