有关应广单片机端口复用的几种用法和一些注意事项

应广OTP单片机一般都是以性价比著称,多用于简单的控制,比如小家电,比如消费电子产品,还有各种灯具等,因此,使用量巨大,价格低廉,为了能够使用最少的资源而实现更多的功能,很多时候就会考虑端口复用。

那么端口在什么情况下可以实现复用呢?

首先,普通端口一般有3种状态,分别为高电平,低电平和高阻态。只要程序(分时复用)和电路配合恰当,在应用一种状态的时候不会影响到另外两种状态,那么就可以实现复用。

端口复用用于点灯

1)应用1 一个端口点亮 2个LED

硬件电路图如下

IO2高电平 LED1 亮灯

IO2低电平 LED2亮灯

IO2高阻 LED1 LED2都不亮

同理

IO1高电平 LED4 亮灯

IO1低电平 LED3亮灯

IO1高阻 LED3 LED4都不亮

有人要问了,按照这种做法,只能亮两个灯,要4个灯同时亮,怎么办呢?莫急。莫急,这个是可以通过分时复用,逐灯扫描实现。

LED1 LED2 LED3 LED4

1 0 0 0

0 1 0 0

0 0 1 0

0 0 0 1

这个就和电影原理一样,首先要把胶卷底片一张一张拼接起来,放电影的时候,电影机会把底片一张一张投影到屏幕,只要投屏每秒超过30张,那么人眼就看不到底片在切换,看到的是连续的画面。

那么点灯也一样,在时序1点亮第一个LED,其他灯关闭,在时序2点亮 第二个LED灯,其他灯关闭,如此从循环,速度快了,人的眼睛看起来就会像4个灯同时在亮一样。

其实我们的显示屏幕也是这个原理,并不是每个点都一直在亮,都是一直在刷屏,当刷屏速度超过30帧之后,人的眼睛就分辨不出来了,但是为了使显示效果比较好,一般都是60帧以上每秒。

用单片机去刷着几个灯,不要说是30帧,300帧都算很低了,因此,通过分时复用进行刷灯,就可以让4个灯看起来同时亮起了。

注意事项:由于LED 有最低的导通电压FVD,因此 两个led的导通电压一定要高于VDD,否则通电就两个灯都亮了,没有办法通过IO口进行控制。因此要注意电源电压和LED灯的选择,同时如果要实现低功耗待机,要先测试在额定电压下,当IO口处在在高阻太状态下,漏电流是多少,防止待机电流过大。

2)应用2 查理复用点亮多个LED灯(数码管)

不多说,先上数码管内部电路图

最常见的就是查理复用,最多可以电量 n*(n-1)-1个灯。比如888的数码管,总共有24个灯,用6×(6-1)-1=29,用6个pin就可以了。

6个端口就可以点亮24个灯,效果杠杠的,这样一个8pin单片机就可以搞定了,不错吧。

有需要案例的可以查看编程助手。

需要注意的是要如果IO口配置和切换不当,可能出现数码管的某个段在非点亮状态出现微亮,因为led在很小电流下就可以点亮。

其实这个案例代码还是有点点小缺陷,这里我就不说了,留给大家留一个彩蛋了。

端口复用用于按键检测

一个端口可以用于检测两个按键

案例可以查看编程助手,

这个用了比较器,其实也可以不用比较器,通过内部上拉,下拉电阻就实现,这个留个大家自己思考一下。

单片机端口内部上下拉和外部按键连接图示如下

要注意到的是要考虑到可能两个按键同时按下情况,放置R21的目的就为了避免按键同时按下状态下电源短路的情况。因此,单片机程序在对外部输入信号进行处理的时候,一定要考虑对异常情况的处理。

一个端口可以检测两个按键,也算不错了 。

端口复用用于点灯和按键同时使用

电路图如下

说明如下,

为了按键不影响点灯,点灯不影响按键,要做以下处理

1.当亮灯的时候,打开SS8550,要亮灯的对应端口为低,不亮灯端口要拉高,防止在亮灯状态下,按下按键干扰到亮灯状态

2.当检测按键的时候,关闭SS8550,对应端口先内部上拉为高,然后检查端口装入,这时候按键按下,不会意外点亮LED

用5个端口实现了4个按键检测和点亮4个led灯,也算不错了。

其实按键和LED是可以随意组合的,只要按键的时候不影响到LED,而LED亮灯时候,按键不会意外点亮LED就可以了。

端口复用用于输入状态检测,

内部IO和外部上下拉电路图如下,外部上下拉可以根据需要进行配置。

内部上下拉拉电阻一般是几十k到几百k,这个要看看规格书。外部上下来的电阻一定要比内部小得多才行。

用两个端口就可以识别9种状态。

(高,高阻,低)×(高,高阻,低)=9

1.内部先上拉,如果检测到端口电平是低,那么说明外部下拉,注意:外部下拉电阻要选择远小于内部上下拉电阻

2.内部先下拉,如果检测到端口电平是高,那么说明外部上拉,注意:外部上拉电阻要选择远小于内部上下拉电阻

3 内部上拉,检测电平是高;内部下拉,检测电平是低,那么判断端口是高阻态。

要注意的是这个高阻态的检测会受到外部状态的干扰,比如受潮,比如外部干扰等,这个在使用过程和使用场合要有所选择。

这样就可以实现端口的3种状态检测(其实按键检测原理同上)

2个端口就可以表示9种状态,这个对有些需要用状态去表示不同功能板是非常友好的,2个端口按照通常做法,只能表示4种状态,这里可以表示9种状态,也不错了。

最经典电路

电路图如下

一个8pin的单片机,实现了188温度显示,NTC数据采集和触摸检测。

只上电路图,原理就自己分析了

这次没有上代码,只做了一个简单说明,理解原理之后,借鉴一下网络和前人的经验,再根据不同的状态和需求,软件硬件进行结合,就可以实现更多的端口复用,让应广OTP单片机去继续发光发热吧。

相关推荐
zrande12 天前
端口复用技术详解与应用场景
端口复用
zhongvv7 个月前
OTP单片机调试工具之—单线数据编码
串口·应广单片机·单线数据传输·双机通信·otp单片机调试工具
zhongvv7 个月前
OTP单片机调试工具之—应广单片机ADC调试案例
嵌入式硬件·应广单片机·adc采样·otp调试·串口数据显示
zhongvv2 年前
应广单片机实现跑马灯
应广单片机·应广单片机开发·跑马灯·应广demo·方案开发
zhongvv2 年前
应广单片机mini-c实现插入排序并加入log打印功能
c语言·插入排序·应广单片机·应广单片机案例·应广单片机打印输出