㈠ 51单片机怎么用10个IO口扩展成40个输入口
p0口一般只当输出口用(做输入口不合算)
p1~p3口当输入口用之前要先写1
一口线当输入口用时(按键),一般就不再当输出用,故没有“
仅“输入模式说法
㈡ 51单片机,外界8255a芯片作为扩展io口,其中pA为输出,PB为输出,PC为输入,求正确的接线方式和地址初始化
地址不需要初始化,地址是由硬件连接决定的。51单片机地址总线16位,P0口提供低8位,P2口提供高8位。可以用下面的连接方式。PA、PB、PC的地址低位是0x00、0x01、0x02,高位都是0x7f。
mode equ 03h
data1 equ 06h
data2 equ 5bh
portA equ 7ff9h
portB equ 7ffah
CAddr equ 7ff8h ;(这三个口的具体地址要根据你硬件设计的情况;这里是 单片机的P2.7接cs,P2.0接IO/M)
(2)51单片机Io口扩展扩展阅读:
同样的一段程序,在各个单片机厂家的硬件上运行的结果都是一样的,如ATMEL的89C51(已经停产)、89S51,PHILIPS,和WINBOND等,常说的已经停产的89C51指的是ATMEL公司的AT89C51单片机;
同时是在原基础上增强了许多特性,如时钟,更优秀的是由Flash(程序存储器的内容至少可以改写1000次)存储器取代了原来的ROM(一次性写入),AT89C51的性能相对于8051已经算是非常优越的了。
㈢ 51单片机 输入IO口扩展的小问题~
你用一个三个普通IO口就能解决吧,就是程序的算法可能稍微的难点,你不断的扫描这三个IO口,一旦有跳变(就是脉冲开始了)就开始计时,无论哪个脉冲来都开始计时,三个变量啊a,b,c在定义三个计数c1,c2,c3,比如你计算脉宽
while(p1^0=1)
a=1;
while(p1^1=1)
b=1;
while(p1^0=1)
c=1;
然后再定时中断里这样写
while(a)
c1++;
while(b)
c2++;
while(c)
c3++;
然后再主程序里扫描三个口的脉冲,这样写
while(p1^0=0)
a=0;
while(p1^1=0)
b=0;
while(p1^2=0)
c=0;
这样当某个口的脉冲结束后中断就不会在计时了
然后讲得到的脉宽保存,清空c1,c2,c3
知道最后一个脉冲结束时清空计时器,关闭计时,下一个过程重复以上
㈣ 51单片机IO口扩展,P0口在什么情况下要加锁存器,为什么接8255要加锁存,而接0809可以不锁存
P0口在给多个外设发送数据,并且有的没有锁存器的时候要用加锁存器。
0809本身就自带了锁存器的,所以就不用了。
8255没有,就需要加上。
㈤ 51单片机IO口可扩展多少接口
最多扩展数取决于他的寻址能力,他能区别的最大空间为64K,也就是65536个,也就说最大的访问空间,也就是读写访问所能区别开来的IO数量。
㈥ 51单片机io口扩展,用哪个芯片简单些
595好,STC单片机以前做的,扩展40多个继电器,很很稳定。大部分都是&和|操作,还是很方便的。双向的话就用PCF8574,但是价格较贵,还不如直接用stm32。
㈦ 51单片机STC89C52怎样扩展io
STC89C52 是插脚的吗?其实,STC89C52 比传统的51单片机多了3个I/O脚了,P4.4,P4.5,P4.6,共有35个I/O脚了。这还不够吗?
扩展I/O是可以的,但不如直接用片机的I/O方便,节省扩展的芯片。
换成LQFP44贴片封装的,就多出7个I/O脚,共39个I/O脚了。还不够吗?
扩展方法:并行扩展,用74HC573,但至少要用两片以上,才能真正增加I/O脚。
又节省I/O脚,芯片又少,又有效扩展I/O,采用串入/并出芯片74HC595。用3个I/O接74HC595,可以扩展出8个I/O,净增5个I/O,还要扩展,用两个74HC595串联,还用3个I/O脚,可扩展出16个I/O脚,净增13个,应该够用了吧。
总之,扩展I/O的方法多多。就是别用什么8255,8155,这么古老的芯片,和单片机一样大小,DIP40封装。
㈧ 51单片机怎么外接扩展I/O口
建议采用
74ls245,每个ic可扩展8个i/o口。
10片可扩展80个。
同时需要3个单片机io作为片选,10个io口作为方向选择。
剩余10个io直接采用单片机io。
另外,也可采用多引脚单片机,现在大部分单片机的大部分引脚都可作为独立io使用。如:atmega1280具有100个引脚,其中可独立编程的io口有86个。