话前
为什么是Arduino
Arduino是一个编码很简单的单片机,这已经足够了。虽然我使用了Arduino,但没有用Arduino IDE——它的效率太慢了,一个屏幕有160*128=20480个点,每个点需要传输16位数据,则刷新一次屏幕需要传输327680位数据,如果使用纯纯的Arduino,那么刷新一个页面要到后面马月啊!?不过不急,我用可以用到Arduino的祖先,也就是Avr单片机,进行开发。
Avr单片机是从51发展而来,而演变成一个新的分支,比起51,它少了ACC累加器,却多了很多个寄存器与ALU相连,并且采用了精简指令集,使它的数据表不能放在ROM中。
虽然本例程是基于AVR单片机写的,因为用了C语言,修改、移植却非常方便,不信的话可以试试。
含有的功能
- lcd初始化
- 填充颜色
- 画点
- 画线
- 画矩形
- 显示字符(大/小)
- 显示字符串
- RGB颜色
点亮你的LCD吧
一些必备的工具
在本次实验开始前,你需要备有以下的一些模块,这些在淘宝很容易买到。
- 一块Arduino UNO
- 一块1.8寸、128*160的LCD显示屏
- 一根下载线
需要安装的开发环境
- Arduino IDE
- Microchip Studio 7
编译程序
将程序导入到Microchip Studio后,点击编译,可以产生hex文件,记住hex文件地址,在烧录程序的时候需要使用。
烧录程序
与STC不同,AVR上传确实有点麻烦。不过我们用的是Arduino单片机,可以有更简单的办法。 首先将单片机插入USB口,选好端口,在能上传程序的情况下,点击“文件”-“首选项”,然后在显示详细输出那里给“上传”打上勾。 然后回到主页面上传程序,点击上传按钮能,能看到下面出现了一条指令,将这条指令复制下来,在最后面填hex文件地址的位置换成我们编译产生的hex文件地址,然后在cmd窗口输入这条指令,按下回车即可完成上传。
实验成果
在本驱动库中,我写了几个例程,分别是显示时钟,测试颜色以及测试字符等,大家可以按需使用。
修改其中的代码还可以实现自己想要的效果,就靠大家自己摸索啦。
下载
如果大家需要的话可以到gitee中下载,如果不会用的话也可以在本站下载。
说明
显示速度
我对其中的一些显示函数进行了改进,并写了一些自己的显示函数。相同条件下,Arduino IDE编译出来的程序刷新需要6秒,而AVR只需要一秒,足足快了5倍。
图片显示
由于AVR单片机不允许将图片保存到ROM中,必须载入到RAM中,会导致空间极大地浪费,所以本程序实际上是存在显示图片的函数,但被我注释掉了。刚兴趣的同学可以试着优化图片数组的存储空间,或者将其移植到C51上。
参考资料
lcdwiki
|