毕业论文-51单片机开发板 - 图文 联系客服

发布时间 : 星期三 文章毕业论文-51单片机开发板 - 图文更新完毕开始阅读e3c5b26fb84ae45c3b358cd7

S51开发板的设计

活不用管数码管了。这种方案的优点是对单片机的P口资源和时间耗用很少,但是数码管的外围辅助电路复杂。

在本程序中使用动态扫描法控制数码管显示,数码管程序流程图如图4-15所示:

开始 “4”段码送P0口 位码送P1口选中第四位数码管 “3”段码送P0口 位码送P1口选中第三位数码管 “2”段码送P0口 位码送P1口选中第二位数码管 “1”段码送P0口 位码送P1口选中第一位数码管

图4-15 数码管程序流程图

P0口提供数码管显示所需的段码,4、3、2、1四位数字对应的共阴数码管的段码分别赋给变量dis0、dis1、dis2、dis3,在主函数中,依次将dis0、dis1、dis2、dis3送至P0口,由于八个数码管的每个段所对应的连线连在一起,只有被片选的数码管才会点亮。因此在将段码送至P0口的同时,还要用P1口送出位码片选中要显示的数码管,这样片选中的数码管就会显示特定的数字。程序中由低位到高位循环点亮数码管显示4、3、2、1。由于间隔时间的总和小于0.1秒,根据人眼的视觉暂留效应,四个数码管看起来同时点亮。

31

S51开发板的设计

b LCD1602显示程序

1602液晶模块内部的控制器共有11条控制指令,如表4-2所示:

表4-2 控制指令表 序号 1 2 3 4 5 6 7 8 9 10 指令 清显示 光标返回 置输入模式 显示开/关控制 光标或字符移位 置功能 置字符发生存贮器地址 置数据存贮器地址 读忙标志或地址 RS R/W D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 BF 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 * 1 I/D S D C B * * 1 S/C R/L * DL N F * 字符发生存贮器地址 显示数据存贮器地址 计数器地址 要写的数据内容 读出的数据内容 写数到CGRAM或DDRAM) 1 从CGRAM或DDRAM读数 11 1 1 1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)

指令1—清显示,指令码01H,光标复位到地址00H位置。 指令2—光标复位,光标返回到地址00H。

指令3—光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。

指令4—显示开关控制。D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。

指令5—光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。

指令6—功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:

32

S51开发板的设计

低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高

电平时显示5x10的点阵字符。 指令7—字符发生器RAM地址设置。 指令8—DDRAM地址设置。

指令9—读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。

指令10—写数据。 指令11—读数据。

读写操作时序如图4-16和4-17所示:

图4-16 读操作时序

图4-17 写操作时序

LCD1602显示程序流程图如图4-18所示:

33

S51开发板的设计

开始 设置显示模式 关闭显示 显示清屏 显示光标移动设置 显示开及光标设置 显示两个字符串 结束

图4-18 LCD1602显示程序流程图

液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,LCD1602的内部显示地址见表4-3:

表4-3 LCD1602的内部显示地址 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 第一行 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 第二行 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 比如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。 c LCD12864显示程序

模块控制芯片提供两套控制命令,基本指令和扩充指令见表4-4:

34