今天抽出时间更新下设计进度。由于本人项目是血氧饱和度的测量,既然有测量,那么就需要显示来进行人机交互。我根据自己的存货和板子资源粗略得出如下几种方案:
1. 用随套件带的4位数码管。
2. 用LCD1602。
3. 用LCD12864。
4. 用OLED。
下面就来仔细说说这几种方案的利弊。
数码管虽然显示效果出众,但是可以显示的信息极其有限,因此排除掉;1602占用面积很大,加上其占用IO口数目相当可观,因此排除。LCD12864虽然显示信息很丰富,并且带了中文字库,但基于其占用面积比1602还要大3倍左右的事实,我只好无情的排除掉它了。最后说说我用的这款0.96寸具备128*64像素点的OLED。可以通过取字模的方式实现中文、图片的显示。对比度好,低功耗。在阳光下依然有很出色的显示效果。当然,最重要的是OLED只占用4个IO口。
先贴出一张特写的谍照:
方案选定后,就开始调试。我在原先定时器+闪灯工程上改的。按照51时代的思路,直接IO口模拟的方式实现单片机和OLED的通信。同调试其他的单色液晶一样,我们需要实现写数据、写命令、清屏、定位等函数。实现这些基本函数后,按照所使用屏的不同,设定取模软件。最终设定的取模方式是共阴、列行式、逆向输出。然后利用取模软件取出常见的ascii码和bmp图片以及用到的汉字点阵。详细代码请参看附件工程。
至此,我们就实现了字符、汉字、图片在OLED的显示。在这个过程中,我碰到的最大难点是怎么找到一个ms级的精确延时函数。不过在逻辑分析仪的帮助下,我经过不断的调整参数,最终得到一个相对精确的延时函数。
在调试好代码以后,我想能不能脱机运行代码,经过几次尝试我发现,发现只要你断开仿真器,并且外部加电以后,单片机就能直接运行代码了,就不用再使用RFP下载了。
整个工作到此告一段落,接下来就开始购买血氧仪探头并且开始调试模拟部分了。