基于单片机AT89C52的LCD设计.docx_第1页
基于单片机AT89C52的LCD设计.docx_第2页
基于单片机AT89C52的LCD设计.docx_第3页
基于单片机AT89C52的LCD设计.docx_第4页
基于单片机AT89C52的LCD设计.docx_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机课程设计目录一、概述31.1课题的背景及目的31.2课题的内容要求及研究方法3二、课题设计42.1基本原理42.2原理框图42.3元器件清单及仿真电路图5三、硬件模块功能介绍63.1单片机(AT89C52)功能介绍63.2液晶显示器LCD(128*64点阵图形型)功能介绍73.3锁存器(74HC373)功能介绍103.4与门(74HC00)功能介绍11四、软件设计124.1代码附录124.2 Proteus软件介绍174.3Keil C51软件介绍184.4Proteus与Keil C相结合的设计18五、总结195.1个人心得体会19参考文献20一、概述1.1课题的背景及目的随着计算机科学与技术的飞速发展,计算机的应用已经渗透到国民经济与人们生活的各个角落,正在日益改变着传统的人类工作方式和生活方式,而单片机技术又作为计算机技术中的一种独立分支,有着性价比高,集成度高,体积小,可靠性高,控制功能强大,低功耗,低电压,便于生产,便于携带等特点,所以得到越来越广泛的应用。当今是一个信息化的时代,信息的重要性是不言而喻的,获取手段显得尤其重要,人们所接受的信息有70%来自于人的视觉,无论用何种方式获取的信息最终需要有某种显示方式来表示。在某种显示技术中,以液晶显示器LCD(Liquid Crystal Display)为代表的平板显示器发展最快、应用最广,LCD液晶显示器是一种低功耗液晶显示器件,工作电流小,适合于仪表和低功耗系统,常用的有笔划型液晶显示器、点阵字符型液晶显示器和图形点阵式液晶显示器,本文使用AT89C52单片机主要设计了一款应用于学校的LED点阵图形型液晶显示器。LCD液晶显示器的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就显示黑色,这样就显示出图形,液晶显示器适用于大规模电路驱动,易于实现全彩色显示的特点。通过它可以进一步学习及掌握及电路原理及使用方法。1.2课题的内容要求及研究方法设计AT89C52单片机控制系统,使其在128*64点阵LCD屏幕上显示“河南理工大学”六个字符,且向上滚动显示。本文先按照设计的一般步骤,先选定用单片机的实现的方案,了解设计要求再分别从硬件系统设计和软件系统设计两个宏观方面着手,然后查阅相关资料,硬件方面,熟练单片机的基本工作原理,AMPIRE128*64点阵LCD内置的KS0108控制器指令功能等,画出图形显示程序流程图和单元电路原理图,在对其进行做简单说明。软件方面,熟悉编程语言,21查找相关子程序,熟悉使用Proteus ISIS仿真软件及Keil uVision2开发软件,把元器件按电路原理图安装,最后对硬件和软件系统进行调试和仿真。二、课题设计2.1基本原理本设计基于单片机技术原理,以单片机芯片AT89C52最为核心控制器和以单片机扩展的LCD显示器用来设计出显示汉字且向上滚动的系统,通过硬件电路的制作及软件程序的编写,整个设计包括两大部分:硬件设计和软件设计。以单片机及LCD为核心,配以一定的元器件及外围电路和软件,硬件是整个系统的的基础,软件部分则要合理、充分的支持和使用系统的硬件,从而完成系统所要完成的任务。该显示系统主要由控制模块,液晶显示模块,锁存模块及输入输出模块等,能够正确的显示出“河南理工大学”六个字符且向上滚动。开始2.2原理框图LCD初始化向LCD显示屏写字符字符滚动设计结束128*64点阵LCD的图形显示程序流程图2.3元器件清单及仿真电路图AT89C52:单片机;RES:电阻;CRYSTAL:12MZ晶振;CAP、CAP-ELEC:电容、电解电容;74HC373:锁存器;74HC00:与门;AMPIRE 128*64:液晶显示屏。128*64点阵LCD的图形显示Proteus仿真电路图三、硬件模块功能介绍3.1单片机(AT89C52)功能介绍 AT89C52主要提供以下性能:1、与MCS_51单片机产品兼容2、8K字节在系统可编程Flash闪速存储器3、1000次擦写周期4、全静态操作:0HZ33HZ5、三级加密程序存储器6、32个I/O口线7、三个16位定时器/计数器8、八个中断源9、全双工UART串行通道10、低功耗空闲和掉电模式11、掉电后可唤醒12、看门狗定时器13、双数据指针其功能特性描述:256字节内部RAM,3个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口。它的内部集成了4个可编程的并行I/O接口(P0P3),每个接口电路都具有锁存器和驱动器,输入接口电路具有三态门控制。P0P3口同RAM统一编址,可以当作特殊功能寄存器SFR来寻址。在实际应用中P03口在开机或复位时均呈高电平,本设计主要接P0口,P0口是一个8位漏极开路型双向I/O口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑电平,对端口P0写“1”时,引脚可作为高阻抗输入端用,当访问外部程序和数据存储器时,P0口线分时转换地址(低8位)和数据总线复用,在这种模式下,P0具有内部上拉电阻。在程序校验时,输出指令字节,程序校验时,需要外部上拉电阻。(如图) AT89C52原理图3.2液晶显示器LCD(128*64点阵图形型)功能介绍点阵图形型是在一平板上排列多行多列的矩阵式的晶格点,点的大小可根据显示清晰度来设计,可显示数字、字母、汉字、图像、甚至动画。以AMPIRE128*64为例来说明LCD128*64接口应用。AMPIRE128*64内置KS0108型图形液晶模块驱动,其引脚功能如表所示LCD 128*64引脚功能表引脚号引脚名称电平引脚功能描述1CS1/CS2H/L片选信号,芯片1/芯片2控制液晶左半屏/右半屏2GND0v电源地3Vcc+5v电源正4V0对比度(亮度)调整5RSH/LRS=”H”,表示DB7DB0为显示数据RS=”L”,表示DB7DB0为显示指令数据6R/WH/LR/W=”H”,E=”H”,数据被读到DB7DBR/W=”H”,E=”HL”, DB7DB0的数据被写到IR或DR7EH/L使能信号8DB0DB7H/L三态数据线9RSTH/L复位端,低电平有效10VoutLCD驱动电压KS0108控制器指令功能如表所示指令名称控制状态指令代码RSR/WD7D6D5D4D3D2D1D0显示开关设置000011111D显示起始行设置0011L5L4L3L2L1L0页面地址设置0010111P2P1P0列地址设置0001C5C4C3C2C1C0读取状态设置00BUSY0ON/OFFRESET0000写显示数据10数据读显示数据11数据KS0108控制器指令功能表指令功能具体分析:读状态字格式:BUSY0ON/OFFRESET0000BUSY=1:表示KS0108正在处理计算机发来的指令或数据。此时接口电路被封锁,不能接受除读状态字以外的任何操作。BUSY=0表示KS0108接口控制电路已处于“准备好”状态,等待计算机的访问。ON/OFF:表示当前的显示状态。ON/OFF=1表示关显示状态;ON/OFF=0表示开显示状态。RESET:表示当前KS0108的工作状态,即反映RST端的电平状态。当RST为低电平状态时,KS0108处于复位工作状态,RESET=1。当RST为高电平状态时,KS0108为正常工作状态,RESET=0。在占领设置和数据读写时要注意状态字中的BUSY标志。只有在BUSY=0时,计算机对KS0108的操作才能有效。因此计算机在每次对KS0108操作之前,都要读出来状态字判断BUSY是否为“0”,若不为“0”,则计算机需要等待,直至BUSY=0为止。显示开关格式:0011111D该指令设置显示开关/触发器的状态,由此控制显示数据锁存器正常工作,从而控制显示状态。D位为显示开/关的控制位。当D=1为显示设置,显示数据锁存器正常工作,显示屏上呈现所需结果。此时在状态字中ON/OFF=0。当D=0为关显示设置,显示数据锁存器被清0,显示屏上不显示状态,但显示存储器并没有被破坏,在状态组中ON/OFF=1。显示起始行设置格式:11L5L4L3L2L1L0该指令设置了显示起始行寄存器的内容。KS0108有64行显示的管理能力,该指令中L5L0为显示起始行的地址,取值在03FH(164)范围内,它规定了显示屏上最顶一行所对应的显示存储器的行地址。如果定时间隔地,等间距地修改(如加一或减一)显示起始行寄存器的内容,则显示屏将呈现显示内容向上或向下平滑滚动的显示效果。页面地址设置格式:10111P2P1P0该指令设置了页面地址X地址寄存器的内容。KS0108将显示寄存器分成了8页,指令代码中P2P0就是要确定当前所要选择的页面地址,取值范围为07H,代表第18页。该指令规定了以后的读/写操作将在哪一个页面上进行。列地址设置格式:01C5C4C3C2C1C0该指令设置了Y地址计数器的内容,C5C0=03FH(164)代表某一页面上的某一单元地址,随后的一次读或写数据将在这个单元上进行。Y地址计数器具有自动加一功能,在每一次读/写数据后它将自动加一,所以在连续进行读/写数据时,Y地址计数器不必每次都设置一次。 页面地址的设置和列地址的设置将显示存储器单元唯一地确定下来,为后来的显示数据的读/写作了地址的选通。写显示数据该操作将8位数据写入先前已确定的显示存储器的单元内,操作完成后列地址计数器自动加一。读显示数据该操作将KS0108接口部的输出寄存器内容读出,然后列地址计数器自动加一。AMPIRE128*64 LCD3.3锁存器(74HC373)功能介绍常用的8D锁存器,常用作地址锁存和I/O输出,可以用74HC373,74HC373是高速CMOS器件,有三态输出的八D透明锁存器,共有54/74S373和54/74LS373两种线路,373的输出端O0O7可直接与总线相连。当三态允许控制端OE为低电平时,O0O7为正常逻辑状态,可用来驱动或总线。当OE为高电平时,O0O7呈高阻态,既不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响。当锁存器允许端LE为高电平时,O随数据D而变。当LE为低电平时,O被锁存在已建立的数据电平。当LE端施密特触发器的输入滞后作用,使交流和直流噪声抗扰度被改善400mV。74HC373原理图3.4与门(74HC00)功能介绍与门又称“与电路”。执行“与”预算的基本门电路。有几个输入端,只有一个输出端。当所有的输入同时为“1”时,输出才为“1”电平,否者输出为“0”电平。与的含义是:只有当决定一件事情的所有条件都具备时,这个事件才会发生。逻辑与也称逻辑乘。74HC00是一款高速CMOS器件,实现了2输入与非门功能。(如图)与门表达式:F=AB“与”门用“AND”表示ABZ000010100111四、软件设计4.1代码附录typedef unsigned int uint;# include # define LLCD_CMD_WR PBYTE0x10 /LCD左半部分写命令 rs=0 wr=0# define LLCD_CMD_RD PBYTE0x11 /读命令rs=0 wr=1# define LLCD_DATA_WR PBYTE0x12 /写数据rs=1 wr=0# define LLCD_DATA_RD PBYTE0x13 /读数据rs=1 wr=1# define RLCD_CMD_WR PBYTE0x20 /LCD右半部分的读写命令# define RLCD_CMD_RD PBYTE0x21# define RLCD_DATA_WR PBYTE0x22# define RLCD_DATA_RD PBYTE0x23sbit busy=P07;code uchar hanzi=0x00,0x00,0x40,0x88,0x18,0x30,0xA0,0xA0,0xA0,0x90,0x10,0xF0,0x10,0x10,0x10,0x00,0x00,0x00,0x00,0x30,0x0C,0x00,0x03,0x02,0x02,0x03,0xC0,0x7F,0x00,0x00,0x00,0x00,/*河*/0x00,0x00,0x00,0x00,0x00,0x20,0x20,0xF0,0x2C,0x10,0x90,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x01,0x7F,0x01,0x15,0x17,0x7C,0x0B,0x09,0x08,0xC0,0xE0,0x1F,0x00,0x00,/*南*/0x00,0x00,0x20,0x20,0xE0,0x20,0x70,0x90,0x10,0xF0,0x48,0x08,0xF8,0x10,0x00,0x00,0x00,0x00,0x20,0x11,0x1F,0x89,0x81,0x83,0x52,0x7F,0x4A,0x4A,0x41,0x40,0x40,0x00,/*理*/0x00,0x00,0x00,0x00,0x00,0x40,0x20,0x20,0xE0,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x10,0x1F,0x10,0x10,0x10,0x10,0x10,0x10,0x00,/*工*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x41,0x21,0x1D,0x07,0x08,0x10,0x60,0x40,0x40,0x40,0x00,0x00,/*大*/0x00,0x00,0x80,0x60,0x48,0x50,0x40,0x58,0xA0,0x30,0x2C,0xA0,0x60,0x40,0x00,0x00,0x00,0x00,0x09,0x08,0x08,0x09,0x85,0x85,0x7E,0x05,0x04,0x04,0x04,0x04,0x00,0x00/*学*/;void lcd_cmd_wr(uchar cmdcode,uchar right);void lcd_data_wr(uchar ldata,uchar right);void lcd_busy_rd(uchar right);void lcd_hanzi_wr(uchar posx,uchar posy,uchar * hanzi);void lcd_str_wr(uchar row,uchar col,uchar n,uchar * str);void lcd_rol();void lcd_init();void delay(uint nms);void main()lcd_init();lcd_str_wr(1,1,6,hanzi1);delay(100);while(1)lcd_rol();delay(1000); void lcd_cmd_wr(uchar cmdcode,uchar right)/写指令lcd_busy_rd (right);if(right=1)/right=1时,对右半部进行读/写RLCD_CMD_WR=cmdcode;elseLLCD_CMD_WR=cmdcode;/否者写左半部LCDvoid lcd_data_wr(uchar ldata,uchar right)/对LCD进行数据读/写lcd_busy_rd(right);if(right=1)RLCD_DATA_WR=ldata;elseLLCD_DATA_WR=ldata;void lcd_busy_rd(uchar right)/检测LCD忙if(right=1)RLCD_CMD_RD;elseLLCD_CMD_RD;while(busy);void delay(uint nms)/延时程序uint i;for(;nms0;nms-)for(i=0;i500;i+);void lcd_init(void)/LCD初始化uint k;lcd_cmd_wr(0x3e+1,0);lcd_cmd_wr(0xc0+0,0);lcd_cmd_wr(0xb8+0,0);lcd_cmd_wr(0x40+0,0);lcd_cmd_wr(0x3e+1,1);lcd_cmd_wr(0xc0+0,1);lcd_cmd_wr(0x40+0,1);lcd_cmd_wr(0xb8+0,1);for(k=0;k256;k+)lcd_data_wr(0x00,0);lcd_data_wr(0x00,1);lcd_cmd_wr(0xb8+4,0);lcd_cmd_wr(0x40+0,0);lcd_cmd_wr(0xb8+4,1);lcd_cmd_wr(0x40+0,1);for(k=0;k256;k+)lcd_data_wr(0x00,0);lcd_data_wr(0x00,1);void lcd_hanzi_wr(uchar posx,uchar posy,uchar * hanzi)uchar i;if(posy4)lcd_cmd_wr(0xb8+2*posy,0);lcd_cmd_wr(0x40+16*posy,0);for(i=0;i16;i+)lcd_data_wr(hanzii,0);else /否者在右半部写lcd_cmd_wr(0xb8+posy*2,1);lcd_cmd_wr(0x40+16*(posy-4),1);for(i=0;i16;i+)lcd_data_wr(hanzii,1);lcd_cmd_wr(0xb8+posy*2+1,1);lcd_cmd_wr(0x40+16*(posy-4),1);for(i=16;i32;i+)lcd_data_wr(hanzii,1); void lcd_str_wr(uchar row,uchar col,uchar n,uchar * str)/输出方式uchar i;for(i=0;i7)row+;col=col-8;lcd_hanzi_wr(row,col,str+i*32);col+;void lcd_rol(void)uchar i;for(i=0;i64;i+)lcd_cmd_wr(0xc0+i,0);lcd_cmd_wr(0xc0+i,1);delay(10);4.2 Proteus软件介绍系统仿真用到了Proteus ISIS(电路分析与实物仿真软件)软件,可通过仿真显示出所设计系统的功能,对于程序的调试等有很大的帮助。它可以分析各种模拟器件和集成电路。特点是:实现了单片机仿真和SPICE电路仿真相结合。支持主流单片机系统的仿真。提供软件调试功能。具有强大的原理图绘制功能。原理图的工作界面及绘制如图Proteus ISIS的工作界面及原理图绘制4.3Keil C51软件介绍Keil软件是目前最流行开发单片机的软件,其项目开发流程与其他软件开发项目的流程类似,即:1.创建一个项目,从器件库中选择目标器件,配置工具设置;2.用C或汇编语言创建源程序;3.用项目管理器生成应用程序文件;4.修改源程序中的错误;5.测试连接应用。它的集成编译环境是uVision4,它把C51、A51、BL51等在内的编译、汇编、定位链接、库、转换和模拟等软件集成在一个环境下,开发人员不必分别熟悉和使用这些软件的命令规则,支持所有的数据类型,在直接修改、编译、调试源程序,错误指令定位。支持项目管理功能强大的观察窗口,用于对程序的调试和编辑。其界面如下:创建源文件对话框4.4Proteus与Keil C相结合的设计打开Keil程序,执行菜单命令ProjectNew Project创建“LCD”项目,并选择单片机型号为AT89C52。执行菜单命令FileNew创建文件,输入C语言源程序,保存为“LCD.C”在Project Workspace项目管理窗口中,右击Source Group 1,选择Add File to GroupSource ,将源程序“LCD.C”添加到项目中。在Project Workspace项目管理窗口中,选中Target 1,执行菜单命令Project Project Options for TargetTarget1,在弹出的对话框中选择Output选项卡,选中Creat HEX File。关闭对话框,执行菜单命令Project Rebuild all target files,或直接单击工具栏中的图标,编译所有的目标文件,生成“LCD.HEX”。切换到工作界面到Proteus ISIS的点阵液晶显示器LCD仿真电路,在AT89C52元件上双击鼠标左键或点击右键再单击左键打开Edit Component对话框。设置Program File为“LCD.HEX”,Clock Frequency为12MHZ,单击OK关闭对话框。单击仿真运

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论