最近碰到了需要扩展IO口的情况了,正在想办法从lcd1602身上挤出几个IO口,另一种可行的方法是添加专用IC,google之发现可以有更好的方法,网上流传经典IO接按键法,可以用5个IO口实现5X5矩阵键盘.参考这里:
我参照着实验了一番,并用protues仿真看看;用上面的例子,如图:
原理还是采用的是查询的方法进行扫描的,请看其描述:
用3个IO口作行扫描,2个IO作列检测(为方便描述,我们约定:设置某一IO口输出为“0”――称其 为“扫某IO口”)。用行线输出扫键码,列线检测是否有按键的查询方法进行扫键。扫键流程:在行线依次输出011,101,110扫键值,行线每输出一个 扫键值,列线检测一次。当列线检测到有按键时,结合输出的扫键值可以判断相应的按键。
仿真的时候用atmel89c51单片机,选取P1口的0-4,就是不通过,当列作为输入状态(为1时),某IO置0时,接通交叉的按钮,列却没有变化,依旧为高电平.什么原因呢?百思不得其解,用一个小实验,将按钮接行的一端直接接到地,则列状态改变,那么也就是这个上拉电阻的问题咯, 突然想到,P1口内是已经内置了上拉电阻的,能够实际输出高电平,那么再接一个上拉电阻就是白搭了,于是去掉上拉电阻部分,功能正常.为再次验证,将端口接到P0口的0-4,电路依旧按照上图所示,功能正常,验证正确.
经典接按钮一文中并没有提及是在什么单片机中实现的,只是提供了一个原理,实际当中需要注意IO口的上拉电阻问题,不过这个原理确实是蛮经典的,设计不错.
关键字:51单片机 STC89C52RC IO扩展
引用地址:
51单片机(STC89C52RC) IO扩展实验
推荐阅读最新更新时间:2024-03-16 15:32
基于AT89C51单片机控制LED显示屏的电路设计
LED显示屏广泛应用于工矿企业、学校、商场、店铺、公共场所等进行图文显示,广告宣传,信息发布。本文设计一种由4个16×16点阵LED模块组成的显示屏,由单片机作控制器,平滑移动显示任意多个文字或图形符号,本电路可级联扩展实现由任意多个16×16点阵LED模块组成的显示屏。 1 电路设计 控制电路由AT89C51单片机作控制器,显示屏由4个16×16点阵LED模块组成,每个16×16点阵LED模块由4个8×8点阵LED模块组成,用户可根据需要扩展增加任意多个16×16点阵LED模块。8×8点阵LED模块结构如图1所示,共8行8列,每个发光二极管放置在行线和列线的交叉点上,共64个发光二极管。当某一列为高电平,某一行为低电平时,则
[单片机]
51单片机四大误区怎么破?
51指MCS-51系列单片机, CICS 指令集。由Intel公司开发,其结构增加了如乘(MUL)、除(DIV)、减(SUBB)、比较(CMP)、16位数据指针、布尔代数运算等指令,以及串行通信能力和5个中断源,内有128个RAM单元及4K的ROM。其代表型号是ATMEL公司的A系列,它广泛应用于工业之中。目前国内的 51单片机 市场主要为国产的产品STC系列其号称,稳定与廉价的。下面就随嵌入式小编一起来了解一下相关内容吧。 学习 51单片机 的误区 误区1: 51单片机 是学习的基础 “51单片机是学习的基础”这句话本身并没有错。在我读本科的时候,当时它无疑是学习的基础——毕竟那时没有更高级的单片
[嵌入式]
51单片机驱动16*16点阵显示生日快乐程序
自己亲手做的一个点阵屏 仿真+实物, 送给女朋友的生日礼物 单片机+液晶显示 带仿真文件 妞都狠喜欢这个了,显示生日快乐4个字然后还有心型,还有i love you,全部源码和仿真文件的下载地址是:http://www.51hei.com/bbs/dpj-18851-1.html 下面是部分源码预览: #include at89x51.h #include DS1302.h #define din P3_2 #define load P3_3 #define clk P3_4 #define uchar unsigned char #define uint unsigned int unsigned char code
[单片机]
STC89C52RC单片机内部系统结构及功能详解
电源 我们在学习过程中,很多指标都是直接用的概念指标,比如我们说 +5 V 代表1,GND 代表0等等。但在实际电路中的电压值并不是完全精准的,那这些指标允许范围是什么呢?随着我们所学的内容不断增多,大家要慢慢培养一种阅读数据手册的能力。 比如,我们要使用 STC89C52RC 单片机的时候,找到它的数据手册第11页,看第二项——工作电压:5.5 V~3.4 V(5 V 单片机),这个地方就说明这个单片机正常的工作电压是个范围值,只要电源 VCC 在 5.5 V~3.4 V 之间都可以正常工作,电压超过 5.5 V 是绝对不允许的,会烧坏单片机,电压如果低于 3.4 V,单片机不会损坏,但是也不能正常工作。而在这个范围内,最典
[单片机]
51单片机 | 实现SMC1602液晶屏显示实例
LCD1602 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1602的意思是每行显示16个字符,一共可以显示两行。如果是12232液晶(图形型液晶)则表示由122列32行组成,即共有122*32个点 p.s.注意使用温度,通常液晶的工作范围为0~+55℃,存储温度范围为-22~+60℃。 - - - - - - - - - - - - - - - - - - - - - -
[单片机]
基于51单片机数码管的代码例子
#include #include #define uchar unsigned char #define uint unsigned int sbit dula=P2^6; sbit wela=P2^7; uchar code table ={ //编码表 code为把程序放入ROM区 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71, 0x76,0x79,0x38,0x3f,0}; uchar temp,t0,t1,bai,shi,ge,flag,flag1; //flag flag1 为2个标志位 uint
[单片机]
AT89C51单片机的红外线遥控信号发送器电路设计
TC9012F是一种通用型红外遥控信号发送用CMOS大规模集成电路,适用于电视(TV),磁带录像机(VTR),激光唱机等设备的遥控操作。市场上,以TC9012F为核心的9012型红外遥控器被广泛使用且价格便宜。将设计的基于单片机AT89C51的9012型红外遥控解码器应用于生产即时显示系统中,作为参数设置和系统控制用红外遥控器,在实际应用中收到了良好效果。 1 红外线遥控信号发送器电路 TC9012F的遥控信号 TC9012F为4位专用微控制器,其内部振荡电路的振荡频率fosc典型值为455 kHz。当不按下操作键时,其内部455 kHz的时钟振荡器停止工作,以减少电池消耗。内部分频电路将振荡频率,fosc进行12分频后,变成
[单片机]
51单片机控制步进电机-让电机转起来
摘要: 本节介绍用简单的方式,让步进电机转起来。其目的之一是对电机转动有直观的感受,二是熟悉整个开发流程 本系列教程必要的51单片机基础包括IO口操作、中断、定时器三个部分,相关基础教程网上很多,可以自行学习 一、软件清单 需要用到的软件有keil5编译软件、STC程序烧录软件 二、控制原理 根据TB6600驱动器原理,向PUL口发送脉冲,每发送一个脉冲,电机就转一步。通过单片机延时的方式,切换PUL口电平产生脉冲,从而控制电机转动。 三、程序代码 //毫秒延时函数 void delay(unsigned int z) { unsigned int x,y; for(x=z;x 0;x--) for(y
[单片机]