12864

2024-07-09

12864(精选三篇)

12864 篇1

本实验所用芯片为ALTERA公司开发的EP1C6Q240C8芯片,cyclone系列,具有240个引脚,工作时最多可同时处理10路控制信号,工作电压为1.4V~3.6V。

液晶屏为12864,显示类型STN,点阵格式128 x 64,点尺寸0.48 x 0.48mm。

软件编程环境:Altera的Quartus II。

2 焊接板子,原理图如下

左侧为EP1C6Q240C8芯片:共有240个引脚,相当于把4块芯片联系在一起,备选的引脚比较多。右侧为液晶屏引脚,本液晶屏内置汉字库(通过查汉字编码库,得到代码)。

3 静态显示的设计

3.1 给data_buffer赋内容

constant data_buf2与constant data_buf3所赋值均为x"20",由图片可知,后两行并未输出内容。x"20"代表空格,即此处不输入内容。也可根据需要,通过查汉字编码表输入内容。

3.2 分频部分

3.3 把汉字加到液晶地址

同理将"FPGA"送到第一行(地址为80),第三行和第四行也可根据需要加入相关汉字。

3.4 引脚的配置

4 动态程序的显示部分

因为是动态显示所以拍摄的不够清晰。

大部分程序与静态类似,下面只列出不相同的部分[竖行显示]。

4.1 分频

process(clk)//此处是分频,结果是5 000Hz,此部非常重要,我们后面显示用到clk_5000,动态显示效果,就是靠这个频率。

variable cnttemp:integer range 0 to 9999;

具体可参照静态显示的分频,只需将原来的clk_100k改为clk_5000即可,每幅间隔是

1/5000=200us。假如频率设的过高,则汉字一扫而过,无法观看到清晰图像。

4.2 显示

动态显示与静态显示不同之处为:

静态显示只需进行一次初始化,分别在四行上显示出字符或汉字。

动态显示的原理是:第一次将汉字送到第一行,之后擦去内容,第二次送到第二行,擦去内容,依次进行直到第四行,之后再跳到第一行。给人眼的感觉是汉字在不停的移动。所以每屏显示之前都要进行初始化(相当于擦去上一幅的内容),故在每行显示之前都要加上类似s0,s1的初始化信息。

例如s0->s1->s2(第一行确定地址80)->s3(送入显示内容)>s4(代码s0一样)->s5(代码与s1一样)->s6(第二行确定地址90)->s7(送入显示内容)->s8(代码s0一样)->s9->(代码与s1一样)s10(第三行确定地址88)->s11(送入显示内容)->s12(代码s0一样)->s13(代码与s1一样)->s14(第四行确定地址98)->s15(送入显示内容)->s0最后再跳到s0,循环显示。

参考文献

[1]罗朝霞,高书莉.CPLD/FPGA设计及应用[M].人民邮电出版社,2007.

12864 篇2

关键词:C51;M12864-7A7;KS0108

中图分类号:TN873+.93文献标识码:A文章编号:1007-9599 (2010)03-0096-02

LCD display with C51 to realize the display driver M12864-7A7

Wang Zhanhai

(Shenyang University,ShenYang110044,China)

Abstract: The paper introduces the C51 programming, which drives LCD display screen M12864-7A7, and points out part of circuit theory diagram and inserted programming code.

Keywords: C51;M12864-7A7;KS0108

随着科技不断发展,工业设备中使用的小型LCD显示屏的外观和显示效果也得到了很大的提高,本文介绍一款非常实用的LCD显示屏M12863-7A7的使用方法,这里采用目前较为流行的C51语言进行编程,该程序可读性好,便于个性化修改,可移植性强,具有一定实用价值。

一、M12864-7A7LCD液晶显示屏介绍

显示角度:6点钟直视;

STN正视反射模式;

显示颜色:黄绿底兰字;

点阵:128点X64点;

点尺寸:0.36(W)X0.36(H)(mm);

点距:0.40(W)X0.40(H)(mm);

二、KS0108控制器介绍

KS0108 液晶显示控制驱动器是一种带有驱动输出的图形液晶显示控制器,它可以直接与8位微处理器相连。

KS0108与微处理器接口信号

三、C51 应用程序

显示控制程序:

//初始化=============================================

void lcd_init(void)

//设置显示起始行为第一行

writecl(0xc0);writecr(0xc0);

//开显示设置

writecl(0x3f);writecr(0x3f);

}

//清屏==============================================

void lcd_clear(void)

{

uchar linpage,linbyte;

uchar linpage1;

for(linpage=1;linpage<=8;linpage++)

{

linpage1=linpage|0x0b8;

writecl(linpage1);writecr(linpage1);

writecl(0x40);writecr(0x40);

for(linbyte=1;linbyte<=64;linbyte++)

{

writedl(0x00); writedr(0x00);

}

}

}

//=====================================================

void writecl(uchar commm)//写指令代码左

{

uchar readlin5;

csa=1;csb=0;rs=0;rw=1;

wait6:lcdaddr=0xff;e08=1;readlin5=lcdaddr;e08=0;readlin5=readlin5&0x80;

if(readlin5==0x80)

{goto wait6;}

rw=0;

lcdaddr=commm;e08=1;e08=0;

}

//=====================================================

void writedl(uchar datatoo)//写显示数据左

{

uchar readlin4;

csa=1;csb=0;rs=0;rw=1;

wait5:lcdaddr=0xff;e08=1;readlin4=lcdaddr;e08=0;readlin4=readlin4&0x80;

if(readlin4==0x80)

{goto wait5;}

rs=1;rw=0;lcdaddr=datatoo;e08=1;e08=0;

}

//=====================================================

void writecr(uchar commm)//写指令代码右

{

uchar readlin2;

csa=0;csb=1;rs=0;rw=1;

wait3:lcdaddr=0xff;e08=1;readlin2=lcdaddr;e08=0;readlin2=readlin2&0x80;

if(readlin2==0x80)

{goto wait3;}

rw=0;lcdaddr=commm;e08=1;e08=0;

}

//=====================================================

void writedr(uchar datatoo)//写显示数据右

{

uchar readlin1;

csa=0;csb=1;rs=0;rw=1;

wait2:lcdaddr=0xff;e08=1;readlin1=lcdaddr;e08=0;readlin1=readlin1&0x80;

if(readlin1==0x80)

{goto wait2;}

rs=1;rw=0;lcdaddr=datatoo;e08=1;e08=0;

}

//=====================================================

/*西文写入

参数:uchar pagen:页号(0x00--0x07)

uchar colun:起始列(0x00--0x7f) 0---127(0--191 only 19264)

uchar ncode:数字代码(0x00--0x09对应BCD数字0--9)

uchar fonte:字体代码0x00--6x8点阵,0x80--8x8点阵

*/

void writexw(uchar pagen,uchar colun,uchar ncode,uchar fonte)

{略}

//=====================================================

/* 中文写入

uchar hzpage //页地址

uchar wcol //起始列

uchar *hzaddr//取点阵开始地址,代码数组起始地址。

uchar starhzad //从第starhzad个汉字开始显示.

uchar hzcount //连续显示的字数

*/

void writezw(uchar hzpage,uchar wcol,uchar *hzaddr,uchar starhzad,uchar hzcount)

{略}

四、结束语

由于不同的应用选用的微控制器也不相同,所以这里给出的程序要根据不同的具体应用加以修改,本人应用的Syncmos SM系列单片机SM59264硬件连接采用间接访问方式,已经调试通过。

参考文献:

[1]李华,MCS-51系列单片机实用接口技术[M].北京:航空航天大学出版社,1999.8

[2]王建校,杨建国,宁改娣,危建国.51系列单片机及C51程序设计[M].北京:科学出版社,2002

[3]马忠梅,马岩,张凯,籍顺心.单片机的C语言应用程序设计[M].北京:航空航天大学出版社,1997.3

[4]杨振江,杜铁军,李群.流行单片机实用子程序及应用实例[M].西安:西安电子科技大学出版社,2002.7

作者简介:

12864 篇3

在许多单片机应用系统中,液晶显示器LCD被广泛地应用于终端显示人机接口中[1,2,3,4]。点阵式LCD不仅可以显示字符、数字,还可以显示图形、曲线及汉字,并能够实现多种动画显示效果,使人机界面更加友好,使用操作更加灵活方便。MGLS12864是市场上比较常见的内藏HD61202控制器的图形液晶显示模块,具有功耗低、体积小、重量轻、结构简单,使用方便的优点。SPCE061A是继SPCE500A等之后凌阳科技推出的一款16位结构的微处理器[5,6]。CPU内核采用16位μ′nSP微处理器芯片,比MCS-51系列单片机集成度高、性价比高、使用更加灵活方便。

本文阐述了点阵式液晶MGLS12864的结构特点及其控制器HD61202的指令系统,并具体设计调试了MGLS12864与单片机SPCE061A的硬件接口电路和软件程序。经过实际运行,该液晶显示模块工作可靠,满足了设计要求。

1 MGLS12864的工作原理

MGLS12864显示模块内置2片HD61202作为列驱动器和一片HD61203作为行驱动器,可显示64 KB的点阵图形。点阵数为64行×128列,每屏可以显示4行×8个汉字(每汉字16×16点阵)。具有64 KB的内部存储器,显示屏共分8页。

1.1 引脚特性

MGLS12864引脚特性[7,8,9]如表1所示。

由表1的引脚特性可知,MGLS12864模块有18个引脚,1,2引脚为两个片选信号,组合功能定义是:CS1,CS2为00时禁止使用,01时选左区,10时选右区,11时未选;3引脚为电源地Vss;4引脚为电源电压Vdd;5引脚为液晶显示驱动电源V0;6引脚为数据指令选择端RS;7引脚为读/写选择信号R/W;8引脚为使能信号E;9~16引脚为数据总线DB0~DB7,可方便同单片机连接;17,18引脚为背光灯提供电源。

1.2 HD61202的指令系统

MGLS12864控制器HD61202内置4 096位(64×64)显示RAM,RAM中每位数据对应LCD屏上一个点的亮、暗状态,HD61202通过一系列操作指令实现对显示屏的控制。HD61202指令系统见表2。

(1) 显示开关设置:

D=1时LCD显示RAM中的内容,D=0时关闭显示;

(2) 显示起始行设置:

L0~L5在0~3FH(0~63行)范围内取值;

(3) 页面地址设置:

P0~P2:设置页号(0~7),显示RAM共64行分8页,每页8行;

(4) 列地址设置:

C0~C5:设置显示列地址0~3FH(0~63行);

(5) 控制器状态:

BUSY=1时内部在工作,BUSY=0时正常状态;ON/OFF=1时显示关闭,ON/OFF=0时显示打开;REST=1时复位状态,REST=0时正常状态。在BUSY和REST状态时,除读状态指令外,其他指令均不对HD61202产生作用。在对HD61202操作之前要查询BUSY状态,以确定是否可以对HD61202进行操作;

(6) 读/写数据指令每执行完一次读/写操作,列地址就会自动加1。

进行读操作前,必须有一次空读操作,紧接着再读数据才会读出所要读的单元中的数据。

2 MGLS12864与SPCE061A的硬件接口电路设计

SPCE061A内置2 KB的SRAM,32 KB的FLASH,32 b可编程输入输出端口,7路10 b的ADC和1路为声音模-数转换器,2路10 b的DAC,2个16 b可编程定时/计数器,可编程音频处理等。SPCE061A工作电压为2.6~3.6 V(CPU),2.6~5.5 V(I/O),CPU时钟为0.32~49.152 MHz[10]。

MGLS12864与SPCE061A单片机的硬件接囗电路如图1所示,SPCE061A的IOA0~IOA7与MGLS12864的DB0~DB7口相连作为数据输入输出用,IOB0~IOB4与MGLS12864的CS1,CS2,E,RS,R/W相连作为单片机对液晶模块的控制端。

3 显示程序设计

本系统程序包括主程序和子程序模块,其中,子程序包括初始化、清全屏子程序、汉字显示子程序、清单个字子程序。主程序通过调用子程序来完成液晶模块的控制。液晶显示程序流程图如图2所示,首先判断显示控制器HD61202是否处于“忙”状态,若不忙先送关显示指令关闭所有显示,接着仍判断“忙”状态,若不忙送开显示指令,为显示做准备,然后调用清全屏子程序、汉字显示子程序,最后根据内容需要调用清单个字子程序。

4 结 语

本文介绍了内置HD61202的液晶显示器MGLS12864在凌阳SPCE061A上的应用,在硬件方面,利用SPCE061A上丰富的I/O资源驱动液晶模块,简化了接口电路设计。在软件方面,使用凌阳μ′nSP IDE开发环境采用C语言编译调试液晶程序,方便可靠。从调试效果来看,采用MGLS-12864提高了系统的可视化程度,达到了设计要求。SPCE061A不仅具有一般控制器的功能,加上其独具特色的语音处理功能,可以开发出许多智能化产品。

参考文献

[1]赵志衡,马金海,李文清,等.89C51与液晶模块MSC-G12864的接口设计[J].微处理机,2006,27(6):12-14.

[2]梁燕,胡浩.OLED显示模块与C8051F单片机的接口设计[J].新器件新技术,2006(1):48-50.

[3]高云红,张杰飞.SED-1330点阵式液晶显示控制器及汉字显示技术[J].昆明理工大学学报,2001,26(2):52-55.

[4]张弘.基于CAN总线的信号采集与处理模块研究[D].南京:南京航空航天大学,2007.

[5]南光群.基于SPCE061A的SPLC501液晶显示模块的应用设计[J].微计算机信息,2007,23(26):304-306.

[6]张平均,陈志华.SPCE061A单片机与液晶显示模块HS12864-1的接口及其编程[J].微计算机信息,2005,21(5):117-118.

[7]远飞.基于单片机和MGLS12864显示模块的液晶显示系统设计[J].电子元器件应用,2009,11(1):22-24.

[8]苟欣璞,吴言荪,梁帅奇.80C196单片机与MGLS12864液晶显示模块的接口[J].仪表技术,2002(6):20-22.

[9]王林兵,童子权.LCD MGLS12864在高速数据采集系统中的应用[J].电子工程师,2002,28(2):42-43.

本文来自 360文秘网(www.360wenmi.com),转载请保留网址和出处

【12864】相关文章:

上一篇:眼睛的妙用下一篇:桩基础的设计与应用

本站热搜

    相关推荐