数码管和LCD1602

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数码管和LCD1602学习笔记

1数码管显示

数码管的显示有四种方法先介绍一下段驱动和位驱动都都使用74HC573锁存器的方式:

数码管共阴极,直接由单片机的P0口驱动

74HC573锁存器真值表如下

D /Q

/OE L

E

0 1 1 1 在允许输入输

出时,输入和输0 1 0 0

出是一样的。

0 0 任意输出上

一个状

态值,

即已经

所存的

值。

#include

sbit dula=P2^6; //段选信号的锁存器控制sbit wela=P2^7; //位选信号的锁存器控制void main()

{

dula=0; //置0的时候无理论573输入什么值,输出端都只输出上一个值而与当前输入的值无关,只有置1的一瞬间才会将此刻输入端的值原样输出。即11脚就像是一个开关,为0关闭输出内容为之前锁存的内容,为1开,输出值就是此刻的输入值。

wela=0;

P0=0x4f; //数字“3”的代码

dula=1; //段置1将P0口的值输入到锁存器中,

dula=0; //锁存数字“3”的代码,LE=0(图中的C)无论输入什么值,输出的结果都是上一个状态值。

P0=0x00; //选中所有的数码管,要想选哪中一位数码管只需要将对应的位选线置0.

wela=1;

wela=0; //锁存输入的00

while(1);}

上面的示例是将一个字符显示在一个或者几个数码管上,但是实际的应用却需要在多个数码管上显示出多个字符。这就需要动态扫描以实现静态显示的效果。我们已经可以通过程序让任意一位数码管显示任意一

种字符,这样我们可以以时间为轴,循环显示每个数码管需要的数值,当循环显示的时间比较小时,眼睛就不能分辨出闪烁,而是看到一个静态的数值显示,

2、LCD1602显示

可以显示2*16个字符,每个字符是5*7的点阵

3脚是背光选择用于调节背光亮度

LCD1602功能介绍:提供各种控制命令:清屏、字符闪烁、光标闪烁、显示移位

80字节显示数据存储器DDRAM

192个5*7点阵的字节字符发生器CGROM

8个可由用户自定义的字符发生器CGRAM

读状态值的目的就是要判断1602是否在工作STA7-=1时不能对其读写。

在一个5*7点阵上显示什么字符?

显示一个数字8,即38H或直接‘8’

除此之外,还可以自己定义字符,可参考视频第十七讲。

在哪一个点阵上显示字符?

在第一行第一个字显示,80H,第一行第二个显示81H

指令集

1

2

2显示开/光标设置的指令

0CH 开显示、无光

标、不闪烁

0FH 开显示、光标、

闪烁

0E 开显示、光标、

不闪烁

06H 地址指针加一,

光标加一

07H 写一个字符,整

屏显示左移

3其他指令

01H 显示清屏(数据指针清零,

所有显示清零)

02H 显示回车:(数据指针清

零)

测忙(定义状态标志位sta7)、写命令、写数据函数,LCD初始化函数

简单程序实例

#include //包含单片机寄存器的头文件

typedef unsigned char uint8; //数据类型的宏定义

sbit RS = P1^0 ; //寄存器选择位,将RS位定义为P1.0引脚

sbit RW = P1^1 ; //读写选择位,将RW位定义为P1.1引脚

sbit EN = P2^5 ; //使能信号位,将E位定义为P2.5引脚

sbit BF = P0^7 ; //忙碌标志位,,将BF位定义为P0.7引脚

sbit du = P2^6 ; //让数码管在LCD显示的时候关闭不工作

sbit wei = P2^7 ;

/****************************************

*************

测忙函数功能:判断液晶模块的忙碌状态

BF=1,忙碌;BF=0,不忙

***************************************** **********/

void wait(void)

{

P0 = 0xFF; //预读先写1

do

{

RS = 0;

RW = 1;

EN = 0;

EN = 1; //读状态指令

}while (BF == 1); //STA7=1禁止读写操作,等待

EN = 0;

}

/**************************************** *************

函数功能:写数据

入口参数:unint8 dat

***************************************** **********/

void w_dat(uint8 dat)

{

wait(); //忙则等待

EN = 0;

P0 = dat;

RS = 1;

RW = 0;

EN = 1;

EN = 0;

}

/**************************************** *************

函数功能:写命令

入口参数:unint8 cmd

***************************************** **********/

void w_cmd(uint8 cmd)

相关文档
最新文档