- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SED1520的使用(C语言)
内置SEDl520图形液晶显示模块的接口技术
由于SEDl520F0A
计算机控制内置SEDl520图形液晶显示模块有两种连接方式。一种为直接访问方式,一种为间接控制方式。本节将以AT89C51单片机为样机描述这两种方式的实用电路及驱动程序。
1 直接访问方式
直接访问方式是计算机把字符型液晶显示模块作为存储器或I/O设备直接挂在计算机的总线上。
在这种方式下,控制信号由AT89C51的读操作信号RD和写操作信号WR与地址信号合成产生。本文推荐的直接访问方式的实用接口电路如图1所示。
图1 直接访问方式的接口电路
上图所示的电路,对于完成液晶显示模块的显示来说,所用的硬件是相对比较少的,但是如果计算机需要进行扩展的话,使用上图的话不是很经济(浪费了太多的地址空间)。这个时候,可以考虑使用全地址译码或者部分地址译码的方式。
在上图所示的电路中:
●8位数据总线与AT89C51的数据总线连接
●E1信号由WR和RD信号逻辑与非后产生,然后由地址A15选通控制
●E2信号由WR和RD信号逻辑与非后产生,然后由地址A14选通控制
●R/W由地址A13提供
●RS信号由地址A12提供
这样就确定了AT89C51操作字符型液晶显示模块的唯一地址选择。
图中的电位器为V0提供了可调的驱动电压,用以实现显示对比度的调节。
以下将给出直接访问方式的驱动程序。
(1)地址定义
#include reg51.h
#include intrins.h
#include stdio.h
#define uchar unsigned char
#define uint unsigned int
#define nop() _nop_()
xdata uchar WC_ADD1 _at_ 0x8000;
xdata uchar RC_ADD1 _at_ 0xA000;
xdata uchar WD_ADD1 _at_ 0x9000;
xdata uchar RD_ADD1 _at_ 0xB000;
xdata uchar WC_ADD2 _at_ 0x4000;
xdata uchar RC_ADD2 _at_ 0x6000;
xdata uchar WD_ADD2 _at_ 0x5000;
xdata uchar RD_ADD2 _at_ 0x7000;
(2)写指令代码
/*判忙*/
uchar RdBF(uchar Enable)
{
uchar status;
switch(Enable) /*进行E1、E2的判断、选择*/
{
case 1:
status=RC_ADD10x80; /*屏蔽低7位*/
return status;
break;
case 2:
status=RC_ADD20x80; /*屏蔽低7位*/
return status;
break;
default:break;
}
}
/*写命令*/
void WRCMD(uchar CMD,Enable)
{
uchar temp;
switch(Enable) /*进行E1、E2的判断、选择*/
{
case 1:
do
{
temp=RdBF(1);
}
while(temp=0x80);
WC_ADD1=CMD;
break;
case 2:
do
{
temp=RdBF(2);
}
while(temp=0x80);
WC_ADD2=CMD;
break;
default:break;
}
}
(3)写显示数据
void WRDAT(uchar CMD,Enable)
{
uchar temp;
switch(Enable) /*进行E1、E2的判断、选择*/
{
case 1:
do
{
temp=RdBF(1);
}
while(temp=0x80);
WC_ADD1=DAT;
break;
case 2:
do
{
temp=RdBF(2);
}
while(temp=0x80);
WC_ADD2=DAT;
break;
default:break;
}
}
(4)读显示数据
uchar RdDAT(uchar Enable)
{
uchar DAT,temp;
switch(Enable) /*进行E1、E2的判断、选择*/
{
case 1:
do
{
temp=RdBF(1);
}
while(temp=0x80);
DAT=RD_ADD1;
return DAT;
break;
ca
文档评论(0)