模块五单片机接口电路及应用.docx

上传人:b****6 文档编号:5180443 上传时间:2022-12-13 格式:DOCX 页数:60 大小:943.82KB
下载 相关 举报
模块五单片机接口电路及应用.docx_第1页
第1页 / 共60页
模块五单片机接口电路及应用.docx_第2页
第2页 / 共60页
模块五单片机接口电路及应用.docx_第3页
第3页 / 共60页
模块五单片机接口电路及应用.docx_第4页
第4页 / 共60页
模块五单片机接口电路及应用.docx_第5页
第5页 / 共60页
点击查看更多>>
下载资源
资源描述

模块五单片机接口电路及应用.docx

《模块五单片机接口电路及应用.docx》由会员分享,可在线阅读,更多相关《模块五单片机接口电路及应用.docx(60页珍藏版)》请在冰豆网上搜索。

模块五单片机接口电路及应用.docx

模块五单片机接口电路及应用

 

《单片机应用技术》

电子教案

 

 

佛山职业技术学院

FoshanPolytechnic

教学单元:

键盘接口电路及其应用

教学时数:

2学时

教学方法:

一体化教学

教学目的:

1、掌握行列式键盘结构及编程方法。

2、掌握灯光控制器电路设计方法。

3、掌握灯光控制器程序设计方法。

教学重点:

灯光控制器电路设计方法,灯光控制器程序设计方法

教学难点:

灯光控制器程序设计方法。

教学过程

模块五单片机接口电路及应用

课题一键盘接口电路及其应用

任务一多功能灯光控制器

一、任务目标

本任务主要学习行列式键盘电路设计及软件编程,并通过一个多功能灯光控制器应用系统讲解键盘的按键功能编程方法。

二、任务分析

1、电路设计

该电路由89C51单片机作控制器,P1.0~P1.5为键盘口线,其中P1.0和P1.1为键盘扫描输出线,P1.2~P1.5为键盘扫描输入线,组成2×4共8个功能按键,4个“灯光闪烁模式”选择按键(模式1键、模式2键、模式3键、模式4键),2个“灯光输出路数”选择按键(4路键和8路键),2个“灯光闪烁速度”选择按键(慢速键和快速键)。

P0口为8路灯光输出;8只发光二极管供操作人员监视用,共阳极连接,P0口低电平输出灯亮。

9脚为复位端,本电路具有上电复位和按键复位两种复位功能。

18脚、19脚接6MHz晶振。

2、软件设计

存储单元分配:

R1为灯光数据表的索引值寄存器,R3为灯光模式寄存器(模式1时为0、模式2时为1、模式3时为2、模式4时为3),R4为灯光路数寄存器(4路时为0、8路时为4),30H单元为灯光速度存储单元(慢速为时4、快速时为2)。

程序开始进行上述单元的初始化,将R1置为0,R3置为0,R4置为4,30H单元置为4,所以初始灯光为8路、模式1、慢速闪烁方式。

接着将8路模式1灯光数据表首地址送DPTR,将索引值送A,查表得灯光数据。

判断取得的灯光数据是否为结束码(标志完成一次亮灯循环,结束码由用户自行设定,只要不是灯光数据表中的数据均可作为结束码,在本程序中设定为D3H),如是结束码,则将索引值寄存器R1清0,重新进行下一次亮灯循环;如不是结束码,则将灯光数据送P0口输出,然后调用键盘扫描子程序。

键盘扫描子程序进行键盘扫描并计算出按键值存放于B中,在按键释放后调用按键操作子程序,根据按键值转入对应按键的功能程序。

如是0号键给R3送入数据0,1号键给R3送入数据1,2号键给R3送入数据2,3号键给R3送入数据3,4号键给R4送入数据0,5号键给R4送入数据4,6号键给30H单元送入数据4,7号键给30H单元送入数据2。

最后根据R3和R4的值将8个灯光数据表中的某一数据表首地址送DPTR。

键盘扫描子程序结束后,再调用显示延时子程序,根据30H单元中的数据进行相应时间的灯光延时,然后取下一个灯光数据。

 

 

图5-1灯光控制主程序流程图

三、相关知识

键盘控制程序需完成的任务有:

监测是否有键按下,有键按下时,在无硬件去抖动电路时,应用软件延时方法消除按键抖动影响;当有多个按键同时按下时,只处理一个按键,不管一次按键持续多长时间,仅执行一次按键功能程序。

1、行列式键盘的结构及工作原理

行列式键盘电路如图5-2所示。

图5-2行列式键盘电路

在图5-2中,P1口的6位P1.0~P1.5为键盘口线,组成2行4列共8个按键的行列式键盘矩阵,其中行线P1.0和P1.1为键盘扫描输出线,列线P1.2~P1.5为键盘扫描输入线,通过4个上拉电阻接到电源。

在行列线的交叉点上为按键,行线和列线分别接到按键开关的两端。

当键盘上没有键闭合时,行线和列线之间是断开的,所有列线输入全部为高电平。

当键盘上某个按键按下时,则对应的行线和列线短接,行线输出即为列线输入。

当键盘初始化时所有行线输出低电平,则通过读取的列线值状态是否全为1,即可判断有无键按下。

究竟是哪个键按下的,此时并判断不出来,还必须通过键盘扫描才能判断。

在键盘扫描时,先让第一行P1.0输出低电平0,其余行(即P1.1行)输出高电平1,检查各列(P1.2~P1.5列)的输入状态值,如某列的输入电平为0,则第一行线和对应列线相交的键按下,否则可判断在P1.0行的键没有被按下。

如P1.0行无键按下,则继续扫描下一行(P1.1行),让P1.1行输出低电平0,其余行(即P1.0行)输出高电平1,同样检查各列(P1.2~P1.5列)的输入状态值,如某列的输入电平为0,则第二行和对应列线相交的键按下,否则P1.1行无键按下。

当两行均扫描完后,仍未检查到列线输入值有0的情况,则表示此次并无键按下。

这种工作方式称为键盘扫描。

2、行列式键盘控制程序需完成的任务

(1)判断键盘有无按键按下

(2)按键去抖动处理

(3)键盘扫描

(4)计算按键值

3、行列式键盘编程

按以上分析可得行列式键盘程序的流程如图5-3所示,按键功能子程序流程图如图5-4所示。

 

图5-3键盘子程序流程图

 

按以上流程图编写的键盘子程序如下:

ORG0100H

KEYSCAN:

MOVP1,#3CH;两条键盘输出线(行线P1.0和P1.1)均输出为0

MOVA,P1;读取键盘口P1的值

ANLA,#3CH;取出输入线(列线P1.2~P1.5)状态值

CJNEA,#3CH,KEY1;判断输入线状态是否全为1(即有无键按下)

LJMPKEYEND;无键按下返回

KEY1:

LCALLDEL12;有键按下调用12ms延时子程序,以消除按键抖动

MOVA,#3EH;扫描第一行,即P1.0输出为0

KEY2:

MOVR2,A;将扫描码暂存于R2中

MOVP1,A;扫描码输出给键盘口P1

MOVA,P1;读取键盘口的状态

ANLA,#3CH;取出输入线(列线)的状态

CJNEA,#3CH,KEY3;判断列线是否全为1,即第一行是否有键按下,有键按下转计算键值

MOVA,#3DH;第一行没有键按下,接着扫描第二行

MOVR2,A;将扫描码暂存于R2中

MOVP1,A;将第二行扫描码输出给P1

MOVA,P1;读取P1口的状态

ANLA,#3CH;取出列线的状态

CJNEA,#3CH,KEY3;判断列线是否全为1,即第二行是否有键按下,有键按下转计算键值

LJMPKEYEND;返回

KEY3:

MOVB,#0FBH;键值寄存器B赋初值FBH

RLA;因P1.7和P1.6没接按键,所以应将其移出

RLA

KEY4:

RLCA;判断是哪列按键按下的

INCB;第一列键值加1、第二列键值加2、第三列键值加3、第四列键值加4

JCKEY4

MOVA,R2;将扫描码送A

KEY5:

RRCA;判断是哪行按键按下的

INCB;第一行键值加4

INCB;第二行键值加8

INCB

INCB

JCKEY5

KEY6:

MOVA,P1;读取键盘口P1的值

ANLA,#3CH;取出键盘列线状态

CJNEA,#3CH,KEY6;判断按键是否释放,没释放等待按键释放

LCALLDEL12;调用12ms延时子程序,以消除按键抖动

LCALLOPREAT;调用按键功能子程序

KEYEND:

RET;返回

根据任务要求,编写的按键功能子程序流程图如图5-4所示。

 

图5-4按键功能子程序流程图

根据流程图及设计任务要求编写的按键功能子程序如下所示:

ORG0200H

OPREAT:

MOVA,B;从B中取出键值送入A

RLA;A的值左移一位,即A的值乘2

MOVDPTR,#TABLE1;将按键功能入口地址表表首地址送DPTR

JMP@A+DPTR;根据A的值(即键值)跳转至相应的按键功能入口地址处

TABLE1:

AJMPK0;0号键功能入口地址

AJMPK1;1号键功能入口地址

AJMPK2;2号键功能入口地址

AJMPK3;3号键功能入口地址

AJMPK4;4号键功能入口地址

AJMPK5;5号键功能入口地址

AJMPK6;6号键功能入口地址

AJMPK7;7号键功能入口地址

K0:

MOVR3,#00H;0号键按下时将灯光模式寄存器R3置0(模式1)

LJMPOPR

K1:

MOVR3,#01H;1号键按下时将灯光模式寄存器R3置1(模式2)

LJMPOPR

K2:

MOVR3,#02H;2号键按下时将灯光模式寄存器R3置2(模式3)

LJMPOPR

K3:

MOVR3,#03H;3号键按下时将灯光模式寄存器R3置3(模式4)

LJMPOPR

K4:

MOVR4,#00H;4号键按下时将灯光路数寄存器R4置0(4路)

LJMPOPR

K5:

MOVR4,#04H;5号键按下时将灯光路数寄存器R4置4(8路)

LJMPOPR

K6:

MOV30H,#04H;6号键按下时将30H单元(灯光速度存储单元)置4(慢速)

LJMPOPR

K7:

MOV30H,#02H;7号键按下时将30H单元(灯光速度存储单元)置2(快速)

OPR:

MOVA,R3;R3与R4相加形成灯光数据表入口地址

ADDA,R4

RLA

MOVDPTR,#TABLE2;将灯光数据入口地址表表首地址送DPTR

JMP@A+DPTR;根据A的值(灯光路数和模式)跳转至相应的灯光数据入口地址处

TABLE2:

AJMPKK0;4路模式1时灯光数据入口地址

AJMPKK1;4路模式2时灯光数据入口地址

AJMPKK2;4路模式3时灯光数据入口地址

AJMPKK3;4路模式4时灯光数据入口地址

AJMPKK4;8路模式1时灯光数据入口地址

AJMPKK5;8路模式2时灯光数据入口地址

AJMPKK6;8路模式3时灯光数据入口地址

AJMPKK7;8路模式4时灯光数据入口地址

KK0:

MOVDPTR,#TAB41;将4路模式1灯光数据表表首地址送DPTR

SJMPOPREND

KK1:

MOVDPTR,#TAB42;将4路模式2灯光数据表表首地址送DPTR

SJMPOPREND

KK2:

MOVDPTR,#TAB43;将4路模式3灯光数据表表首地址送DPTR

SJMPOPREND

KK3:

MOVDPTR,#TAB44;将4路模式4灯光数据表表首地址送DPTR

SJMPOPREND

KK4:

MOVDPTR,#TAB81;将8路模式1灯光数据表表首地址送DPTR

SJMPOPREND

KK5:

MOVDPTR,#TAB82;将8路模式2灯光数据表表首地址送DPTR

SJMPOPREND

KK6:

MOVDPTR,#TAB83;将8路模式3灯光数据表表首地址送DPTR

SJMPOPREND

KK7:

MOVDPTR,#TAB84;将8路模式4灯光数据表表首地址送DPTR

OPREND:

MOVR1,#00H;将灯光数据表索引值寄存器清0

RET

四、任务实施

1、灯光控制器硬件电路设计

根据以上任务分析及相关知识设计出的灯光控制器电路原理图如图5-5所示。

图5-5灯光控制器电路原理图

2、灯光控制器程序设计

根据以上任务分析及相关知识编写的灯光控制器程序如下:

ORG0000H;主程序

MOVP0,#0FFH;将P0口置为FFH,所有灯全灭

MOVR1,#00H;将灯光数据表索引值寄存器清0

MOVR3,#00H;将灯光模式寄存器R3置0(模式1)

MOVR4,#04H;将灯光路数寄存器R4置4(8路)

MOVSP,#20H;将栈指针置20H

MOV30H,#04H;将灯光速度存储单元置4(慢速)

MOVDPTR,#TAB81;将8路模式1灯光数据表首地址送DPTR

START:

MOVA,R1;将索引值送A

MOVCA,@A+DPTR;查表得灯光数据

CJNEA,#0D3H,DISP;判断灯光数据是否为结束码D3H

MOVR1,#00H;为结束码,则将索引值清0

SJMPSTART;跳转至START处,重新进行下一次灯光循环

DISP:

MOVP0,A;不为结束码,将灯光数据输出给P0口

INCR1;索引值加1

LCALLKEYSCAN;调键盘扫描及处理子程序

LCALLDISPDEL;调显示延时子程序

SJMPSTART;跳转至START处

ORG0100H;键盘扫描及处理子程序

KEYSCAN:

MOVP1,#3CH

MOVA,P1

ANLA,#3CH

CJNEA,#3CH,KEY1

LJMPKEYEND

KEY1:

LCALLDEL12

MOVA,#3EH

KEY2:

MOVR2,A

MOVP1,A

MOVA,P1

ANLA,#3CH

CJNEA,#3CH,KEY3

MOVA,#3DH

MOVR2,A

MOVP1,A

MOVA,P1

ANLA,#3CH

CJNEA,#3CH,KEY3

LJMPKEYEND

KEY3:

MOVB,#0FBH

RLA

RLA

KEY4:

RLCA

INCB

JCKEY4

MOVA,R2

KEY5:

RRCA

INCB

INCB

INCB

INCB

JCKEY5

KEY6:

MOVA,P1

ANLA,#3CH

CJNEA,#3CH,KEY6

LCALLDEL12

LCALLOPREAT

KEYEND:

RET

ORG0200H;按键功能子程序

OPREAT:

MOVA,B

RLA

MOVDPTR,#TABLE1

JMP@A+DPTR

TABLE1:

AJMPK0

AJMPK1

AJMPK2

AJMPK3

AJMPK4

AJMPK5

AJMPK6

AJMPK7

K0:

MOVR3,#00H

LJMPOPR

K1:

MOVR3,#01H

LJMPOPR

K2:

MOVR3,#02H

LJMPOPR

K3:

MOVR3,#03H

LJMPOPR

K4:

MOVR4,#00H

LJMPOPR

K5:

MOVR4,#04H

LJMPOPR

K6:

MOV30H,#04H

LJMPOPR

K7:

MOV30H,#02H

OPR:

MOVA,R3

ADDA,R4

RLA

MOVDPTR,#TABLE2

JMP@A+DPTR

TABLE2:

AJMPKK0

AJMPKK1

AJMPKK2

AJMPKK3

AJMPKK4

AJMPKK5

AJMPKK6

AJMPKK7

KK0:

MOVDPTR,#TAB41

SJMPOPREND

KK1:

MOVDPTR,#TAB42

SJMPOPREND

KK2:

MOVDPTR,#TAB43

SJMPOPREND

KK3:

MOVDPTR,#TAB44

SJMPOPREND

KK4:

MOVDPTR,#TAB81

SJMPOPREND

KK5:

MOVDPTR,#TAB82

SJMPOPREND

KK6:

MOVDPTR,#TAB83

SJMPOPREND

KK7:

MOVDPTR,#TAB84

OPREND:

MOVR1,#00H

RET

ORG0300H;显示延时子程序

DISPDEL:

MOVR5,30H

DISPDEL1:

MOVR6,#0FAH

DISPDEL2:

MOVR7,#0FAH

DISPDEL3:

DJNZR7,DISPDEL3

DJNZR6,DISPDEL2

DJNZR5,DISPDEL1

RET

ORG0350H;按键去抖动延时子程序

DEL12:

MOVR6,#1EH

DEL2:

MOVR7,#64H

DEL1:

DJNZR7,DEL1

DJNZR6,DEL2

RET

TAB41:

DB0DFH,0EFH,0F7H,0FBH,0F7H,0EFH,0DFH,0FFH;4路模式1灯光数据表

DB0DFH,0CFH,0C7H,0C3H,0FBH,0F3H,0E3H,0C3H,0FFH

DB0D7H,0EBH,0D7H,0EBH,0FFH,0C3H,0FFH,0C3H,0FFH,0D3H

TAB42:

DB0DFH,0EFH,0F7H,0FBH,0F7H,0EFH,0D3H;4路模式2灯光数据表

TAB43:

DB0DFH,0CFH,0C7H,0C3H,0FFH;4路模式3灯光数据表

DB0FBH,0F3H,0E3H,0C3H,0FFH,0D3H

TAB44:

DB0D7H,0EBH,0D3H;4路模式4灯光数据表

TAB81:

DB0E7H,0DBH,0BDH,7EH,0BDH,0DBH,0E7H,0FFH;8路模式1灯光数据表

DB0E7H,0C3H,81H,00H,00H,81H,0C3H,0E7H,0FFH,0D3H

TAB82:

DB7FH,0BFH,0DFH,0EFH,0F7H,0FBH,0FDH,0FEH;8路模式2灯光数据表

DB7EH,0BEH,0DEH,0EEH,0F6H,0FAH,0FCH

DB7CH,0BCH,0DCH,0ECH,0F4H,0F8H

DB78H,0B8H,0D8H,0E8H,0F0H

DB70H,0B0H,0D0H,0E0H,60H,0A0H,0C0H,40H,80H,00H,00H,0D3H

TAB83:

DB7FH,3FH,1FH,0FH,07H,03H,01H,00H;8路模式3灯光数据表

DB01H,03H,07H,0FH,1FH,3FH,7FH,0FFH,0D3H

TAB84:

DB0AAH,55H,0D3H;8路模式4灯光数据表

小结

1、行列式键盘接口电路及编程方法。

2、灯光控制器电路设计方法。

3、灯光控制器程序设计方法。

课后作业

1、用Protel软件绘制出本设计任务的电路原理图,并设计印制电路板图及制作印制电路板。

2、连接仿真器,将本设计任务的程序输入计算机,并进行仿真调试及运行。

3、连接编程器,将仿真通过的程序代码下载到单片机中,脱机运行并观察电路运行情况。

4、分析本任务中的键盘扫描及处理程序,并分析键值的计算方法,是否还能用其它方法来编写键盘扫描程序。

5、自行设计几组亮灯数据,上机调试运行,观察电路运行情况。

6、在本任务的键盘扫描程序中,将按键去抖动和等待按键释放程序段删除,程序修改后上机调试运行,观察电路运行情况,并分析原因。

教学单元:

密码锁控制器

教学时数:

2学时

教学方法:

一体化教学

教学目的:

1、掌握密码锁控制器电路设计方法。

2、掌握密码锁控制器程序设计方法。

教学重点:

密码锁控制器电路设计方法,密码锁控制器程序设计方法。

教学难点:

密码锁控制器程序设计方法。

教学过程

任务二智能密码锁控制器

一、任务目标

本任务主要讲解用单片机设计的密码锁控制器,要求工作稳定可靠,保密性高,实用性强,并具有报警控制功能。

二、任务分析

1、密码锁控制器硬件电路设计

89C51单片机的P2口作键盘口,其中P2.4~P2.7为键盘扫描输出线,P2.0~P2.3为键盘扫描输入线。

P1口为信号输出口,其中P1.0输出开锁控制信号驱动电磁锁,P1.1输出密码错信号,P1.2输出报警控制信号驱动报警器。

键盘由4×4共16个按键组成,15个数字或字母键,1个输入键。

本任务程序所设密码由8位字符组成(用户对程序稍加修改,便可设置为任意位数的密码),每位字符可为0~9及A~E的15个数字或字母中的任意一个,确保密码的保密性。

通电复位,电路进入就绪状态,等待用户输入密码。

当用户输入密码并按下输入键后,由程序判断输入的密码是否正确。

如输入密码正确,则由P1.0输出开锁控制信号,同时点亮绿灯;如输入密码错误,则由P1.1输出密码错误指示信号,点亮红灯,用户可再次输入密码;如连续3次输入密码错误,则由P1.2输出报警控制信号,同时点亮黄灯。

一旦输出报警信号,就必须等待解除报警后方可重新输入密码开锁。

2、密码锁控制器程序设计

程序开始向P1口输出FFH,使密码正确指示信号灯(P1.0)、密码错误指示信号灯(P1.1)和报警指示信号灯(P1.2)灭。

然后进行初始化,将密码输入错误次数寄存器R4清0,输入密码存储指针寄存器R0置为1FH(即输入密码存储于片内RAM20H单元开始的若干个单元中),输入密码位数计数寄存器R3清0。

然后进行键盘扫描及计算键号并存于B中,再调用按键操作子程序。

在按键操作子程序中,先将输入按键号(即输入的密码字符)存于片内RAM的20H单元开始的密码暂存区中,再判断是不是输入键,如不是输入键,则密码位数计数器R3加1,如是输入按键,则表示密码输入结束。

接着进行输入密码与存储于程序存储器中的设定密码比较,首先判断输入密码位数是否为程序设定的8位(用户可修改),如不是8位,则不比较,密码错误指示灯点亮,将输入密码错误次数计数器R4加1;判断密码输入错误次数是否为3次,如达到3次输入错误,则输出报警信号,同时点亮报警指示灯,程序动态停机;如输入密码错误次数不到3次,则可再次重新输入密码。

如输入密码位数为8位,则将暂存于片内RAM中的输入密码与设定密码逐位比较,如比较结果为输入密码与设定密码相同,则输出开锁信号,同时点亮密码正确指示灯,延时3S后重新锁定。

如任何一位密码不相等,则进行如前所述的密码错误处理操作。

 

 

图5-6密码锁控制器主程序流程图

 

 

图5-7按键操作子程序流程图

三、相关知识

键盘的相关知识在本课题的任务一中已详细讲解过,此处不再赘述。

四、任务实施

1、密码锁控制器电路设计

根据以上任务分析设计出的密码锁控制器电路原理图如图5-8所示。

图5-8密码锁控制器电路原理图

2、密码锁控制器程序设计

根据前面的任务分析,编写的原程序如下:

ORG0000H;主程序

   MOVP1,#0FFH;P1口输出FFH

MOVR4,#00H;输入密码错误次数寄存器R4清0

MOVR0,#1FH;输入密码暂存区指针R0赋初值1FH

MOVR3

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

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1