收藏 分销(赏)

基于51系列单片机最小系统的液晶显示.doc

上传人:二*** 文档编号:4514243 上传时间:2024-09-26 格式:DOC 页数:15 大小:291KB
下载 相关 举报
基于51系列单片机最小系统的液晶显示.doc_第1页
第1页 / 共15页
亲,该文档总共15页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、. . . . 创新设计报告 基于51系列单片机最小系统的液晶显示 学 院: 机电与自动化学院 专业班级: 电气自动化技术0802 学生: 刚 学生学号:指导教师:裕安 同组设计者: 吴勇 (课程设计时间:2011年03月03日2011年03月13日) 华中科技大学武昌分校目录1.设计题目 022.设计任务与要求 023.系统硬件电路设计023.1设计电路原理图023.2主要元器件清单033.3 OMC12864-4(T6963c)的简介034.系统软件设计054.1程序流程图054.2子程序功能介绍064.3完整程序与其功能注释065.系统调试故障分析126.调试结果与设计任务分析137.课

2、设收获与建议13参考文献 131.设计题目 基于51单片机最小系统板实现“液晶显示汉字、数字、英文”2.设计任务与要求 任务:最小系统板实现“液晶显示汉字、数字、英文”;要求:对液晶显示操作技能训练;学会运用Protell软件;绘制软件流程图、编写并调试程序、详细注释软件功能;对系统性能指标进行分析并提出改进方案;作品演示与讲解(硬件、软件、调试、改进、)3系统硬件电路设计(含文字介绍、电路原理图)3.1用Protell软件绘制电路原理图采用的是直接访问方式。如图(1) 直接访问方式是把置T6963C控制器的液晶显示模块作为存储器或I/O设备直接挂在计算机的总线上。模块的数据线接计算机的数据总

3、线上,片选与寄存器选择信号线由算机的地址总线提供,读和写操作由计算机的读写操作信号控制。图(1)图(1)中的引脚说明OCM12864-4与STC89C52RC接口: P0.0-0.7 D0-7 GND /CE P3.7 /RD VCC /RESET P3.6 /WR GND FG P2.0 C/D 3.2本设计所要用到的主要元器件:金鹏OMC12864-4液晶显示模块(主控芯片T6963C);JZ-M2单片机最小系统(采用STC89C52RC 51系列单片机);3.3关于OMC12864-4(T6963c)的简介3.3.1管脚定义见下表(1):表(1)3.3.2关于主控芯片T6963C说明:

4、结构特点:藏T6963C 的液晶显示模块上已经实现了T6963C 与行、列驱动器与显示缓冲区RAM 的接口,同时也已用硬件设置了液晶屏的结构(单双屏、数据传输方式、显示窗口长度、宽度等等。我们常用的液晶显示模块一般都是单屏结构,因此我们这里只讨论单屏结构的液晶显示模块。藏T6963C 的单屏结构点阵图形液晶显示模块的方框图如图(2):图(2)T6963C 是点阵式液晶图形显示控制器它能直接与8 位微处理器接口;T6963C 的字符字体可由硬件或软件设置,其字体有4 种5X8 、6X8 、7X8、8X8; T6963C 的占空比可从1/16 到1/128;T6963C 可以图形方式、文本方式与图

5、形和文本合成方式进行显示,以与文本方式下的特征显示,还可以实现图形拷贝操作等等; T6963C 具有部字符发生器CGROM,共有128 个字符。T6963C 可管理64K显示缓冲区与字符发生器CGRAM,并允许MPU 随时访问显示缓冲区,甚至可以进行位操作。3.3.3主控芯片T6963C指令说明:如表(2)命令代码(bin)代码(hex)参数D1参数D2功能StatusS0-S7-读状态Reg Seting0010000121HXAddressyAddress设光标指针0010001022H偏移量00H设偏移量寄存器0010010024H低位地址高位地址设地址指针 Set ControlWor

6、d0100000040H低位地址高位地址设文字区起始地址0100000141H字节数00H设文字区宽度0100001042H低位地址高位地址设图形区起始地址0100001143H字节数00H设图形区宽度Mode set1000*00080H/88HOR*=0部字符发生器*=1外部字符发生器1000*00181H/89HXOR1000*01183H/8BHAND1000*10084H/8CH文字属性Display Molde1001000090H显示关1001xx1092H光标显示,闪烁关1001xx1193H光标显示,闪烁开100101xx94H文字开,图形关100110xx98H文字关,图形

7、开100111xx9BH文字开,图形开Cursor Pattern10100D2-0A0H-A8H光标高度Data AutoRead/write10110000B0H设置数据自动写10110001B1H设置数据自动读10110010B2H退出自动读写DataRead/write11000000C0H显示数据写数据,地址指针自加111000001C1H-读数据,地址指针自加111000010C2H显示数据写数据,地址指针自减111000011C3H-读数据,地址指针自减111000100C4H显示数据-写数据,地址指针不变11000101C5H-读数据,地址指针不变Screen peek1110

8、0000E0H-屏幕读取Screen copy11101000E8H-屏幕复制BitSet/reset11110xxxx-Bit Clear11111xxxx-Bit Set表(2)4. 系统软件设计(含程序流程图,子程序功能介绍、程序功能注释)4.1程序流程图,如图(3) 读状态字, 闲吗? N Y 液晶模块初始化 填屏(清屏) 创建CGRAM图(3)写英文,写汉字写数字等4.2子程序功能介绍LCD_Write_Data()写数据子LCD_Write_Command0()写无参数命令字LCD_Write_Command1()写单参数命令字LCD_Write_Command2()写双参数命令子

9、void LCD_T6963_Ini()液晶模块初始化工作void LCD_Fill_All() LCD填充.对LCD的空间填入同一个数据LCD_Dis_Chi()在主函数中,只要调用这几个函数,就能实现显示的文字显示LCD_Dis_Str()能利用T9693C部字符发生器CGROM,在液晶屏上显示西文数组LCD_Mak_Cgr()创建CGRAM,CGRAM中包含能用文本方式显示的自定义字符LCD_DIS_CHI()利用CGRAM自定字符,以文本方式形式输出4.3完整程序与其功能注释*说明: 本程序为T6963C的驱动功能: 能对OMC12864-4液晶模块硬件进行定义;定义了对液晶模块最层的

10、操作函数, 如:,读状态字函数,读数据函数,写无参数命令字函数,写单参数命令字函数, 字双参数命令字函数,写数据函数时间: 2011/01/010 修改时间:2011/01/12 HUSTWb wuyong*/*说明:本程序主要用来进行文本显示,实现的功能有:显示英文数组,中文数组,在主函数中可以直接调用的函数有:T6963C初始化程序,液晶屏清零程序显示英文数组,中文数组.实现了程序的封装. 修改日间:2011/01/12T6963C命令的定义*/指针设置指令#define LCD_CUR_POS 0X21 /光标位置设置(只有设置到有效显示地址并打开显示才看 到),双参数(D1水平位置,D

11、2垂直位置)#define LCD_CGR_POS 0X22 /CGRAM偏置地址设置(用来增加自己的符号),双参数(D1 低5位有效,D2=00)#define LCD_ADR_POS 0x24 /地址指针位置(设置读写操作打针)/显示区域设置指令#define LCD_TXT_STP 0X40 /文本区首址(从此地址开始向屏幕左上角显示字符)#define LCD_TXT_WID 0X41 /文本区宽度(设置显示宽度,N/6式N/8,其中N为X轴的点 数)#define LCD_GRH_STP 0X42 /图型区首址(从此地址开始向屏幕左上角显示点,(有等进一步确认)为文本方式显示时,显示

12、为文本显示特性#define LCD_GRH_WID 0X43 /图形区宽度(设置显示宽度,N/6式N/8,其中N为X轴的点 数)/显示方式设置指令,当CG(D3)为0启用CGROM#define LCD_MOD_OR 0X80 /显示方式:逻辑或#define LCD_MOD_XOR 0X81 /显示方式:逻辑异或#define LCD_MOD_AND 0x83 /显示方式:逻辑与#define LCD_MOD_TCH 0x84 /显示方式:文本/显示开关设置指令,(D0,D1,D2,D3)=1/0 (光标闪烁,光标显示,文本显示 图形显示)启用/禁用#define LCD_DIS_SW 0

13、x90 /显示开关设置/光标开头设置指令#define LCD_CUR_SHP 0xA0 /光标型形状选择:0xA0-0xA7代表光标占的行数/自动读写设置指令#define LCD_AUT_WR 0xB0 /自动写设置#define LCD_AUT_RD 0xB1 /自动读设置#define LCD_AUT_OVR 0xB2 /自动读写结束/数据一次读写设置指令#define LCD_INC_WR 0xC0 /数据一次写,地址加1#define LCD_INC_RD 0xC1 /数据一次读,地址加1#define LCD_DEC_WR 0xC2 /数据一次写,地址减1#define LCD_

14、DEC_RD 0xC3 /数据一次读,地址减1#define LCD_ZER_WR 0xc4 /数据一次写,地址不变#define LCE_ZER_RD 0xc5 /数据一次读,地址不变/屏读设置指令#define LCD_SCN_RD 0xE0 /屏读,屏读只能在图形显示区;该指令是把屏上的容 取出来作为数据使用./屏拷贝#define LCD_SCN_CP 0xE8 /屏拷贝,该指令将屏上当前地址指针(图形)处开妈的一行 合成显示容拷贝到相对应的图形显示区的一级单元/位操作指令#define LCD_BIT_OP 0xFF /该指令可将显示缓冲区单无的某位清零或置位.D0-D1- 定义D0

15、-D7位;D3-1为置位,D3-0为复位unsigned char xdata LCD_DAT_ADD _at_ 0x8000; / C/D-P2.0unsigned char xdata LCD_COM_ADD _at_ 0x8100; / C/D-P2.0/*函数名称:LCD_Write_Data()功 能:写数据子程序,将数据输入T6963C入口参数:data 想要写入的数据出口参数:无说 明:在写命令之前,状态位D0(STA0),D1(STA1)必须全为1*/void LCD_Write_Data(unsigned char data1) while(LCD_COM_ADD)&0x03

16、)!=0x03); LCD_DAT_ADD=data1;/*函数名称:LCD_Write_Command0()功 能:写无参数命令字程序,将T6963C对应的指令写入,没有参数入口参数:commond 想要写入的命令字出口参数:无说 明:在写命令之前,状态位D0(STA0),D1(STA1)必须全为1*/void LCD_Write_Command0(unsigned char command) while(LCD_COM_ADD)&0x03)!=0x03) ; LCD_COM_ADD=command;/*函数名称:LCD_Write_Command1()功 能:写单参数命令字程序,将T696

17、3C对应的指令写入入口参数:commond 想要写入的命令字出口参数:无说 明:先送数据,再送命令字*/void LCD_Write_Command1(unsigned char command,unsigned char data1) LCD_Write_Data(data1);LCD_Write_Command0(command);/*函数名称:LCD_Write_Command2()功 能:写双参数命令子程序,将T6963C对应的指令写入入口参数:commond 想要写入的命令字出口参数:无说 明:先送数据,再送命令字*/void LCD_Write_Command2(unsigned

18、char command,unsigned char data1,unsigned char data2) LCD_Write_Data(data1);LCD_Write_Data(data2);LCD_Write_Command0(command); /*函数名称:LCD_T6963_Ini()功 能:液晶模块初始化工作入口参数:无出口参数:无说 明:初始化工作的主要要完成对文本方式的RAM起始地址的设定,文本模式的显示 宽度,图形方式的RAM的起始地址,以与其宽度;设置显示方式等工作.*/ void LCD_T6963_Ini(void) LCD_Write_Command2(LCD_TX

19、T_STP,0x00,0x00); /设置文本方式RAM起始地址LCD_Write_Command2(LCD_TXT_WID,0x20,0x00); /设置文本方式的宽度,宽 度为N/6或N/8)LCD_Write_Command2(LCD_GRH_STP,0x00,0x08); /设置图形方式RAM起始地 址LCD_Write_Command2(LCD_GRH_WID,0x20,0x00); /设置图形方式的宽度,宽 度为N/6或N/8) LCD_Write_Command0(LCD_CUR_SHP|0x08); /设置光标的形状 LCD_Write_Command0(LCD_MOD_OR)

20、; /设置显示方式为逻辑或方 式 LCD_Write_Command0(LCD_DIS_SW|0x94); /设置文本显示方式/*函数名称:LCD_Fill_All()功 能:LCD填充.对LCD的空间填入同一个数据入口参数:dat出口参数:无说 明:填充,主要可用来对液晶进行清屏,只对其填入使屏为白的字就行了*/void LCD_Fill_All(unsigned char dat) unsigned int i; LCD_Write_Command2(LCD_ADR_POS,0x00,0x00); /置地址指针 LCD_Write_Command0(LCD_AUT_WR); /自动写 fo

21、r(i=0;i32767;i+) while(LCD_COM_ADD&0x08)!=0x08) LCD_DAT_ADD=dat; /写数据 LCD_Write_Command0(LCD_AUT_OVR); /自动写关LCD_Write_Command2(LCD_ADR_POS,0x00,0x00); /重置地址指针 /*显示英文数组函数名称:LCD_Dis_Str()功 能:能利用T9693C部字符发生器CGROM,在液晶屏上显示西文数组入口参数:x,y,*wordcode,*wordattr,wordlongth出口参数:无说 明:x,y对应是字符在屏上的字符坐标*/LCD_Dis_Str(

22、unsigned char x,unsigned char y,unsigned char *wordcode,unsigned char *wordattr,unsigned char wordlongth) unsigned char i,xlable,ylable; unsigned int dataadd; dataadd=y*30+x; xlable=dataadd&0xff; ylable=dataadd/256; /计算字符RAM的地址 LCD_Write_Command0(LCD_DIS_SW|0x08); /设置设置显示方式 LCD_Write_Command0(LCD_DI

23、S_SW|0x02); LCD_Write_Command0(0X8c); /设置为文本特征显示方式 LCD_Write_Command2(LCD_ADR_POS,(xlable+0),(ylable+0);/设置地址 for(i=0;iwordlongth;i+)/写字符代码,利用部GCROM LCD_Write_Command1(LCD_INC_WR,wordcodei); LCD_Write_Command2(LCD_ADR_POS,0x00,0x08);/写字符对应的特征位 for(i=0;iwordlongth;i+) LCD_Write_Command1(LCD_INC_WR,wo

24、rdattri); /*建立CGRAM函数名称:LCD_Mak_Cgr()功 能:创建CGRAM,CGRAM中包含能用文本方式显示的自定义字符入口参数:cgramnum出口参数:无说 明:在CGRAM中写入字符点阵*/LCD_Mak_Cgr(unsigned char *cgram,unsigned char cgramnum)unsigned int i;LCD_Write_Command2(LCD_CGR_POS,0x03,0x00);/设置CGRAM偏置地址LCD_Write_Command2(LCD_ADR_POS,0x00,0x1c);/设置RAM地址指针 LCD_Write_Com

25、mand0(LCD_AUT_WR);/设置自动写方式for(i=0;icgramnum*16;i+) /写字符点阵while(LCD_COM_ADD)&0X08)!=0X08);LCD_DAT_ADD=cgrami;LCD_Write_Command0(LCD_AUT_OVR);/自动写结束/*显示中文数组函数名称:LCD_DIS_CHI()功 能:利用CGRAM自定字符,以文本方式形式输出入口参数:x,y,*chinacode,codelongth出口参数:无说 明:在屏上输出汉字数组*/LCD_Dis_Chi(unsigned char x,unsigned char y,unsigned

26、 char *chinacode,unsigned char codelongth)unsigned char i,xlable,ylable;unsigned int dataadd; LCD_Write_Command0(0x94); /设置设置显示方式LCD_Write_Command0(LCD_MOD_TCH); /设置为文本特征显示方式 for(i=0;icodelongth;i+)if(x+2*i)%30=0)/换行时,地址要加30,否则汉字 会重叠y+;dataadd=y*30+(x+2*i);/计算i字符RAM地址xlable=dataadd&0xff;ylable=dataa

27、dd/8;/计算字符RAM的地址LCD_Write_Command2(LCD_ADR_POS,xlable,ylable);/设置址LCD_Write_Command1(LCD_INC_WR,chinacodei);/左上LCD_Write_Command1(LCD_INC_WR,chinacodei+2);/右上LCD_Write_Command2(LCD_ADR_POS,(xlable+32),ylable);/下部分地址/LCD_Write_Command1(LCD_INC_WR,chinacodei+1);/左下LCD_Write_Command1(LCD_INC_WR,chinaco

28、dei+3);/右上 code unsigned char CGRAM=0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

29、,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x08,0x08,0x18,0x29,0x4A,0x08,0x09,0x01,0xFF,0x01,0x01,0x01,0x01,0x01,0x40

30、,0x48,0x58,0x60,0xC0,0x40,0x44,0x44,0x3C,0x00,0xFE,0x00,0x00,0x00,0x00,0x00, 0x01,0x01,0x01,0x7F,0x41,0x41,0x41,0x41,0x7F,0x41,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x04,0xFE,0x04,0x04,0x04,0x04,0xFC,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x0E,0xF8,0x08,0x08,0xFE,0x08,0x1C,0x1A,0x29,0x28,0x48,0x8

31、8,0x08,0x08,0x08,0x10,0x10,0x90,0x50,0x10,0x90,0x50,0x14,0x1E,0xF0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x13,0xFC,0x10,0x10,0x13,0x1A,0x31,0xD1,0x10,0x10,0x10,0x51,0x26,0x40,0x40,0x48,0xFC,0x40,0x40,0x40,0xF8,0x08,0x10,0x10,0xA0,0x40,0xB0,0x0E,0x04,0x01,0x01,0x01,0x01,0x01,0xFF,0x01,0x02,0x0

32、2,0x02,0x04,0x04,0x08,0x10,0x60,0x00,0x00,0x00,0x00,0x00,0x04,0xFE,0x00,0x80,0x80,0x40,0x40,0x20,0x10,0x0E,0x04,0x00,0x22,0x11,0x11,0x00,0x7F,0x40,0x80,0x1F,0x00,0x01,0xFF,0x01,0x01,0x01,0x05,0x02,0x08,0x08,0x10,0x20,0xFE,0x02,0x04,0xE0,0x40,0x84,0xFE,0x00,0x00,0x00,0x00,0x00, /*华中科技大学*/0x00,0x00,0x

33、00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x

34、00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,;code unsigned charCHINACODE=0x80,0x84,0x88,0x8c,0x90,0x94,0x98,0x9c 0x0a0,0x0a4,0x0a8,0x0ac,0x0b0,0x0b4,0x0b8,0x0bc ;UnsignedcharWORDCODE17=0x57,0x45,0x4C,0x43,0x4F,0x4D,0x45,0x00,0x39,0x4F,0x 55,; unsignedcharWORDATTR17=0x000,/*0x00D,0x00D,0x00D,0x00D,0x00D,0x00D,0x0D,0x00D, 0x00D,0x00D*/ ; main() LCD_Fill_All(0x00); /全屏清零LCD_T6963_Ini(); /初始化LCD_Dis_Str(0,0,WORDCODE,WORDATTR,16);LCD_Mak_Cgr(CGRAM,32);LCD_Di

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服