图形循环显示可控的单片机仿真和C语言解析.doc

图形循环显示可控的单片机仿真和C语言解析.doc

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
目 录 摘要 I 1 概述 1 1.1 液晶显示简介 1 1.1.1 液晶显示原理 1 1.1.2 液晶显示器的分类 1 1.1.3 12864LCD简介 1 2 方案设计 5 2.1 硬件电路设计 5 2.2 流程图设计 6 3程序设计 7 3.1 控制程序设计 7 3.1.1 操作命令定义和编址设计 7 3.1.2 12864LCD的初始化 7 3.1.3 延时子程序 8 3.1.4 忙检测 8 3.1.5 命令/数据写入函数 9 3.1.6 图片显示及循环滚动 9 3.2 字模软件的使用 10 4 仿真电路 13 5 仿真结果 14 6 心得体会 15 参考文献 16 附录 17 摘要 本文研制一种基于51单片机实时控制的LCD液晶显示屏循环显示系统。硬件系统由单片机最小系统和液晶显示系统组成。此次课程设计采用AT89C51型单片机和12864点阵型LCD液晶显示器来实现。LCD上要显示某个图形或汉字就是将相应的点阵信息写入到相应的存储单元中。要想实现循环移动,只需不断改变图片的字模数据在液晶面板上的显示位置(RAM地址)即可。程序采用C语言编写,使用Keil编译器进行编译。 关键词:单片机 AT89C51 12864LCD C语言 字模 1 概述   在日常生活中,我们对液晶显示器并不陌生。液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、LED数码管、液晶显示器。发光管和LED数码管比较常用,软硬件都比较简单 1.1 液晶显示简介 1.1.1 液晶显示原理 液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。 液晶显示的分类方法有很多种,通常可按其显示方式分为段式、字符式、点阵式等。除了黑白显示外,液晶显示器还有多灰度有彩色显示等。如果根据驱动方式来分,可以分为静态驱动(Static)、单纯矩阵驱动(Simple Matrix)和主动矩阵驱动(Active Matrix)三种。 下面以液晶显示器为例,介绍其用法。一般液晶显示器实物如图 图液晶显示器实物图 2.2 流程图设计 N N Y Y 图2-2 程序设计流程图 3程序设计 3.1 控制程序设计 3.1.1 操作命令定义和编址设计 #include reg51.h //51 单片机常用寄存器定义 #include absacc.h //解析XBYTE 宏定义 /*常用操作命令和参数定义*/ #define DISPON 0x3f //显示开 #define DISPOFF 0x3e //显示关,参考指令表显示开关设置 #define FIRSTROW 0xc0 //显示起始行设置,参考指令表,在0 到63 行选择 #define SETY 0xb8 //Y 方向,8 页64 行,参考指令表,[2..0]在0 到8 页选择 #define SETX 0x40 //X 方向,半屏64 列,参考指令表,在0 到63 列选择 /*与硬件相关的编址设计*/ /*左屏命令和数据读写编址*/ /*P2+P0口16位有效编址,有效位是P2.3~P2.0,无关位用“1”表示*/ /*P2.0—RS*/ /*P2.1—R/W*/ /*P2.2—CS1*/ /*P2.3—CS2*/ CS1 CS1 R/W RS #define LLCD_CMD_WR XBYTE[0xf4f0] // 0 1 0 0 #define LLCD_DAT_WR XBYTE[0xf5f0] // 0 1 0 1 #define LLCD_CMD_RD XBYTE[0xf6f0] // 0 1 1 0 #define LLCD_DAT_RD XBYTE[0xf7f0] // 0 1 1 1 /*左屏命令和数据读写编址*/ CS1 CS1 R/W RS #define RLCD_CMD_WR XBYTE[0xf8f0] // 1 0 0 0 #define RLCD_DAT_WR XBYTE[0xf9f0] // 1 0 0 1 #d

文档评论(0)

四娘 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档