东南大学自动化学院
实 验 报 告
课程名称: 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 输出按位取反 程序结束