12864液晶并口驱动C程序-6800时序详解
4星 · 超过85%的资源 需积分: 12 89 浏览量
更新于2024-09-14
收藏 5KB TXT 举报
"12864液晶显示屏的并行接口驱动程序,基于6800时序,已通过实际测试"
本文将详细讲解如何使用C语言编写12864 LCD(Liquid Crystal Display)并口驱动程序,适用于MD12864-1型号的液晶模块,采用6800系列的时序。程序中定义了必要的函数来初始化LCD、清除显示、发送命令和数据,以及在指定位置打印字符和字符串。
首先,我们引入所需的头文件,如`<reg52.h>`用于访问S51单片机的寄存器,以及`<math.h>`用于数学运算,尽管在这个例子中并未使用到`<math.h>`。
```c
#include<reg52.h>
#include<math.h>
```
定义了一些全局变量和常量,例如控制数据线的数据存储区`DATAP2`,控制信号线的端口`CONTROLP0`,以及E、RW、RS、PSB、RST等信号线的位定义。这些定义使得我们可以方便地操作相应的IO引脚:
```c
#define DATAP2 P2
#define CONTROLP0 P0
#define E7 P0^7
#define RW6 P0^6
#define RS5 P0^5
#define PSB4 P0^4
#define RST3 P0^3
```
接下来,我们定义了几个基本的位操作宏,用于设置、清除或检查特定位:
```c
#define SETB(x,y) (x|=(1<<y))
#define CLRB(x,y) (x&=(~(1<<y)))
#define CHKB(x,y) (x&(1<<y))
```
`chek_busy`函数是用于检测LCD是否忙,即是否可以接收新的命令或数据。该函数通过读取返回的高8位来判断,如果该位为1,则表示LCD正在处理数据,需要等待;为0则表示LCD可以接收新数据:
```c
void chek_busy(void) {
unsigned char temp1;
CLRB(CONTROL, RS); // RS=0;
SETB(CONTROL, RW); // RW=1;
SETB(CONTROL, E); // E=1;
do {
temp1 = DATA;
DATA = 0xFF;
} while(temp1 & 0x80);
SETB(CONTROL, E); // E=1;
DATA = 0xFF;
}
```
`lcd_init`函数用于初始化LCD,包括设置初始化命令,设置显示模式,清屏,打开显示,设定光标位置等。这些命令通常由LCD的规格说明书给出。
`clr_lcd`函数清除LCD上的所有显示内容。
`send_com`和`send_data`函数分别用于发送LCD命令和数据。它们首先检查忙标志,然后设置RS和RW的值,再将数据写入到数据线上,最后使能E信号完成数据传输。
`set_xy`函数用于设置LCD的光标位置。
`print`函数用于在指定位置打印一个字符,而`printstr`函数用于打印一串字符数组。这两个函数都会先调用`set_xy`设置位置,然后通过`send_data`发送字符数据。
在实际应用中,用户可以根据自己的需求调用这些函数,比如在初始化后,就可以通过`printstr`函数在指定位置显示字符串了。
总结来说,这个C程序提供了一套完整的12864 LCD并行接口驱动方案,适用于6800时序的MD12864-1液晶模块。通过理解和使用这些函数,开发者能够有效地控制液晶屏幕显示各种信息。
2014-01-01 上传
2012-07-09 上传
2011-08-29 上传
点击了解资源详情
2021-09-29 上传
2010-03-17 上传
2020-12-30 上传
2024-05-24 上传
2022-09-22 上传
Sunny4987
- 粉丝: 0
- 资源: 1
最新资源
- 深入浅出:自定义 Grunt 任务的实践指南
- 网络物理突变工具的多点路径规划实现与分析
- multifeed: 实现多作者间的超核心共享与同步技术
- C++商品交易系统实习项目详细要求
- macOS系统Python模块whl包安装教程
- 掌握fullstackJS:构建React框架与快速开发应用
- React-Purify: 实现React组件纯净方法的工具介绍
- deck.js:构建现代HTML演示的JavaScript库
- nunn:现代C++17实现的机器学习库开源项目
- Python安装包 Acquisition-4.12-cp35-cp35m-win_amd64.whl.zip 使用说明
- Amaranthus-tuberculatus基因组分析脚本集
- Ubuntu 12.04下Realtek RTL8821AE驱动的向后移植指南
- 掌握Jest环境下的最新jsdom功能
- CAGI Toolkit:开源Asterisk PBX的AGI应用开发
- MyDropDemo: 体验QGraphicsView的拖放功能
- 远程FPGA平台上的Quartus II17.1 LCD色块闪烁现象解析