搜索
bottom↓
回复: 60

当单片机IO口不够用,却无扩展的时候,能否通过软件...

[复制链接]

出0入0汤圆

发表于 2013-3-3 08:59:03 | 显示全部楼层 |阅读模式
本帖最后由 白滚滚 于 2013-3-3 11:03 编辑

单片机的学习之路长途漫漫啊
跪求各位前辈给予指点:
当单片机的IO口不够用,却没有扩展的时候(不可自行接扩展)
能否通过软件编程或者IO口复用解决此问题?
---------------------------------------
单片机为AT89S5单片机一共是32个口
传感器和继电器占用14个
数码管是8+3=11个
液晶显示是8+6=15个(数码管8位数据口和液晶8位数据口用的同一组IO口,测试可用)
按键是8个,为4*4矩阵式键盘
LED1个
---------------------------------------
数码管和液晶显示的数据口共用一组IO口
所以是需要14+8+3+6+8+1=40个,还差8个口

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2013-3-3 09:05:00 | 显示全部楼层
jswd0810 发表于 2013-3-3 09:01
你可以通过通讯的方式控制IO模块单元来实现

是要模拟总线咩?

出0入0汤圆

发表于 2013-3-3 09:08:15 | 显示全部楼层
当然可以软件+硬件解决
你的问题的io口不够用,那就看看哪些功能可以复用啊,可以多个功能合用一个io口
这些都是具体问题具体分析
也许你可以把你的电路图发上来给大家看看

出0入0汤圆

 楼主| 发表于 2013-3-3 09:16:14 | 显示全部楼层
cc224 发表于 2013-3-3 09:08
当然可以软件+硬件解决
你的问题的io口不够用,那就看看哪些功能可以复用啊,可以多个功能合用一个io口
这 ...

单片机一共是32个口
传感器和继电器占用14个,
数码管是8+3=11个,
液晶显示是8+6=15个,
按键是8个,
LED1个,
---------------------------------------
数码管和液晶显示的数据段8位共用
所以是需要14+8+3+6+8+1=40个,还差8个口

出0入0汤圆

 楼主| 发表于 2013-3-3 09:17:41 | 显示全部楼层
jswd0810 发表于 2013-3-3 09:06
不是,可以通过232口或者485之类通讯

能不能说的稍微详细点,不是很明白~~~~(>_<)~~~~

出0入0汤圆

发表于 2013-3-3 09:28:56 | 显示全部楼层
按键用扫描法解决吧,应该可以和别的复用的
传感器如果是数字IO读入,应该也可以和数码管什么的合用
液晶有EN端吧,只要en不使能,别的14个脚都可以随便用,用来做按键、数字型传感器输入肯定是没问题的

出0入4汤圆

发表于 2013-3-3 09:35:54 | 显示全部楼层
本帖最后由 wajlh 于 2013-3-3 09:40 编辑
白滚滚 发表于 2013-3-3 09:16
单片机一共是32个口
传感器和继电器占用14个,
数码管是8+3=11个,


数码管的8+3和液晶的8+6 和按键的8。其中的8可以复用的。控制好时序即可。最简单的是液晶的8和按键的8复用。这样对时序要求不高。

出0入4汤圆

发表于 2013-3-3 09:44:08 | 显示全部楼层
白滚滚 发表于 2013-3-3 09:16
单片机一共是32个口
传感器和继电器占用14个,
数码管是8+3=11个,

很奇怪为什么不选用44脚面的芯片呢?
LCD一般有专用驱动,和其他功能不能同时使用,继电器和传感器也需要单独使用.
数码管和LED和按键可以复用.

32个IO还是不够.
楼主可以看一下TM1668,这个可以扩展显示和按键.

出0入0汤圆

 楼主| 发表于 2013-3-3 10:29:03 | 显示全部楼层
jswd0810 发表于 2013-3-3 09:32
从你这个看的话你可以把液晶的数据线和数码管的数据线用同一组IO口就行了啊 ...

数码管和液晶的数据线用的是同一组IO口之后还缺8个的

出0入0汤圆

 楼主| 发表于 2013-3-3 10:32:34 | 显示全部楼层
laujc 发表于 2013-3-3 09:44
很奇怪为什么不选用44脚面的芯片呢?
LCD一般有专用驱动,和其他功能不能同时使用,继电器和传感器也需要单 ...

谢谢~~~
液晶和数码管的数据线可以用同一组IO口,这个已经试验过了,没有问题
我也想用44口的,不过这个是给定你硬件让你搭建电路,编写程序,硬件自己改不了

出0入0汤圆

 楼主| 发表于 2013-3-3 10:35:35 | 显示全部楼层
jswd0810 发表于 2013-3-3 09:33
我那个说的相当于你自己外扩一个PCB了

我觉得这对我这个初学者来说有点难度.....

出0入0汤圆

发表于 2013-3-3 10:40:21 | 显示全部楼层
什么液晶要8+6跟线?如果能用串行的话就省多了。

出0入0汤圆

发表于 2013-3-3 10:49:41 | 显示全部楼层
什么单片机?什么按键?不是矩阵键盘单片机有ad的话,一个io即可

出0入0汤圆

 楼主| 发表于 2013-3-3 10:51:44 | 显示全部楼层
XA144F 发表于 2013-3-3 10:40
什么液晶要8+6跟线?如果能用串行的话就省多了。

惨无人道的不带字库的12864.....

出0入0汤圆

发表于 2013-3-3 10:58:14 | 显示全部楼层
白滚滚 发表于 2013-3-3 09:16
单片机一共是32个口
传感器和继电器占用14个,
数码管是8+3=11个,

用74HC245扩展吧

出0入0汤圆

发表于 2013-3-3 11:00:03 | 显示全部楼层
继电器,传感器有几个输入和输出区分好,用74的译码器或编码器可以省很多…

出0入0汤圆

 楼主| 发表于 2013-3-3 11:06:42 | 显示全部楼层
cafppla1 发表于 2013-3-3 10:49
什么单片机?什么按键?不是矩阵键盘单片机有ad的话,一个io即可

是AT89S52,用的是4*4矩阵键盘

出0入0汤圆

发表于 2013-3-3 11:14:08 | 显示全部楼层
8个按键改成独立按键和数码管共用IO,正好多出8个

出0入0汤圆

发表于 2013-3-3 11:20:10 | 显示全部楼层
白滚滚 发表于 2013-3-3 10:51
惨无人道的不带字库的12864.....

的确够惨的,这样的话就换带字库且能串行的ST7920,这样不算犯规吧?

出0入93汤圆

发表于 2013-3-3 12:02:12 | 显示全部楼层
本帖最后由 takashiki 于 2013-3-3 12:11 编辑
白滚滚 发表于 2013-3-3 09:16
单片机一共是32个口
传感器和继电器占用14个,
数码管是8+3=11个,
液晶显示是8+6=15个,
按键是8个,
LED1个,
---------------------------------------
数码管和液晶显示的数据段8位共用
所以是需要14+8+3+6+8+1=40个,还差8个口

按键和数码管、LCD的八位可以复用,于是就够了,注意分时复用,按键有4个输出4个输入,在按键时千万记住关闭数码管显示,另外在按键的8根线上都串接较大的电阻,比如5.1K,至少要在4根输入线上串!

如果还想继续省的话,液晶的6个控制脚有三根可以和数码管的位选复用,主要好分配时间。操作完液晶时,千万要将这三根线恢复到原来的状态,这样基本上不会影响数码管的显示,因为液晶操作时间并不长。

接着省:使用上述方法将液晶的另外一个控制脚与LED复用,又少占用一个引脚。

修改原因:继续省线大法。使用本人的方案可以为您节省12个引脚,够你用了并且还可以继续扩展功能。

出0入20汤圆

发表于 2013-3-3 12:44:44 | 显示全部楼层
你的键盘可以和Led显示公用一部分,具体要看你的电路。采用2*8=16扫描。可以省几根。如果添加595,可以省一大堆!

出0入0汤圆

 楼主| 发表于 2013-3-3 15:00:32 | 显示全部楼层
XA144F 发表于 2013-3-3 11:20
的确够惨的,这样的话就换带字库且能串行的ST7920,这样不算犯规吧?  ...

犯规的.....就只能用12864.....一切不带字库的液晶都是流氓

出0入0汤圆

发表于 2013-3-3 15:36:06 | 显示全部楼层
白滚滚 发表于 2013-3-3 15:00
犯规的.....就只能用12864.....一切不带字库的液晶都是流氓

12864也有带字库的,带字库的12864控制器有好几种,ST7920是其中一中

出0入0汤圆

 楼主| 发表于 2013-3-3 15:37:30 | 显示全部楼层
takashiki 发表于 2013-3-3 12:02
按键和数码管、LCD的八位可以复用,于是就够了,注意分时复用,按键有4个输出4个输入,在按键时千万记住关 ...

1、按键是4*4矩阵键盘,需要采用扫描法,如果跟液晶和数码管的八位复用,会不会检测按键的时候出现混乱,再就是不能更改硬件,所以不能接上拉电阻
2、将液晶的一个控制脚与LED复用,控制引脚电平改变,LED也会随着亮灭的吧,会影响原来LED的状态

出0入0汤圆

 楼主| 发表于 2013-3-3 15:38:58 | 显示全部楼层
y574924080 发表于 2013-3-3 15:36
12864也有带字库的,带字库的12864控制器有好几种,ST7920是其中一中

嗯啦,我用的是不带字库的~

出0入93汤圆

发表于 2013-3-3 16:04:20 | 显示全部楼层
白滚滚 发表于 2013-3-3 15:37
1、按键是4*4矩阵键盘,需要采用扫描法,如果跟液晶和数码管的八位复用,会不会检测按键的时候出现混乱, ...

1、检测按键时,要关闭数码管和LCD的。对于LCD,CS拉高就可以了;对于数码管,将位选的三极管全部截止就可以了。
按键不要接上拉电阻,51的P1、P2、P3都有内部弱上拉的。为了防止按键干扰数码管和LCD,是要串联电阻,为了方便,可以串排阻。
2、将液晶的一个控制脚与LED复用,控制引脚电平改变,LED也会随着亮灭,是会影响原来LED的状态,但是人眼反应不过来。你要知道,控制引脚电平改变的时间很短很短,对于LED的亮度根本就无法产生影响。人眼的视觉暂留时间为40ms,这么长的时间里,LCD的数据早发送完了,这时要恢复LED原来的状态,就可以了。实际上就相当于动态扫描了,一样的道理。

对于按键和数码管段选/位选复用的例子,请谷歌/百度”周立功 DP-51 电路图“之类。

出0入93汤圆

发表于 2013-3-3 16:07:11 | 显示全部楼层
白滚滚 发表于 2013-3-3 15:37
1、按键是4*4矩阵键盘,需要采用扫描法,如果跟液晶和数码管的八位复用,会不会检测按键的时候出现混乱, ...

你硬件都不能更改,那说其他的什么都是白搭啊,该占多少IO还是占用了多少IO,仅仅靠软件,是做不到的,必须软件和硬件配合才行啊。

出0入0汤圆

发表于 2013-3-3 17:46:27 | 显示全部楼层
唯一的可能就是按键复用到数据线上面了,配合液晶的功能线扫描或者直接8个数据线做4*4扫描,不过会干扰到液晶显示的,要是IO能设置为推挽输出就好了

出0入0汤圆

发表于 2013-3-3 21:06:29 | 显示全部楼层
最近在研究液晶,下来看看~!

出0入0汤圆

发表于 2013-3-4 09:43:44 来自手机 | 显示全部楼层
takashiki 发表于 2013-3-3 16:04
1、检测按键时,要关闭数码管和LCD的。对于LCD,CS拉高就可以了;对于数码管,将位选的三极管全部截止就 ...

可以借鉴下

出0入0汤圆

发表于 2013-3-4 23:42:08 | 显示全部楼层
本帖最后由 wgui 于 2013-3-4 23:45 编辑

继电器属于使用输出接口,输出接口可以使用74HC573作输出接口扩展。共用8位数据口,每个占用一个使能接口。操作时将使能方面处理好就不会冲突了。

出0入0汤圆

发表于 2013-3-5 08:50:56 | 显示全部楼层
takashiki 发表于 2013-3-3 16:07
你硬件都不能更改,那说其他的什么都是白搭啊,该占多少IO还是占用了多少IO,仅仅靠软件,是做不到的,必 ...

同意,不改硬件,你看电路怎么连的就怎么编程,还有神马办法

出0入10汤圆

发表于 2013-3-5 09:00:59 | 显示全部楼层
硬件不改就靠软件?什么叫硬件不改啊?你现在电路都还定下来,硬件电路就可以改变啊,只是不换元件吧?

出0入0汤圆

发表于 2013-3-7 08:25:21 | 显示全部楼层
硬件不改就靠软件?典型的意识决定物质啊~~~不理LZ了,让他自己折腾去……
头像被屏蔽

出0入0汤圆

发表于 2013-3-7 21:40:38 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2013-3-8 14:06:19 | 显示全部楼层
takashiki 发表于 2013-3-3 12:02
按键和数码管、LCD的八位可以复用,于是就够了,注意分时复用,按键有4个输出4个输入,在按键时千万记住关 ...

同意楼主的看法,
有疑问,4*4键盘与LED数码管显示的数据口接在一起,是否会有干扰?

出0入93汤圆

发表于 2013-3-8 14:28:19 | 显示全部楼层
yydd_1 发表于 2013-3-8 14:06
同意楼主的看法,
有疑问,4*4键盘与LED数码管显示的数据口接在一起,是否会有干扰?
...

您是说键盘干扰数码管还是数码管干扰键盘?周立功已经在他的DP-51中明确指出,是不会有干扰的。

键盘干扰数码管吗?键盘中串有电阻或二极管的,周立功的方案串的是二极管,我的方案是电阻。比如只在键盘的行上串10k的电阻,那么键盘导通时会产生5V/10kΩ=0.5mA的电流,根本不足以影响LED。嫌这个电流大了,那就把电阻再加大。
数码管干扰键盘吗?这个需要软件处理了。键盘扫描必须在数码管全灭的情况下进行。

如再有疑问,请自己做试验验证。我在我的商用产品中大量采用此方案,我自己就不再验证了。

出0入0汤圆

发表于 2013-3-8 14:46:30 | 显示全部楼层
换stm32啊

出0入0汤圆

发表于 2013-4-1 08:41:12 | 显示全部楼层
亚龙的设备不是有MCU12扩展模块么 8255芯片 这还不够口?

出0入0汤圆

发表于 2013-4-1 08:48:46 | 显示全部楼层
串口转并口或者用  锁存器,译码器

出0入0汤圆

发表于 2013-4-1 08:51:44 | 显示全部楼层
买LQF44封装,48个脚还不够么?价钱差1-2元

出0入8汤圆

发表于 2013-4-1 09:03:16 | 显示全部楼层
不能改硬件  楼主就不用想了  没有办法    改硬件的话  数码管和按键+LED  可以复用。

出0入0汤圆

发表于 2013-4-1 09:05:56 | 显示全部楼层
你这个所有口都用上了,程序能放得下吗   s52啊

出0入0汤圆

发表于 2013-4-1 21:52:34 | 显示全部楼层
打个包叫外卖好了

出0入0汤圆

发表于 2013-4-1 22:28:45 | 显示全部楼层
接个编码器到IO口

出0入0汤圆

发表于 2013-4-12 14:33:16 | 显示全部楼层
,我也遇到类似的问题,

出0入0汤圆

发表于 2013-4-12 15:42:49 | 显示全部楼层
这种情况必须结合硬件来解决了 在继电器和传感器上做文章 或者液晶采用串口通信 可以采用译码器来控制继电器和灯 因为只有两个状态

出0入0汤圆

发表于 2013-4-13 10:50:35 | 显示全部楼层
我是来围观的

出0入0汤圆

发表于 2013-4-14 09:59:42 | 显示全部楼层
用MAX7219驱动数码管!

出0入0汤圆

发表于 2013-4-14 10:14:46 来自手机 | 显示全部楼层
STC12c5a60s2  有48脚的,有43个IO可以用

出0入0汤圆

发表于 2013-4-14 22:01:40 | 显示全部楼层
看了楼主的几样硬件,就想起亚龙236,再搜下楼主的帖子,果然是,在IO不够的情况下,8255不就是专干这个的吗?

出0入0汤圆

发表于 2013-4-15 00:15:47 | 显示全部楼层
4x4键盘中的4条输出线可以与显示数据线复用,因为显示和读键盘不会同时进行,只要在不读键盘时把输入线置为高阻,就没有干扰。这样省下4IO
数码管的3条控制线可以与LCD控制线复用。因为读写LCD是很快的,对数码管造成的影响,肉眼分辨不出的。只要这3条线不占用LCD的读写允许脚,那么读写数码管对LCD也没有影响。这样省3IO
1条LED也可与LCD控制线复用。道理与数码管相同。又省下1IO
总共8IO。满足楼主的要求了,但在编写程序时,必须考虑器件占用IO的优先权问题。非第一优先的器件在完成一个操作后,必须立即恢复IO的原状。程序比较复杂了,效率也有所下降

出105入79汤圆

发表于 2013-4-15 02:43:48 | 显示全部楼层
介绍你一颗神器: 74hc595  5毛钱

出160入0汤圆

发表于 2013-4-15 10:47:52 来自手机 | 显示全部楼层
开关量全部用移位寄存噐,可以省一堆线

出0入0汤圆

发表于 2013-4-15 11:30:10 | 显示全部楼层
没有了解过主控芯片,不知道有没有AD,如果有,可以在开关处做手脚。
一个IO口控制八个开关,采用电阻分压原理!具体网上可以自己搜索一下!

出0入0汤圆

发表于 2016-1-14 08:10:10 | 显示全部楼层
takashiki 发表于 2013-3-8 14:28
您是说键盘干扰数码管还是数码管干扰键盘?周立功已经在他的DP-51中明确指出,是不会有干扰的。

键盘干 ...

明白了,谢谢
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 10:38

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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