历史上的今天
今天是:2025年04月02日(星期三)
2021年04月02日 | 一种LED点阵模块的感光屏设计及系统实现
2021-04-02 来源:eefocus
根据光电效应,PN结在光的激励下可以改变其电阻率,而LED也是PN结,那么能否利用LED的PN结特性完成点阵感光屏呢?经过简单的实验探讨,我们发现LED本身就具有很好的感光能力,这样一来,感光屏就可以完全利用LED的感光特性来实现。本文就利用一块8×8的点阵屏,结合C8051F020单片机实现了一块具有感光功能的点阵屏,如图1所示。

图1
1 LED的感光原理
作为光电探测器的LED能够工作在两种检测模式下:光伏模式(在外界光的作用下器件有产生电压的能力)和光导模式(器件的导电性受外界光的控制)。在两种检测模式下产生的光电压或者光电流通常大约是普通光电二极管的1/100~1/10,一般需要借助于运放和ADC。而在没有运放和ADC的情况下,能否获取LED的光电流呢?事实上利用二极管本身的内电容(通常为pF级),带有高阻态的三态双向I/O口及内部数字计数器的单片机也可以用来对其所产生的光电信号进行很好的测量。
最简单的实现的方法如图2所示,通过单个LED的光延时来实现。它由一个LED连接两个单片机的引脚构成,LED发光的同时也测量入射光强并且表明是否超过预先已定义的阈值。

图2

图3

图4
工作在感光模式下的LED被快速充电到+5 V(100~200 μs)。第一步如图3所示,电荷被二极管的内电容(通常为10~15 pF)所维持,然后,P1脚切换到高阻输入模式(大约1015 Ω的阻抗)。第二步,在反向偏置条件下,LED的可以等效为一个电容与一个电流源iR(Φ)的并连,电流源中的电流为光电流,它随光强Φ而变化,如图4所示,P1脚的漏电流iL(很小,通常为0.002 pA)与通过二极管的在正常的环境光下产生的50 pA典型光电流iR(Φ)相比,可以忽略不计。经过分析后,可知Cr的放电过程可以用以下公式来表达:

若iR(Φ)是一常量,则上式可以变为:

式(2)表明vP1(t)随时间t 线性的减少到0,利用单片机的16位定时/计数器计时,每隔一段时间轮询P1引脚输入的逻辑电平vP1(t),直到变为逻辑“0”的门限电压VTR (约2.2 V)为止。衰减时间Td(通常测得为μs级)与检测到的光量成反比,由此,能够计算出二极管的光电流iR(Φ)。经分析,Td可以表示如下:

式中,NTCNT代表计数器计数的整数值,ftclk为计数器时钟频率,Np为缩放因子,fclk为主时钟频率。当接收到的光量增加的时候,Td减小,二极管放电加快;而当接收到的光量减少时,Td增加,二极管放电减慢。通过测量发光二极管的开和关的时间Td,能够发现并补偿环境光所导致的误差。由ftclk即可测量Td,且可以通过选择合适的Np来匹配单片机时钟。
如果延迟时间长于或短于指定的门限值Tdcr(关键时间),LED接通并发光。比如通过闪烁来警告,第三步如图3所示,单片机另外的一些引脚能被用来作为延时输出或者光线控制PWM输出。当然,测出时间大小,是为了得到P1脚的电压大小vP1(t),而事实上,对于实现感光点阵屏的来讲,并不需要知道vP1(t)的具体大小,仅利用它来作为LED内电容充放电时间的参考。根据以上分析可知,不管光强大小如何,衰减时间Td都很小,于是通过Td时间后的信号衰减,即可获得高低电平信号。
2 感光屏系统的实现
2.1 器件选择
根据以上原理,LED接收的入射光的波长与其发射光波长相等的时候,系统有最好的灵敏度,所以为了增强系统的灵敏度,采用发射光波长和点阵屏差不多的LED制作成发光笔。
对于点阵屏,选用了TOP23088DU与SZ420788K两种不同大小的点阵模块做对比测试。其中,TOP23088DU模块的像素点LED直径为5 mm,像素间距7.62×7 mm,模组尺寸 60.2×60.2 mm,像素点透明;SZ420788K模块的像素点LED直径为2 mm,像素间距 2.5×7 mm,模组尺寸 20.2 mm×20.2 mm,像素点半透明。两种模块通电测试均为共阴发红色光的点阵模块。
C8051F020 MCU是高集成度的混合信号片上系统,有按 8 位端口组织的 64 个数字I/O引脚(C8051F020)。低端口(P0、P1、P2 和 P3)既可以按位寻址也可以按字节寻址。高端口(P4、P5、P6和 P7)只能按字节寻址。所有引脚都耐 5 V电压,都可以被配置为漏极开路或推挽输出方式和弱上拉。端口 I/O单元的原理框图如图5所示。

图5

图6
由图5中I/O口结构可知,C8051F020具有漏极开路状态,完全可以满足测量所要求。2.2系统构成考虑到实验的方便,用8×8点阵,并采用常见的行列式扫描结构,所以共需要16个I/O口,这里考虑使用P0、P1口。系统结构如图6和图7所示。

图7
2.3 系统实现
根据上述原理,结合具体的LED点阵屏,程序流程如图8所示。

图8
由图6中的矩阵所示,先将P0口全部置高电平,然后轮流对每一列进行置低电平、高阻态、延时、检测是否为低电平、反转点亮LED的操作,完成对8×8=64像素点阵的操作。由于单片机操作速度很快,而且LED的滚降时间很快,所以每完成一次操作,可以很快在点阵屏上形成一幅文字画面。
3 测试结果
① 两种模块的对比,通过对TOP23088DU与SZ420788K两种不同大小的点阵模块做对比测试发现,由于TOP23088DU屏的像素点是全透明的像素点,而SZ420788K虽小, 但像素点为半透明像素点, TOP23088DU屏明显对入射的红光更为敏感,实现效果更好。
② 功能实现: 可用光笔在点阵屏上连续扫描, 观察到点阵被点亮;可在点阵屏上写入汉字笔画擦除,逐个显示及其移动;可以在屏上全部点亮后,通过扫描熄灭。用示波器观察,可以明显检测到在充放电的一瞬间出现的脉冲电压。
结语
本文所述的LED感光屏的具有操作简单、成本低、稳定性较好的优点。利用PN结光电效应的原理发掘了普通LED的更多功能,既可以作为发光元件,也可以作为感光元件,从而为开发低成本的多功能显示屏提供了很好的参考。当然,该感光屏也有些许不足,如点阵像素点较多时延时明显,感光灵敏度、抗干扰性等也有待进一步提高。
史海拾趣
|
这是从网上找到的MC9S08JM60单片机USB部分的翻译,该单片机是飞思卡尔推出的集成USB的S08单片机,对于需要实现USB连接的项目来说,是不错的选择。翻译的不是很好,有的地方还是要参考英文手册 … 查看全部问答> |
|
今天重新温习了51单片机扩展RAM、ROM,收获大大的有,以前把51的一本书看了几遍,还是没有弄清楚,没有弄清楚51访问外部ram、rom的时序,到今天才发现,访问外部ram、rom的时序是有访问指令决定的。 当用并行方式 ...… 查看全部问答> |
|
vc 添加程序的快捷方式到启动菜单里[转载http://blog.sina.com.cn/s/blog_5fd6e7ac01 vc 添加程序的快捷方式到启动菜单里#include <io.h>HRESULT CCreatescDlg::CreateLink(LPCSTR lpszPathObj, LPCSTR lpszPathLink, LPCSTR lpszDesc){ HRESULT hres; IShellLink* psl; h ...… 查看全部问答> |
|
请教关于奇晶的2.83寸OLED显示屏:C0283QGLC-T(采用的是S6E63D6驱动IC)的驱动问题----有人做过么? 原来用的三星的LMS283显示屏,最近停产了,不得不从新找屏做驱动。 新找来的奇晶的LCD,修改了硬件电路和spi初始化配置,点亮-进入系统都没有问题,但是象素上 发现了一个奇怪的问题: 颜色显示都基本正确,红.绿.蓝都还可以。 ...… 查看全部问答> |
|
我实验室现在想搞支持802.11系列的手机终端,我对这个完全不了解,想先学习一下..谁有802.11系列协议的实现代码的可以共享一下吗 ,兄弟不胜感激!!!… 查看全部问答> |
|
我使用的是smdk 6410 三星的开发板 + wince R2,BSP也是三星直接提供的,现在我要将我的屏幕旋转90,我的做法是 直接修改注册表的[HKEY_LOCAL_MACHINE\"System\"GDI\"Rotation],修改\"Angle\"=dword:5A, 这样修改之 ...… 查看全部问答> |
|
求救,各位达人,WinCE6.0如何加载位于BinFS文件系统中类型为NandImage的.bin文件中的内容? 我现在做的是BinFS+Multi-bin,目的是加快WINCE6.0的启动速度,减小内存使用。核心的东西都放在XIPKERNEL.bin中,为RAMIMAGE,而其他东西则放在nk.bin中,为NANDIMAGE。现在的现象是,xipkernel里面的东西好像加载都是正常的,但是nk.bin中的内容一 ...… 查看全部问答> |
|
各位前辈们,小生是新来的,我要用STM32f103x的单片机开发一款用户图形界面(GUI),使用uCOS-II操作系统。 现在的情况是,我对STM32f10x单片机倒是用的还行,不过操作系统和GUI开发,真的完全没有接触过。 手上有两块STM32f10x开发板:一块是红 ...… 查看全部问答> |




