mcu实验报告三 下载本文

东南大学自动化学院

实 验 报 告

课程名称: MCU(微控制器)综合课程设计

第 3 次实验

实验名称: 定时中断,键盘输入与显示综合实验

院 (系): 自动化学院 专 业: 自动化

姓 名: 张涤 学 号: 08007211

实 验 室: 测控技术实验室 实验组别:

同组人员: 黎晓平.王宽 实验时间:2010 年 5 月 7 日

评定成绩: 审阅教师:

实验报告内容:

一. 实验目的和要求

实验目的:

由于本次实验做的是两个小内容,分别是定时中断实验和键盘输入显示综合实验。第一个实验主要目的是了解单片机定时器,通过定时器使得单片机输出一个特定的方

波。第二个实验主要目的是了解4*4键盘输入检测原理,判断是否有按键按下,掌握键盘与8位LED数码管之间的连接原理,读与写的显示过程。

实验要求:

1. 定时中断实验

利用单片机定时器中断,控制单片机P0.0口输出一50Hz的方波。结果可采用示波器显示。

2.键盘输入与显示综合实验 利用4*4键盘输入,在通过CPLD译码与CPU总线相连的8位LED上显示键码值,并在8位数码管上显示输入的数字。

二. 实验原理

1. 定时中断实验

在单片机控制应用中定时和计数的需求很多,为此在51单片机中有2个16位定时器(计数器),分别为定时器0和定时器1,而定时器有4种工作方式,分别是0,1,2,3。工作方式0采用的是13位计数结构,若要求输出50HZ的方波,也就是说周期为0.02s,那么用方式0会导致计数位不够,这里采用16位计数结构的方式1。首先设定各个初始值,启动定时之后,重新设置计数初值,输出按位取反即可,这样就形成了方波。定时周期通过计算计算初值X获得。

2. 键盘输入与显示综合实验

电路如图3-1所示。键盘矩阵输入电路采用行列扫描法实现。将行线接输出口,列线接到输入口,采用列扫描法,先将某一行输出为低电平,其它行输出为高电平,用输入口来查询列线上的电平,逐次读入列值,如果行线上的值为0时,列线上的值也为0,则表明有按键按下。否则,接着读入下一列,直到找到该行有按下的键为止。如该行没有找到有按键按下,就按此方法逐行找下去,直到扫描完全部的行和列。

图3-1 4*4键盘示意图

与CPU总线相连的8位LED地址为0F600H,数码管段控地址为0F300H,位控地址为0F400H。4*4键盘地址为0F700H,其中行线对应该地址的低4位数据,只可以写不可以读;而列线对应高4位数据,只可以读不可以写。因此选通第1条行线ROW1的程序示例为: MOV A, #0FEH MOVX @DPTR, A 读列线的程序示例为: MOVX A, @DPTR ANL

键码表如下所示:

7xH BxH DxH ExH 3 2 1 0 x7H 7 6 5 4 xBH 表3-1 键码表

;低4位为要选通的行线值

MOV DPTR, #KEY4x4_ADDRESS

;高4位为列线状态

;屏蔽无效的低4位行线状态。

A, 0F0H

B A 9 8 xDH F E D C xEH 键码表中,ExH表示键码值的高4位为E,低4位未知,这表示的是选通第1条行线。xEH表示低4位为E,高4位未知,表示的是选通第1条列线。故而

第一条行线和第一条列线交叉处的键C的键码值为0EEH。其它键以此类推。 也就是说先将所有行线清0,然后读取列线状态,进行判断,假若列线为1,则跳回去继续执行清0操作,列线为0,则延时后读取列线状态,列线全为1,则跳回继续执行主程序,经过n次后,设置行扫描初值和键初值,进行读操作,首先输出行扫描初值,读取列线状态,列线有0,则左移一位,判断是否有益处位,如果益处则调用显示子程序,和实验二中类似,如果列线没有0,则修改扫描值,直至扫描结束。

三. 实验方案与实验步骤

首先将各种插口连接号,然后进行编程,实现各种功能

定时中断实验流程图:

执行主程序 跳转中断 设置定时器工作方式1 算出产生20ms初始值 高8位送th1 低8位送tl1 启动定时器 各种中断允许请求 等待一段时间 相同初始值 高8位送th1 低8位送tl1 输出按位取反 程序结束