汇编与接口键盘显示实验报告

汇编与接口键盘显示实验报告
汇编与接口键盘显示实验报告

《微机原理与接口技术》上机实验报告

学院(部)

专业

班级

学生姓名

学号

实验六键盘扫描及显示设计实验

一、实验目的

1.学习按键扫描的原理及电路接法;

2.掌握利用8255完成按键扫描及显示。

二、实验内容

1.按原理图1连接好电路。

2.编程: 编程使得在键盘阵列上每按一个键后,微机屏幕和最右端的数码管上有相应字符显示出来,按“E”退出程序。

3.实验提示

(1)8255CS接地址译码输出的288h~28fh。

(2)8255的A口PA0~PA7接数码管的a~dp。数码管位码S0接+5V,S3~S1接GND。

(3)延时程序可用BIOS功能程序INT 1AH的0号功能程序:其出口参数:CH:CL=时:分;DH:DL=秒:1/100秒。

图1 键盘显示连接图

三、程序流程

四、程序代码

data segment

string db 'the initialization is okay$',0ah,0dh

key db 0e7h, 0ebh, 0edh, 0eeh, 0d7h, 0dbh, 0ddh, 0deh, 0b7h, 0bbh, 0bdh, 0beh, 77h, 7bh, 7dh, 7eh

array db 33h, 37h, 66, 70, 32h, 36h, 65, 69, 31h, 35h, 39h, 68, 30h, 34h, 38h, 67

num db 16

over db ?

data ends

stack1 segment stack 'stack'

dw 50 dup(?)

stack1 ends

code segment

assume cs:code, ds:data, ss:stack1

start:

mov ax,data

mov ds,ax

mov ax,seg string ;显示提示

mov ds,ax

mov dx,offset string

mov ah,09h

int 21h

.while 1

call exam

.if over == 69

mov ah,4ch

int 21h

.endif

.endw

mov ah,4ch ;/////////////////////

int 21h

exam proc ;检测子程序//////////////////

mov al,81h ;设置8255工作方式字

mov dx,28bh

out dx,al

lp1:mov al,00h ;向C端口高四位输出低电平mov dx,28ah

out dx,al

in al,dx ;C端口低四位

cmp al,0fh

jz lp1

call delay ;延时子程序

mov bl,al ;保存列值

mov al,88h ;重置8255工作方式字

mov dx,28bh

out dx,al

mov al,bl

mov dx,28ah

in al,dx ;读入行值mov ah,bl

mov cl,4

rcr ax,cl

.if al == 0b7h ;1 mov over,31h

mov al,31h

mov dl,al

mov ah,2h

int 21h

mov al,06h

mov dx,288h

out dx,al

.endif

.if al == 0d7h ;2 mov over,32h

mov al,32h

mov dl,al

mov ah,2h

int 21h

mov al,05bh

mov dx,288h

out dx,al

.endif

.if al == 0e7h ;3 mov over,33h

mov al,33h

mov dl,al

mov ah,2h

int 21h

mov al,4fh

mov dx,288h

out dx,al

.endif

.if al == 07bh ;4 mov over,34h

mov al,34h

mov dl,al

int 21h

mov al,66h

mov dx,288h

out dx,al

.endif

.if al == 0bbh ;5 mov over,35h mov al,35h

mov dl,al

mov ah,2h

int 21h

mov al,6dh

mov dx,288h

out dx,al

.endif

.if al == 0dbh ;6 mov over,36h mov al,36h

mov dl,al

mov ah,2h

int 21h

mov al,7dh

mov dx,288h

out dx,al

.endif

.if al == 0ebh ;7 mov over,37h mov al,37h

mov dl,al

mov ah,2h

int 21h

mov al,07h

mov dx,288h

out dx,al

.endif

.if al == 07dh ;8 mov over,38h mov al,38h

mov dl,al

int 21h

mov al,7fh

mov dx,288h

out dx,al

.endif

.if al == 0bdh ;9 mov over,39h mov al,39h

mov dl,al

mov ah,2h

int 21h

mov al,67h

mov dx,288h

out dx,al

.endif

.if al == 0ddh ;a mov over,65 mov al,65

mov dl,al

mov ah,2h

int 21h

mov al,77h

mov dx,288h

out dx,al

.endif

.if al == 0edh ;b mov over,66 mov al,66

mov dl,al

mov ah,2h

int 21h

mov al,7ch

mov dx,288h

out dx,al

.endif

.if al == 7eh ;c mov over,67 mov al,67

mov dl,al

int 21h

mov al,39h

mov dx,288h

out dx,al

.endif

.if al == 0beh ;d

mov over,68

mov al,68

mov dl,al

mov ah,2h

int 21h

mov al,5eh

mov dx,288h

out dx,al

.endif

.if al == 0deh ;e

mov over,69

mov al,69

mov dl,al

mov ah,2h

int 21h

mov al,79h

mov dx,288h

out dx,al

.endif

.if al == 0eeh ;f

mov over,70

mov al,70

mov dl,al

mov ah,2h

int 21h

mov al,71h

mov dx,288h

out dx,al

.endif

;////////

;////////

mov al,81h ;重置8255工作方式字mov dx,28bh

out dx,al

lp6:mov dx,28ah

mov al,00h

out dx,al

in al,dx

cmp al,0fh

jnz lp6

ret

exam endp ;/////////////////////

delay proc near ;延时子程序

push ax ;delay 50ms--100ms

mov ah,0

int 1ah

mov bx,dx

delay1:

mov ah,0

int 1ah

cmp bx,dx

jz delay1

mov bx,dx

delay2:

mov ah,0

int 1ah

cmp bx,dx

jz delay2

pop ax

ret

delay endp

code ends

end start

单片机键盘显示接口电路设计说明

中北大学 单片机及其接口技术 课程设计说明书 学生:学号: 学院: 专业: 题目:单片机键盘显示接口电路设计 指导教师:小林职称: 副教授 2012年6月17日

中北大学 单片机及其接口技术 课程设计任务书 11/12 学年第二学期 学院: 专业: 学生姓名:学号: 课程设计题目:单片机键盘显示接口电路设计 起迄日期:6月11日~6月17日 课程设计地点:中北大学 指导教师:小林 系主任:王忠庆

下达任务书日期: 2012年06月11日课程设计任务书

课程设计任务书

第一章、绪论89C51是一种带4KB闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压、高性能CMOS8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL 的89C51是一种高效微控制器,89C2051是它的一种精简版本。89C 单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。在本次课程设计中,便采用89C51单片机。 第二章、设计容 一、4×4键盘 原理:4 行 行 行 行

图1 电路原理图见附图一 本次设计为4×4的矩阵键盘,这样的设计可以有效的减少键盘与单片机接口时所占用的I/O接口。在这种非编码键盘的单片机系统中,键盘处理程序首先执行有无按键按下的程序段,当确认有按键按下后,下一步就要识别哪一个按键被按下,对键的识别常采用逐行(逐列)扫描的方法。 首先判断有无按键按下。方法是:向行线输出全扫描字00H,把全部行线置为低电平,然后将列线的电平状态读入到累加器A中,如果有按键按下,会使列线电平被拉至低电平,是列输入不全为1。 判断键盘哪一个键被按下。方法是:一次给行线送低电平,然后查所有列线状态,称为行扫描,如果全为1,则所按下键不在此行,如果不全为1,则所按下键必在此行,而且是在与零电平列线相交的交点上的那个键。 在此,按键的位置码并不等于按键的实际定义键值,因此还必须进行转换,即键值译码,本次设计中采用软件实现键值的译码,译码方式如下: 第0行键值为:0行×4+列号(0~3)为0、1、2、3; 第1行键值为:1行×4+列号(0~3)为4、5、6、7; 第2行键值为:2行×4+列号(0~3)为8、9、A、B; 第3行键值为:3行×4+列号(0~3)为C、D、E、F; 译码程序如下:

矩阵键盘设计实验报告

南京林业大学 实验报告 基于AT89C51 单片机4x4矩阵键盘接口电路设计 课程机电一体化设计基础 院系机械电子工程学院 班级 学号 姓名

指导老师杨雨图 2013年9月26日

一、实验目的 1、掌握键盘接口的基本特点,了解独立键盘和矩 阵键盘的应用方法。 2、掌握键盘接口的硬件设计方法,软件程序设计 和贴士排错能力。 3、掌握利用Keil51软件对程序进行编译。 4、用Proteus软件绘制“矩阵键盘扫描”电路,并用测试程序进行仿真。 5、会根据实际功能,正确选择单片机功能接线,编制正确程序。对实验结果 能做出分析和解释,能写出符合规格的实验报告。 二、实验要求 通过实训,学生应达到以下几方面的要求: 素质要求 1.以积极认真的态度对待本次实训,遵章守纪、团结协作。 2.善于发现数字电路中存在的问题、分析问题、解决问题,努力培养独立 工作能力。 能力要求 1.模拟电路的理论知识 2.脉冲与数字电路的理念知识 3.通过模拟、数字电路实验有一定的动手能力 4.能熟练的编写8951单片机汇编程序 5.能够熟练的运用仿真软件进行仿真 三、实验工具 1、软件:Proteus软件、keil51。 2、硬件:PC机,串口线,并口线,单片机开发板 四、实验内容

1、掌握并理解“矩阵键盘扫描”的原理及制作,了解各元器件的参数及格 元器件的作用。 2、用keil51测试软件编写AT89C51单片机汇编程序 3、用Proteus软件绘制“矩阵键盘扫描”电路原理图。 4、运用仿真软件对电路进行仿真。 五.实验基本步骤 1、用Proteus绘制“矩阵键盘扫描”电路原理图。 2、编写程序使数码管显示当前闭合按键的键值。 3、利用Proteus软件的仿真功能对其进行仿真测试,观察数码管的显示状 态和按键开关的对应关系。 4、用keil51软件编写程序,并生成HEX文件。 5、根据绘制“矩阵键盘扫描”电路原理图,搭建相关硬件电路。 6、用通用编程器或ISP下载HEX程序到MCU。 7、检查验证结果。 六、实验具体内容 使用单片机的P1口与矩阵式键盘连接时,可以将P1口低4位的4条端口线定义为行线,P1口高4位的4条端口线定义为列线,形成4*4键盘,可以配置16个按键,将单片机P2口与七段数码管连接,当按下矩阵键盘任意键时,数码管显示该键所在的键号。 1、电路图

实验三 数码管显示实验

实验十九数码管显示实验 一、实验目的 1、了解数码管的显示原理; 2、掌握数码管显示的编程方法。 二、实验内容 1、编写数码管显示程序,循环显示0-F字符 三、实验设备 1、硬件: JX44B0实验板; PC机; JTAG仿真器; 2、软件: PC机操作系统(WINDOWS 2000); ARM Developer Suite v1.2; Multi-ICE V2.2.5(Build1319); 四、基础知识 1、掌握在ADS集成开发环境中编写和调试程序的基本过程。 2、了解ARM 应用程序的框架结构; 3、了解数码管的显示原理; 五、实验说明 1、LED显示原理 发光二极管数码显示器简称LED显示器。LED显示器具有耗电低、成本低、配置简单灵活、安装方便、耐震动、寿命长等优点,目前广泛应用于各类电子设备之中。 7段LED由7个发光二极管按“日”字排列。所有发光二极管的阳极连接在一起称共阳极接法,阴极连接在一起称为共阴极接法。一般共阴极可以不需要外接电阻。 其中各二极管的排列如上图在共阳极接法中,如果显示数字“5”,需要在a、c、d、f、g端加上高电压,其它加低电压。这样如果按照dp、g、fe、d、c、b、a的顺序排列的话对应的码段是:6DH。其它的字符同理可以得到。

2、数码管显示驱动 数码管的显示一般有动态显示和静态显示两大类,另外按照驱动方式又分串行驱动和并行驱动两种方式。串行驱动主要是提供串-并转换,减少控制线数量;并行驱动对每一个段提供单独的驱动,电路相对简单。这方面参看数字电路相关内容。 下面主要介绍静态显示和动态显示: 1)静态显示: LED数码管采用静态接口时,共阴极或共阳极节点连接在一起地或者接高电平。每个显示位的段选线与一个8位并行口线相连,只要在显示位上的段选位保持段码电平不变,则该位就能保持相应的显示字符。这里的8位并行口可以直接采用并行I/O口,也可以采用串行驱动。相应的电路如下: 很明显采用静态显示方式要求有较多的控制端(并行)或较复杂的电路(串行)。但是在设计中对器件的要求低。

Windows命令接口实验报告

Windows命令接口实验 一.实验题目: 第29题——操作系统接口:Windows命令接口。(3人) 4分 二.实验任务: 1.设计要求: ●为Windows操作系统建立兼容的DOS命令接口,文件与目录命令; ●具体命令:DIR, RD,CD,MD, DEL,MOVE,REN, COPY, XCOPY, TIME, DATE,SORT,重定向命令>,<.,|,MORE,TYPE ,CLS,EXIT命令格式可参照Windows的CMD.EXE或MS-DOS提供的命令; ●设计命令的名称、参数等格式; ●可以字符形式接收命令,执行命令,然后显示命令执行结果. 2.设计目的: (1)DIR命令:能够正确显示一个目录里面的子目录和文件 (2)RD命令:能够删除一个空目录 (3)CD命令:能够打开一个存在的目录 (4)MD命令:能够建立一个空目录 (5)DEL命令:能够删除一个文件 (6)MOVE命令:能够移动一个目录或文件 (7)REN命令:能够重命名一个目录或文件 (8)XCOPY命令:能够拷贝整个目录 (8)TIME命令:显示系统的时间 (8)DATE命令:显示系统的日期 (8)SORT命令:对文本内容进行分类 (8)MORE命令:逐步分屏显示 (8)TYPE命令:显示文本内容 (8)CLS命令:清楚屏幕显示 (8)EXIT命令:退出 三:实验环境: 1.PC机一台386以上 2.Microsoft Visual Studio2010 软件 3.实现语言:C语言

四:原理及算法描述: 1.基本原理: 用户利用联机命令接口实现与机器的交互时,先在终端的键盘上打入所需的命令,由终端处理程序接受该命令,并将它显示在终端屏幕上。当一条命令输入完后,由命令解释程序对命令进行分析,然后执行相应命令的处理程序。 2.算法描述: (1)存贮输入的各命令参数 void store_parameter(char *buffer,char *parameter[10],int *para_num) 说明:将输入的命令一条一条存储parameter[10]中,最大允许的参数个数为10个。 算法描述:为buffer设置一个指针buffer_point,如果该指针向下移动,碰到空格,继续向下移动,直到遇到字符,读进各存储变量中parameter[10],最后如果遇到’\0’,则结束。 (2)浏览一个路径下的目录和文件 void my_dir(char *a[],int *num) 说明:该命令只能显示当前目录中的文件和子目录和当前目录中子目录中的文件和子目录。并无如Windows中命令参数如此丰富。主要是考虑其复杂性,予以简化了。 算法描述:如果只接受到mydir命令,后面并无其他参数时,显示当前目录下文件和子目录。如果接受到两个参数,如果第二个参数(表示当前目录中子目录)存在,则显示该目录下文件和子目录,如果不存在,则报错。 (3)删除一个存在的目录,如果不存在,删除失败! void my_rd(char *a[],int *num) 算法描述:如果该目录存在且为空目录,则删除,否则失败。 (4)打开一个存在的目录,如果不存在,打开失败! void my_cd(char *a[],int *num) 算法描述:如果接受到两个参数,第二个参数表示要打开的目录。如果该目录存在,则成功,否则失败。 (5)创建一个目录 void my_md(char *a[],int *num) 算法描述:如果接受到两个参数,第二个参数表示要建立的目录。如果存在该目录,失败,否则成功。 (6)删除一个存在的文件,如果不存在,删除文件失败! void my_del(char *a[],int *num) 算法描述:如果接受到两个参数,第二个参数表示要删除的文件。如果该文件存在,则删除成功,否则失败。 (7)移动一个存在的文件,否则,移动失败 void my_move(char *a[],int *num)

实验报告七-键盘扫描及显示实验

信息工程学院实验报告 课程名称:微机原理与接口技术 实验项目名称:键盘扫描及显示实验 实验时间: 班级: 姓名: 学号: 一、实 验 目 的 1. 掌握 8254 的工作方式及应用编程。 2. 掌握 8254 典型应用电路的接法。 二、实 验 设 备 了解键盘扫描及数码显示的基本原理,熟悉 8255 的编程。 三、实 验 原 理 将 8255 单元与键盘及数码管显示单元连接,编写实验程序,扫描键盘输入,并将扫描结果送数码管显示。键盘采用 4×4 键盘,每个数码管显示值可为 0~F 共 16 个数。实验具体内容如下:将键盘进行编号,记作 0~F ,当按下其中一个按键时,将该按键对应的编号在一个数码管上显示出来,当再按下一个按键时,便将这个按键的编号在下一个数码管上显示出来,数码管上可以显示最近 6 次按下的按键编号。 键盘及数码管显示单元电路图如图 7-1 和 7-2 所示。8255 键盘及显示实验参考接线图如图 7-3 所示。 图 7-1 键盘及数码管显示单元 4×4 键盘矩阵电路图 成 绩: 指导老师(签名):

图 7-2 键盘及数码管显示单元 6 组数码管电路图 图 7-3 8255 键盘扫描及数码管显示实验线路图 四、实验内容与步骤 1. 实验接线图如图 7-3 所示,按图连接实验线路图。

图 7-4 8255 键盘扫描及数码管显示实验实物连接图 2.运行 Tdpit 集成操作软件,根据实验内容,编写实验程序,编译、链接。 图 7-5 8255 键盘扫描及数码管显示实验程序编辑界面 3. 运行程序,按下按键,观察数码管的显示,验证程序功能。 五、实验结果及分析: 1. 运行程序,按下按键,观察数码管的显示。

键盘实验报告

基于单片机4×4键盘的实现 成员:刘耀鹏、高攀、谢富田 2014年7月20日

理论分析 本实验是基于AT89C52单片机来实现4×4阵列键盘的输入,用七段数码管输出相应的键值,从而提供良好的人机接口。AT89C52单片机是一个8位的单片,与51系列单片机相比较,其最大的区别是多了一个计数定是中断。 采用12MHz的晶振,采用内接法,对电路提供一个时间基准,P1端口作为键盘的输入端口,P0端口为数据输出端口,P1端口输入的键值,在P0端口产生相应的输出。4×4键盘被抽象为16个开关按钮(每行4个共四行),那么久有4位行控制线,和列四位控制线,当开关接通时,则按键按下,数码管显示相应的键值,具体硬件电路如下: 电路中排阻限流作用,以达到对数码管保护作用,P2口作为位选端口,数码管8接P2.0端口,数码管7接P0.1端口。以达到位选

的作用,对于电路可编写一下程序: 2、程序如下: #include #include #define uint unsigned int #define uchar unsigned char //uchar code table[10] = {0x03, 0x9f, 0x25, 0x0d, 0x99, 0x49, 0x41, 0x1f, 0x01, 0x09}; uchar code table[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f}; /********************************************************** **** * 名称: Delay_1ms() * 功能: 延时子程序,延时时间为1ms * x * 输入: x (延时一毫秒的个数) * 输出: 无 *********************************************************** ****/ void Delay_1ms(uint x) { uint i; uchar j;

键盘及LED显示实验

实验三键盘及LED显示实验 一、实验内容 利用8255可编程并行接口控制键盘及显示器,当有按键按下时向单片机发送外部中断请求(INT0,INT1),单片机扫描键盘,并把按键输入的键码一位LED 显示器显示出来。 二、实验目的及要求 (一)实验目的 通过该综合性实验,使学生掌握8255扩展键盘和显示器的接口方法及C51语言的编程方法,进一步掌握键盘扫描和LED显示器的工作原理;培养学生一定的动手能力。 (二)实验要求 1.学生在实验课前必须认真预习教科书与指导书中的相关内容,绘制流程图,编写C51语言源程序,为实验做好充分准备。 2.该实验要求学生综合利用前期课程及本门课程中所学的相关知识点,充分发挥自己的个性及创造力,独立操作完成实验内容,并写出实验报告。 三、实验条件及要求 计算机,C51语言编辑、调试仿真软件及实验箱50台套。 四、实验相关知识点 1.C51编程、调试。 2.扩展8255芯片的原理及应用。 3.键盘扫描原理及应用。 4.LED显示器原理及应用。 5.外部中断的应用。 五、实验说明 本实验仪提供了8位8段LED显示器,学生可选用任一位LED显示器,只要按地址输出相应的数据,就可以显示所需数码。 六、实验原理图

P1口桥接。 八、实验参考流程图 1.主程序流程图

2.外中断服务程序流程图 外部中断0 外部中断1 定时器0中断程序,用于消抖动:

3.LED显示程序流程图 九、C51语言参考源程序 #include "reg52.h" unsigned char KeyResult; //存放键值 unsigned char buffer[8]; //显示缓冲区 bit bKey; //是否有键按下 xdata unsigned char P_8255 _at_ 0xf003; //8255的控制口 xdata unsigned char PA_8255 _at_ 0xf000; //8255的PA口 xdata unsigned char PB_8255 _at_ 0xf001; //8255的PB口 xdata unsigned char PC_8255 _at_ 0xf002; //8255的PC口 code unsigned char SEG_TAB[] = { //段码 0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0xee,0x3e,0x9c,0x7a,0x9e,0x8e,0x0}; sbit bLine0 = P3^2; sbit bLine1 = P3^3; //延时1ms void Delay1ms() { unsigned char i;

单片机实验——数码管显示

单片机实验——数码管显示

数码管显示 一、数码管静态显示 1、电路图 图1 2、电路分析 该电路采用串行口工作方式进行串行显示实验,串行传输数据为8位,只能从RXD端输

入输出,TXD端用于输出同步移位脉冲。当CPU 执行一条写入发送缓冲器SBUF的指令时,产生一个正脉冲,串行口开始将发送缓冲器SBUF 中的8位数据按照从低位到高位依次发送出去,8位数据发送完毕,发送结束标志TI置1,必须由软件对它清0后才能启动发送下一帧数据。 因此,当输完8个脉冲后,再一次来8个脉冲时,第一帧的8位数据就移到了与之相连的第二个74LS164中,其他数据依此类推。 3、流程图

发送数据 二、数码管动态显示 1、电路图

图2 2、电路分析 R1-R7电阻值计算:一个7-seg 数码管内部由8段LED 组成,因此导通电压和电流与LED 灯相同,LED 导通压降大概在 1.5V-2.2V ,电流3mA-30mA ,单片机的工作电压是5V , 所以 一般取Rmin 和Rmax 中间值,330Ω、470Ω、510Ω。 由于P0口内部没有上拉电阻,所以在P0 口接1003025Im min 1325Im max =-===-==mA V V an U R K mA V V in U R

排阻,上拉电压。如果没有排阻的话,接上拉电阻时需要考虑数码管的电流,如果太小的话,是驱动不了数码管的。如图3: 发现电流大于5mA时,数码管才能亮,与前面电流最小3mA不符,因此计算数码管电流时使其在10mA-20mA之间,确保能驱动数码管亮。 两个74HC573实现对六位数码管的段选和位选,控制端为LE(第11脚)。 3、思路分析 先使第一个573输出同步,把数据送入573中,然后锁存,第二个573输出同步,打开第一个数

运用8255设计的键盘及显示接口-实验报告(含接线图+源程序)

运用8255设计的键盘及显示接口 图中用并行接口8255A作为微机与键盘间的接口,采用逐行扫描法识别键。将键盘中的列与PA0—PA3相连,A口为输出;将行与C口的PC0—PC1相连,C 口为输入口; PB0—PB7与七段代码显示器连接B口为输出。 程序执行过程如下:识别是否有键按下,方法是使PA0一PA3输出全0,读C 口(行值) 中只要有一位为0,就说明有键按下,在检测到有键按下后,延迟一段时间,根据找到的键号,转去执行显示七段代码显示器的程序,这时七段代码显示器就显示与该键相同的数值。 实验步骤 8255接口的应用键盘及显示接线图 注:圆圈处是要求接的连线。 (1)按图4接线。 (2)输入源程序,汇编、连接后装入系统。 (3)执行程序后,按一下键盘,7段代码就会显示相应的数字。

程序 STACK SEGMENT STACK DW 64 DUP(?) STACK ENDS DATA SEGMENT TABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV SI,3000H MOV AL,00H MOV [SI],AL ;清空存放数据的缓冲区 MOV [SI+1],AL MOV [SI+2],AL MOV [SI+3],AL MOV DI,3003H MOV AL,81H ;8255方式字定义选择0方式,A口为输出; OUT 63H,AL;B口为输出;C口为输入 BEGIN: CALL DIS ;显示七段代码管数据的子程序 CALL CLEAR ;七段代码管清0子程序 CALL CCSCAN ;检测是否有键按下子程序 JNZ INK1 ;

单片机 键盘接口实验

实验六键盘接口实验 一、实验目的 1、掌握Keil C51软件与Protues软件联合仿真调试的方法; 2、掌握单片机的键盘接口电路; 3、掌握单片机的键盘扫描原理; 4、掌握键盘的去抖原理及处理方法。 二、实验仪器与设备 1、微机一台 2、Keil C51集成开发环境 3、Protues仿真软件 三、实验内容 1、用Protues设计一矩阵键盘接口电路。要求利用P1口接一4×4矩阵键盘。串行口通过一74LS164接一共阴极数码管。用线反转法编写矩阵键盘识别程序,用中断方式,并将按键的键值0-F通过串行口输出,显示在数码管上。 2、将P1口矩阵键盘改成8个独立按键,重新编写识别和显示程序。 四、实验说明 矩阵键盘识别一般包括以下内容: ⑴判别有无键按下。 ⑵键盘扫描取得闭合键的行、列号。 ⑶用计算法或查表发的到键值; ⑷判断闭合键是否释放,如没释放则继续等待。 ⑸将闭合键的键值保存,同时转去执行该闭合键的功能。 五、实验步骤 1、用Protues设计键盘接口电路; 2、在Keil C51中编写键盘识别程序,编译通过后,与Protues联合调试; 3、按动任意键,观察键值是否能正确显示。 六、实验电路仿真图 矩阵键盘电路图见附录1。 独立按键电路图见附录2。 七、实验程序 实验程序见附录3、4。 八、实验总结 1、矩阵键盘常用的检测方法有线反转法、逐行扫描法。线反转法较简单且高效。在矩阵键盘的列线上接一与门,利用中断方式查询按键,可提高CPU的运行效率。 2、注意用线反转法扫描按键时,得到的键值不要再赋给temp,最好再设一新变量接收键值,否则再按下按键显示数字的过程中,再按按键会出现乱码。 3、学会常用与门、与非门的使用方法。 附录1:矩阵键盘实验电路图

拨码开关输入数码管显示实验

综合课程设计实验报告 班级: 姓名: 学号:11 指导老师:

实验名称: 拨码开关输入数码管显示实验 实验要求: 1. 掌握数码管显示原理 2. 掌握拨码开关工作原理 3. 通过FPGA用拨码开关控制数码管显示 实验目标: 4位拨码开关分别对应4位数码管,拨动任意1位开关,对应的数码管将显示数字1,否则显示数字0。 实验设计软件 Quartus II 实验原理 1.数码管显示模块 电路原理图:

如图所示,数码管中a,b,c,d,e,f,g,dp分别由一个引脚引出,给对应的引脚高电平,则对应引脚的LED点亮,故我们在程序中可以设定一个8位的二进制数reg【7:0】h,每一位对应一个相应的引脚输出,那么我们就可以通过对x的赋值,控制对应的8个LED亮灭的状态进行数字显示。例如,如果我们显示数字2,则在数码管中,a、b、d、e、g亮,c、f、dp不亮,则显示的是数字2,即h=’b代表显示数字2。 2.拨码开关模块 电路原理图: 拨码开关有8个引脚,每个引脚对应于数码管的一个LED灯,当拨码开关的一个引脚是高电平时,则对应的数码管一个LED灯亮,其他7个LED等不亮。通过此原理来实现数码管的LED灯亮暗情况从而实现数码管的数字显示。例如当第一个拨码接通时,此时输入信号为8'b对应的数码管的输出信号为out=8'b,此时相当于数码管a,b,c,d,e,f,g亮,7段数码管全部显示,显示的数字为8。 程序代码 module bomakaiguan(out,key_in,clk); assign p='b1111; output[7:0] out=8'b; input[7:0] key_in; input clk; reg[7:0] out; always @(posedge clk) begin case(key_in) 8'b: out=8'b;

EDA设计课程实验报告数码管动态显示实验报告

EDA设计课程实验报告 实验题目:数码管动态显示实验 学院名称: 专业:电子信息工程 班级: 姓名:高胜学号 小组成员: 指导教师: 一、实验目的 学习动态扫描显示的原理;利用数码管动态扫描显示的原理编写程序,实现自己的学号的显示。 二、设计任务及要求

1、在SmartSOPC实验箱上完成数码管动态显示自己学号的后八个数字。 2、放慢扫描速度演示动态显示的原理过程。 三、系统设计 1、整体设计方案 数码管的八个段a,b,c,d,e,f,g,h(h是小数点)都分别连接到SEG0~SEG7,8个数码管分别由八个选通信号DIG0~DIG7来选择,被选通的数码管显示数据,其余关闭。如果希望8个数码管显示希望的数据,就必须使得8个选通信号DIG0~DIG7分别被单独选通,并在此同时,在段信号输入口SEG0~SEG7加上该对应数码管上显示的数据,于是随着选通信号的扫描就能实现动态扫描显示的目的。虽然每次只有1个数码管显示,但只要扫描显示速率足够快,利用人眼的视觉余辉效应,我们仍会感觉所有的数码管都在同时显示。 2、功能模块电路设 (1)输入输出模块框图(见图1) 图1 (2)模块逻辑表达(见表1) 表1(数码管显示真值表) clk_1k dig seg ↑01111111 C0 ↑10111111 F9

注:数码管显示为01180121 (3)算法流程图(见图2) (4)Verilog源代码 module scan_led(clk_1k,d,dig,seg); //模块名scan_led input clk_1k; //输入时钟 input[31:0] d; //输入要显示的数据output[7:0] dig; //数码管选择输出引脚

实验四 键盘扫描及显示设计实验报告

实验四键盘扫描及显示设计实验报告 一、实验要求 1. 复习行列矩阵式键盘的工作原理及编程方法。 2. 复习七段数码管的显示原理。 3. 复习单片机控制数码管显示的方法。 二、实验设备 1.PC 机一台 2.TD-NMC+教学实验系统 三、实验目的 1. 进一步熟悉单片机仿真实验软件 Keil C51 调试硬件的方法。 2. 了解行列矩阵式键盘扫描与数码管显示的基本原理。 3. 熟悉获取行列矩阵式键盘按键值的算法。 4. 掌握数码管显示的编码方法。 5. 掌握数码管动态显示的编程方法。 四、实验内容 根据TD-NMC+实验平台的单元电路,构建一个硬件系统,并编写实验程序实现如下功能: 1.扫描键盘输入,并将扫描结果送数码管显示。 2.键盘采用 4×4 键盘,每个数码管显示值可为 0~F 共 16 个数。 实验具体内容如下: 将键盘进行编号,记作 0~F,当按下其中一个按键时,将该按键对应的编号在一个数码 管上显示出来,当再按下一个按键时,便将这个按键的编号在下一个数码管上显示出来,数 码管上可以显示最近 4 次按下的按键编号。 五、实验单元电路及连线 矩阵键盘及数码管显示单元

图1 键盘及数码管单元电路 实验连线 图2实验连线图 六、实验说明 1. 由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动。抖动时间的长短由按键的机械特性决定,一般为 5~10ms。这是一个很重要的时间参数,在很多场合都要用到。 键抖动会引起一次按键被误读多次。为了确保 CPU 对键的一次闭合仅做一次处理,必须去除键抖动。在键闭合稳定时,读取键的状态,并且必须判别;在键释放稳定后,再作处理。按

[实验四]定时器及键盘接口的应用 [实验目的] 了解定时器结构、功能及

[实验四]定时器及键盘接口的应用 [实验目的] 1.了解定时器结构、功能及应用。 2.熟悉基于状态机设计的软件设计方法和矩阵键盘的应用设计实现。 3.设计并实现一个改进型的电话拨号系统。 [实验内容]: 1.使用定时器的产生特定频率,输出到蜂鸣器上产生不同的音调。 2.用状态机设计的思想,设计键盘输入接口。 3.综合利用实验板上定时器,蜂鸣器,键盘,LED显示模块,设计一个电话拨号系统。 [实验步骤]: 1.参考第八章例8.7的硬件电路以及软件设计,利用AVR的16位T/C1的比较匹配功能, 发出不同频率的音调。 2.参考9. 3.2 定时扫描方式的键盘接口程序,以及图9-7的键盘部分硬件连线电路,实现 基于状态机思想的键盘扫描。 3.仔细思考例9.3,回答以下问题: ●本例中,在T/C0的中断服务中进行了LED的扫描,而读键盘和键盘处理是在主程序中 完成的。如果将读键盘和键盘处理也放在T/C0中断中完成是否可以?请深入分析这两种处理方式的优点和缺点,说明原因。 ●在read_keyboard()中,行线输出语句为什么重复2次? ●说明在read_keyboard()中,key_mask的作用,另外是否可以将变量key_line和 key_value定义成普通的局部动态变量?为什么? 4.在例9.3的基础上,改进实现一个电话拨号系统: 1)实验板上的矩阵键盘共包含有12个按键,其中10个作为数字“0,1,2….9”的数字输入,其他两个为功能键,一个是总清除键“#”,一个是修改键“*”。修改程 序,键盘上数字键功能不变,而“#”键的功能为总清除(即清除LED上的全部的 数字显示,显示复原为8个“-”),“*”键的功能为修改键(表示最后输入的数字 有误,LED显示全部右移一位,清除最后输入的数字,最左边一位补入“-”)。 2)系统上电时,8个LED数码管显示“--------”8条横线,每按下一个号码后,原8位LED数码管的显示内容向左移动一位,最右边一位则显示键盘上刚按下的数字。 3)将每个数字键与特定的音调相结合起来,比如数字1-2-3-4-5-6-7-8-9-0对应音阶Do-re-mi-fa-sol-la-ti-do-la-mi(后两个为高8度)。每当按下按键在LED上显示数字 后都能在蜂鸣器上发出相同节拍的对应音阶。 [思考题]: 1.当定时计数器工作在普通模式和CTC模式时,都可以产生一个固定的定时中断。如果要求精确的定时中断,采用那种模式比较好?为什么?

串行接口实验报告

课程实验报告实验名称:串行接口 专业班级: 学号: 姓名: 同组人员: 指导教师: 报告日期:

实验二 1. 实验目的 (3) 2. 实验内容 (3) 3. 实验原理 (3) 4. 程序代码 (6) 5. 实验体会 (13)

实验二 1.实验目的 1.熟悉串行接口芯片8251的工作原理 2.掌握串行通讯接收/发送程序的设计方法 2.实验内容 通过对8251芯片的编程,使得实验台上的串行通讯接口(RS232)以查询方式实现信息在双机上的。具体过程如下: 1. 从A电脑键盘上输入一个字符,将其通过A试验箱的8251数据口发送出去,然后通过B试验箱的8251接收该字符,最后在B电脑的屏幕上显示出来。 2.从A试验箱上输入步进电机控制信息(开关信息),通过A试验箱的8251数据口发送到B试验箱的8251数据口,在B试验箱上接收到该信息之后,再用这个信息控制B试验箱上的步进电机的启动停止、转速和旋转方向。 3.实验原理 1.8251控制字说明 在准备发送数据和接收数据之前必须由CPU把一组控制字装入8251。控制字分两种:方式指令和工作指令,先装入方式指令,后装入工作指令。 另外,在发送和接收数据时,要检查8251状态字,当状态字报告“发送准备好”/“接收准备好”时,才能进行数据的发送或接收。 2.8251方式指令(端口地址2B9H)

3.8251工作指令(端口地址2B9H) 4.8251状态字(端口地址2B9H) 5.8253控制字(283H) 6.8253计数初值(283H) 计数初值=时钟频率/(波特率×波特率因子)本实验:脉冲源=1MHz 波特率=1200 波特率因=16 计数初值= 1000000/1200*16=52

键盘接口实验实验报告及程序

实验六键盘接口实验 姓名专业通信工程学号成绩 一、实验目的 1.掌握Keil C51软件与Protues软件联合仿真调试的方法; 掌握单片机的键盘接口电路; 掌握单片机键盘扫描原理; 掌握键盘的去抖原理及处理方法。 实验仪器与设备 1.微机1台C51集成开发环境3。Proteus仿真软件 实验内容 用Proteus设计一矩阵键盘接口电路。要求利用P1口接一4*4矩阵键盘。串行口通过一74LS164接一共阴极数码管。参考电路见后面。 用线反转法编写矩阵键盘识别程序,要求采用中断方式(列线通过4输入与门74LS20接/INT0),无按键按下时,数码管循环画“8”;有按键按下时产生中断并将按键的键值0~F通过串行口输出,在数码管上显示3秒钟后返回;返回后,数码管继续循环画“8”。 将P1口矩阵键盘改为8个独立按键(用中断方式设计),键盘通过74LS30(8输入与非门)和74LS04(六反相器)与/INT0相连,重新编写识别和显示程序。实验原理 矩阵键盘识别一般应包括以下内容: 判别有无键按下。 键盘扫描取得闭合键的行、列号。 用计算法火或查表法得到键值。 判断闭合键是否释放,如果没释放则继续等待。 将闭合键的键值保存,同时转去执行该闭合键的功能。 实验步骤 用Proteus设计键盘接口电路; 在Keil C51中编写键盘识别程序,编译通过后,与Proteus联合调试; 按动任意键,观察键值是否能正确显示。 电路设计及调试、程序 程序设计:矩阵键盘 #include<> #define uchar unsigned char #define uint unsigned int uchar code table1[]={0x00,0x01,0x21,0x61,0x65,0x6d,0x7d,0x7f}; uchar code key_table[]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,0xdb,0xbb,0x7b,0xe7,0 xd7,0xb7,0x77};

单片机实验四 I O显示控制实验(数码管显示实验)

电子信息工程学系实验报告 课程名称:单片微型计算机与接口技术Array 实验项目名称:实验四 I/O显示控制实验实验时间: 班级: **** 姓名:**** 学号:******** 一、实验目的: 1、熟悉keil仿真软件、proteus仿真软件、软件仿真板的使用。 2、了解并熟悉一位数码管与多位LED数码管的电路结构、与单片机的连接方法及其应用原理。 3、学习proteus构建LED数码管显示电路的方法,掌握C51中单片机控制LED数码管动态显示的原理与编程方法。 二、实验环境: 1、Windows XP系统; 2、Keil uVision2、proteus系列仿真调试软件 三、实验原理: 1、LED数码管的结构和原理 LED显示器是由发光二极管显示字段的显示器件。在单片机应用系统中通常使用的是七段LED,这种显示器有共阴极与共阳极两种。 (a)共阴极LED显示器的发光二极管阴极共地,当某个发光二极管的阳极为高电平时,该发光二极管则点亮; (b)共阳极LED显示器的发光二极管阳极并接。 2、七段显示器与单片机接口:只要将一个8位并行输出口与显示器的发光二极管引脚相连即可。8位并行输出口输出不同的字节数据即可获得不同的数字或字符,如下表所示。通常将控制发光二极管的8位字节数据称为段选码。 八段选码(显示码)的推导(以共阳数码管显示C为例): 要显示C则a、f、e、d四个灯亮2.为是共阳数码管,则a、f、e、d应送0时亮3.dp-a为11000110B 3、多位数码管的显示:电路结构、动态静态两种实现原理: LED显示器有静态显示与动态显示两种方式。 (1) LED静态显示方式 各位LED的位选线连在一起接地或接+5V;每位LED的段选线(a-dp)各与一个八位并行口相连; 在同一时间里每一位显示的字符可以各不相同。

4x4键盘实验报告

单片机及DSP课程设计报告 专业: 班级: 姓名: 学号: 指导教师: 时间:

一、设计目的 为了进一步巩固学习的理论知识,增强学生对所学知识的实际应用能力和运用所学的知识解决实际问题的能力,开始为期两周的课程设计。通过设计使学生在巩固所学知识的基础之上具有初步的单片机系统设计与应用能力。 1、通过本设计,使学生综合运用《单片机技术原理与应用》、《DSP原理与应用》《C 语言程序设计》以及《数字电路》、《模拟电路》等课程的内容,为以后从事电子产品设计、软件编程、系统控制等工作奠定一定的基础。 2、学会使用KEIL C和PROTEUS等软件,用C语言或汇编语言编写一个较完整的实用 程序,并仿真运行,保证设计的正确性。 3、了解单片机接口应用开发的全过程:分析需求、设计原理图、选用元器件、布线、 编程、调试、撰写报告等。 二、硬件电路方案设计 1、4X4键盘设计 4x4键盘工作原理: 每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。键盘的一端(列线)通过电

阻接VCC,而接地是通过程序输出数字“0”实现的。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么?还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。 2、数码管显示电路设计 数码管显示原理: 动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。这样一来,就没有必要每一位数码管配一个锁存器,从而大大地简化了硬件电路。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。 3、晶振和复位电路设计

键盘显示接口芯片8279的应用

1.8279功能介绍 8279 是可编程的键盘、显示接口芯片。它既具有按键处理 功能,又具有自动显示功能,在单片机系统中应用很广泛。8279 内部有键盘 FIFO(先进先出堆栈)/传感器,双重功能的 8*8=64B RAM,键盘控制部分可控制 8*8=64 个按键或 8*8 阵列方式的传 感器。该芯片能自动消抖并具有双键锁定保护功能。显示 RAM 容量为 16*8,即显示器最大配置可达 16 位 LED 数码显示。 (1)数据线 DB0→DB7 是双向三态数据总线,在接口电路中与系统数据总 线相连,用以传送 CPU 和 8279 之间的数据和命令。 (2)地址线 /CS=0 选中8279,当A0=1 时,为命令字及状态字地址;当 A0=0 时,为片内数据地址,故 8279 芯片占用 2 个端口地址。(3) 控制线 CLK:8279 的时钟输入线。 IRQ:中断请求输出线,高电平有效。图 3.1 8279 引脚图 /RD、/WR:读、写输入控制线。 SL0---SL3:扫描输出线,用来作为扫描键盘和显示的代码输出或直接输出线。 RL0---RL7:回复输入线,它们是键盘或传感器矩阵的信号输入线。 SHIFT:来自外部键盘或传感器矩阵的输入信号,它是 8279 键盘数据的次高位即 D6 位的状态,该位状态控制键盘上/下档功能。在传感器方式和选通方式中,该引脚无用。 CNTL/S:控制/选通输入线,高电平有效。键盘方式时,键盘数据最高位(D7)的信号输入到该引脚,以扩充键功能;选通方式时,当该引脚信号上升沿到时,把 RL0---RL7 的数据存入 FIFO RAM 中。 OUTA0---OUTA3:通常作为显示信号的高 4 位输出线。 OUTB0---OUTB3:通常作为显示信号的低 4 位输出线。 /BD:显示熄灭输出线,低电平有效。当/BD=0 时将显示全熄灭。 2.8279的工作方式 8279 有三种工作方式:键盘方式、显示方式和传感器方式。 (1)键盘工作方式 8279 在键盘工作方式时,可设置为双键互锁方式和 N 键循回方式。 双键互锁方式:若有两个或多个键同时按下时,不管按键先后顺序如何,只能识别最后一个被释放的键,并把该键值送入 FIFO RAM 中。 N 键循回方式:一次按下任意个键均可被识别,按键值按扫描次序被送入 FIFO RAM 中。 (2)显示方式 8279 的显示方式又可分为左端入口和右端入口方式。 显示数据只要写入显示 RAM,则可由显示器显示出来,因此显示数据写入显示 RAM 的顺序,决定了显示的次序。 14

C51单片机定时器及数码管控制实验报告

昆明理工大学信息工程与自动化学院学生实验报告 ( 201 — 201学年第 1 学期) 课程名称:单片机技术 开课实验室:年月日

一、实验目的 1.掌握定时器 T0、T1 的方式选择和编程方法,了解中断服务程序的设计方法,学会实时程序的调试技巧。 2.掌握 LED 数码管动态显示程序设计方法。 二、实验原理 1.89C51 单片机有五个中断源(89C52 有六个),分别是外部中断请求 0、外部中断请求 1、定时器/计数器 0 溢出中断请求、定时器/计数器 0 溢出中断请求及串行口中断请求。每个中断源都对应一个中断请求位,它们设置在特殊功能寄存器 TCON 和 SCON 中。当中断源请求中断时,相应标志分别由 TCON 和 SCON 的相应位来锁寄。五个中断源有二个中断优先级,每个中断源可以编程为高优先级或低优先级中断,可以实现二级中断服务程序嵌套。在同一优先级别中,靠内部的查询逻辑来确定响应顺序。不同的中断源有不同的中断矢量地址。 中断的控制用四个特殊功能寄存器 IE、IP、TCON (用六位)和 SCON(用二位),分别用于控制中断的类型、中断的开/关和各种中断源的优先级别。中断程序由中断控制程序(主程序)和中断服务程序两部分组成: 1)中断控制程序用于实现对中断的控制; 2)中断服务程序用于完成中断源所要求的中断处理的各种操作。 C51 的中断函数必须通过 interrupt m 进行修饰。在 C51 程序设计中,当函数定义时用了 interrupt m 修饰符,系统编译时把对应函数转化为中断函数,自动加上程序头段和尾段,并按 MCS-51 系统中断的处理方式自动把它安排在程序存储器中的相应位置。 在该修饰符中,m 的取值为 0~31,对应的中断情况如下: 0——外部中断 0 1——定时/计数器 T0 2——外部中断 1 3——定时/计数器 T1 4——串行口中断 5——定时/计数器 T2 其它值预留。 89C51 单片机内设置了两个可编程的 16 位定时器 T0 和 T1,通过编程,可以设定为定时器和外部计数方式。T1 还可以作为其串行口的波特率发生器。 2.定时器 T0 由特殊功能寄存器 TL0 和 TH0 构成,定时器 T1 由 TH1 和TL1 构成,特殊功能寄存器 TMOD 控制定时器的工作方式,TCON 控制其运行。定时器的中断由中断允许寄存器 IE,中断优先权寄存器 IP 中的相应位进行控制。定时器 T0 的中断入口地址为 000BH,T1 的中断入口地址为 001BH。 定时器的编程包括: 1)置工作方式。 2)置计数初值。 3)中断设置。

相关文档
最新文档