点阵液晶显示实验报告.docx
《点阵液晶显示实验报告.docx》由会员分享,可在线阅读,更多相关《点阵液晶显示实验报告.docx(34页珍藏版)》请在冰豆网上搜索。
点阵液晶显示实验报告
单片机实验
课程名称:
点阵液晶汉字显示实验
授课班级:
10自动化三班
任课教师:
***
计划学时:
32学时
实验组员:
张腾耀梁钦赵福亮秦菱蔚
郑欢王聪慧
摘要
本文介绍了PROTEUS与Keil联调开发51系列单片机应用系统的方法以及基于PROTEUS环境下的12864液晶显示的仿真设计。
将KeilC开发的程序用Proteus设计的仿真电路中交互运行调试的方法,设计12864的液晶显示汉字图像。
在基于PROTEUS环境下的12864液晶显示的仿真设计中,使用51芯片控制,然后显示在12864显示屏上,最多可显示4行每行8个汉字,并且可以通过按键随时改变12864显示屏上的内容。
通过Proteus环境下的温度报警器的仿真实验证明,在PROTEUS环境下可以完成单片机系统的硬件设计和软件调试,测试系统的性能,在实际应用中可以降低设计成本,缩短开发周期,提高效率。
关键词:
Proteus;仿真;单片机;12864
第一章绪论
1.1实验任务和要求……………………………………………………………..1
1.2基于Proteus的12864显示的研究……………………………………….1
.1.3实验方案及原理…………………………………………………………..1
第二章点阵液晶汉字显示的硬件部分
2.1程序流程图………………………………………………………………….2
2.2硬件电路图…………………………………………………………….
2.3芯片12864的简介………………………………………………………
第三章点阵液晶汉字显示的软件部分
3.1Keil简介…………………………………………………………………….
3.2Proteus简介……………………………………………………………….
3.3Proteus与Keil软件联合仿真的建立…………………………………….
第四章结论
4.1实验总结…………………………………………………………………….
附录1:
点阵液晶汉字显示的源程序
第一章绪论
1.1实验任务和要求
用LCD128x64点阵液晶显示器显示指定汉字,最多可以显示4行、8个/行汉字,通过键盘可以随时改变显示的内容。
准备汉字字库不少于50个汉字。
1.2基于Proteus的12864显示的研究
Proteus是基于SPICE3F5仿真引擎的混合电路仿真软件,不仅能够仿真模拟、数字电路以及模数混合电路,更具特色的是PROTEUS能够仿真基于单片机的电子系统。
PROTEUS不但完全支持MCS-51及其派生系列单片机的设计系统,另外也能仿真基于AVR和PIC系列的单片机系统。
PROTEUS软件可提供的模拟和数字、交流和直流等元器件库多达30多个,共计数千种元器件。
此外,对于元件库中没有的器件,使用者也可依照需要自己创建。
在软件调试方面,PROTEUS自身只带汇编编译器,不支持C语言,但可以与KeilC51集成开发环境连接,将用汇编和C语言编写的程序编译好之后,可以立即进行软、硬件结合的系统仿真,像使用仿真器一样来调试程序[1]。
我们使用Proteus软件从元器件的选取到连线直至电路的调试、分析和软件的编译都是在计算机中完成,即所有的工作先在虚拟环境中进行。
因此,在原理图的设计阶段就可以对设计进行评估,验证所设计电路是否达到设计要求的技术指标,还可以通过改变元器件参数使整个电路性能达到最优化,以节省设计时间与经费,提高设计效率与质量。
1.3实验方案及原理
12864点阵液晶显示模块由128*64个液晶显示点组成的一个128列*64行的阵列。
每个显示点对应一位二进制数,1表示亮,0表示灭。
要显示某个图形或汉字将相应的点阵信息写入到相应的存储单元中,并处理好显示点在液晶屏上的位置(行和列)与其在存储器中的地址之间的关系。
我们使用的液晶显示模块由两片列驱动器构成,也就是说12864液晶屏实际上是由左右两块独立的64*64液晶屏拼接而成,左右半屏驱动电路及存储器分别由片选信号CS1和CS2选择,如选择做半屏,则选择01,右半屏则选择10.每一屏又分为4页,每页4列。
显示汉字则只需写出相应的地址然后查表即可显示出。
第二章点阵液晶汉字显示的硬件部分
2.1程序流程图
2.2硬件电路图
2.3芯片12864的简介
12864是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及128×64全点阵液晶显示器组成。
可完成图形显示,也可以显示8×4个(16×16点阵)汉字。
管脚号
管脚名称
LEVER
管脚功能描述
1
VSS
0
电源地
2
VDD
+5.0V
电源电压
3
V0
-
液晶显示器驱动电压
4
D/I(RS)
H/L
D/I=“H”,表示DB7∽DB0为显示数据
D/I=“L”,表示DB7∽DB0为显示指令数据
5
R/W
H/L
R/W=“H”,E=“H”数据被读到DB7∽DB0
R/W=“L”,E=“H→L”数据被写到IR或DR
6
E
H/L
R/W=“L”,E信号下降沿锁存DB7∽DB0
R/W=“H”,E=“H”DDRAM数据读到DB7∽DB0
7
DB0
H/L
数据线
8
DB1
H/L
数据线
9
DB2
H/L
数据线
10
DB3
H/L
数据线
11
DB4
H/L
数据线
12
DB5
H/L
数据线
13
DB6
H/L
数据线
14
DB7
H/L
数据线
15
CS1
H/L
H:
选择芯片(右半屏)信号
16
CS2
H/L
H:
选择芯片(左半屏)信号
17
RET
H/L
复位信号,低电平复位
18
VOUT
-10V
LCD驱动负电压
19
LED+
-
LED背光板电源
20
LED-
-
LED背光板电源
表1:
12864LCD的引脚说明
在使用12864LCD前先必须了解以下功能器件才能进行编
1.指令寄存器(IR)
IR是用于寄存指令码,与数据寄存器数据相对应。
当D/I=0时,在E信号下降沿的作用下,指令码写入IR。
2.数据寄存器(DR)
DR是用于寄存数据的,与指令寄存器寄存指令相对应。
当D/I=1时,在下降沿作用下,图形显示数据写入DR,或在E信号高电平作用下由DR读到DB7∽DB0数据总线。
DR和DDRAM之间的数据传输是模块内部自动执行的。
3.忙标志:
BF
BF标志提供内部工作情况。
BF=1表示模块在内部操作,此时模块不接受外部指令和数据。
BF=0时,模块为准备状态,随时可接受外部指令和数据。
利用STATUSREAD指令,可以将BF读到DB7总线,从检验模块之工作状态。
4.显示控制触发器DFF
此触发器是用于模块屏幕显示开和关的控制。
DFF=1为开显示(DISPLAYOFF),DDRAM的内容就显示在屏幕上,DFF=0为关显示(DISPLAYOFF)。
DDF的状态是指令DISPLAYON/OFF和RST信号控制的。
5.XY地址计数器
XY地址计数器是一个9位计数器。
高3位是X地址计数器,低6位为Y地址计数器,XY地址计数器实际上是作为DDRAM的地址指针,X地址计数器为DDRAM的页指针,Y地址计数器为DDRAM的Y地址指针。
X地址计数器是没有记数功能的,只能用指令设置。
Y地址计数器具有循环记数功能,各显示数据写入后,Y地址自动加1,Y地址指针从0到63。
6.显示数据RAM(DDRAM)
DDRAM是存储图形显示数据的。
数据为1表示显示选择,数据为0表示显示非选择。
DDRAM与地址和显示位置的关系见DDRAM地址表。
7.Z地址计数器
Z地址计数器是一个6位计数器,此计数器具备循环记数功能,它是用于显示行扫描同步。
当一行扫描完成,此地址计数器自动加1,指向下一行扫描数据,RST复位后Z地址计数器为0。
Z地址计数器可以用指令DISPLAYSTARTLINE预置。
因此,显示屏幕的起始行就由此指令控制,即DDRAM的数据从哪一行开始显示在屏幕的第一行。
此模块的DDRAM共64行,屏幕可以循环滚动显示64行。
第三章点阵液晶汉字显示的软件部分
3.1Keil简介
Keil[11]是由美国KeilSoftware公司出品的单片机开发工具,它是目前最流行的单片机开发工具之一,该软件平台主要包括:
C51交叉编译器、A51宏汇编器、BL51连接/重定位器、LIB51库管理器、OH51IntelHEX格式文件转换器、RTX-51实时操作系统以单片机软件仿真Dscope51,它将项目管理、源代码编译、程序调试等集成到一个功能强大的Windows32平台中,支持51汇编、PLM和C语言的混合编程,功能强大、界面友好、易学易用。
Proteus是由英国Labcenter公司开发的EDA工具软件,它同其他EDA工具软件一样,能进行原理图编辑、PCB自动及手动布线和电路仿真,而它的特点就在于其强大的仿真功能,不仅可以仿真模拟、数字电路,还可以仿真可编程器件,如单片机、PLD等
使用独立的Keil仿真器时,注意事项:
1.仿真器标配11.0592MHz的晶振,但用户可以在仿真器上的晶振插孔中换插其他频率的晶振。
2.仿真器上的复位按钮只复位仿真芯片,不复位目标系统。
3.仿真芯片的31脚(
)已接至高电平,所以仿真时只能使用片内ROM,不能使用片外ROM;但仿真器外引插针中的31脚并不与仿真芯片的31脚相连,故该仿真器仍可插入到扩展有外部ROM(其CPU的
引脚接至低电平)的目标系统中使用。
KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
3.2Proteus简介
Proteus[6]软件是来自英国Labcenterelectronics公司的EDA工具软件,是一个电子设计的教学平台、实验平台和创新平台,涵盖了电工电子实验室、电子技术实验室、单片机应用实验室等的全部功能。
它是一种组合了高级原理布图、混合模式SPICE仿真、PCB设计以及自动布线进行完整的电子设计的软件。
采用Proteus仿真软件进行虚拟单片机实验,可以仿真单片机及其外围器件电路,可用来仿真51系列、AVR、PIC等常用的MCU及其外围电路,具有比较明显的优势,如涉及到的实验实习内容全面、硬件投入少、学生可以自行实验、实验过程
中损耗小、与工程实践最为接近等。
它提供了30多个元件库,数千种元件,涉及到数字和模拟、交流和直流等,并且有丰富的仪表资源。
3.3Proteus与Keil软件联合仿真的建立
Proteus软件与KeiluVision3软件之间可有相互独立和相互联合两种方式进行单片机系统的虚拟仿真。
如用Proteus软件独立进行虚拟仿真,就是用KeiluVision3软件的编辑控制程序,在KeiluVision3软件的OptionforTarget“Target1”选项卡Output中选择CreateHEXFile选项,然后进行编译,生成*.HEX文件如图3-1。
然后,将该文件转到Proteus的ISIS模块中,在所仿真的电路中打开单片机的编辑对话框EditComponent如图3-2,在此窗口中的ProgramFile栏中,选择通过编译生成的*.HEX文件,并在ClockFrequency栏中设置单片机的晶振频率,点击OK完成EditComponent窗口的设置。
最后,点击Proteus软件的仿真启动按钮实现电路的仿真。
Proteus软件与KeiluVision3软件之间的联合虚拟仿真,指KeiluVision3软件将Proteus软件打开的单片机系统看成一个虚拟的硬件电路,使用KeiluVision3软件对程序进行编译、调试时自动连接Proteus软件中的虚拟单片机系统,虚拟单片机系统的状态随KeiluVision3软件对程序调试实时变化。
这样,可实现用Proteus软件与KeiluVision3软件联合虚拟硬件仿真。
要实现联合虚拟硬件仿真就必须对Proteus软件与KeiluVision3软件进行如下设置:
1.安装好Proteus软件和KeiluVision3软件后,安装压缩包中的vdmagdi.exe文件,此时在路径为Keil\c51\bin的文件夹里有VDM51.DLL文件。
2.将压缩包中的Prospice.dll文件复制到Proteus7.1根目录的BIN文件夹中,并将原来的文件覆盖。
3.在Proteus软件中打开要仿真的单片机系统原理图,并在Debug菜单中选择Useremotedebugmonitor。
4.在KeiluVision3软件中打开要进行联合仿真的项目和程序,点击Project并在OptionforTarget“Target1”选项卡Debug中选择UseProteusVSMSimulator。
然后,点击Setting按钮进入HostIP和端口Port的设置,如果在同一台计算机上进行联合仿真,则HostIP地址为127.0.0.1,端口设置为8000。
如果两台计算机通过互联网进行联合仿真,则HostIP地址为这台计算机的网上IP地址,端口也为8000,这样,就可以实现一台计算机的KeiluVision3软件平台通过互联网去连接远程的另一台计算机,并远程控制另一台计算机的Proteus软件实现虚拟仿真。
按上述的步骤进行设置后,Proteus软件和KeiluVision3软件之间即可进行联合仿真。
第四章结论
4.1实验心得体会
通过这次综合实验,我们小组有很多的心得体会,有些关于单片机的,更多的是有关于人与人之间关系方面的。
从开始接触题目到系统的实现,再到设计说明书的完成,每走一步对我来说都是新的尝试与挑战。
这次课程设计经历颇多,受益颇多让我巩固了学过的知识,获得了很多新的知识虽然开始的时候可以说是举步维艰,但是当自己真正的用心去做的时候才发现事情本身也并没有想象中的那么难。
我现在是切实感受到了用心。
我相信我会一直坚守这个信念去指引我接下来的人生道路。
本设计利用Proteus与KEILC51对单片机点阵液晶汉字显示进行了仿真设计.在方案设计选择和芯片的选择上,培养了我们综合应用单片机的能力,对单片机的各个管脚的功能也有了进一步的认识。
还锻炼我们个人的查阅技术资料的能力,动手能力,发现问题,解决问题的能力。
并且我们熟练掌握了有关器件的性能及测试方法。
从设计结果可以看出,利用Proteus进行单片机系统的仿真设计可以极大地简化单片机程序在目标硬件上的调试工作,程序修改、编译后很快能看到效果,大幅度节省制作电路板的时间,非常适合于设计开发,对于提高产品的开发效率、降低开发成本等有重要意义。
感谢老师的辅导,让我有了一个更好的认识,无论是学习还是生活,生活是实在的,要踏实走路。
课程设计时间虽然很短,但我学习了很多的东西,使我眼界打开,感受颇深。
附录1:
点阵液晶汉字显示的源程序
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitCS1=P2^3;//LCD右屏幕
sbitCS2=P2^4;//LCD左屏幕
sbitRS=P2^0;//LCD数据、指令寄存器
sbitRW=P2^1;//LCD读、写操作
sbitE=P2^2;//LCD使能信号,下降沿有效
sbitkey_up=P3^6;
ucharselect,flag;
/*======================自定义汉字字库=================*/
ucharcodehanzi[]={
/*--文字0:
预--*/
/*--宋体12;此字体下对应的点阵为:
宽x高=16x16--*/
0x00,0x00,0xF9,0xFE,0x08,0x20,0x50,0x40,0x21,0xFC,0x11,0x04,0xFD,0x24,0x25,0x24,
0x29,0x24,0x21,0x24,0x21,0x24,0x21,0x44,0x20,0x50,0x20,0x88,0xA1,0x04,0x42,0x02
/*--文字1:
祝--*/
/*--宋体12;此字体下对应的点阵为:
宽x高=16x16--*/
0x20,0x00,0x13,0xFC,0x12,0x04,0xFA,0x04,0x0A,0x04,0x12,0x04,0x13,0xFC,0x38,0x90,
0x54,0x90,0x94,0x90,0x10,0x90,0x11,0x12,0x11,0x12,0x12,0x12,0x14,0x0E,0x18,0x00
/*--文字2:
文--*/
/*--宋体12;此字体下对应的点阵为:
宽x高=16x16--*/
0x08,0x08,0x08,0x08,0x78,0x88,0x09,0x0E,0x08,0x88,0x78,0x08,0x08,0x08,0x08,0x00,
0x40,0x40,0x40,0x20,0x20,0x11,0x0A,0x04,0x0A,0x11,0x10,0x20,0x60,0x20,0x20,0x00,
/*--文字3:
老--*/
/*--宋体12;此字体下对应的点阵为:
宽x高=16x16--*/
0x40,0x44,0x44,0x44,0x44,0x44,0x7F,0xC4,0xC4,0x44,0x64,0x54,0x4E,0x44,0x40,0x00,
0x08,0x08,0x04,0x04,0x02,0x3E,0x49,0x48,0x44,0x44,0x42,0x42,0x40,0x70,0x00,0x00,
/*--文字4:
师--*/
/*--宋体12;此字体下对应的点阵为:
宽x高=16x16--*/
0x00,0xFC,0x00,0x00,0xFF,0x00,0xF2,0x12,0x12,0x12,0xFE,0x12,0x12,0x12,0xF2,0x00,
0x40,0x27,0x10,0x0E,0x01,0x00,0x0F,0x00,0x00,0x00,0xFF,0x00,0x04,0x08,0x07,0x00,
/*--文字5:
春--*/
/*--宋体12;此字体下对应的点阵为:
宽x高=16x16--*/
0x01,0x00,0x01,0x00,0x7F,0xFC,0x01,0x00,0x3F,0xF8,0x02,0x00,0xFF,0xFE,0x08,0x20,
0x10,0x10,0x2F,0xE8,0xC8,0x26,0x08,0x20,0x0F,0xE0,0x08,0x20,0x08,0x20,0x0F,0xE0
/*--文字6:
节--*/
/*--宋体12;此字体下对应的点阵为:
宽x高=16x16--*/
0x08,0x20,0x08,0x20,0xFF,0xFE,0x08,0x20,0x08,0x20,0x00,0x00,0x7F,0xF8,0x02,0x08,
0x02,0x08,0x02,0x08,0x02,0x08,0x02,0x50,0x02,0x20,0x02,0x00,0x02,0x00,0x02,0x00
/*--文字7:
快--*/
/*--宋体12;此字体下对应的点阵为:
宽x高=16x16--*/
0x70,0x00,0xFF,0x08,0xB0,0x88,0x88,0x88,0xFF,0x88,0x88,0x88,0xF8,0x80,0x80,0x00,
0x00,0x00,0xFF,0x00,0x80,0x40,0x30,0x0E,0x01,0x06,0x08,0x30,0x60,0xC0,0x40,0x00,
/*--文字8:
乐--*/
/*--宋体12;此字体下对应的点阵为:
宽x高=16x16--*/
0x00,0x00,0x40,0xFC,0x44,0x44,0x44,0x46,0xFA,0x42,0x43,0x43,0x42,0x40,0x00,0x00,
0x00,0x20,0x18,0x0C,0x07,0x12,0x20,0x40,0x3F,0x00,0x00,0x02,0x0C,0x38,0x10,0x00,
/*--文字9:
组--*/
/*--宋体12;此字体下对应的点阵为:
宽x高=16x16--*/
0x00,0x20,0x38,0xA7,0x62,0x18,0x00,0xFE,0x22,0x22,0x22,0x22,0xFE,0x00,0x00,0x00,
0x00,0x22,0x23,0x22,0x12,0x12,0x20,0x3F,0x22,0x22,0x22,0x22,0x3F,0x20,0x20,0x00,
/*--文字10:
员--*/
/*--宋体12;此字体下对应的点阵为:
宽x高=16x16--*/
0x00,0x00,0x00,0xE0,0x2F,0x29,0x29,0xA9,0x29,0x29,0x29,0x2F,0xE0,0x00,0x00,0x00,
0x00,0x00,0x80,0x8F,0x40,0x20,0x18,0x07,0x08,0x10,0x20,0xE0,0x4F,0x00,0x00,0x00,
/*--文字11:
--*/
/*--宋体12;此字体下对应的点阵为:
宽x高=16x16--*/
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,
/*--文字12:
张--*/
/*--宋体12;此字体下对应的点阵为:
宽x高=16x16--*/
0x01,0x00,0xF9,0x08,0x09,0x08,0x09,0x10,0x09,0x20,0x79,0x40,0x41,0x00,0x47,0xFE,
0x41,0x40,0x79,0x20,0x09,0x20,0x09,0x10,0x09,0x08,0x09,0x44,0x51,0x82,0x21,0x00
/*--文字13:
腾--*/
/*--宋体12;此字体下对应的点阵为:
宽x高=16x16--*/
0x02,0x48,0x79,0x48,0x49,0x50,0x4F,0xFC,0x48,0x40,0x7F,0xFE,0x49,0x10,0x4A,0x08,
0x4D,0xF6,0x78,0x10,0x49,0x10,0x49,0xFC,0x48,0x04,0x4B,0xE4,0x48,0x14,0x98,0x08
/*--文字14:
耀--*/
/*--宋体12;此字体下对应的点阵为:
宽x高=16x16--*/
0x10,0x00,0x11,0xDC,0x90,0x44,0x55,0x54,0x58,0xCC,0x11,0x54,0xFC,0x00