微机原理键盘扫描及显示完整实验报告

微机原理键盘扫描及显示完整实验报告
微机原理键盘扫描及显示完整实验报告

实验9 键盘扫描及显示实验

实验时间2019年12月18日

实验类型■验证性□设计性□综合性

1. 实验目的

了解键盘扫描及数码显示的基本原理,熟悉8255的编程。

2. 实验内容及过程(主要内容、操作步骤)

将8255单元与键盘及数码管显示单元连接,编写实验程序,扫描键盘输入,并将扫描结果送数码管显示。键盘采用4X4键盘,每个数码管显示值可为0~F共16个数。实验具体内容如下:将键盘进行编号,记作0~F,当按下其中-一个按键时,将该按键对应的编号在一个数码管上显示出来,当再按下一个按键时,便将这个按键的编号在下一个数码管上显示出来,数码管上可以显示最近4次按下的按键编号。

3. 测试数据及实验结果

4. 实验分析及总结(主要考察内容)

通过本次实验,我理解了键盘扫描及数码显示的基本原理,通过理解分析程序,自己对程序进行了一些总结和修改,并进行了验证,进一步掌握了微机接口的学习方法。

教师评阅

评价指标:实验目的、操作步骤、设计、算法、程序结构、实验结果、实验分析、实验总结

键盘与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 显示器,只要按地址输出相应的数据,就可以显示所需数码。 显示字形 1 2 3 4 5 6 7 8 9 A b C d E F 段 码 0xfc 0x60 0xda 0xf2 0x66 0xb6 0xbe 0xe0 0xfe 0xf6 0xee 0x3e 0x9c 0x7a 0x9e 0x8e 六、实验原理图 01e 1d 2dp 3 c 4g 56 b 78 9 a b c g d dp f 10a b f c g d e dp a 11GND3a b f c g d e dp 12 GND4 a b f c g d e dp GND1GND2DS29 LG4041AH 234 567 89A B C D E F e 1d 2dp 3 c 4g 56 b 78 9 a b c g d dp f 10a b f c g d e dp a 11GND3a b f c g d e dp 12 GND4 a b f c g d e dp GND1 GND2DS30 LG4041AH 1 2 3 4 5 6 7 8 JP4112345678 JP4712345678JP42 SEGA SEGB SEGC SEGD SEGE SEGG SEGF SEGH SEGA SEGB SEGC SEGD SEGE SEGG SEGF SEGH A C B 12345678 JP92D 5.1K R162 5.1K R163VCC VCC D034D133D232D331D430D529D628D727PA04PA13PA22PA31PA440PA539PA638PA737PB018PB119PB220PB321PB422PB523PB624PB725PC014PC115PC216PC317PC413PC512PC611PC7 10 RD 5WR 36A09A18RESET 35CS 6 U36 8255 D0D1D2D3D4D5D6D7WR RD RST A0A1PC5PC6PC7 PC2PC3PC4PC0PC1CS 12345678JP56 12345678JP53 12345678 JP52 PA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7 (8255 PB7)(8255 PB6)(8255 PB5)(8255 PB4)(8255 PB3)(8255 PB2)(8255 PB1)(8255 PB0) (8255 PC7)(8255 PC6)(8255 PC5)(8255 PC4)(8255 PC3)(8255 PC2)(8255 PC1)(8255 PC0) (8255 PA0) (8255 PA1) (8255 PA2) (8255 PA3) (8255 PA4) (8255 PA5) (8255 PA6) (PA7) I N T 0(P 3.2) I N T 0(P 3.3) 七、连线说明

CPU控制的键盘扫描实验

CPU键盘扫描实验 电路图如下: 要求按下s1键时,p3口的8位LED正向流水点亮;按下s2键时,p3口的8位LED反向流水点亮;按下s3键时,p3口的8位LED 熄灭;按下s4键时,p3口的8位LED闪烁。 程序代码: #include unsigned char tab[ ]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //段码表 sbit S1=P1^4; //将S1位定义为P1.4引脚 sbit S2=P1^5; //将S2位定义为P1.5引脚 sbit S3=P1^6; //将S3位定义为P1.6引脚 sbit S4=P1^7; //将S4位定义为P1.7引脚 /*流水灯延时*/ void delay0() { unsigned char i,j; for(i=0;i<250;i++) for(j=0;j<250;j++) ;

} /*软件消抖延时*/ void delay1() { unsigned char i,j; for(i=0;i<100;i++) for(j=0;j<100;j++) ; } /*正转*/ void zheng() { int i; for(i=0;i<8;i++) {P3=tab[i]; delay0();} } /*反转*/ void fan() { int i; for(i=7;i>=0;i--) {P3=tab[i]; delay0();} } /*关闭*/ void close() { P3=0xff; } /*闪烁*/ void shan() { P3=0xff; delay0(); P3=0x00; delay0();

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

信息工程学院实验报告 课程名称:微机原理与接口技术 实验项目名称:键盘扫描及显示实验 实验时间: 班级: 姓名: 学号: 一、实 验 目 的 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. 运行程序,按下按键,观察数码管的显示。

微机原理实验报告

汇编语言程序设计实验 一、实验内容 1.学习并掌握IDE86集成开发环境的使用,包括编辑、编译、链接、 调试与运行等步骤。 2.参考书例4-8,P165 (第3版161页)以单步形式观察程序的 执行过程。 3.修改该程序,求出10个数中的最大值和最小值。以单步形式观 察,如何求出最大值、最小值。 4.求1到100 的累加和,并用十进制形式将结果显示在屏幕上。 要求实现数据显示,并返回DOS状态。 二、实验目的 1.学习并掌握IDE86集成开发环境的使用 2.熟悉汇编语言的基本算法,并实际操作 3.学会利用IDE86进行debug的步骤 三、实验方法 1.求出10个数中的最大值和最小值 (1)设计思路:利用冒泡法,先对数据段的10个数字的前2个比 较,把二者中大的交换放后面。在对第二个和第三个数比较,把 二者中较大的交换放后面,依此类推直到第十个数字。这样第十 位数就是10个数里面最大的。然后选出剩下9个数字里面最大 的,还是从头开始这么做,直到第九个数字。以此类推直到第一 个数字。

(2)流程图 2.求1到100 的累加和,并用十进制形式将结果显示在屏幕上。 要求实现数据显示,并返回DOS状态

(1)设计思路:结果存放在sum里面,加数是i(初始为1),进行 100次循环,sum=sum+I,每次循环对i加1. (2)流程图: 四、 1.求出10个数中的最大值和最小值

DSEG SEGMENT NUM DB -1,-4,0,1,-2,5,-6,10,4,0 ;待比较数字 DSEG ENDS CODE SEGMENT ASSUME DS:DSEG,CS:CODE START:MOV AX,DSEG MOV DS,AX LEA SI,NUM MOV DX,SI MOV CL,9 ;大循环计数寄存器初始化 NEXT1:MOV BL,CL ;大循环开始,小循环计数器初始化MOV SI,DX NEXT2:MOV AL,[SI+1] CMP [SI],AL ;比较 JGGONE ;如果后面大于前面跳到小循环末尾CHANGE:MOV AH,[SI] ;交换 MOV [SI+1],AH MOV [SI],AL JMP GONE GONE:add SI,1 DEC BL JNZ NEXT2

矩阵键盘扫描实验

实验矩阵键盘扫描实验 一、实验要求 利用4X4 16位键盘和一个7段LED构成简单的输入显示系统,实现键盘输入和LED 显示实验。 二、实验目的 1、理解矩阵键盘扫描的原理; 2、掌握矩阵键盘与51单片机接口的编程方法。 三、实验电路及连线 Proteus实验电路

1、主要知识点概述: 本实验阐述了键盘扫描原理,过程如下:首先扫描键盘,判断是否有键按下,再确定是哪一个键,计算键值,输出显示。 2、效果说明: 以数码管显示键盘的作用。点击相应按键显示相应的键值。 五、实验流程图

1、Proteus仿真 a、在Proteus中搭建和认识电路; b、建立实验程序并编译,加载hex文件,仿真; c、如不能正常工作,打开调试窗口进行调试 参考程序: ORG 0000H AJMP MAIN ORG 0030H MAIN: MOV DPTR,#TABLE ;将表头放入DPTR LCALL KEY ;调用键盘扫描程序 MOVC A,@A+DPTR ;查表后将键值送入ACC MOV P2,A ;将ACC值送入P0口 LJMP MAIN ;返回反复循环显示 KEY: LCALL KS ;调用检测按键子程序 JNZ K1 ;有键按下继续 LCALL DELAY2 ;无键按调用延时去抖 AJMP KEY ;返回继续检测按键 K1: LCALL DELAY2 LCALL DELAY2 ;有键按下延时去抖动 LCALL KS ;再调用检测按键程序 JNZ K2 ;确认有按下进行下一步 AJMP KEY ;无键按下返回继续检测 K2: MOV R2,#0EFH ;将扫描值送入R2暂存MOV R4,#00H ;将第一列值送入R4暂存 K3: MOV P1,R2 ;将R2的值送入P1口 L6: JB P1.0,L1 ;P1.0等于1跳转到L1 MOV A,#00H ;将第一行值送入ACC AJMP LK ;跳转到键值处理程序 L1: JB P1.1,L2 ;P1.1等于1跳转到L2 MOV A,#04H ;将第二行的行值送入ACC AJMP LK ;跳转到键值理程序进行键值处理 L2: JB P1.2,L3 ;P1.2等于1跳转到L3

微机原理实验报告

西安交通大学实验报告 课程_微机与接口技术第页共页 系别__生物医学工程_________实验日期:年月日 专业班级_____组别_____交报告日期:年月日 姓名__ 学号__报告退发 ( 订正、重做 ) 同组人_教师审批签字 实验一汇编语言程序设计 一、实验目的 1、掌握Lab6000p实验教学系统基本操作; 2、掌握8088/8086汇编语言的基本语法结构; 3、熟悉8088/8086汇编语言程序设计基本方法 二、实验设备 装有emu8086软件的PC机 三、实验内容 1、有一个10字节的数组,其值分别是80H,03H,5AH,FFH,97H,64H,BBH,7FH,0FH,D8H。编程并显示结果: 如果数组是无符号数,求出最大值,并显示; 如果数组是有符号数,求出最大值,并显示。 2、将二进制数500H转换成二-十进制(BCD)码,并显示“500H的BCD是:” 3、将二-十进制码(BCD)7693转换成ASCII码,并显示“BCD码7693的ASCII是:” 4、两个长度均为100的内存块,先将内存块1全部写上88H,再将内存块1的内容移至内存块2。在移动的过程中,显示移动次数1,2 ,3…0AH…64H(16进制-ASCII码并显示子

程序) 5、键盘输入一个小写字母(a~z),转换成大写字母 显示:请输入一个小写字母(a~z): 转换后的大写字母是: 6、实现4字节无符号数加法程序,并显示结果,如99223344H + 99223344H = xxxxxxxxH 四、实验代码及结果 1.1、实验代码: DATA SEGMENT SZ DB 80H,03H,5AH,0FFH,97H,64H,0BBH,7FH,0FH,0D8H;存进数组 SHOW DB 'THE MAX IS: ','$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA ;把数据的基地址赋给DS MOV DS,AX MOV DX,OFFSET SHOW ;调用DOS显示字符串 MOV AH,09H INT 21H MOV SI ,OFFSET SZ ;数组的偏移地址赋给SI MOV CX,10 ;存进数组的长度给CX MOV DH,80H ;将数组的第一个数写进DH NEXT: MOV BL,[SI] ;将数组的第一个数写进BL CMP DH,BL ;比较DH和BL中数的到校 JAE NEXT1 ;如果DH中的数大于BL中,将跳转到NEXT1 MOV DH,BL ;如果DH中的数小于BL中,将BL中的数赋给DH NEXT1: INC SI ;偏移地址加1 LOOP NEXT;循环,CX自减一直到0,DH中存数组的最大值 ;接下来的程序是将将最大值DH在屏幕上显示输出 MOV BX,02H NEXT2: MOV CL,4 ROL DH,CL ;将DH循环右移四位

微机原理与单片机实验报告

北京联合大学信息学院实验报告 课程名称:微型计算机原理学号: 姓名: 2012 年 6 月 9 日

目录 实验1 EMU8086模拟器的使用 (3) 实验2 数据传送指令的使用 (5) 实验3 多位十六进制加法运算实验 (9) 实验5 循环程序实验 (11) 实验6 由1 到100 求和实验 (13) 实验7 求表中正数_负数_0 的个数实验 (14) 实验8 数据排列实验(冒泡排序) (16) 实验9 系统功能调用(大小写转换) (18) 实验10 阶乘(递归运算) (20) 实验11 ProteusIO工程文件的建立 (21) 实验12 IO口读写实验(245、373) (22) 实验13 8255 接口实验 (24) 实验14 声光报警 (25) 实验总结 (28)

实验1 EMU8086模拟器的使用 一实验要求 利用EMU8086模拟器环境,完成创建源程序文件,运行调试,实验结果的查看二实验目的: 熟悉EMU8086实验环境 三EMU8086环境: 1 模拟器编辑窗口 2 模拟器调试窗口

四实验内容 实验内容1:新建文件。 运行emu8086 1. 新建文件:单击“新建”按钮,选择COM模板,在模拟器编辑窗口中输入如下程序代码: MOV AX, 1020H MOV BX, 2030H MOV AX, BX ADD AX, BX MOV [BX], AX MOV [2032H], AX HLT 2. 编译:单击“编译”按钮,对程序段进行编译; 3. 保存:编译通过,单击“完成”按钮,将其以文件名“EXP1”保存在本地磁盘上。 4. 仿真:单击“仿真”按钮,打开模拟器调试窗口和源文件窗口。 5.在模拟器调试窗口中的寄存器组区,查看数据寄存器AX,BX,CX,DX;段寄存器CS,ES,SS,DS;指令指针寄存器IP;指针寄存器SP,BP;变址寄存器SI,DI;标志寄存器的值。 6.单击“单步前”按钮,单步执行程序,并观察每次单步执行后,相关寄存器值的变化。 7.单击“重载”按钮,将程序重载,并调整指令运行步进时延为400毫秒,单击“全速”按钮,运行程序, 8.程序运行之后,在程序调试窗口中,选择[view]/[memory],查看模拟器环境中,内存单元0700:0100开始的连续10个单元的内容 9.将“存储器”中的地址改为0700:2030,查看开始的四个字节的内容,并思考其内容与程序

实验三 键盘扫描控制

实验三4*4键盘扫描显示控制 一、实验目的 实现一4×4键盘的接口,并在两个数码管上显示键盘所在的行与列。即将8255单元与键盘及数码管显示单元连接,编写实验程序扫描键盘输入,并将扫描结果送数码显示,键盘采用4×4键盘,每个数码管值可以为0到F,16个数。将键盘进行编号记作0—F当按下其中一个按键时将该按键对应的编号在一个数码管上显示出来,当按下下一个按键时便将这个按键的编号在下一个数码管上显示出来,且数码管上可以显示最近6次按下按键的编号。 二、实验要求 1、接口电路设计:根据所选题目和所用的接口电路芯片设计出完整的接口电路,并进行电路连接和调试。 2、程序设计:要求画出程序框图,设计出全部程序并给出程序设计说明。 三、实验电路

四、实验原理说明 图2 数码管引脚图 图1为AT89C51引脚图,说明如下: VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH 编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口同时为闪烁编程和编程校验接收一些控制信号。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址

微机原理实验报告软件实验1-4

微机原理实验报告 学院:算机科学与软件教育学院 1. 掌握存储器读写方法 2. 了解存储器的块操作方法 二、实验原理 存储器读写和块操作 三、实验设备仪器及材料 计算机,WA VE 6000软件 四、实验过程 S1.asm 代码流程图 data segment Block db 256 dup(55h) data ends code segment assume cs:code, ds:data start proc near mov ax, data mov ds, ax mov bx, offset Block ; 起始地址 mov cx, 256 ; 清256 字节Again: mov [bx], byte ptr 0 inc bx ; 地址+1 Loop Again ; 记数减一jmp $ ;死循环code ends end start

五、实验步骤 (1) 进入Wave6000,输入程序并检查,保存程序。 (2) “编译”程序。 (3) “全速执行”程序。 (4) “暂停”程序运行,在“数据窗口(MEMOREY)”查看0400H起始的单元内容,并记录。 (5) 在指令“jmp $”处设断点。“全速执行”程序。 (6) 在“数据窗口(MEMOREY)”查看0400H起始的单元内容,记录并分析实验结果。 六、实验结果及总结 运行前:运行后: 2、调试:如何将存储器块的内容置成某固定值(例全填充为0FFH)? 总结:通过本实验,我了解到单片机读写存储器的读写方法,同时也了解到单片机编程,调试方法。学会内存的移动方法,也加深对存储器读写的认识。

微机原理实验报告 学院:算机科学与软件教育学院 实验 课程 名 微机原理实验成绩实验 项目名称实验二、二进制到BCD码转换 指导老 师 1. 了解BCD值和ASCII值的区别。 2. 了解如何将BCD值转换成ASCII值。 3. 了解如何查表进行数值转换及快速计算。 二、实验原理 ASCII码表 三、实验设备仪器及材料 计算机,WA VE 6000软件 data segment Result db 3 dup(?) data ends code segment assume cs:code, ds:data start proc near mov ax, data mov ds, ax mov ax, 123 mov cl, 100 div cl mov Result, al ; 除以 100, 得百位数 mov al, ah mov ah, 0 mov cl, 10 div cl mov Result+1, al ; 余数除以 10, 得十位数 mov Result+2, ah ; 余数为个位 数 jmp $ code ends end start 代码流程图

键盘扫描显示实验原理及分析报告

键盘扫描显示实验原理及分析报告 一、实验目的-------------------------------------------------------------1 二、实验要求-------------------------------------------------------------1 三、实验器材-------------------------------------------------------------1 四、实验电路-------------------------------------------------------------2 五、实验说明-------------------------------------------------------------2 六、实验框图-------------------------------------------------------------2 七、实验程序-------------------------------------------------------------3 八、键盘及LED显示电路---------------------------------------------14 九、心得体会------------------------------------------------------------- 15 十、参考文献--------------------------------------------------------------15

微机原理实验四实验报告

实验报告

实验四 8251可编程串行口与PC机通信实验一、实验要求 利用实验箱内的8251A芯片,实现与PC机的通信。 二、实验目的 1.掌握8251A芯片结构和编程方法; 2.了解实现串行通信的硬件环境,数据格式和数据交换协议; 3.了解PC机通信的基本要求。 三、实验原理 (一)8251A芯片工作方式配置: 1. 8个数据位; 2.无奇偶校验位; 3.1个停止位; 4.波特率因子设为16; 5. 波特率设为9600。 (二)8251A主要寄存器说明 图4-1 模式字 图4-2 命令字

CO MMAN D I NSTR UCT ION FO RMA T 图4-3 状态字 (三)8251编程 对8251 的编程就是对8251 的寄存器的操作,下面分别给出8251 的几个寄存器的格式。(1)方式控制字 方式控制字用来指定通信方式及其方式下的数据格式,具体各位的定义如图4-4所示。 图4-4 方式控制字说明 (2)命令控制字 命令控制字用于指定8251 进行某种操作(如发送、接收、内部复位和检测同步字符等)或处于某种工作状态,以便接收或发送数据。图4-5 所示的是8251 命令控制字各位的定义。 图4-5命令控制字说明 (3)状态字 CPU 通过状态字来了解8251 当前的工作状态,以决定下一步的操作,8251 的状态字如 图4-6所示。 图4-6 状态字说明 四、实验电路连接: 1.CS8251接228H,CS8279已固定接至238H; 2.扩展通信口18中的232RXD连8251RXD ,232TXD连8251TXD;

3.计算机的两个RS232通信口,一个连至仿真机通信口,一个连至扩展通信口18(所有通信口均为DB9)。注意:RS232通信口必须在设备断电状态下插拔! 图4-7 连线图 五、实验内容及要求 1. 将例程从PDF文档中导入到WMD86软件编辑环境中,调试通过。使用软件自带的示波器,观察Txd管脚的输出,验证结果的正确性。将结果截图保存,贴入实验报告。 2.剔除例程中冗余部分,实现对例程的精简和优化。将精简内容与相应理由写入实验报告。 3.将自己学号的后三位数字通过RS232端口的Txd管脚输出。使用软件自带的示波器,观察Txd管脚的输出,验证结果的正确性。将结果截图保存,贴入实验报告。 4.通过读状态寄存器的方法,获得发送移位寄存器是否为空的信息,实现学号后三位数字的循环发送。将结果截图保存,贴入实验报告。 5.给每帧数据间添加固定的时间间隔,时间间隔为10000个指令周期。将结果截图保存,

键盘扫描实验设计报告

目录 第一章引言 (1) 1.1 键盘及LED扩展电路概述 (1) 1.2 系统的主要功能 (1) 第二章系统的硬件设计 (2) 2.1 系统的硬件构成及功能 (3) 2.2 主控模板硬件设计 (3) 2.3 ARM芯片及引脚说明 (3) 2.4 LED数码显示管 (6) 2.5 键盘设计 (8) 第三章系统的软件设计 (12) 3.1 软件总体功能设计 (12) 3.2各功能模块软件设计 (16) 第四章结束语 (18) 致谢 (18) 参考文献 (18) 附录 (19)

第一章引言 1.1键盘及LED扩展电路概述 键盘及LED扩展电路主要是由74HC164移位寄存器、数码显示管、按键、电阻、电容、导线等构成的。将8个按键用总线分别与两个74HC164移位寄存器、数码显示管联接起来,两个74HC164移位寄存器联接起来。一个用来存段码,一个用来存位码。在没有按键动作时,74HC164 移位寄存器的数据输入端AB(A 和B 作为一个2 个输入端的与门为74HC164 提供数据,在此电路里并联)的输入电平为1,供电路产生移位逻辑时钟脉冲信号的输入端CP也为1 电平。此时按下键就给了CP 端一个低电平,当键松开后CP端即恢复高电平,于是CP端就得到了一个输入翻转兼移位的低电平脉冲信号.当74HC164得到了一个0 数据的同时输出端Q7~Q0 的数据将全部左移一位。通过DATA端持续给其传送数据,当装满寄存器后开始循环,而寄存器与数码显示管是相通的,寄存器把对应位的高、低电平传给数码管,使符合条件(段码、位码)的0-9在数码管上显示出来。 1.2系统的主要功能 该系统使用前后台的程序编写方法,完成三个基本的功能。 1.任意按下键盘,能在数码显示管上将按下的键对应的十六进制数显示出来图1.1.1 3. 键盘扫描的流程图如右:

微机原理实验报告

大学 科技学院 实 验 报 告 课程名称:微机原理实验

实验一数据转换实验 一、实验目的 (1)初步掌握在PC机上建立、汇编、链接和运行8086/88汇编语言程序的过程。 (2)通过对两个验证性试验的阅读、调试、掌握不同进制数及编码相互转换的程序设计方法。 (3)完成程序设计题,加深对数码转换的理解,了解简单程序设计方法。 二、实验内容 1.十六进制数转换为ASCII码 设二字节十六进制数存放于其实地址为3500H的内存单元中,把他们转换成ASCII码后,再分别存入起始地址为350A的四个内存单元中。从书上ASCII码表中可知十六进制数加30H即可得到0H~9H的ASCII码,而要得到AH~FH 的ASCII码,则需再加7H。 请根据所给流程图理清思路,总结出对应的若干要点。将流程图与参考程序相互。根据分析的结果将运行时内存的变化列写出来。 学习并使用MASM或WAVE仿真软件分析程序运行过程中相关寄存器及相应内存的变化情况来验证自己的猜想,以巩固命令的学习,提高编程能力。

图1-1-1

DATAS SEGMENT ;此处输入数据段代码 DATAS ENDS STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX ;此处输入代码段代码 MOV CX,0004H;根据转换个数设定循环次数 ;(两字节十六进制数如6B2C对应有四个用十六进制表示的ASCII码表示,即四个字节) MOV DI,3500H;指向该两字节十六进制数起始地址,此时在调试窗口修改内存字节 MOV DX,[DI];将地址3500H中的内容(6B2C)给DX A1: MOV AX,DX;第一次时DX=6B2C, ;因为想顺序取C、2、6、B,所以需要一个中间变量AND AX,000FH;取低四位,第一次取到C, CMP AL,0AH;判断AL属于0~9,还是A~F JB A2;如果是0~9,则跳转到A2 ADD AL,07H;若属于A~F,再加上07H后也是再加上30H即得到转换。 A2: ADD AL,30H;0~9的ASCII码对应的十六进制比其 ;本身(注意:亦是十六进制)大30H MOV [DI+0AH],AL;将转码后的C,即43H给350A INC DI;将DI指向下一字节,用于存储转码后的值,第一次自增后要存‘2’ PUSH CX;功能是接下来要用到CX作为一个中间变量, ;而刚才已经使用并且接下来还会用到CX的值, ;也可以不用CX,用其他不用的寄存器或者直接立即数形式的。 MOV CL,04H;若直接用立即数,可能不稳定,(原因不详)用一个中间变量。

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

实验四键盘扫描及显示设计实验报告 一、实验要求 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 对键的一次闭合仅做一次处理,必须去除键抖动。在键闭合稳定时,读取键的状态,并且必须判别;在键释放稳定后,再作处理。按

微机原理实验报告

目录 软件实验部分: 实验一清零程序 实验二拆字程序 实验三拼字程序 实验四数据区传送子程序 实验五数据排序实验 实验六查找相同数个数 实验七无符号双字节快速乘法子程序 实验八多分支程序 实验九脉冲计数(定时/计数器实验) 实验十电脑时钟(定时器、中断综合实验) 硬件实验部分: 实验一 P1口亮灯实验 实验二 P1口转弯灯实验 实验三 P3.3口输入,P1口输出 实验四工业顺序控制 实验五继电器控制 实验六 8255控制交通灯 实验七 LED16×16点阵显示实验 实验八串并转换实验 实验九 A/D转换实验 实验十 D/A转换 实验十一电子音响 实验十二步进电机控制 实验十三 8032串行口应用实验㈠——双机通信 实验十四小直流电机调速实验 软件实验部分 本节共编了十个软件实验,通过这些实验程序的调试,使学生熟悉MCS-51的指令系统,了解程序设计过程,掌握汇编语言设计方法以及如何使用实验系统提供的调试手段来排除程序错误。 本节提供的软件实验,涉及外部数据存储器扩展寻址操作,因此需按下图连接实验线路。

1.将存储器单元的D0—D7总线接口用8芯扁平线与数据总线单元D0—D7的任一接口相连,存储器单元的A0—A7地址接口与地址总线单元(低8)A0—A7的任一接口相连,存储器单元的A8—A12地址接口与地址总线单元(高8)A8—A12的任一接口相连。注意外部扩充的数据区的有效范围。 2.存储器单元的WE/PGM插孔与六位LED左下方的IOWE插孔相连。 3.存储器单元的OE插孔与六位LED左下方的IORD插孔相连。 4.存储器单元的CS1插孔与六位LED右下方的IOWE插孔相连。 实验一清零程序 一、实验目的 掌握汇编语言设计和调试方法,熟悉键盘操作。 二、实验内容 把2000H-20FFH的内容清零 三、程序框图 四、实验步骤 用连续或单步方式运行程序,检查2000-20FF中执行程序前后的内容变化。 五、思考 假使把2000H-20FFH中的内容改成FF,如何修改程序。 接P1.0到L1,试编写程序,对片外数据存储器6264进行读写操作,若L1闪动则表示6264RAM读写正常。(此思考题也可留在硬件实验中做) ORG 0640H

单片机实验报告——矩阵键盘数码管显示

单片机实验报告 信息处理实验 实验二矩阵键盘 专业:电气工程及其自动化 指导老师:高哲 组员:明洪开张鸿伟张谦赵智奇 学号:152703117 \152703115\152703118\152703114室温:18 ℃日期:2017 年10 月25日

矩阵键盘 一、实验内容 1、编写程序,做到在键盘上每按一个键(0-F)用数码管将该建对应的名字显示出来。按其它键没有结果。 二、实验目的 1、学习独立式按键的查询识别方法。 2、非编码矩阵键盘的行反转法识别方法。 3、掌握键盘接口的基本特点,了解独立键盘和矩阵键盘的应用方法。 4、掌握键盘接口的硬件设计方法,软件程序设计和贴士排错能力。 5、掌握利用Keil51软件对程序进行编译。 6、会根据实际功能,正确选择单片机功能接线,编制正确程序。对实验结果 能做出分析和解释,能写出符合规格的实验报告。 三、实验原理 1、MCS51系列单片机的P0~P3口作为输入端口使用时必须先向端口写入“1”。 2、用查询方式检测按键时,要加入延时(通常采用软件延时10~20mS)以消除抖动。 3、识别键的闭合,通常采用行扫描法和行反转法。行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然

后读取列值,如读列值中某位为低电平,表明有键按下,否则扫描下一行,直到扫完所有行。 行反转法识别闭合键时,要将行线接一并行口,先让它工作在输出方式,将列线也接到一个并行口,先让它工作于输入方式,程序使CPU通过输出端口在各行线上全部送低电平,然后读入列线值,如此时有某键被按下,则必定会使某一列线值为0。然后,程序对两个并行端口进行方式设置,使行线工作于输入方式,列线工作于输出方式,并将刚才读得的列线值从列线所接的并行端口输出,再读取行线上输入值,那么,在闭合键所在行线上的值必定为0。这样,当一个键被接下时,必定可以读得一对唯一的行线值和列线值。 由于51单片机的并口能够动态地改变输入输出方式,因此,矩阵键盘采用行反转法识别最为简便。 行反转法识别按键的过程是:首先,将4个行线作为输出,将其全部置0,4个列线作为输入,将其全部置1,也就是向P1口写入0xF0;假如此时没有人按键,从P1口读出的值应仍为0xF0;假如此时1、4、7、0四个键中有一个键被按下,则P1.6被拉低,从P1口读出的值为0xB0;为了确定是这四个键中哪一个被按下,可将刚才从P1口读出的数的低四位置1后再写入P1口,即将0xBF写入P1口,使P1.6为低,其余均为高,若此时被按下的键是“4”,则P1.1被拉低,从P1口读出的值为0xBE;这样,当只有一个键被按下时,每一个键只有唯一的反转码,事先为12个键的反转码建一个表,通过查表就可知道是哪个键被按下了。

实验一矩阵键盘检测

一、实验目的: 1、学习非编码键盘的工作原理和键盘的扫描方式。 2、学习键盘的去抖方法和键盘应用程序的设计。 二、实验设备: 51/AVR实验板、USB连接线、电脑 三、实验原理: 键盘接口电路是单片机系统设计非常重要的一环,作为人机交互界面里最常用的输入设备。我们可以通过键盘输入数据或命令来实现简单的人机通信。 1、按键的分类 一般来说,按键按照结构原理可分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关等;另一类是无触点式开关按键,如电气式按键,磁感应按键等。前者造价低,后者寿命长。目前,微机系统中最常见的是触点式开关按键(如本学习板上所采用按键)。 按键按照接口原理又可分为编码键盘与非编码键盘两类,这两类键盘的主要区别是识别键符及给出相应键码的方法。编码键盘主要是用硬件来实现对键的识别,非编码键盘主要是由软件来实现键盘的识别。 全编码键盘由专门的芯片实现识键及输出相应的编码,一般还具有去抖动和多键、窜键等保护电路,这种键盘使用方便,硬件开销大,一般的小型嵌入式应用系统较少采用。非编码键盘按连接方式可分为独立式和矩阵式两种,其它工作都主要由软件完成。由于其经济实用,较多地应用于单片机系统中(本学习板也采用非编码键盘)。 2、按键的输入原理 在单片机应用系统中,通常使用机械触点式按键开关,其主要功能是把机械上的通断转换成为电气上的逻辑关系。也就是说,它能提供标准的TTL 逻辑电平,以便与通用数字系统的逻辑电平相容。此外,除了复位按键有专门的复位电路及专一的复位功能外,其它按键都是以开关状态来设置控制功能或输入数据。当所设置的功能键或数字键按下时,计算机应

微机原理及应用实验报告

微机原理及应用实验报告标准化文件发布号:(9312-EUATWW-MWUB-WUNN-INNUL-DQQTY-

微机原理及应用实验报告 班级: 姓名: 学号: 中南大学 机电工程学院精密测控实验室

实验二软件程序设计 1.实验目的: 1、掌握MCS-51单片机指令系统及用汇编语言编程技巧; 2、了解和熟悉用MCS-51单片机仿真开发机调试程序的方法。 2.实验内容: 1、编写排序程序并上机调试通过。 已知8031内部RAM60H~69H单元中,依次存放了 FFH,99H,77H,CCH,33H,DDH,88H,BBH,44H,EEH,它们均为无符号数,编程 将它们按递减次序排序,即最大数放在60H中,最小数放在69H中。 2.、编写多字节加法程序并上机调试通过。 8031内部RAM20H~22H单元中,存放了3字节被加数(低字节在前),在2AH~2CH单元中存放3字节加数(低字节在前),求两数之和,并将结 果存入以20H为起始地址的区域中(低字节在前)。 3.实验设备名称、型号: 4.画出软件程序流程图,写出上机调试通过的汇编语言程序清单: 程序1、编写排序程序并上机调试通过。 已知8031内部RAM60H~69H单元中,依次存放了 FFH,99H,77H,CCH,33H,DDH,88H,BBH,44H,EEH,它们均为无符号数,编程 将它们按递减次序排序,即最大数放在60H中,最小数放在69H中。

解:本设计采用冒泡排序法,使用双重循环,并在内循环中进行比较如果合乎从大到小的顺序则不动,否则两两交换,这样比较下去,比较9次 后,最小的那个数就会沉底,在下一次比较时将减少一次比较次数。如 果一次比较完毕,没有发生交换,说明已经按照从大到小的顺序排列 了。则可以退出循环,结束程序。 程序结构框图和程序代码如下:

4X4键盘扫描实验

44 键盘扫描实验 实验目的 1、学习HDL程序的基本设计技巧; 2、掌握矩阵键盘的扫描原理和使用方法。 Verilog程序: module hex_keypad(Col,Code,show,show1,count,scan,clock,Row); output[3:0] Code,Col,count; //定义列信号Col、行列信号共同决定的 输出代码Code、以及计数变量count output[7:0] show,show1; //定义七段显示变量show、show1 input[3:0] Row; //定义输入行信号Row input scan; //定义数码管选择信号scan input clock; //定义时钟信号clock reg[3:0] Col,Code,count; //将输出信号定义为reg型 reg[7:0] show,show1; reg[1:0] cn; //定义reg型变量cn,用于计数 reg reset,count_up,count_down; //定义变量reset用于计数清零,count_up 开始加计数,count_down开始减计数reg[15:0] times1,times2; //定义变量times1、times2用于决定开 始计数的时间 assign scan=1'b1; //将数码管选择信号赋值为1

always@(posedge clock) //产生列信号 if(cn==4)cn<=0; else cn<=cn+1; always@(cn) case(cn) 2'b00:Col=4'b1110; 2'b01:Col=4'b1101; 2'b10:Col=4'b1011; 2'b11:Col=4'b0111; endcase always@(posedge clock) //行列信号共同决定输出代码Code case({Row,Col}) 8'b1110_1110:Code=4'h0; 8'b1110_1101:Code=4'h1; 8'b1110_1011:Code=4'h2; 8'b1110_0111:Code=4'h3; 8'b1101_1110:Code=4'h4; 8'b1101_1101:Code=4'h5;

相关文档
最新文档