当前位置:文档之家› 单片机与液晶显示器

单片机与液晶显示器


for (i=400;i>0;i--);
}
// 主函数 main()
void main(void)
{
unsigned char key;
while(1)
{
P1=0xff; //要想从P1口读数据必须先给P1口写
1
key=P1; //读入P1口的数据,赋值给变量key
if(key!=0x00) //判断是否有键按下,当没有键
按下时,P1口的数据为0x00
}
{
}
delay(); //延时去抖
精品课}件
key=P1; //再次读入P1口的数据,赋值给变}量
key
if(key!=0x00) //再次判断是否有键
key1(); //键盘1功能函数。 break;
case 0x02: key2();//键盘2功能函数。 break;
dp
机单片
P0.0 P0.1 P0.2 P0.3
想一想:和静态连接精品的课件区别在哪里?
P02.
P72.
机单片
怎样实现显示呢?
a b c d e f g dp
P0.0 P0.1 P0.2 P0.3
电路的接法决定了必须采用逐位扫描显示方式。
即从段选口送出某位LED的字型码,然后选通该位LED,
并保持一段延时时间。然后选通下一位,直到所有位扫
描完。
精品课件
静态、动态显示方式总结
静态显示连接
所有LED的位选均共同连接到+VCC或GND,每个LED的8根段选 线分别连接一个8位并行I/O口。
原理简单;显示无闪烁;占用I/O资源较多。
❖ 动态显示连接
所有LED的段选线共同连接在一起共用一个 8位I/O口 而每个LED的位选分别由一根相应的I/O口线控制。 因此必须采用动态扫描显示方式。
低电平扫描-按下“0”键
精品课件
低电平动作键盘动作分析表
X3 X2 X1 X0 1 11 0 1 10 1 1 01 1 0 11 1 x xx x
精品课件
Y3 Y2 Y1 Y0 1 11 0 1 10 1 1 01 1 0 11 1 1 11 0 1 10 1 1 01 1 0 11 1 1 11 0 1 10 1 1 01 1 0 11 1 1 11 0 1 10 1 1 01 1 0 11 1 1 11 1
case 0x04: key3(); //键盘3功能函数。
break; case 0x08: key4();//键盘4功能函数。 break;
case 0x10: key5(); //键盘5功能函数。
break; case 0x20: key6();//键盘6功能函数。 break;
case 0x40: key7(); //键盘7功能函数。
动作按键 Key 0 Key 1 Key 2 Key 3 Key 4 Key 5 Key 6 Key 7 Key 8 Key 9 Key A Key B Key C Key D Key E Key F
无按键按下
高电平扫描-按下“0”键
精品课件
高电平动作键盘动作分析表
X3 X2 X1 X0 0 00 1 0 01 0 0 10 0 1 00 0 x xx x
精品课件
Y3 Y2 Y1 Y0 0 00 1 0 01 0 0 10 0 1 00 0 0 00 1 0 01 0 0 10 0 1 00 0 0 00 1 0 01 0 0 10 0 1 00 0 0 00 1 0 01 0 0 10 0 1 00 0 0 00 0
动作按键 Key 0 Key 1 Key 2 Key 3 Key 4 Key 5 Key 6 Key 7 Key 8 Key 9 Key A Key B Key C Key D Key E Key F
精品课件
例:74ls164+led(proteus)
精品课件
独立键盘
Vcc
k0
k1 k2 k3 k4 k5 k6 k7
10K
P1.0 P1.1 P1.2
P1.3 P1.4 P1.5 P1.6 P1.7
独立键盘原理图
精品课件
说明 :采用轮询方式查询P1口,采用延时法消除键盘抖
动 ----------------*/
讲座四
精品课件
❖1.多位LED显示 ❖2.键盘管理模块 ❖3.点阵、字符液晶显示器 ❖4.字模提取软件
精品课件
LED的工作原理
(a)典型的七段式LED器件 (b) 共阳极LED (c) 共阴极LED
精品课件
四位数七段LED数码管模块 (左为正面图、右为背面图)
精品课件
精品课件
LED数码管和单片机的连接1
P02.
a b
a b
c
c
d
d
e
e
f
f
g
g
P72.
dp
dp
机单片
+5v
P0.0
+5v
编程:(以共阳极为例) MOV P2,#11111001B(0F9H)
P0.7
MOV P0,#10100100B(0A4H)
静态连接精品课件
SJMP
$ 静态显示
LED数码管和单片机的连接2
P02.
a b
c
d
e
f
g
P72.
break; case 0x80: key8();//键盘8功能函数。 break; default:break;
矩阵式键盘控制
精品课件
4x4 键盘的内部结构
精品课件
市售一体成型的4x4键盘
正面
背面
ห้องสมุดไป่ตู้
X0 X1 X2 X3 Y3 Y2 Y1 Y0
Y0 Y1 Y2 Y3 X3 X2 X1 X0
精品课件
switch(n){ case(0xe0):display(0);break; case(0xd0):display(1);break; case(0xb0):display(2);break; case(0x70):display(3);break; } } } P1=0xfd; n=P1; n&=0xf0; if(n!=0xf0){ delay(); P1=0xfd; n=P1; n&=0xf0; if(n!=0xf0){ switch(n){ case(0xe0):display(4);break; case(0xd0):display(5);break; case(0xb0):display(6);break; case(0x70):display(7);break; } } }
无按键按下
4×4键盘扫描电路
精品课件
1. 行扫描法的原理 基本原理: 分行扫描
检查是否有键按下 若有,确定哪个键被按下
精品课件
判 断 哪 一 个 键 被 按 下 的 流 程
精品课件
P1=0xfe;
n=P1; n&=0xf0; if(n!=0xf0){ delay(); P1=0xfe; n=P1; n&=0xf0; if(n!=0xf0){
case 0x01:
#include <reg51.h>
/********************************
函数名称:delay()
功能:用于键盘消抖的延时函数
说明:无
入口参数:无
返回值 :无
********************************/
void delay()
{
unsigned char i;
相关主题