收藏 分享(赏)

单片机外围存储及LCD12864.doc

上传人:j35w19 文档编号:8779265 上传时间:2019-07-11 格式:DOC 页数:41 大小:651KB
下载 相关 举报
单片机外围存储及LCD12864.doc_第1页
第1页 / 共41页
单片机外围存储及LCD12864.doc_第2页
第2页 / 共41页
单片机外围存储及LCD12864.doc_第3页
第3页 / 共41页
单片机外围存储及LCD12864.doc_第4页
第4页 / 共41页
单片机外围存储及LCD12864.doc_第5页
第5页 / 共41页
点击查看更多>>
资源描述

1、题 目 院系名称: 专业班级: 学生姓名: 学 号: 指导教师: 年 月 日摘 要单片机扩展外围存储器,先在存储器里存储一幅图片,然后通过单片机读出数据在 lcd12864 上显示出来。关键词 AMPIRE128X64;2764 ;外部存储器读写;扩展外部存储器ABSTRACTMicrocontroller peripheral expansion of memory, first in memory to store a picture, and then read data through the microcontroller in the lcd12864 on display.Key

2、 words LCD12864;External memory read and write;External memory expansion目 录1 引言 .- 1 -1.1 研究的目的 - 1 -1.2 相关领域成果 - 1 -1.3 研究的意义 - 1 -2 芯片资料 .- 2 -2.1 AT89C51 芯片介绍 .- 2 -2.1.1 概述 .- 2 -2.1.2 特性 .- 2 -2.1.3 编号含义 .- 3 -2.1.4 框图(CPU) - 4 -2.1.5 逻辑符号 .- 5 -2.1.6 管脚描述 .- 6 -2.2 LCD12864(ks0108 controllers)

3、芯片介绍 - 12 -2.2.1 KS0108 控制器主要特性 - 12 -2.2.2 接口说明 .- 13 -2.2.3 引脚功能 .- 13 -2.2.4 指令列表 .- 14 -2.2.5 工作时序图 .- 14 -2.2.6 KS0108 控制器指令说明 - 14 -2.3 27C64 芯片介绍 - 17 -2.3.1 概述 .- 17 -2.3.2 2764 各引脚的含义 - 17 -2.3.3 读时序图: .- 18 -2.4 74LS373 芯片介绍 - 19 -2.4.1 概述 .- 19 -2.4.2 74ls373 功能简介 .- 20 -2.4.3 74ls373 内部逻

4、辑结构图 .- 20 -3 系统分析 .- 21 -3.1 题目要求 - 21 -3.2 元件选择 - 21 -3.3 硬件总体结构设计 - 21 -3.4 软件概要设计 - 22 -4 硬件设计 .- 23 -4.1 元件资料 - 23 -5 软件设计 .- 24 -6 软件仿真 .- 26 -6.1 Proteus 简介 .- 26 -总结 .- 27 -致谢 .- 28 -参考文献 .- 29 -附录 源代码 .- 30 - 1 -1 引言1.1 研究的目的扩展外部存储器主要用于增大存储容量,提供更多的功能,扩大应用领域。1.2 相关领域成果存储器的扩展领域主要有:SD 卡、U 盘、移动

5、硬盘、硬盘等、mp3、mp4、PSP。1.3 研究的意义随着社会的发展,人们的生活也日益丰富多彩,要掌握的知识越来越多,要记的事情越来越多,然而那些不经常运用在人们生活中的东西就很容易被遗忘,在很早的时候人们选择了把知识写在书本上,俗话说的好:“好记性不如烂笔头” 。但书本缺点太多,携带不够方便,又经不起风吹雨打。后来发明了计算机后,人们可以文档、声音、图片、电影、游戏等资料存在存储器中,但存储器的容量是有限的,现在有很多方法扩展外存,或是把资料转移存储到其他地方,比如:把资料刻录到光盘上。工作生活中很多地方会用到外部存储器。外部存储器具有携带方便,价格便宜,存储空间大的优点。能够移动、复制和

6、删除等等!为人们的工作和学习带来了很大的方便。- 2 -2 芯片资料2.1 AT89C51 芯片介绍2.1.1 概述该系列单片机是采用高性能的静态 80C51,设计由先进 CMOS 工艺制造并带有非易失性 Flash 程序存储器全部支持 12 时钟和6 时钟操作。定时/计数器 6 输入 4 优先级嵌套中断结构 1 个串行 I/O 口可用于多机通信 I/O 扩展或全双工 UART 以及片内振荡器和时钟电路。此外由于器件采用了静态设计可提供很宽的操作频率范围频率可降至 0, 可实现两个由软件选择的节电模式空闲模式和掉电模式空闲模式冻结 CPU, 但 RAM 定时器串口和中断系统仍然工作。掉电模式保

7、存 RAM 的内容但是冻结振荡器导致所有其它的片内功能停止工作由于设计是静态的,时钟可停止而不会丢失用户数据运行可从时钟停止处恢复。2.1.2 特性80C51 核心处理单元4k 字节 FLASH 89C51X28k 字节 FLASH 89C52X216k 字节 FLASH 89C54X212 时钟操作可选 6 个时钟(通过软件或并行编程器)64K 字节 ROM 和 64K 字节 RAM- 3 -两个工作频率范围6 时钟模式时为 0 到 20MHz12 时钟模式时为 0 到 33MHzLQFP, PLCC 或 DIP 封装双数据指针3 个加密位4 个中断优先级6 个中断源4 个 8 位 I/O

8、口低 EMI (禁止 ALE 以及 6 时钟模式)掉电模式可通过外部中断唤醒2.1.3 编号含义- 4 -2.1.4 框图(CPU)- 5 -2.1.5 逻辑符号- 6 -2.1.6 管脚描述51 系列单片机有 4 个 I/O 端口,每个端口都是 8 位准双向口,共占 32 根引脚。每个端口都包括一个锁存器(即专用寄存器P0P3)、一个输出驱动器和输入缓冲器。通常把 4 个端口笼统地表示为 P0P3。在无片外扩展存储器的系统中,这 4 个端口的每一位都可以作为准双向通用 I/O 端口使用。在具有片外扩展存储器的系统中,P2 口作为高 8 位地址线,P0 口分时作为低 8 位地址线和双向数据总线

9、。P1 口是用户专用 8 位准双向 I/O 口, 具有通用输入/输出功能, 每一位都能独立地设定为输入或输出。当有输出方式变为输入方式时, 该位的锁存器必须写入“1”, 然后才能进入输入操作。 P2 口是 8 位准双向 I/O 口。外接 I/O 设备时, 可作为扩展系统的地址总线, 输出高 8 位地址, 与 P0 口一起组成 16 位地址总线。 对于 8031 而言, P2 口一般只作为地址总线使用, 而不作为 I/O 线直接与外部设备相连。 2.1.7.1 概述P89C51X2/52X2/54X2/58X2 在 10000 次擦除和编程之后仍能可靠保存 FLASH 存储器的内容。存储单元的设

10、计使得擦除和编程结构最优化。此外,先进的沟道氧化工艺和低内部电场的结合使擦除和编程操作更加可靠。2.1.7.2 特性- 7 - 带片擦除的 FLASH EPROM 内部程序存储器 内部程序存储器禁止时(EA=0) 外部程序存储器最多可达 64K 可编程加密位 每字节最少 10000 次擦除/编程周期 数据最少可保存 10 年 从一般销售商处可获得编程支持2.1.7.3 振荡器特性XTAL1 和 XTAL2 为输入和输出可分别作为一个反相放大器的输入和输出,此管脚可配置为使用内部振荡器,要使用外部时钟源驱动器件时,XTAL2 可以不连接而由 XTAL1 驱动。外部时钟信号无占空比的要求,因为时钟

11、通过触发器二分频输入到内部时钟电路。但高低电平的最长和最短时间必须符合手册的规定。2.1.7.4 时钟控制寄存器 CKCON该器件提供通过一个 SFR 位(CKCON 的 X2) 位和一个 Flash 位(保密块中的 FX2 )控制选择 6 时钟/12 时钟模式当 X2 置 0 时 12 时钟模式有效.该位置 1 时系统切换到 6 时钟模式.由于该功能是通过 SFR 位实现的,因此可以随时访问并修改。需要注意的是将 X2 从 0 改为 1 将导致用户代码以两倍的速度执行。因为所有的系统时间间隔都变成原来的 1/2 。从 6 时钟模式变为 12 时钟模式会将运行代码的速度降低为 1/2。Flas

12、h 时钟控制位FX2 可通过并行编程器编程取代X2 位实现6 时钟模式。- 8 -见表2:表22.1.7.5 可编程时钟输出可从 P1.0 编程输出 50%占空比的时钟信号,P1.0 除了作为常规 I/O 口外还有两个可选功能它可编程为:1 用于定时/计数器 2 的外部时钟输入2 使用 16MHz 操作频率时 12 时钟模式下输出 50%占空比的61Hz4MHz 时钟信号 6 时钟模式时为 122Hz8MHz,要将定时/计数器 2 配置为时钟发生 C/T2(T2CON.1)必须清零,而 T2MOD 中的T20E 位必须置位,要启动定时器 2 还必须将 TR2(T2CON.2)置位,时钟输出频率

13、由振荡器频率和定时器 2 捕获寄存器的重新装入值确定公式.2.1.7.6 振荡器频率n 65536 RCAP2H,RCAP2L此处n = 16 6 时钟模式或32 12 时钟模式RCAP2H,RCAP2L RCAP2H 和RCAP2L 的内容作为一个16 位无符号整数- 9 -在时钟输出模式中定时器2 的翻转将不会产生中断这和它作为波特率发生器时相似,定时器2 可同时作为波特率发生器和时钟发生器,但需要注意的是波特率和时钟输出频率相同。2.1.7.7 复位在振荡器工作时将RST 脚保持至少两个机器周期高电平12 时钟,模式为24 个振荡器周期6 时钟,模式为12 振荡器周期可实现复位,为了保证

14、上电复位的可RST 保持高电平的时间至少为振荡器启动。时间通常为几个毫秒再加上两个机器周期复位后振荡器以12 时钟模式运行(当已通过并行编程器设置为6 时钟模式时除外)。2.1.7.8 中断本手册所讲述的器件提供6 个中断源如图20 所示外部中断INT0 和INT1 可根据寄存器TCON 中的IT0 和IT1 位状态分别设置为电平或者边沿触发实际产生的中断标志是TCON 中的位IE0 和IE1 当产生外部中断时如果是边沿触发进入中断服务程序后由硬件清除中断标志位如果中断是电平触发由外部请求源而不是由片内硬件控制请求标志定时器0 和定时器1 中断由TF0 和TF1 (分别由各自的定时/计数寄存器

15、控制定时器0 工作在模式3时除外)产生当产生定时器中断时进入中断服务程序后由片内硬件清除标志位,串口中断由RI 和TI 的逻辑或产生进入中断服务程序后这些标志均不能被硬件清除实际上中断服务程序通常需要确定是由RI 还是TI 产生的中断然后由软件清除中断标志,所以这些产生中断的位都可通过软件置位或清零与通过硬件置位或清零的效果相同简而言之中断可由软件产生推迟或取消。每个中断源可通过置位- 10 -或清零寄存器IE (图21) 中的相应位分别使能或禁止IE 中还包含一个全局禁止位EA, 可以立即禁止所有的中断。中断优先级结构每个中断源都可通过编程中断优先级寄存器IP (图22) 和IPH (图23

16、) 单独设置优先级一个中断。服务程序可响应更高级的中断但不能响应同优先级或低级中断最高级中断服务程序不响应其它任何中断如果两个不同中断优先级的中断源同时申请中断时响应较高优先级的中断申请。如果2 个同优先级的中断源同时申请中断内部查询顺序将确定首先响应哪一个中断请求查询顺序。如下所示:中断源 同级优先级1. IE0( 外部中断0) ( 最高)2. TF0 (定时器0)3. IE1 (外部中断1)4. TF1 (定时器1)5. RI+TI (UART)6. TF2,EXF2( 定时器2) (最低)注同级优先级只用来处理相同优先级别中断源同时申请中断的情况IP 和IPH 寄存器中包含了一些无效位由

17、于这些位可能用于其它80C51 系列产品中用户软件不应将这些位写入1。中断的处理中断标志在每个机器周期的S5P2 时采样在下一个机器周期查询该采样如果在P2 周期时有一个标志置位查询周期将发现它然后- 11 -中断系统产生一个LCALL 调用对应的服务程序由硬件产生的LCALL。在下面任意一种情况下都会推迟执行1. 同级或更高级的中断已在处理中2. 当前的周期不是正在执行指令的最后一个周期3. 正在处理的指令是RETI 或任何写IE 或IP 寄存器的指令条件2 确保正在处理的指令在进入任何中断服务程序前可以执行完毕条件3 确保了,如果正在处理的指令是RETI 或任何访问IE 或IP 寄存器的指

18、令,那么在进入任何中断服务程序之前至少再执行一条指令查询周期在每个机器周期都会重复所查询的值是在前一个机器周期的。S5P2 出现的值需要注意的是如果一个中断标志位有效,但仍然没有被响应是因为出现上面所述的情况,如果当阻碍的条件撤除时中断标志不再有效,中断将不再响应。换句话说实际上如果中断标志有效时没有响应中断之后将不再被记忆每次查询周期都会更新中断标志。- 12 -2.2 LCD12864(ks0108 controllers)芯片介绍2.2.1 KS0108 控制器主要特性8 位并行数据接口,适配M6800 系列时序。拥有6464 位(512 字节)的显示存储器,其数据直接作为显示驱动信号。

19、简单的操作指令。- 13 -低功耗(具体参数见各款产品外形文件)2.2.2 接口说明2.2.3 引脚功能- 14 -2.2.4 指令列表2.2.5 工作时序图2.2.6 KS0108 控制器指令说明1. 读状态字(read status)格式 BUSY 0 NO/OFF RESER 0 0 0 01) BUSY=1 表示KS0108 正在处理计算机发来的指令或数据。此时接口电路被封锁,不能接受除读状态字以外的任何操作。BUSY=0 表示KS0108 接口控制电路已处于“准备好”状态,等待计算机的访问。- 15 -2) ON/OFF:表示当前的显示状态。ON/OFF=1 表示关显示状态ON/OF

20、F=0 表示开显示状态。3) RESET 表示当前KS0108 的工作状态,即反映RST 端的电平状态。当RST 为低电平状态时KS0108 处于复位工作状态,RESET=1。当RST 为高电平状态时,KS0108 为正常工作状态,RESET=0。4) 在占领设置和数据读写时要注意状态字中的BUSY 标志。只有在BUSY=0 时,计算机对KS0108 的操作才能有效。因此计算机在每次对KS0108 操作之前,都要读出状态字判断BUSY 是否为“0”。若不为“0”,则计算机需要等待,直至BUSY=0 为止。2. 显示开关(display on/off)该指令设置显示开关/触发器的状态,由此控制显

21、示数据锁存器的工作方式,从而控制显示上的显示状态。D 位为显示开/关的控制位。当D=1 为显示设置,显示数据锁存器正常工作,显示屏上呈现所许的效果。此时在状态字中ON/OFF=0。当D=0 为关显示设置,显示数据锁存器被置零,显示屏呈不显示状态,但显示存储器并没有被破坏,在状态组中ON/OFF=1。格式 0 0 1 1 1 1 1 D3. 显示起始行设置(Display start line)格式 1 1 L5 L4 L3 L2 L1 L0- 16 -该指令设置了显示起始行寄存器的内容。KS0108 有64 行显示的管理能力,该指令中L5L0 为显示起始行的地址,取值在03FH(164)范围内

22、,它规定了显示屏上最顶一行所对应的显示存储器的行地址。如果定时间隔地,等间距地修改(如加一或减一)显示起始行寄存器的内容,则显示屏将呈现显示内容向上或向下平滑滚动的显示效果。4. 页面地址设置Set page(X address)格式 1 0 1 1 1 P2 P1 P0该指令设置了页面地址-X 地址寄存器的内容。KS0108 将显示存储器分成了8 页,指令代码中P2P0 就是要确定当前所要选择的页面地址,取值范围为07H,代表第18页。该指令规定了以后的读/写操作将在哪一个页面上进行。5. 列地址设置(Set Y address )格式 0 1 C5 C4 C3 C2 C1 C0该指令设置了

23、Y 地址计数器的内容,C5C0=03FH(164)代表某一页面上的某一单元地址,随后的一次读或写数据将在这个单元上进行。Y 地址计数器具有自动加一功能,在每一次读/写数据后它将自动加一,所以在连续进行读/写数据时,Y 地址计数器不必每次都设置一次。页面地址的设置和列地址的设置将显示存储器单元唯一地确定下来,为后来的显示数据的读/写作了地址的选通。6. 写显示数据(Write display data )格式 数 据该操作将8 位数据写入先前已确定的显示存储器的单元内,- 17 -操作完成后列地址计数器自动加一。7. 读显示数据(Read display data)格式 数 据该操作将KS010

24、8 接口部的输出寄存器内容读出,然后列地址计数器自动加一。2.3 27C64 芯片介绍2.3.1 概述EPROM 2764的外部引线如图所示。这是一块8K8bit的EPROM芯片,它的引线与SRAM芯片6264是兼容的。这给使用者带来很大方便。因为在软件调试过程中,程序经常需要修改,此时可将程序先放在6264中,读写修改都很方便。调试成功后,将程序固化在2764中,由于它与 6264的引脚兼容,所以可以把2764直接插在原6264的插座上。这样,程序就不会由于断电而丢失。- 18 -2.3.2 2764 各引脚的含义 A0一A12:13根地址输入线。用于寻址片内的8K个存储单元。 D0D7:8

25、根双向数据线,正常工作时为数据输出线。编程时为数据输入线。 OE:输出允许信号。低电平有效。当该信号为0时,芯片中的数据可由D0D7端输出。 CE:选片信号。低电平有效。当该信号为0时表示选中此芯片。 PGM:编程脉冲输入端。对EPROM编程时,在该端加上编程脉冲。读操作时该信号为1。 VPP:编程电压输入端。编程时应在该端加上编程高电压,不同的芯片对VPP的值要求的不一样,可以是+12.5V,+15V,+21V,+25V等。- 19 -2.3.3 读时序图:2.4 74LS373 芯片介绍2.4.1 概述373 的输出端 O0O7 可直接与总线相连。当三态允许控制端 OE 为低电平时,O0O

26、7 为正常逻辑状态,可用来驱动负载或总线。当 OE 为高电平时,O0O7 呈高阻态,即不驱动总线,也不为总线的负载,但 锁存器内部的逻辑操作不受影响。当锁存允许端 LE 为高电平时,O 随数据 D 而变。当 LE - 20 -为低电平时,O 被锁存在已建立的数据电平。当 LE 端施密特触发器的输入滞后作用,使交流和直流噪声抗扰度被改善 400mv。引出端符号:D0D7 数据输入端OE 三态允许控制端(低电平有效)LE 锁存允许端O0O7 输出端真值表:Dn LE OE OnH H L HL H L LX L L Q0X X H 高阻态2.4.2 74ls373 功能简介74ls373是常用的地

27、址锁存器芯片,它实质是一个是带三态缓冲输出的8D触发器,在单片机系统中为了扩展外部存储器,通常需要一块74ls373芯片.- 21 -2.4.3 74ls373 内部逻辑结构图- 22 -3 系统分析3.1 题目要求单片机从 EPROM2764 中读取图像数据,并在 12864LCD 上显示。3.2 元件选择单片机 CPU 选用 AT89C51 LCD 选用 AMPIRE128X643.3 硬件总体结构设计图 11- 23 -3.4 软件概要设计EPROM 中图片数据获取1.使用图片处理工具截取 128*64 图片,并通过设置阈值,生成合适的单色图像。2.使用取字模软件生成该图片的列行式字模。

28、3.使用二进制文件编辑器对该字模生成二进制文件。4.可将此 bin 文件转换成 hex 文件再烧录。使用取模工具- 24 -4 硬件设计4.1 元件资料AT89C51AMPIRE128X6427C6474LS373- 25 -5 软件设计void delay(int )延时函数提供硬件与源代码之间的同步此函数依据每条语句运行的时间来实现延时功能void lcdcom(unsigned char ) 12864 液晶写命令函数用于控制写进芯片的内容,从而达到期望的效果。把读写端口置低(赋值为 0)让 12864 芯片为写状态,数据命令端口置低(赋值为 0)设为命令状态,通过使能端口一个脉冲把命令

29、从单片机里送入 12864 液晶屏里。void lcddata(unsigned char ) 12864 液晶写数据函数向芯片内写要运行的数据,在液晶屏上会出现相应的操作结果。把读写端口置低(赋值为 0)让 12864 芯片为写状态,数据命令端口置低(赋值为 1)设为数据状态,通过使能端口一个脉冲把命令从单片机里送入 12864 液晶屏里。void lcdcls() 清屏函数先把芯片的片选信号左右屏一起打开,从第一行开始扫描(07) ,每行 64(063 )列点阵全部写低电平(写 0x00) 。void loadimage() 写图片数据函数- 26 -1、用取字模软件取出图片的模,修改成规定格式,用十六进制编译器把图片的模保存成二进制,或者再使用二进制转十六进制编译器转换为十六进制,烧进 EPROM2764 芯片内。2、2764 的低八位地址(A0A7)用地址除 256 求出,其余的高位(A8A12)用地址对 256 求余得出的3、12864 芯片的左半屏写打开,数据端口依据外围存储器的地址读取相应的数据,显示出来;然后打开右半屏,数据端口依据外围存储器的地址读取相应的数据,显示出来。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报