单片机实验--键盘扫描

合集下载

实验五 键盘扫描实验 实验报告

实验五 键盘扫描实验 实验报告

键盘扫描实验实验报告一、实验目的1. 掌握线反转法键盘扫描原理。

2. 了解单片机的输入和输出过程,理解单片机的数据采集过程。

二、实验内容单片机外接4x4键盘,通过线反转法判断按下的键,并在数码管上显示按键对应的数字。

第一行从左到右分别是开关K0, K1, K2, K3,第二行从左到右分别是K4, K5, K6, K7以此类推。

当按下Kn时,在数码管上显示数字n。

三、实验原理线翻转法:先对行(R0-R3)置0,对列(R4-R7)置1。

当有键被按下时,会把按键所在的列的电位从1变0,记录下位置;然后再将行列翻转,记录下按下键的所在行,两数进行或运算,就可以得到一个唯一表示按下键的数字。

例如:假定R0-R7分别与单片机的P2.0-P2.7相连。

先把R4-R7置1,R0-R3置0(通过指令MOV P2, #0F0H实现)。

当键K5被按下时,R5电位被拉低为低电平。

此时,P2口表示的数为:1101 0000(0xD0);然后再置R4-R7为0,R0-R3为1,此时,R1电位被拉低为低电平,此时,P2口表示的数为:0000 1101(0x0D)。

将两数相与取反,得到:0010 0010。

四、实验过程1. 连接好单片机及其外围设备电路2. 编写汇编程序ORG LJMP KeyLJMP K7: CJNE R2, #82H, K8ORG 0100H MOV P0, #0F8H Init: CLR P1.3 LJMP KeyMOV P0, #0C0H K8: CJNE R2, #14H, K9 Key: MOV P2, #0F0H MOV P0, #080HMOV A, P2 LJMP KeyMOV R1, A K9: CJNE R2, #24H, K10MOV P2, #0FH MOV P0, #090HMOV A, P2 LJMP KeyORL A, R1 K10: CJNE R2, #44H, K11CPL A MOV P0, #088HMOV R2, A LJMP KeyJNZ KeyPro K11: CJNE R2, #84H, K12LJMP Key MOV P0, #083H KeyPro: CJNE R2, #11H, K1 LJMP KeyMOV P0, #0C0H K12: CJNE R2, #18H, K13LJMP Key MOV P0, #0C6H K1: CJNE R2, #21H, K2 LJMP KeyMOV P0, #0F9H K13: CJNE R2, #28H, K14LJMP Key MOV P0, #0A1H K2: CJNE R2, #41H, K3 LJMP KeyMOV P0, #0A4H K14: CJNE R2, #48H, K15LJMP Key MOV P0, #086H K3: CJNE R2, #81H, K4 LJMP KeyMOV P0, #0B0H K15: CJNE R2, #88H, K16LJMP Key MOV P0, #08EH K4: CJNE R2, #12H, K5 LJMP KeyMOV P0, #099H K16: LJMP KeyLJMP Key ENDK5: CJNE R2, #22H, K6MOV P0, #092HLJMP KeyK6: CJNE R2, #42H, K7MOV P0, #082H五、实验结果1. 当按下开关Kn时,数码管能够显示对应的数字。

实验八 键盘扫描实验

实验八  键盘扫描实验

实验八键盘扫描实验一、实验目的1. 掌握中断键盘扫描编程方法。

2. 掌握LED动态显示方法。

二、实验原理及实验内容1. 实验原理无论是单片机控制系统还是单片机测量系统,都需要一个人机对话装置,这种人机对话装置通常采用键盘和显示器。

键盘是单片机应用系统中人机对话常用的输入装置,而显示器是单片机应用系统人机对话中的常用输出装置。

键盘是由若干个按键开关组成,键的多少根据单片机应用系统的用途而定。

键盘由许多键组成,而每个键相当于一个机械开关触点,当键按下时,触点闭合,当键松开时,触点断开。

单片机接收到按键的触点信号后作相应的功能处理。

因此对于单片机系统来说键盘接口信号是输入信号。

单片机的键盘接口分为独立式和矩阵式。

独立式键盘的每个按键都有一个信号线与单片机电路相连,所有按键有一个公共地或公共正端,每个键相互独立互不影响。

如图7-7所示,当按下键1时,无论其它键是否按下,键1的信号线就由1变0;当松开键1时,无论其它键是否按下,键1的信号线就由0变1。

矩阵式键盘的按键触点接于由行、列母线构成的矩阵电路的交叉处,每当一个按键按下时通过该键将相应的行、列母线连通。

若在行、列母线中把行母线逐行置0(一种扫描方式),那么列母线就用来作信号输入线。

矩阵式键盘原理图如图7-8所示。

图7-7 独立式按键原理图图7-8 矩阵式按键原理图针对以上两大类键盘工作方式,单片机又有三种键盘扫描方式:查询方式;定时扫描方式和中断扫描方式。

查询方式是指在程序中用一段专门的扫描和读按键程序不停查询有无按键按下,确定键值。

这种方式电路简单,但需要占用单片机的机器时间。

定时扫描方式是指利用单片机内的定时器来产生定时中断,然后在定时中断的服务程序中扫描,检查有无按键按下,确定键值。

这种方式的电路也比较简单,不占用单片机的机器时间,但需要占用一个定时器,同时定时的时间不能过长,否则可能检测不到相应得按键。

中断扫描方式是指当有键按下时由相应的硬件电路产生中断信号,单片机在中断服务程序中扫描,检查有无按键按下,确定键值。

实验四 键盘扫描与数码管显示实验

实验四 键盘扫描与数码管显示实验
电子科技大学中山学院学生实验报告
院别:电子信息学院课程名称:微处理器实验
班级:通信11A姓名:xxxx学号:
实验名称:键盘扫描与数码管显示实验实验时间:2013年10月21日
成绩:教师签名:批改时间:
一、实验原理与目的
原理:
74HC164
74HC165
目的:
1、学会利用单片机进行键盘扫描行LED点阵的扫描显示;
2、学会利用单片机实现数码管显示。
二、实验仪器
1、PC机一台
2、DP-51PRO单片机综合仿真实验仪一台
三、实验内容与分析
1、编写一段程序,此程序的目的是通过单片机的P1口控制扫描,用C5区的74HC164控制显示输出,使C3区的8×8LED点阵显示一个“X”。
CLKEQUP3.2
DINAEQUP3.3
DINBEQUP3.4
CLEAREQUP3.5
ORG0000H
AJMPMAIN
ORG 0100H
MAIN:
MOVSP,#70H
MOV50H,#07EH
MOV51H,#0BDH
MOV52H,#0DBH
MOV53H,#0E7H
MOV54H,#0E7H
MOV55H,#0DBH
MOV56H,#0BDH
MOV57H,#07EH
PLEQUP3.0
CLK1EQUP3.1
CLK2EQUP3.2
SEREQUP3.3
Q7EQUP3.5
ORG0000H
LJMPMAIN
ORG0100H
MAIN:MOVSP,#60H;设置堆栈
MOVR4,#00;延时
DJNZR4,$
MOVA,#0;变量清零
SETBQ7;Q=1,端口设为输出状态

键盘扫描程序实验报告

键盘扫描程序实验报告

一、实验目的1. 理解键盘扫描的基本原理。

2. 掌握使用C语言进行键盘扫描程序设计。

3. 学习键盘矩阵扫描的编程方法。

4. 提高单片机应用系统的编程能力。

二、实验原理键盘扫描是指通过检测键盘矩阵的行列状态,判断按键是否被按下,并获取按键的值。

常见的键盘扫描方法有独立键盘扫描和矩阵键盘扫描。

独立键盘扫描是将每个按键连接到单片机的独立引脚上,通过读取引脚状态来判断按键是否被按下。

矩阵键盘扫描是将多个按键排列成矩阵形式,通过扫描行列线来判断按键是否被按下。

这种方法可以大大减少引脚数量,降低成本。

本实验采用矩阵键盘扫描方法,使用单片机的并行口进行行列扫描。

三、实验设备1. 单片机开发板(如51单片机开发板)2. 键盘(4x4矩阵键盘)3. 连接线4. 调试软件(如Keil)四、实验步骤1. 连接键盘和单片机:将键盘的行列线分别连接到单片机的并行口引脚上。

2. 编写键盘扫描程序:(1)初始化并行口:将并行口设置为输入模式。

(2)编写行列扫描函数:逐行扫描行列线,判断按键是否被按下。

(3)获取按键值:根据行列状态,确定按键值。

(4)主函数:调用行列扫描函数,读取按键值,并根据按键值执行相应的操作。

3. 调试程序:将程序下载到单片机,观察键盘扫描效果。

五、实验程序```c#include <reg51.h>#define ROW P2#define COL P3void delay(unsigned int ms) {unsigned int i, j;for (i = 0; i < ms; i++)for (j = 0; j < 123; j++);}void scan_key() {unsigned char key_val = 0xFF;ROW = 0xFF; // 初始化行delay(1); // 延时消抖key_val = ROW & COL; // 获取按键值ROW = 0x00; // 初始化行delay(1); // 延时消抖key_val = ROW & COL; // 获取按键值ROW = 0x00; // 初始化行delay(1); // 延时消抖key_val = ROW & COL; // 获取按键值ROW = 0x00; // 初始化行delay(1); // 延时消抖key_val = ROW & COL; // 获取按键值}void main() {while (1) {scan_key();if (key_val != 0xFF) {// 执行按键对应的操作}}}```六、实验结果与分析1. 实验结果:程序下载到单片机后,按键按下时,单片机能够正确读取按键值。

实验四 单片机按键扫描编程

实验四 单片机按键扫描编程

仲恺农业工程学院实验报告纸信息科学与技术学院(院、系)电子信息工程专业通信161 班单片机原理及接口技术课实验四单片机按键扫描编程一、实验目的1、掌握单片机按键扫描的工作方式;2、掌握单片机按键扫描的编程方法。

二、实验内容1、学习单片机按键扫描的工作方式;2、扫描按键,控制LED灯实现闪烁和停止闪烁两种状态的切换。

基本要求:用按键Key1控制,按一下Key1,控制LED灯闪烁和停止闪烁的切换。

提高要求:用按键Key1,Key2控制,按一下Key1,控制LED灯闪烁;按一下Key2,控制LED灯常亮。

当LED灯闪烁时,按Key1,灯状态不变;当LED灯常亮时,按Key2,灯状态不变。

可考虑用无延时按键扫描的方式实现。

三、实验设备1、STC单片机开发板;2、PC机以及串口线。

四、实验分析及关键代码#include<reg51.h>#include <intrins.h>#define uchar unsigned charuchar counter=0;sbit KEY1=P2^6; //按下,值为0sbit LEDG=P2^5;void delay_10ms(void) //10ms延时函数{unsigned char i,j;for(j=0;j<10;j++){for (i=0;i<250;i++)_nop_();}}void timer()interrupt 1 using 1 //定时器1方式1,采用中断方式{TH0=(65536-50000)/256;TL0=(65536-50000)%256; //重置初值counter++;if(counter==10){LEDG=!LEDG; //LEDG取反改变灯的状态counter=0;}}void main(){TMOD=0X21;EA=1;ET0=1;TR0=1; //启动T/C0开始定时while(1){if(!KEY1){ delay_10ms();if(!KEY1){while(!KEY1);delay_10ms();TR0=!TR0; //执行按键任务LEDG=0;}}}实验分析:主函数分析:1.计时器初始化 2.进入while循环延时按键扫描,如果KEY1=0(按下),进行按键延时,再判断KEY1是否=0,=0再进行按键延时,然后定时器启动取反(既每次按下定时器依次启动或中断),使LEDG 灯定义亮。

单片机实验--键盘扫描

单片机实验--键盘扫描

实验4 键盘实验一、实验目的:1.掌握8255A编程原理。

2.了解键盘电路的工作原理。

3.掌握键盘接口电路的编程方法。

二、实验设备:CPU挂箱、8031CPU模块三、实验原理:1.识别键的闭合,通常采用行扫描法和行反转法。

行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然后读取列值,如所读列值中某位为低电平,表明有键按下,否则扫描下一行,直到扫完所有行。

本实验例程采用的是行反转法。

行反转法识别键闭合时,要将行线接一并行口,先让它工作于输出方式,将列线也接到一个并行口,先让它工作于输入方式,程序使CPU通过输出端口往各行线上全部送低电平,然后读入列线值,如此时有某键被按下,则必定会使某一列线值为0。

然后,程序对两个并行端口进行方式设置,使行线工作于输入方式,列线工作于输出方式,并将刚才读得的列线值从列线所接的并行端口输出,再读取行线上的输入值,那么,在闭合键所在的行线上的值必定为0。

这样,当一个键被按下时,必定可以读得一对唯一的行线值和列线值。

2.程序设计时,要学会灵活地对8255A的各端口进行方式设置。

3.程序设计时,可将各键对应的键值(行线值、列线值)放在一个表中,将要显示的0~F字符放在另一个表中,通过查表来确定按下的是哪一个键并正确显示出来。

实验题目利用实验箱上的8255A可编程并行接口芯片和矩阵键盘,编写程序,做到在键盘上每按一个数字键(0~F),用发光二极管将该代码显示出来。

四、实验步骤:将键盘RL10~RL17接8255A的PB0~PB7;KA10~KA12接8255A的PA0~PA2;PC0~PC7接发光二极管的L1~L8;8255A芯片的片选信号8255CS接CS0。

五、实验电路:六、程序框图7.程序清单八、附:8251/8255扩展模块该模块由8251可编程串行口电路和8255可编程并行口电路两部分组成,其电源、数据总线、地址总线和片选信号均由接口挂箱上的接口插座提供。

一、8251可编程串行口电路(1)8251可编程串行接口芯片引脚及功能8251A是通用同步/异步收发器USART,适合作异步起止式数据格式和同步面向字符数据格式的接口,其功能很强。

单片机键盘检测控制实验原理

单片机键盘检测控制实验原理

单片机键盘检测与控制实验是嵌入式系统和数字电子技术领域的一个常见实验,通过该实验,可以学习到单片机输入输出的基本原理、数字信号的处理方法以及键盘输入的检测和控制技术。

以下是这个实验的基本原理和步骤:**实验目的:**1. 了解单片机的输入输出原理。

2. 掌握键盘输入的检测原理。

3. 实现对键盘输入的基本控制。

**实验原理:**1. **单片机输入输出原理:** 单片机通常具有一些通用输入输出引脚,用于与外部设备进行信息交互。

这些引脚可以配置为输入或输出模式。

在实验中,我们主要使用单片机的输入引脚,将键盘连接到这些引脚上,以便单片机可以读取键盘的输入信号。

2. **键盘输入的检测原理:** 键盘通常是由多个按键组成的矩阵结构。

每个按键都与键盘的一行和一列相连。

通过扫描键盘的行和列,可以检测到哪个按键被按下。

具体步骤如下:- **行扫描:** 单片机首先选择一行,将该行置为低电平,同时检测每一列的状态。

如果某一列为低电平,说明该列对应的按键被按下。

- **列扫描:** 单片机依次选择每一列,将该列置为低电平,同时检测每一行的状态。

如果某一行为低电平,说明该行对应的按键被按下。

3. **实现对键盘输入的基本控制:** 一旦检测到按键按下的信号,单片机可以采取相应的措施,例如在数码管上显示按下的键值、驱动LED灯等。

**实验步骤:**1. **连接键盘:** 将键盘的行和列引脚连接到单片机的相应引脚上。

2. **编写程序:** 使用编程语言(如C语言或汇编语言)编写程序,实现键盘输入的检测和控制逻辑。

3. **下载程序:** 将编写好的程序下载到单片机中。

4. **运行实验:** 接通电源,运行实验,观察键盘输入的检测和相应控制的效果。

**实验注意事项:**1. 确保键盘连接正确,行和列的对应关系准确。

2. 程序中的扫描算法要正确,确保能够准确检测到键盘的按键状态。

3. 在程序中加入防抖动处理,防止由于按键机械弹性导致的多次触发。

单片机实验--键盘扫描

单片机实验--键盘扫描

实验4 键盘实验一、实验目的:1.掌握8255A编程原理。

2.了解键盘电路的工作原理。

3.掌握键盘接口电路的编程方法。

二、实验设备:CPU挂箱、8031CPU模块三、实验原理:1.识别键的闭合,通常采用行扫描法和行反转法。

行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然后读取列值,如所读列值中某位为低电平,表明有键按下,否则扫描下一行,直到扫完所有行。

本实验例程采用的是行反转法。

行反转法识别键闭合时,要将行线接一并行口,先让它工作于输出方式,将列线也接到一个并行口,先让它工作于输入方式,程序使CPU通过输出端口往各行线上全部送低电平,然后读入列线值,如此时有某键被按下,则必定会使某一列线值为0。

然后,程序对两个并行端口进行方式设置,使行线工作于输入方式,列线工作于输出方式,并将刚才读得的列线值从列线所接的并行端口输出,再读取行线上的输入值,那么,在闭合键所在的行线上的值必定为0。

这样,当一个键被按下时,必定可以读得一对唯一的行线值和列线值。

2.程序设计时,要学会灵活地对8255A的各端口进行方式设置。

3.程序设计时,可将各键对应的键值(行线值、列线值)放在一个表中,将要显示的0~F字符放在另一个表中,通过查表来确定按下的是哪一个键并正确显示出来。

实验题目利用实验箱上的8255A可编程并行接口芯片和矩阵键盘,编写程序,做到在键盘上每按一个数字键(0~F),用发光二极管将该代码显示出来。

四、实验步骤:将键盘RL10~RL17接8255A的PB0~PB7;KA10~KA12接8255A的PA0~PA2;PC0~PC7接发光二极管的L1~L8;8255A芯片的片选信号8255CS接CS0。

五、实验电路:六、程序框图7.程序清单八、附:8251/8255扩展模块该模块由8251可编程串行口电路和8255可编程并行口电路两部分组成,其电源、数据总线、地址总线和片选信号均由接口挂箱上的接口插座提供。

一、8251可编程串行口电路(1)8251可编程串行接口芯片引脚及功能8251A是通用同步/异步收发器USART,适合作异步起止式数据格式和同步面向字符数据格式的接口,其功能很强。

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

实验 4 键盘实验一、实验目的:1.掌握 8255A 编程原理。

2.了解键盘电路的工作原理。

3.掌握键盘接口电路的编程方法。

二、实验设备:CPU 挂箱、 8031CPU 模块三、实验原理:1.识别键的闭合,通常采用行扫描法和行反转法。

行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然后读取列值,如所读列值中某位为低电平,表明有键按下,否则扫描下一行,直到扫完所有行。

本实验例程采用的是行反转法。

行反转法识别键闭合时,要将行线接一并行口,先让它工作于输出方式,将列线也接到一个并行口,先让它工作于输入方式,程序使 CPU 通过输出端口往各行线上全部送低电平,然后读入列线值,如此时有某键被按下,则必定会使某一列线值为 0。

然后,程序对两个并行端口进行方式设置,使行线工作于输入方式,列线工作于输出方式,并将刚才读得的列线值从列线所接的并行端口输出,再读取行线上的输入值,那么,在闭合键所在的行线上的值必定为 0 。

这样,当一个键被按下时,必定可以读得一对唯一的行线值和列线值。

2.程序设计时,要学会灵活地对8255A 的各端口进行方式设置。

3.程序设计时,可将各键对应的键值(行线值、列线值)放在一个表中,将要显示的0〜F字符放在另一个表中,通过查表来确定按下的是哪一个键并正确显示出来。

实验题目利用实验箱上的 8255A 可编程并行接口芯片和矩阵键盘,编写程序,做到在键盘上每按一个数字键(0〜F),用发光二极管将该代码显示出来。

四、实验步骤:将键盘 RL10 〜 RL17 接 8255A 的 PB0 〜 PB7;KA10 〜 KA12 接 8255A 的 PA0〜 PA2;PC0〜PC7接发光二极管的 L1〜L8 ; 8255A 芯片的片选信号 8255CS接CS0。

五、实验电路:3-- -^-LJ-X*—7白I丿.,I n T —;白—广一□1六、程序框图7.程序清单根据豹th/1啲陆査者Q输冷"O' ・ >'.Pr3JU 入伯是国为愛"广〔寛期匕上八、附:8251/8255 扩展模块该模块由8251可编程串行口电路和 8255可编程并行口电路两部分组成,其电源、数 据总线、地址总线和片选信号均由接口挂箱上的接口插座提供。

•、8251可编程串行口电路(1)8251可编程串行接口芯片引脚及功能8251A 是通用同步/异步收发器USART ,适合作异步起止式数据格式和同步面向字符数据格式的接口,其功能很强。

它是用来作为CPU 与外部设备或调制解调器之间的接口芯片。

图3-158251管脚图下面简单介绍一下 8251各引脚的主要功能: -D0~D7 :三态双向数据线; RD:读信号,低电平有效; WR :写信号,低电平有效; CS :片选,低电平有效;RESET :芯片复位线,高电平有效。

当该线上加高电平(宽度为时钟的 6倍)时,芯片复位而处于空闲态,等待命令;C/D :地址线。

若此脚加高电平,则CPU 访问8251A 命令寄存器或状态寄存器,若加低电平,则访问数据寄存器;TXRDY( Tran smitter Ready):发送器准备好,高电平有效。

在用查询方式时,此 信号作为一状态位, CPU 可从状态寄存器的D0位检测这个信号;在中断方式时,可作为中断请求信号;RXRDY( Receiver Ready):接收器准备好,高电平有效;在用查询方式时,此信 号作为一状态位,CPU 可从状态寄存器的 D1位检测这个信号;在中断方式时,可作为 中断请求信号;TXE(Transmitter Empty ):发送器空,高电平有效;SYNDET ( Synchronous Detection ) /BD(Break Detection):双功能引脚。

这个 弓I 脚在同步方式时,作同步字符检出信号,为双向线。

在异步方式时,作间断信号检出-p ——FYKDEZIZBD———n mP H. 賞—匝2i — Da豐——ELKBD ,是输出。

当检测到间断码时,输出高电平。

TXC (Transmitter Clock ):发送器时钟,由外部(波特率时钟发生器)提供。

由它 控制 8251A 发送数据速率。

RXC (Receiver Clock ):接收器时钟,由外部(波特率时钟发生器)提供。

由它控制 8251A 接收数据速率。

实际应用中,与发送器时钟相接。

CLK :工作时钟,由外部时钟源提供。

为芯片内部电路提供定时,并非接收或发送数 据的时钟。

8251A 提供了 4个与MODEM 相连的控制信号和数据发送以及数据接收信号线DTR 、DSR 、RTS 、CTS 。

它们的含义与 RS-232C 标准定义相同。

(2 ) 8251电路图及说明医』图3-16 8251电路图模块上提供十个插孔,分别是:RESET 、DTR 、RTS 、RXRDY 、TXRDY 、RXD 、TXD 、8251CLK 、RXCLK 、TXCLK ,它们分别对应于图中相应的引脚。

CS8251的用法如前所述。

8251芯片的详细用法请查阅相关手册。

(3)8251电路的基本测试方法将8251/8255 模块上CS8251片选排上的片选 CS1用跳线帽短接,8251CLK 接到CPU 挂箱时钟发生电路的 CLK3,RXCLK 与TXCLK 接到CPU 挂箱看门狗电路的 DOGO (将 DOGO 输出频率调为最大),RXD 与TXD 相接。

运行测试程序,在程序返回前设置断点,如模块正常,内存单元 50H~5FH 中的数据应为00H — 0FH 。

测试参考程序如下:CSEG AT 0000H LJMP START CSEG AT 4100H CON EQU 0A009H洛 : CS3“助 : 1i3 4 J1 73 910 11 12 13 If 1J1CTxD IiWY !s£?EE. ExDlAirrPVKDEt13TJKTLK-13CDD£LD!1 Gif JE :eiSJJiDO 27CS8251 11 戸 rc®.ri is :;E0WK 10 … w12-°DIamDJ DLDT13ELE14CfU3C J OcamDAT EQU 0A008HSTART: MOV DPTR, #CON MOVA, #0DEH MOVX@DPTR, A MOV A,#55H MOVX @DPTR, ANOPNOPMOV DPTR, #CON MOVA, #0DEH MOVX@DPTR, A MOV A,#15H MOVX @DPTR, AMOV R0, #50H MOVR2, #10H CLR ALP: MOV @R0, AINC R0DJNZ R2, LPMOV R0, #50HMOV R1, #00HMOV R2, #10HLP1: MOV DPTR, #CON MOVXA, @DPTR JNBACC.0, LP1 MOVDPTR, #DAT MOV A,R1MOVX @DPTR, ALP2: MOV DPTR, #CON MOVXA, @DPTR JNBACC.1, LP2 MOVDPTR, #DAT MOVX A,@DPTR MOV @R0, AINC R0;8251 初始化;8251 初始化;50H~5FH 清 0;发送;接收INC R1 DJNZ R2, LP1HALT: JMP HALTEND、8255可编程并行口电路(1) 8255并行接口芯片引脚及功能8255是一种常用的可编程并行I/O 接口芯片,片内有PA 、PB 、PC 三个8位可编程双向通用扩展I/O 口。

8255有40条引脚,采用双列直插式封装,其引脚如图各引脚及功能介绍如下:A 、B 、C 三个I/O 接口的引线分别为: PA0~PA7、PB0~PB7、PC0~PC7 共24条端 线。

3个口均为8位I/O 数据口。

A 口由一个8位数据输出缓冲/锁存器和一个8位数据输 入缓冲/锁存器组成,可设置为输入或输出或双向方式工作;B 口和C 口各有一个8位数据输出缓冲/锁存器和一个8位数据输入缓冲器(无输入数据锁存器,故 B 口不可在模式2下 工作)组成。

其中,B 口只能设为输入或输出方式,不能双向工作。

C 口可设置为输入/输出口,上半部PC4~PC7与A 口组成A 组;下半部PC0~PC3与B 口组成B 组,便于控制。

控制线控制8255的读、写、复位及片选等: RD :读控制线,低电平有效,当其为低电平时, CPU 对8255进行读操作,此时8255相应口为输入口。

WR :写控制线,低电平有效,当其为低电平时, CPU 输出数据或命令到 8255端口, 此时8255相应口为输出口。

RESET :复位端,高电平有效。

当其为高电平时,8255内部寄存器全部清零,24条I/O 口线为高阻态。

CS :片选端,低电平有效。

当其为低电平时,CPU 选中此8255芯片。

8255共占有4个口地址,为A 、B 、C 口及控制口地址。

这4个地址之间的选择由 A0、3-17所示:图3-178255管脚图A1两端口线控制,二者组合决定了4个端口地址,口地址选择方式如下:A1A0 选择口0 0A 口0 1 B 口1 0 C 口1 1 控制口从引脚及结构图可见8255 有和其它接口芯片类似的结构,即除了三个I/O 口寄存器外还有一个控制寄存器,由控制信号送控制字来确定芯片各个I/O口的工作状态。

⑵8255电路及说明图3-18 8255电路图图中PA、PB、PC 口共24根线全部引至模块上的相应插孔。

CS8255的用法与前述相同。

8255的详细用法请查阅相关手册。

(3)8255电路的基本测试方法将CS8255跳线排上的片选 CSO用跳线帽短接,PB7~PB0接接口挂箱电平开关电路输出插孔K8~K1 ,PA7~PA0 接LED8~LED1。

运行测试程序,女口 8255电路正常,LED8~LED1的亮灭应能反应 K8~K1的电平状况。

然后将程序稍加修改,测试PC 口的输出。

测试参考程序如下:CSEG AT 0000HLJMP STARTCSEG AT 4100HPA EQU 0A000HPB EQU 0A001HPCTL EQU 0A003HSTART : MOV DPTR,#PCTL ;置 8255A 控制字,A、B、C 口均工作;方式0, A、C 口为输出,B 口为输入CE3 --------S "I1—11—1----------- 111 土X31一1IISB __ 111TFTTMOV A, #82HMOVX @DPTR, AMOV DPTR,#PB ;从 B 口读入开关状态值MOVX A, @DPTRCPL AMOV DPTR, #PAMOVX @DPTR,A;从 A 口将状态值输出显示SJMP LOOPENDLOOP:。

相关文档
最新文档