矩阵键盘驱动、看门狗实验报告

时间:2024.4.21

杭州电子科技大学

实验报告

课程名称:嵌入式系统原理课程设计        姓名:    应海东                    

实验项目: 矩阵键盘驱动、看门狗实验      班级:    10052313                           

指导教师:任彧                          学号:    10051329                        

日期:     2012.11.27               


第二篇:矩阵键盘驱动


/********************************************************************************************* 文 件 名:test024.c* 功 能:4*4行列式键盘驱动。* 硬件条件:1.CPU型号:AT89S52* 2.晶振:12.000MHz* 3.用跳线帽短接BEEP_P1.3* 4.用杜绑线将4*4行列式键盘模块与开发板的P2口相连,连接关系如下:* ==============================================================* ARMSKY-51Easy教学实验开发板 4*4行列式键盘模块* * P2.7 row1* P2.6 row2* P2.5 row3* P2.4 row4* P2.3 col1* P2.2 col2* P2.1 col3* P2.0 col4* +5V VCC* GND GND* ==============================================================* 注意:用户可根据自己的情况,选择ARMSKY-51Easy教学实验开发板上* 的其他引脚与4*4行列式键盘模块相连。* * 作 者:POWER* 日 期:20xx年12月12号* 斯凯科技主页:* 斯凯科技论坛:/bbs*********************************************************************************************//********************************************************************************************/typedef unsigned char uint8; // 无符号8位整型变量typedef signed char int8; // 有符号8位整型变量typedef unsigned short uint16; // 无符号16位整型变量typedef signed short int16; // 有符号16位整型变量typedef unsigned int uint32; // 无符号32位整型变量typedef signed int int32; // 有符号32位整型变量typedef float fp32; // 单精度浮点数(32位长度)typedef double fp64; // 双精度浮点数(64位长度)/********************************************************************************************//* 定义位变量 */ sbit row1 = P2 ^ 7;sbit row2 = P2 ^ 6;sbit row3 = P2 ^ 5;sbit row4 = P2 ^ 4;sbit col1 = P2 ^ 3;sbit col2 = P2 ^ 2;sbit col3 = P2 ^ 1;sbit col4 = P2 ^ 0;#define BEEP_ON() (P1_3=0) // 定义"BEEP_ON()"为P1.3输出低电平,控制蜂鸣器蜂鸣#define BEEP_OFF() (P1_3

=1) // 定义"BEEP_OFF()"为P1.3输出高电平,控制蜂鸣器不蜂鸣/********************************************************************************************* 函数名称:Delay()* 功 能:软件延时* 入口参数:count 延时参数,值越大,延时越长* 出口参数:无*********************************************************************************************/void Delay(uint16 count){uint8 i; while(--count != 0) {for(i = 0; i < 125; i++); // ";" 表示空语句,CPU空转。} // i 从0加到125,在12M晶体下CPU大概耗时1毫秒}/********************************************************************************************* 函数名称:BeepCount()* 功 能:蜂鸣器按指定次数缝鸣* 入口参数:count* 出口参数:无*********************************************************************************************/void BeepCount(uint8 count){for(;count>0;count--){BEEP_ON(); Delay(120);BEEP_OFF();Delay(120);}}/********************************************************************************************* 函数名称:KeyDown()* 功 能:检测键盘是否按下* 入口参数:无* 出口参数:返回1表示键盘按下,返回0表示键盘未按下* 注 意:该函数有消抖功能*********************************************************************************************/uint8 KeyDown(void){col1=0; col2=0; col3=0; col4=0; // 列线全部置低if((row1==0) || (row2==0) || (row3==0) || (row4==0)) // 若有任一行线读回状态为低{Delay(80); // 延时消抖if((row1==0) || (row2==0) || (row3==0) || (row4==0)) // 再次读行线状态,若有任一行线读回状态为低return 1; // 返回1,表明有键盘按下elsereturn 0; // 返回0,表明无键盘按下} else return 0; }/********************************************************************************************* 函数名称:KeyUp()* 功 能:检测键盘是否弹起* 入口参数:无* 出口参数:返回1表示键盘弹起,返回0表示键盘未弹起* 注 意:该函数有消抖功能*********************************************************************************************/uint8 KeyUp(void){col1=0; col2=0; col3=0; col4=0; // 列线全部置低if((row1==1) && (row2==1) && (row3==1) && (row4==1)) // 若全部行线读回状态都为高 {Delay(80); // 延时消抖if((row1==1) && (row2==1) && (row3==1) && (row4==1)) // 再次读行线状态,若全部行线读回状态都为高return 1; // 返回1,表明所有键盘

都处于弹起状态elsereturn 0; // 返回0,表明有键盘处于按下状态}else return 0;}/********************************************************************************************* 函数名称:KeyNum()* 功 能:检测用户按下的键盘所对应的键盘号* 入口参数:无* 出口参数:返回0表示没有键盘被按动,返回1~16对应被按动的键盘* 说 明:用户可根据自己的键盘编号修改该函数。*********************************************************************************************/uint8 KeyNum(void){uint8 KeyTemp;KeyTemp=0;if(KeyDown()==1) // 若键盘被按下{col1=0; col2=1; col3=1; col4=1; // 将列线1置低,其他列线置高if (row1==0) KeyTemp=1; // 若行线1读回状态为低,则表明按键1被按下if (row2==0) KeyTemp=5; // 若行线2读回状态为低,则表明按键5被按下if (row3==0) KeyTemp=9; // 若行线3读回状态为低,则表明按键9被按下if (row4==0) KeyTemp=13; // 若行线4读回状态为低,则表明按键13被按下col1=1; col2=0; col3=1; col4=1; // 将列线2置低,其他列线置高if (row1==0) KeyTemp=2; // 若行线1读回状态为低,则表明按键2被按下if (row2==0) KeyTemp=6; // 若行线2读回状态为低,则表明按键6被按下if (row3==0) KeyTemp=10; // 若行线3读回状态为低,则表明按键10被按下if (row4==0) KeyTemp=14; // 若行线4读回状态为低,则表明按键14被按下col1=1; col2=1; col3=0; col4=1;if (row1==0) KeyTemp=3; if (row2==0) KeyTemp=7; if (row3==0) KeyTemp=11; if (row4==0) KeyTemp=15; col1=1; col2=1; col3=1; col4=0;if (row1==0) KeyTemp=4; if (row2==0) KeyTemp=8; if (row3==0) KeyTemp=12; if (row4==0) KeyTemp=16;while ( KeyUp()!=1); // 等待按下的键盘被释放return KeyTemp; // 返回被按下并被释放的键盘的编号 }elsereturn 0;}

更多相关推荐:
嵌入式ARM看门狗实验报告

实验一看门狗实验1实验目的1了解WATCHDOG的作用2掌握WATCHDOG定时器的使用方法2实验设备1S3C2410嵌入式开发板JTAG仿真器2软件PC机操作系统Win98Win20xx或WindowsXPA...

嵌入式实验5 看门狗实验

广州大学学生实验报告开课学院及实验室机电学院电子楼61820xx年5月16日

看门狗实验

看门狗实验一实验目的1掌握看门狗MAX813L复位控制的硬件接口技术2掌握看门狗MAX813L复位控制驱动程序的设计方法二实验说明为了控制系统不受外界干扰而出现死机现象可采用MAX813L复位监控芯片该芯片具备...

实验八 看门狗实验

实验八看门狗实验一实验目的1了解看门狗的作用2掌握看门狗的使用方法二实验内容1编程实现看门狗功能观察看门狗作用2编程实现看门狗喂狗三实验设备1硬件JX44B0实验板PC机JTAG仿真器2软件PC机操作系统WIN...

实验7:CC2530 看门狗实验

计算机科学与技术学院实验报告课程名称无线传感器网络原理与应用实验七CC2530看门狗实验一实验目的有些稳定性要求高的应用中需要使用看门狗Watchdog机制来重启系统本实验主要介绍看门狗看门狗模式的使用方法及作...

Arm实验看门狗

ARM实验姓名唐珊珊学号20xx412614实验目的掌握独立看门狗的工作原理和使用方法实验原理调用固件库设置和初始化独立看门狗通过Led4的状态指示系统运行同时按下按键SW1不断重置看门狗寄存器俗称喂狗当停止按...

关于单片机看门狗技术的研究报告

1看门狗技术的的简介摘要在实验中开发出来的各种控制小系统经常会出现运行不稳定死机或停不了机即程序跑飞等现象这是由于恶劣的工业现场环境如大功率感性负载的干扰所至基于单片机的看门狗技术能解决这个问题B本文分别介绍用...

AVR学习笔记十二、AVR内部的看门狗操作实验

AVR学习笔记十二AVR内部的看门狗操作实验基于LTMiniM16121基于ATmega16内部看门狗操作实验1211实例功能AVR单片机的多数型号都有芯片内置的看门狗watchdog电路看门狗电路实际上是一个...

单片机报告_按键看门狗

黑龙江东方学院单片机原理及应用结课设计报告按键看门狗学部计算机科学与电气工程专业计算机科学与技术姓名年级09级学号任课教师设计周期3周1黑龙江东方学院单片机原理及应用结课设计任书单片机原理及应用结课设计报告目录...

实验报告(电路分析)

实验报告课程名称电路分析

实验一 门电路逻辑功能及测试 预习报告

预习报告实验一门电路逻辑功能及测试一、根据数字IC的工作原理指出工作电源电压以及输入、输出1和0的逻辑电平值。二、查找所用IC数据手册,列出实际的工作电源电压、以及输入、输出1和0的逻辑电平值。三、Multis…

硬器件实验报告3——集成门电路功能测试

23集成门电路的功能测试231基本知识点1逻辑值与电压值的关系2常用逻辑门电路的逻辑功能测试及测试方法3硬件基础电路试验箱的结构基本功能及使用方法232实验仪器与元器件1自制硬件基础电路试验箱双踪示波器基本功能...

看门狗实验报告(10篇)