文档库 最新最全的文档下载
当前位置:文档库 › 微机原理课题设计实验报告之矩阵式键盘数字密码锁

微机原理课题设计实验报告之矩阵式键盘数字密码锁

微机原理课题设计实验报告之矩阵式键盘数字密码锁
微机原理课题设计实验报告之矩阵式键盘数字密码锁

微机系统与应用课程设计报告

班级:031013

学号:03101305

姓名:林佳福

实验地点:E楼Ⅱ区312

实验时间:2013.3.12-3.17

矩阵式键盘数字密码锁设计

一 . 实验目的

1.掌握微机系统总线与各芯片管脚连接方法,提高接口扩展硬件电路的连

接能力。

2.初步掌握键盘扫描,密码修改和计时报警程序的编写方法。

3.掌握通过矩阵式键盘扫描实现密码锁功能的设计思路和实现方法。二.实验内容

矩阵式键盘数字密码锁设计,根据设定好的密码,采用4x4矩阵键盘实现密码的输入功能。当密码输入正确之后,锁就打开(绿灯亮),10秒之后,锁自动关闭(红灯亮);如果连续输入三次密码不正确,就锁定按键5秒钟,同时发出报警(黄灯闪),5秒后,解除按键锁定,恢复密码输入。

数字密码锁操作键盘参考上面设定,也可以自行设计键盘。用户初始密码为“123456”,系统加电运行后,密码锁初始状态为常闭(红灯亮),用户可以选择开锁或修改密码:

如果选择开锁就按“Open”键,系统提示输入密码,输入用户密码+“#”键后,如果密码正确,就打开锁(绿灯亮),系统等待10秒,然后重新关闭密码锁,若密码错,提示重新输入,连续三次错误,提示警告词同时报警(黄灯闪),锁定键盘5秒,然后重新进入初始状态;

如果选择修改密码就按”Modify Secret”键,系统提示输入旧密码,输入旧密码+“#”键后,如果正确,系统提示输入新密码,输入新密码+“#”后,新密码起效,重新进入初始状态;如果旧密码错,不能修改密码,密码锁直接进入初始状态。

三.实验基本任务

1)具有开锁、修改用户密码等基本的密码锁功能。

2)对于超过3次密码密码错误,锁定键盘5秒,系统报警。5秒后解除锁定。

4)通过LCD字符液晶和LED指示灯(红,绿,黄)实时显示相关信息。

5)用户密码为6位数字,显示采用“*”号表示。

6)码锁键盘设计合理,功能完善,方便用户使用。

本次实验还做了附加的任务

( 1)增加了管理员(Admin)功能,如果用户忘记密码可向管理员求助。管理

员密码为8位数字(系统内预先已设定),管理员按“Admin”键后,系统提示输

入管理员密码,输入管理员密码+“#”键后,如果正确,系统自动恢复用户初始密码为“123456”;如果错误,程序停止运行,系统退出。

2)增加了输入清除功能(*),在输入密码过程中,如果中途按下“*”键,则清

除前面的输入,开始重新输入密码。

四 . 实验设计方案

实验用到8255作为并行接口设备,用以ISA总线与外设的连接,本次用的是8255的A口作为输出口,C口的高4位与B口是输入,C口低4位是输出口,所以控制住设置为ox8a,8253作为时钟器,作为控制提示灯的时间闪烁,8255的A口接键盘的rom,B口接col,地址线都连接在总线下面的芯片上接口,其他的读写控制线都接入ISA总线上。

如下图的接线设置

五.实验器材

8086CPU,可编程并行接口8255,可编程定时器8253,LCD显示屏,LED灯,4x4矩阵键盘。

六.实验原理图

七.程序代码

#include "StdAfx.h"

#include "PCI9052DLL.h"

#include "stdio.h"

#include "math.h"

#include "string.h"

#include "stdlib.h"

#include "iostream.h"

#include "windows.h"

unsigned char value[4][4]={{'1','2','3','M'},{'4','5','6','O'},{'7','8','9',

'A'},{'0','#','*','S'}};//键盘标示

unsigned char little[4][4]={{'a','b','c','\0'},{'d','e','f','\0'},{'g','h','

i','\0'},{'j','\0','\0','S'}};//shift键的字母表示

char Mimachar[6]={'1','2','3','4','5','6'};

char Guanlikey[8]={'1','2','3','4','5','6','7','8'};

int Mimasum=0;

int Guanlisum=0;

char Wodemima[6];

char Guanlichar[8];

bool Modify=false;

bool Newmima=false;

int Errorcount=0;

bool Equal(char a[],char b[])//比较字符串是否相等

{

i nt i;

f or(i=0;i<6;i++)

{

if(Mimachar[i]!=Wodemima[i]) return false;

}

r eturn true;

}

bool isnum(char tmp)//判断是否为数字

{

r eturn tmp<='9'&&tmp>='0';

}

bool isoper(char tmp)//判断是否为操作符

{

r eturn

tmp=='#'||tmp=='*'||tmp=='S'||tmp=='A'||tmp=='O'||tmp=='M' ? true : false;

}

bool ischar(char tmp)//判断是否为小写字母

{

r eturn tmp>='a'&&tmp<='j';

}

void init8255()//初始化8255

{

O penDevice();

O utByte(0xde03, 0x82);

}

void end8255()//结束8255

{

C loseDevice();

}

void InitLCD()//初始化LCD

{

u nsigned char data[4]={0x01,0x06,0x0f,0x38};

u nsigned char ch[6]="Open!";

for (i=0;i<4;i++)

{

OutByte(0xde08, data[i]);//????!!!!

Sleep(100);

}

f or (i=0;i<6;i++)

{

OutByte(0xde09, ch[i]);//在LCD上显示Open!

Sleep(50 );

}

S leep(1000);

}

void init8253()//初始化8253

{

O penDevice();

}

unsigned char kbscan()//键盘扫描

{

i nt row_va[4]={0x0e,0x0d,0x0b,0x07}; //选中每一行时的A口值

u nsigned char data;

u nsigned char data_tmp;

S leep(200); //第一次消除抖动--每次键盘扫描的时间间隔至少为200毫秒

f or(int i=0;i<4;i++,i%=4)

{

int tmp=row_va[i];

OutByte(0xde00, tmp); //循环扫描第一到四行

InByte(0xde01,&data);

if(data==NULL) //扫描不到的情况排除掉

{

}

else if((data&0x0f)!=0x0f) //检测这一行是否有按键被按下

{

Sleep(10);//第二次消除抖动--如果10ms之后还是相同的按键就执行下面的。

InByte(0xde01,&data_tmp);

data_tmp=data_tmp&0x0f;

if(data_tmp!=data) continue; //否则不执行下面的while(data_tmp==data)//第三次消除抖动--判断按键是否弹起。弹起则结束循环

InByte(0xde01,&data);

data=data&0x0f;

Sleep(10);

if(data==0x0f)

{

Sleep(100);

InByte(0xde01,&data);

data=data&0x0f;

}

}

switch(data_tmp)

{

case 0x0e: return value[i][0];

case 0x0d: return value[i][1];

case 0x0b: return value[i][2];

case 0x07: return value[i][3];

}

}

}

r eturn NULL;

}

void Clear()//清空屏幕

{

O utByte(0xde08,0x01);

}

void displayOnLcd()//在LCD上显示*号.

{

u nsigned char stmp[2]="*";

f or (int i=0;i<1;i++) OutByte(0xde09, stmp[i]);

}

int main(int argc, char* argv[]) //主函数

{

init8255(); //初始化8255 i nit8253();

I nitLCD(); //初始化LCD

S leep(100);

u nsigned char temp;

Start_Position://-->-->--> 起始位置----起始条件

O utByte(0xde02,0xFE); //红灯亮

t emp = '\0'; //指令符号

p rintf("please input Open!");

w hile(1)

{ int j=0;

temp = kbscan(); //获取在键盘中得到的数字

printf("the key:%c\n",temp);

if(temp=='O')

{

Mimasum=0;

Clear(); //清空屏幕

while(1)

{

temp = kbscan();

j++;

printf("第%d次键盘扫描:%c\n",j,temp);

if(isnum(temp))

{

if(Mimasum<6)

{

Wodemima[Mimasum]=temp;

Mimasum++;

displayOnLcd(); //上屏幕LCD一个*号

}

}

else if(isoper(temp))

{

if(temp=='#') //密码匹配

{

if(Mimasum==6)

{

if(Newmima==true) //修改密码标志为true且原密码正确--修改密码

{

int i;

for(i=0;i<6;i++)

Mimachar[i]=Wodemima[i];

Newmima=false;

printf("新密码为:");

for(i=0;i<6;i++)

{

printf("%c",Mimachar[i]);

}

printf("\n");

}

else if(Equal(Mimachar,Wodemima))

{

if(Modify==true) //Modify为true--修改密码

{

Newmima=true; //把修改密码标志赋值为true

Modify=false;

Mimasum=0;

Clear(); //清空屏幕

printf("输入新密码:\n"); //提示:输入新密码

}

else

{

printf("密码正确!\n");

OutByte(0xde02,0x7f); //绿灯亮

Sleep(10000); //绿灯亮10S

OutByte(0xde02,0xFE); //红灯亮&&绿灯灭

Mimasum=0;

Errorcount=0;

goto Start_Position; //回到最前面

}

}

else

{

Errorcount++;

printf("密码错误次数%d 次!!\n",Errorcount);

if(Errorcount>=3) //提示重新输入的显示

{

OutByte(0xde02,0xFD); //黄灯亮

Sleep(1000);

OutByte(0xde02,0xFF); //黄灯灭

Sleep(1000);

OutByte(0xde02,0xFD); //黄灯亮

Sleep(1000);

OutByte(0xde02,0xFF); //黄灯灭

Sleep(1000);

OutByte(0xde02,0xFD); //黄灯亮

Sleep(1000);

OutByte(0xde02,0xFE); //红灯亮&&绿灯灭

Mimasum=0; //初始

Errorcount=0;

Clear(); //清空屏幕

goto Start_Position;

}

else

{

printf("请重新输入密码:\n");

}

}

}

}

else if(temp=='*')

{

Mimasum=0; //重新输入密码

Clear(); //清空屏幕

}

else if(temp=='A')

{

Guanlisum=0;

Clear(); //清空屏幕

printf("请输入管理员密码:\n");

while(1) //输入管理员密码

{

temp = kbscan();

printf("one次键盘扫描:%c\n",temp);

if(isnum(temp))

{

if(Guanlisum<8)

{

Guanlichar[Guanlisum]=temp;

Guanlisum++;

displayOnLcd(); //上屏幕LCD*号

}

}

else if(isoper(temp))

{

if(temp=='#'&& Guanlisum==8)

{

int i;

for(i=0;i<8;i++)

{

i f(Guanlikey[i]!=Guanlichar[i]) return 0;

}

Mimachar[0]='1';

Mimachar[1]='2';

Mimachar[2]='3';

Mimachar[3]='4';

Mimachar[4]='5';

Mimachar[5]='6';

printf("密码初始化完成.\n");

Guanlisum=0;

Mimasum=0;

Errorcount=0;

Modify=false;

Newmima=false;

goto Start_Position; //回到开始

}

else if(temp=='*')

{

Guanlisum=0;

Clear(); //清空屏幕

}

}

}

}

else if(temp=='M')

{

Modify=true;

Mimasum=0;

Clear();

printf("请输入原密码:\n");

}

}

}

}

}

c out<

e nd8255();

// CloseDevice();

r eturn 0;

}

八.实验解图

九. 实验心得

通过这次微机课题设计实验,使我学到了不少实用的知识,更重要的是做实验的过程,思考问题的方法,这与其他的实验师通用的,真正使我受益匪浅。

在做实验之前,我没有完全将课本上的理论知识掌握透彻,但在老师的讲解中,以及实践中对这些知识的理解有了很大一步的掌握。对汇编语言的编程和微机系统的芯片有了比较深刻的认识。

实验中遇到的主要问题是我们组以前是在5楼座的实验,5楼的实验板和3楼的不同,刚开始没有理解好地址导致编程出现了问题,后来询问老师得到了解决。

矩阵键盘设计实验报告

南京林业大学 实验报告 基于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、电路图

4X4扫描式矩阵键盘课程设计

4X4扫描式矩阵键盘课程设计 课程设计名称: 4_4扫描式矩阵键盘设计 姓名:DUKE 班级:电子1008班 学号:10086 成绩: 日期:2014年1月6日

摘要 随着21世纪的到来,电子信息行业将是人类社会的高科技行业之一,式设施现代化的基础,也是人类通往科技巅峰的直通路。电子行业的发展从长远来看很重要,但最主要的还是科技问题。 矩阵式键盘提高效率进行按键操作管理有效方法,它可以提高系统准确性,有利于资源的节约,降低对操作者本身素质的要求。是它能准时、实时、高效地显示按键信息,以提高工作效率和资源利用率。 矩阵式键盘乃是当今使用最为广泛的键盘模式,该系统以N个端口连接控制N*N个按键,显示在LED数码管上。单片机控制依据这是键盘显示系统,该系统可以对不同的按键进行实时显示,其核心是单片机和键盘矩阵电路部分,主要对按键与显示电路的关系、矩阵式技术及设备系统的硬件、软件等各个部分进行实现。 4*4矩阵式键盘采用AT89C51单片机为核心,主要由矩阵式键盘电路、译码电路、显示电路等组成,软件选用C语言编程。单片机将检测到的按键信号转换成数字量,显示于LED显示器上。该系统灵活性强,易于操作,可靠性高,将会有更广阔的开发前景。

目录 第一章:系统功能要求-------------------------------------------------------- 1.1 4*4 矩阵式键盘系统概述------------------------------------------------ 1.2 本设计任务和主要内容--------------------------------------------------- 第二章:方案论证--------------------------------------------------------------- 第三章:系统硬件电路的设计------------------------------------------------ 3.1 单片机控制系统原理----------------------------------------------------- 3.2 原理图绘制说明---------------------------------------------------------- 3.3 画出流程图---------------------------------------------------------------- 3.4 原理图绘制--------------------------------------------------------------- 第四章:系统程序的设计------------------------------------------------------ 4.1 程序的编写步骤----------------------------------------------------------- 4.2 编写的源程序-------------------------------------------------------------- 第五章:调试及性能分析------------------------------------------------------ 第六章:心得体会--------------------------------------------------------------- 参考文献----------------------------------------------------------------------------

扫描式矩阵键盘课程设计

扫描式矩阵键盘课程设 计 Company number【1089WT-1898YT-1W8CB-9UUT-92108】

4X4扫描式矩阵键盘课程设计课程设计名称: 4_4扫描式矩阵键盘设计 姓名: DUKE 班级:电子1008班 学号: 10086 成绩: 日期: 2014年1月6日 摘要 随着21世纪的到来,电子信息行业将是人类社会的高科技行业之一,式设施现代化的基础,也是人类通往科技巅峰的直通路。电子行业的发展从长远来看很重要,但最主要的还是科技问题。 矩阵式键盘提高效率进行按键操作管理有效方法,它可以提高系统准确性,有利于资源的节约,降低对操作者本身素质的要求。是它能准时、实时、高效地显示按键信息,以提高工作效率和资源利用率。 矩阵式键盘乃是当今使用最为广泛的键盘模式,该系统以N个端口连接控制N*N个按键,显示在LED数码管上。单片机控制依据这是键盘显示系统,该系统可以对不同的按键进行实时显示,其核心是单片机和键盘矩阵电路部分,主要对按键与显示电路的关系、矩阵式技术及设备系统的硬件、软件等各个部分进行实现。 4*4矩阵式键盘采用AT89C51单片机为核心,主要由矩阵式键盘电路、译码电路、显示电路等组成,软件选用C语言编程。单片机将检测到的按键信号

转换成数字量,显示于LED显示器上。该系统灵活性强,易于操作,可靠性高,将会有更广阔的开发前景。 目录 第一章:系统功能要求-------------------------------------------------------- 1.1 4*4 矩阵式键盘系统概述------------------------------------------------ 1.2 本设计任务和主要内容--------------------------------------------------- 第二章:方案论证--------------------------------------------------------------- 第三章:系统硬件电路的设计------------------------------------------------ 3.1 单片机控制系统原理----------------------------------------------------- 3.2 原理图绘制说明---------------------------------------------------------- 3.3 画出流程图---------------------------------------------------------------- 3.4 原理图绘制---------------------------------------------------------------

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

单片机实验报告 信息处理实验 实验二矩阵键盘 专业:电气工程及其自动化 指导老师:高哲 组员:明洪开张鸿伟张谦赵智奇 学号: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个键的反转码建一个表,通过查表就可知道是哪个键被按下了。

课程设计-制作单片机的4X4矩阵键盘

课程设计-制作单片机的4X4矩阵键盘

目录 摘要.............................................. 错误!未定义书签。第一章硬件部分 (5) 第一节AT89C51 (5) 第二节4*4矩阵式键盘 (8) 第三节LED数码管 (11) 第四节硬件电路连接 (13) 第二章软件部分 (15) 第一节所用软件简介 (15) 第二节程序流程图 (18) 第三节程序 (20) 第三章仿真结果 (23) 心得体会 (26) 参考文献 (27)

第一章硬件部分 第一节AT89C51 AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。引脚如图所示 AT89C5 图1 AT89C51管脚 图 AT89C51其具有以下特性: 与MCS-51 兼容 4K字节可编程FLASH存储器 寿命:1000写/擦循环 数据保留时间:10年

全静态工作:0Hz-24MHz 三级程序存储器锁定 128×8位内部RAM 32可编程I/O线 两个16位定时器/计数器 5个中断源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路 特性概述: AT89C51 提供以下标准功能:4k 字节Flash 闪速存储器,128字节内部RAM,32 个I/O 接口,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。 管脚说明: VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。

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

实验四键盘扫描及显示设计实验报告 一、实验要求 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 叠加定理的验证 1.原理图编辑: 分别调出接地符、电阻R1、R2、R3、R4,直流电压源、直流电流源,电流表电压表(Group:Indicators, Family:VOLTMETER 或AMMETER)注意电流表和电压表的参考方向),并按上图连接; 2. 设置电路参数: 电阻R1=R2=R3=R4=1Ω,直流电压源V1为12V,直流电流源I1为10A。 3.实验步骤: 1)、点击运行按钮记录电压表电流表的值U1和I1; 2)、点击停止按钮记录,将直流电压源的电压值设置为0V,再次点击运行按钮记录电压表电流表的值U2和I2; 3)、点击停止按钮记录,将直流电压源的电压值设置为12V,

将直流电流源的电流值设置为0A,再次点击运行按钮记录电压表电流表的值U3和I3; 4.根据叠加电路分析原理,每一元件的电流或电压可以看成是每一个独立源单独作用于电路时,在该元件上产生的电流或电压的代数和。 所以,正常情况下应有U1=U2+U3,I1=I2+I3; 经实验仿真: 当电压源和电流源共同作用时,U1=-1.6V I1=6.8A. 当电压源短路即设为0V,电流源作用时,U2=-4V I2=2A 当电压源作用,电流源断路即设为0A时,U3=2.4V I3=4.8A

所以有U1=U2+U3=-4+2.4=-1.6V I1=I2+I3=2+4.8=6.8A 验证了原理 实验2 并联谐振电路仿真 2.原理图编辑: 分别调出接地符、电阻R1、R2,电容C1,电感L1,信号源V1,按上图连接并修改按照例如修改电路的网络标号; 3.设置电路参数: 电阻R1=10Ω,电阻R2=2KΩ,电感L1=2.5mH,电容C1=40uF。信号源V1设置为AC=5v,Voff=0,Freqence=500Hz。 4.分析参数设置: AC分析:频率范围1HZ—100MHZ,纵坐标为10倍频程,扫描

微机原理课题设计实验报告材料之矩阵式键盘数字密码锁

微机系统与应用课程设计报告 班级: 学号: 姓名: 实验地点:E楼Ⅱ区311 实验时间:2013.3.4-3.9

矩阵式键盘数字密码锁设计 一 . 实验目的 1.掌握微机系统总线与各芯片管脚连接方法,提高接口扩展硬件电路的连 接能力。 2.初步掌握键盘扫描,密码修改和计时报警程序的编写方法。 3.掌握通过矩阵式键盘扫描实现密码锁功能的设计思路和实现方法。二.实验内容 矩阵式键盘数字密码锁设计,根据设定好的密码,采用4x4矩阵键盘实现密码的输入功能。当密码输入正确之后,锁就打开(绿灯亮),10秒之后,锁自动关闭(红灯亮);如果连续输入三次密码不正确,就锁定按键5秒钟,同时发出报警(黄灯闪),5秒后,解除按键锁定,恢复密码输入。 数字密码锁操作键盘参考上面设定,也可以自行设计键盘。用户初始密码为“123456”,系统加电运行后,密码锁初始状态为常闭(红灯亮),用户可以选择开锁或修改密码: 如果选择开锁就按“Open”键,系统提示输入密码,输入用户密码+“#”键后,如果密码正确,就打开锁(绿灯亮),系统等待10秒,然后重新关闭密码锁,若密码错,提示重新输入,连续三次错误,提示警告词同时报警(黄灯闪),锁定键盘5秒,然后重新进入初始状态; 如果选择修改密码就按”Modify Secret”键,系统提示输入旧密码,输入旧密码+“#”键后,如果正确,系统提示输入新密码,输入新密码+“#”后,新密码起效,重新进入初始状态;如果旧密码错,不能修改密码,密码锁直接进入初始状态。 三.实验基本任务 1)具有开锁、修改用户密码等基本的密码锁功能。 2)对于超过3次密码密码错误,锁定键盘5秒,系统报警。5秒后解除锁定。 4)通过LCD字符液晶和LED指示灯(红,绿,黄)实时显示相关信息。 5)用户密码为6位数字,显示采用“*”号表示。 6)码锁键盘设计合理,功能完善,方便用户使用。 本次实验还做了附加的任务

矩阵键盘简易计算器要点

《微处理器系统与接口技术》课程实践报告 计算器 班级: 学号: 学生姓名: 指导老师: 日期: 2014.7.5 ******电子与信息工程学院

目录 1、设计题目:计算器 (3) 2、设计目的 (3) 3、计算器总体设计框图 (3) 4、计算器详细设计过程 (4) 4.1输入模块 (4) 4.2键盘输入电路 (5) 4.3主程序模块 (6) 5、分析与调试 (6) 7、运行结果 (8) 8、结束语 (8) 8、参考文献 (8) 9、源程序附录 (9) 9.1主程序 (9) 9.2延时函数delay (12) 9.3显示函数display (12) 9.4键盘扫描函数 (14) 9.5预定义函数 (15)

1、设计题目:计算器 2、设计目的 此次课程实践题目是基于单片机简单计数器的设计,本此设计使用的是Intel公司MCS-51系列的8051AH单片机。设计的计算器可以实现2位小数的加、减、乘、除运算以及整数的乘方运算,其中用4*4矩阵键盘来输入待参与运算的数据和运算符;八位数码管动态显示输入待参与运算的数据以及运算后产生的结果,每个硬件模块的调用过程中涉及到了函数入口及出口参数说明,函数调用关系描述等。 3、计算器总体设计框图 计算器以MCS-51系列的8051AH单片机作为整个系统的控制核心,应用其强大的I/O功能和计算速度,构成整个计算器。通过矩阵键盘输入运算数据和符号,送入单片机进行数据处理。经单片机运算后控制LED数码管的输出。整体框图如图1所示: 图3 整体框图 本系统硬件主要由矩阵键盘、独立键盘I/O输入输出、数码管显示等主要部分组成。各模块的主要功能如下: (1)矩阵键盘将十六进制编码的数字送到单片机。 (2) 单片机扫描键盘信号并接收,对输入的键盘信号进行处理 (3) LED以动态扫描的方式移位显示每次输入的数据和最后的运算结果。实践设计的具体流程图如下图2所示:

数字电路实验Multisim仿真

实验一 逻辑门电路 一、与非门逻辑功能的测试 74LS20(双四输入与非门) 仿真结果 二、 或非门逻辑功能的测试 74LS02(四二输入或非门) 仿真结果: 三、与或非门逻辑功能的测试 74LS51(双二、三输入与或非门) 仿真结果: 四、异或门逻辑功能的测试 74LS86(四二输入异或 门)各一片 仿真结果: 二、思考题 1. 用一片74LS00实现Y = A+B 的逻辑功能 ; 2. 用一片74LS86设计 一个四位奇偶校验电路; 实验二 组合逻辑 电路 一、分析半加器的逻辑功能 二. 验证

的逻辑功能 4.思考题 (1)用两片74LS138 接成四线-十六线译码器 0000 0001 0111 1000 1111 (2)用一片74LS153接成两位四选一数据选择器; (3)用一片74LS153一片74LS00和接成一位全加器 (1)设计一个有A、B、C三位代码输入的密码锁(假设密码是011),当输入密码正确时,锁被打开(Y1=1),如果密码不符,电路发出报警信号(Y2=1)。 以上四个小设计任做一个,多做不限。 还可以用门电路搭建 实验三触发器及触发器之间的转换 1.D触发器逻辑功能的测试(上升沿) 仿真结果; 2.JK触发器功能测试(下降沿) Q=0 Q=0略

3.思考题: (1) (2) (3)略 实验四寄存器与计数器 1.右移寄存器(74ls74 为上升沿有效) 2.3位异步二进制加法,减法计数器(74LS112 下降沿有效) 也可以不加数码显示管 3.设计性试验 (1)74LS160设计7进制计数器(74LS160 是上升沿有效,且异步清零,同步置数)若采用异步清零: 若采用同步置数: (2)74LS160设计7进制计数器 略 (3)24进制 83进制 注意:用74LS160与74LS197、74LS191是完全不一样的 实验五555定时器及其应用 1.施密特触发器

verilog hdl 矩阵键盘实验报告要点

EDA实验报告 学院:物信学院 专业:电信一班 小组成员:杨义,王祺,陈鹏,秦成晖

指导老师:漆为民 目录 实验题目 (3) 实验目的 (3) 实验原理 (3) 实验内容 (5) 实验程序 (5) 实验步骤 (10) 实验结果 (10) 实验体会 (10)

附录 (11) 一.实验题目: 矩阵键盘显示电路设计 二.实验目的: 1.了解普通4×4键盘扫描的原理。 2.进一步加深七段码管显示过程的理解。 3.了解对输入/输出端口的定义方法。 三.实验原理: 软键盘的工作方式: 通常在一个键盘中使用了一个瞬时接触开关,并且用如图所示的简单电路,微处理器可以容易地检测到闭合。当开关打开时,通过处理器的I/O 口的一个上拉电阻提供逻辑1;当开关闭合时,处理器的/IO 口的输入将被拉低得到逻辑0。可遗憾的是,开关并不完善,因为当它们被按下或者被释放时,并不能够产生一个明确的1 或者0。尽管触点可能看起

来稳定而且很快地闭合,但与微处理器快速的运行速度相比,这种动作是比较慢的。当触点闭合时,其弹起就像一个球。弹起效果将产生如图10-2 所示的好几个脉冲。弹起的持续 时间通常将维持在5ms~30ms 之间。如果需要多个键,则可以将每个开关连接到微处理器上它自己的输入端口。然而,当开关的数目增加时,这种方法将很快使用完所有的输入端口。 键盘上阵列这些开关最有效的方法(当需要5 个以上的键时)就形成了一个如图10-3 所示的二维矩阵。当行和列的数目 一样多时,也就是方型的矩阵,将产生一个最优化的布列方式(I/O 端被连接的时候)。一个瞬时接触开关(按钮)放 置在每一行与线一列的交叉点。矩阵所需的键的数目显然根据应用程序而不同。每一行由一个输出端口的一位驱动,而每一列由一个电阻器上拉且供给输入端口一位。

单片机课程设计4X4矩阵键盘显示要点

长沙学院 《单片机原理及应用》 课程设计说明书 题目液晶显示4*4矩阵键盘按键号 程序设计 系(部) 电子与通信工程系 专业(班级) 电气1班 姓名龙程 学号2011024109 指导教师刘辉、谢明华、王新辉、马凌 云 起止日期2014.5.19—2014.5.30

长沙学院课程设计鉴定表

《单片机技术及应用》课程设计任务书系(部):电子与电气工程系专业:11级电子一班指导教师:谢明华、刘辉

目录 前言 (5) 一、课程设计目的 (6) 二、设计内容及原理 (6) 2.1 单片机控制系统原理 (6) 2.2阵键盘识别显示系统概述 (6) 2.3键盘电路 (7) 2.4 12864显示器 (8) 2.5整体电路图 (9) 2.6仿真结果 (9) 三、实验心得与体会 (10) 四、实验程序 (10) 参考文献 (18)

前言 单片机,全称单片微型计算机(英语:Single-Chip Microcomputer),又称微控制器 应(不用外接硬件)和节约成本。它的最大优点是体积小,可放在仪表内部,但存储量小,输入输出接口简单,功能较低。由于其发展非常迅速,旧的单片机的定义已不能满足,所以在很多应用场合被称为范围更广的微控制器;从上世纪80年代,由当时的4位、8位单片机,发展到现在的32位300M的高速单片机。现代人类生活中所用的几乎每件有电子器件的产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电子产品中都含有单片机。汽车上一般配备40多片单片机,复杂的工业控制系统上甚至可能有数百片单片机在同时工作!单片机的数量不仅远超过PC机和其他计算机的总和,甚至比人类的数量还要多。 是以电流刺激液晶分子产生点、线、面配合背部灯管构成画面。由一定数量的彩色或黑白像素组成,放置于光源或者反射面前方。液晶显示器功耗低,因此倍受工程师青睐,适用于使用电池的电子设备。英国科学家在上世纪制造了第一块液晶显示器即LCD。而第一台可操作的LCD基于动态散射模式(Dynamic Scattering Mode,DSM),是RCA公司乔治·海尔曼带领的小组开发的。 LED点阵屏通过LED(发光二极管)组成,以灯珠亮灭来显示文字、图片、动画、视频等,是各部分组件都模块化的显示器件,通常由显示模块、控制系统及电源系统组成。LED点阵显示屏制作简单,安装方便,被广泛应用于各种公共场合,如汽车报站器、广告屏以及公告牌等。 交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键, 键盘是合理的。

单片机 矩阵键盘实验 实验报告

实验五矩阵键盘实验 一、实验内容 1、编写程序,做到在键盘上每按一个数字键(0-F)用发光二极管将该代码显示出来。按其它键退出。 2、加法设计计算器,实验板上有12个按键,编写程序,实现一位整数加法运算功能。可定义“A”键为“+”键,“B”键为“=”键。 二、实验目的 1、学习独立式按键的查询识别方法。 2、非编码矩阵键盘的行反转法识别方法。 三、实验说明 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个键的反转码建一个表,通过查表就可知道是哪个键被按下了。 四、接线方法 键盘连接成4×4的矩阵形式,占用单片机P1口的8根线,行信号是P1.0-1.3,列信号是P1.4-1.7。

实验三 Matlab的数字调制系统仿真实验(参考)

成都理工大学实验报告 课程名称:数字通信原理 姓名:__________________学号:______________ 成绩:____ ___ 实验三Matlab的数字调制系统仿真实验(参考) 1 数字调制系统的相关原理 数字调制可以分为二进制调制和多进制调制,多进制调制是二进制调制的推广,主要讨论二进制的调制与解调,简单讨论一下多进制调制中的差分相位键控调制(M-DPSK)。 最常见的二进制数字调制方式有二进制振幅键控(2-ASK)、移频键控(2-FSK)和移相键控(2-PSK 和2-DPSK)。下面是这几种调制方式的相关原理。 1.1 二进制幅度键控(2-ASK) 幅度键控可以通过乘法器和开关电路来实现。载波在数字信号1 或0 的控制下通或断,在信号为1 的状态载波接通,此时传输信道上有载波出现;在信号为0 的状态下,载波被关断,此时传输信道上无载波传送。那么在接收端我们就可以根据载波的有无还原出数字信号的1 和0。 幅移键控法(ASK)的载波幅度是随着调制信号而变化的,其最简单的形式是,载波在二进制调制信号控制下通断,此时又可称作开关键控法(OOK)。多电平MASK调制方式是一种比较高效的传输方式,但由于它的抗噪声能力较差,尤其是抗衰落的能力不强,因而一般只适宜在恒参信道下采用。 2-ASK 信号功率谱密度的特点如下: (1)由连续谱和离散谱两部分构成;连续谱由传号的波形g(t)经线性调制后决定,离散谱由载波分量决定; (2)已调信号的带宽是基带脉冲波形带宽的二倍。 1.2 二进制频移键控(2-FSK) 数字频率调制又称频移键控(FSK),二进制频移键控记作2FSK。数字频移键控是用载波的频率来传送数字消息,即用所传送的数字消息控制载波的频率。2FSK

FPGA矩阵键盘课程设计

FPGA课程设计报告 项目名称基于FPGA的4*4矩阵键盘的设计 专业班级通信1 学生姓名张 指导教师 2016年7 月10 日

摘要 本课程设计提出了基于FPGA的4*4矩阵键盘的设计,主要是在软件Quartus II 9.0这个环境中,以硬件描述语言Verilog进行编写程序,从而完成矩阵键盘的相关设计。主要由矩阵式键盘电路、显示电路等组成,实现过程是通过行扫描输入随机信号,列扫描判断哪一个键被按下,并最后由数码管显示该按键。此次课程设计完成了4*4矩阵键盘控制LED数码管显示系统的设计,该设计具有灵活性强,易于操作,可靠性高,广泛应用于各种场合的特点,是进行按键操作管理的有效方法,它可以提高系统准确性,有利于资源的节约,降低对操作者本身的要求,并能正确、实时、高效地显示按键信息,以提高工作效率和资源换利用率的意义。 关键词:数码管;矩阵键盘;按键;显示电路

Abstract This course is designed based on FPGA is proposed 4 * 4 matrix keyboard design, mainly in the Quartus II software 9.0 this environment, with the Verilog hardware description language program, so as to complete the related design of matrix keyboard. Main matrix keyboard circuit, display circuit and so on, complete the 4 * 4 matrix keyboard control LED digital tube display system design, the design has strong flexibility, easy operation, high reliability, widely used in various occasions. Into 4 * 4 matrix keyboard control LED digital tube display system design, design flexibility is strong, easy to operate, high reliability, widely used in various occasions. Matrix keyboard control system, can improve efficiency, and is an effective method to manage the keystrokes, it can improve the system accuracy, and is conducive to resource saving and reduce the requirement of the operator itself, and correctly, real-time and efficient to show the key information, in order to improve the work efficiency and the utilization ratio of resources in meaning. Keywords: Digital tube; Matrix keyboard; The key; Disply circuit

数字电路仿真实验报告

数字逻辑与CPU 仿真实验报告 姓名: 班级: 学号:

仿真实验 摘要:Multisim是Interactive Image Technologies公司推出的以Windows为基础的仿真工具,具有丰富的仿真分析能力。本次仿真实验便是基于Multisim软件平台对数字逻辑电路的深入研究,包括了对组合逻辑电路、时序逻辑电路中各集成元件的功能仿真与验证、对各电路的功能分析以及自行设计等等。 一、组合逻辑电路的分析与设计 1、实验目的 (1)掌握用逻辑转换器进行逻辑电路分析与设计的方法。 (2)熟悉数字逻辑功能的显示方法以及单刀双掷开关的应用。 (3)熟悉字信号发生器、逻辑分析仪的使用方法。 2、实验内容和步骤 (1)采用逻辑分析仪进行四舍五入电路的设计 ①运行Multisim,新建一个电路文件,保存为四舍五入电路设计。 ②在仪表工具栏中跳出逻辑变换器XLC1。 图1-1 逻辑变换器以及其面板 ③双击图标XLC1,其出现面板如图1-1所示 ④依次点击输入变量,并分别列出实现四舍五入功能所对应的输出状态(点击输出依 次得到0、1、x状态)。 ⑤点击右侧不同的按钮,得到输出变量与输入变量之间的函数关系式、简化的表达式、 电路图及非门实现的逻辑电路。 ⑥记录不同的转换结果。

(2)分析图1-2所示代码转换电路的逻辑功能 ①运行Multisim,新建一个电路文件,保存为代码转换电路。 ②从元器件库中选取所需元器件,放置在电路工作区。 ?从TTL工具栏选取74LS83D放置在电路图编辑窗口中。 ?从Source库取电源Vcc和数字地。 ?从Indictors库选取字符显示器。 ?从Basic库Switch按钮选取单刀双掷开关SPD1,双击开关,开关的键盘控制设 置改为A。后面同理,分别改为B、C、D。 图1-2 代码转换电路 ③将元件连接成图1-2所示的电路。 ④闭合仿真开关,分别按键盘A、B、C、D改变输入变量状态,将显示器件的结果填 入表1-1中。 ⑤说明该电路的逻辑功能。 表1-1 代码转换电路输入输出对应表

课程设计报告矩阵键盘控制

北华航天工业学院 《EDA技术综合设计》 课程设计报告 报告题目:矩阵键盘控制接口设计作者所在系部:电子工程系 作者所在专业:电子信息工程 作者所在班级: 作者姓名: 作者学号:0 指导教师姓名: 完成时间:2009-12-18

内容摘要 本课程设计所用实验器材主要有计算机和北京精仪达盛科技有限公司的EL教学实验箱。经编译、仿真,检查无误并且符合设计要求后,正确的将脉冲源、FLEX10K \ EPF10K10LC84-3芯片、5行×6列薄膜轻触按键键盘、数码管按设计要求连接好。将程序下载到实验箱的FLEX10K \ EPF10K10LC84-3芯片中,则可观察到预期的实验效果,即当按下某一键时,在数码管上显示该键对应的键值。 本课程设计需设计键盘接口消抖动元件(底层文本)和矩阵键盘接口电路(顶层文本)。在顶层文本中包含扫描信号发生模块、按键消抖动模块、按键译码模块、寄存器-选择器模块和数码管的译码模块。 关键词:VHDL语言 EDA技术按键消抖动电路键盘扫描电路键值译码电路按键码存储电路显示键值电路

目录 一概述 (5) 二方案设计与论证 (5) 三单元电路设计 (6) 1.键盘接口消抖动元件 (6) 2.时钟产生电路 (6) 3.键盘扫描电路 (7) 4.键盘译码电路 (7) 5.寄存器_选择器模块电路 (7) 6.译码模块电路 (7) 四器件编程与下载 (8) 五性能测试与分析 (16) 六实验设备 (16) 七心得体会 (16) 八参考文献 (17)

课程设计任务书

一、概述 本课程设计的基本原理是在时钟信号的控制下,使数码管上显示所按下的键值,并 且能够保持直到下一个按键被按下。首先,构思一个8×4的矩阵键盘控制顶层电路的 模块划分图兼端口及内部信号定义图,再用VHDL语言编辑文本程序,需先录入底层文 件(键盘接口消抖动元件DEBOUNCING的描述)再录入键盘接口电路主程序,保存编译 并检查程序是否有语法错误,再仿真观察波形是否符合所预期的设计要求,当一切都满 足要求后,即可将程序下载到实验箱的FLEX10K \ EPF10K10LC84-3芯片中。正确的将 脉冲源、FLEX10K \ EPF10K10LC84-3芯片、5行×6列薄膜轻触按键键盘、数码管按设 计要求连接好。再将程序下载到实验箱的FLEX10K \ EPF10K10LC84-3芯片中,则可观 察到预期的实验效果,即当按下某一键时,在数码管上显示该键对应的键值。如:当按 下5时,数码管显示05。 二、方案设计与论证 把该矩阵键盘控制器分为两部分进行设计,先设计键盘接口消抖动电路,再设计键盘接口电路的主程序。 在主程序中包含时序产生电路、键盘扫描电路、弹跳消除电路、键盘译码电路、按键码存储电路、显示电路模块并且分别进行分析来实现所需的功能。 实验仪器中4×8矩阵键盘的电路原理图如图所示 图1. 4×8矩阵键盘的电路原理图

键盘实验报告

嵌入式实验报告 键盘实验报告 指导教师:高金山 实验者:13410801 房皓13410802 张耀荣 一、实验目的: 1.了解直接输入键盘与矩阵键盘的原理 2.了解键盘寄存器的功能 3.掌握键盘输入的编程方法 二、实验要求: 1.对所有16个按键进行编码,当按键后,在七段数码管上显示对应的键盘编码。(可 以使用一个或两个七段数码管) 2.对所有16个按键进行编码,当按键后,在八个LED上显示对应的键盘编码。 三、实验内容: 1.在键盘寄存器KPC中,使能矩阵键盘, 2.必须在使用前添加下面语句: #define KAPS_VALUE (*((volatile unsigned char *)(0x41500020))) 3.接下来在button_statusFetch函数中定义变量,其中j用来获取矩阵键盘的键值, 具体如下: char j = 0; j = KAPS_VALUE ; 4.最后,在直入键盘的分支语句后添加矩阵键盘的分支代码段,即switch(j){}代码 段: switch (j) { case 0x00: //key-press 5 kbd_buff=0x8F12; LED_CS2 = kbd_buff; Delay(400); break; …… 四、程序编辑: ;post_initGpio.s

EXPORT post_initGpio AREA post_initGpio ,CODE ,READONLY ldr r1,=0x40e00000 ;GPSR0 MOV R0,#0x3000 ;GPIO<13:12> STR R0,[R1,#0x18] ;GPCR0 MOV R0,#0x800 ;GPIO<11> STR R0,[R1,#0x24] ;GAFR0_L////////////////////////////////////////////////// MOV R0,#0x80000000 ;GPIO<15>:F2:nCS1 STR R0,[R1,#0x54] ;GAFR0_U ldr R0,=0x10 ;0xa5000010 STR R0,[R1,#0x58] ;GPDR0///////////////////////////////////////////////// ldr R0,=0xc1a08000 ;GPIO<15>:nCS1 STR R0,[R1,#0xc] ;GPSR1 MOV R0,#0 STR R0,[R1,#0x1c] ;GPCR1 MOV R0,#0 STR R0,[R1,#0x28] ;GAFR1_L LDR R0,=0xc9c ;0xa9558 STR R0,[R1,#0x5c] ;GAFR1_U LDR R0,=0xca0 ;0xaaa590aa STR R0,[R1,#0x60] ;GPDR1 LDR R0,=0xca4 ;0xfccf0382 STR R0,[R1,#0x10]

相关文档
相关文档 最新文档