(实验四)单片机矩阵键盘检测和液晶仿真实验

合集下载

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

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

单片机矩阵键盘实验实验报告一、实验目的本次实验的目的是掌握原理和方法,利用单片机识别矩阵键盘并编程实现键码转换功能,控制LED点亮显示。

二、实验原理矩阵键盘是一种由多路单向控制器输入行选择信号与列选择信号连接而形成的一一对应矩阵排列结构。

它广泛应用于电子游戏机、办公自动化设备、医疗仪器、家电控制及书籍检索机器等方面。

本次实验采用的矩阵键盘是一个4 x 4矩阵,用4段数码管显示按键编码,每个按键都可以输入一个代码,矩阵键盘连接单片机,实现一个软件算法来识别键码转化。

从而将键盘中的按键的按下信号转换成程序能够识别的代码,置于相应的输出结果中,控制LED点亮,从而可以实现矩阵键盘按键的转换功能。

三、实验方法1.硬件搭建:矩阵键盘(4行4列)与单片机(Atmel AT89C51)相连,选择引脚连接,并将数码管和LED与单片机相连以实现显示和点亮的功能。

2.程序设计:先建立控制体系,利用中断服务子程序识别和码值转换,利用中断服务子程序实现从按键的按下信号转换为程序能够识别的代码,然后将该代码段编写到单片机程序中,每次按下矩阵键盘按键后单片机给出相应的按键编码输出,用数码管显示,控制LED点亮。

四、实验结果经过实验,成功实现了矩阵键盘与单片机之间的连接,编写了中断服务子程序,完成了按键编码输出与LED点亮的功能。

实验完成后,数码管显示各种按键的编码,同时LED会点亮。

本次实验介绍了矩阵键盘的原理,论述了键码转换的程序设计步骤,并实验完成矩阵键盘与单片机的连接,实现用LED点亮以及数码管显示按键的编码。

通过本次实验,受益匪浅,使我对使用单片机编写算法与程序有了更深入的认识,同时丰富了课堂学习的内容,也使我更加热爱自己所学的专业。

基于C51单片机的键盘及LCD显示

基于C51单片机的键盘及LCD显示
}
}
}
}
1.实验报告格式:
一.实验名称
二.实验目的
三.实验内容
四.设计思想
五.硬件设计
六.程序代码
七.参考文献
2.硬件电路原理图用PROTEL等软件画出。
附录:程序源代码:
附录1
#include "reg51.h"
#include "intrins.h"
#define THCO 0xee
#define TLCO 0x0
i_data&=0xf0;
for(i=0;i<8;i++)
{
SID=(bit)(i_data&0x80);
SCLK=0;
SCLK=1;
i_data=i_data<<1;
}
CS=0;
}
void InitLCD() //液晶初始化
{
send_command(0x30); //功能设置:一次送8位数据,基本指令集
2)ST7920控制器系列中文图形液晶模块资料手册
三、设计指标
利用实验板上提供的键盘电路,LCD显示电路,设计一人机界面,能实现以下功能:
1.LCD上显示“重庆科技学院”
2.按键至少包括0-9的数字键
3.LCD显示按键值
4.电子钟显示:时,分,秒(选作)
四、实验要求
1.以单片机为核心,设计4*4非编码键盘及LCD的硬件电路,画出电路原理图。
{
unsigned char hi=0;//汉字显示
if(x==0) send_command(0x80+y);//
else if(x==1) send_command(0x90+y);

单片机c语言程序设计---矩阵式键盘实验报告

单片机c语言程序设计---矩阵式键盘实验报告

单片机c语言程序设计---矩阵式键盘实验报告课程名称:单片机c语言设计实验类型:设计型实验实验项目名称:矩阵式键盘实验一、实验目的和要求1.掌握矩阵式键盘结构2.掌握矩阵式键盘工作原理3.掌握矩阵式键盘的两种常用编程方法,即扫描法和反转法二、实验内容和原理实验1.矩阵式键盘实验功能:用数码管显示4*4矩阵式键盘的按键值,当K1按下后,数码管显示数字0,当K2按下后,显示为1,以此类推,当按下K16,显示F。

(1)硬件设计电路原理图如下仿真所需元器件(2)proteus仿真通过Keil编译后,利用protues软件进行仿真。

在protues ISIS 编译环境中绘制仿真电路图,将编译好的“xxx.hex”文件加入AT89C51。

启动仿真,观察仿真结果。

操作方完成矩阵式键盘实验。

具体包括绘制仿真电路图、编写c源程序(反转法和扫描法)、进行仿真并观察仿真结果,需要保存原理图截图,保存c源程序,总结观察的仿真结果。

完成思考题。

三、实验方法与实验步骤1.按照硬件设计在protues上按照所给硬件设计绘制电路图。

2.在keil上进行编译后生成“xxx.hex”文件。

3.编译好的“xxx.hex”文件加入AT89C51。

启动仿真,观察仿真结果。

四、实验结果与分析void Scan_line()//扫描行{Delay(10);//消抖switch ( P1 ){case 0x0e: i=1;break;case 0x0d: i=2;break;case 0x0b: i=3;break;case 0x07: i=4;break;default: i=0;//未按下break;}}void Scan_list()//扫描列{Delay(10);//消抖switch ( P1 ){case 0x70: j=1;break;case 0xb0: j=2;break;case 0xd0: j=3;break;case 0xe0: j=4;break;default: j=0;//未按下break;}}void Show_Key(){if( i != 0 && j != 0 ) P0=table[ ( i - 1 ) * 4 + j - 1 ];else P0=0xff;}五、讨论和心得。

单片机课程设计——利用矩阵键盘来控制1602液晶显示器的显示设计

单片机课程设计——利用矩阵键盘来控制1602液晶显示器的显示设计

《单片机原理及应用课程设计》报告——利用矩阵键盘来控制1602液晶显示器的显示设计2011年12 月7 日目录1.课程设计的目的12.课程设计的要求3.硬件设计3.1设计思想3.2主要元器件介绍3.3.功能电路介绍3.31 1602液晶显示器3.32 3*4矩阵键盘(1)矩阵式键盘的结构与工作原理(2)矩阵式键盘的按键识别方法4.软件设计4.1设计思想4.2软件流程图4.3源程序:5.调试运行6.设计心得体会:1.课程设计目的1.1巩固和加深对单片机原理和接口技术知识的理解;1.2培养根据课题需要选学参考书籍、查阅手册和文献资料的能力;1.3学会方案论证的比较方法,拓宽知识,初步掌握工程设计的基本方法;1.4掌握常用仪器、仪表的正确使用方法,学会软、硬件的设计和调试方法;1.5能按课程设计的要求编写课程设计报告,能正确反映设计和实验成果,能用计算机绘制电路图和流程图。

2.课程设计要求2.1在3*4矩阵键盘上输入信息2.2在1602芯片上显示时间信息。

2.3显示数据的设计与变换3.硬件设计3.1设计思想在3*4矩阵键盘上输入信息,通过中央处理器处理信息,再通过1602液晶显示器显示信息。

3.2主要元器件介绍(1)电源电路(2)STC89C82RC单片机一块。

(3)1602液晶显示器一块(4)杜邦线若干。

(5)3*4矩阵键盘3.3.功能电路介绍3.31 1602液晶显示器液晶显示模块具有体积小、功耗低、显示内容丰富等特点,现在字符型液晶显示模块已经是单片机应用设计中最常用的信息显示器件了。

1602可以显示2行16个字符,有8位数据总线D0-D7,和RS、R/W、EN三个控制端口,工作电压为5V,并且带有字符对比度调节和背光。

1602外观如下图所示1602引脚说明注意事项:从该模块的正面看,引脚排列从右向左为:15脚、16脚,然后才是1-14脚(线路板上已经标明)。

VDD:电源正极,4.5-5.5V,通常使用5V电压;VL:LCD对比度调节端,电压调节范围为0-5V。

实验四行列式键盘实验

实验四行列式键盘实验

2. 程序设计按照实验要求,实验参考程序如下:#include <reg51.h>#include <stdio.h>#define OSC 11059200#define BAUDRATE 9600sbit BUZ_CON= P3^7; // 定义蜂鸣器控制位void Delay1ms(int ms){ int i;while(ms--)for(i=0;i<100;i++); // 可根据晶振频率调整循环次数,使延时约1ms } main(void){ unsigned char Mask,ScanCode,Line,Col,i;TMOD = 0x20;PCON |= 0x80;SCON = 0x50;TH1 = 256 - (OSC/12/16/BAUDRATE);TL1 = 256 - (OSC/12/16/BAUDRATE); // 设置串行口工作模式及波特率发生器初值TR1 = 1; // 启动定时器,产生波特率时钟TI = 1; // 使用printf 函数的要求printf("\r\nKey pad 4X4 test running..."); //输出提示信息printf("\r\nKey pad 4X4 test running...");while(1){ P1 = 0xff; // P1 全部置高,准备扫描Line = 1; // 从第一行开始扫描Mask = 0x01; // 行位置掩码,初始值为指向最低位(第1 行for(i=0;i<4;i++){Col = 0; // 置某行输出为0P1 = ~Mask; // 输入4 列(P1 的高4 位)的状态ScanCode = P1 & 0xf0; // 输入的4 列不全为1 则表示有键按下if(ScanCode != 0xf0){BUZ_CON = 0; // 蜂鸣器鸣响Delay1ms(20); // 按键去抖BUZ_CON = 1; // 蜂鸣器停止鸣响}ScanCode = P1 & 0xf0;switch(ScanCode) //再次读入各列状态{case 0xe0: Col = 1; // P1=11100000b,第1 列有键按下break;1case 0xd0:Col = 2; // P1=11010000b,第2 列有键按下break;case 0xb0:Col = 3; // P1=10110000b,第3 列有键按下break;case 0x70:Col = 4; // P1=01110000b,第4 列有键按下break;default:Col = 0; // 其余情况均不识别break;}if(Col > 0) // 识别到有效按键Col 才能大于0{printf("\r\nKey pressed: Line=%bd,Column=%bd",Line,Col); // 输出按键所在的行、列号while(1) // 等所有按键都释放后再返回{ScanCode = P1 & 0xf0;if(ScanCode == 0xf0) break;}}Mask <<= 1; // 扫描下一行Line ++; // 4 行扫描完成后,退到上层while 循环,重新扫描} }}六、实验体会本次实验让我了解矩阵键盘的工作原理。

单片机实验4 矩阵键盘实验

单片机实验4  矩阵键盘实验

华南农业大学实验报告专业班次08电信1 组别200831120102 题目实验四矩阵键盘实验姓名陈建泽日期2010.11.03一、实验目的1. 学习非编码键盘的工作原理和键盘的扫描方式。

2. 学习键盘的去抖方法和键盘应用程序的设计。

二、实验设备:STC89C52单片机实验板、串口下载线、USB连接线、电脑三、实验原理键盘是单片机应用系统接受用户命令的重要方式。

单片机应用系统一般采用非编码键盘,需要由软件根据键扫描得到的信息产生键值编码,以识别不同的键。

本板采用4*4矩阵键盘,行信号分别为P1.0-P1.3,列信号分别为P1.4-P1.7。

具体电路连接见下图矩阵键盘电路原理图对于键的识别一般采用逐行(列)扫描查询法,判断键盘有无键按下,由单片机I/O口向键盘送全扫描字,然后读入列线状态来判断。

成绩:教师:日期:四、实验步骤1. 分析实验所用到的电路原理图,根据需要连接跳线帽(由于P1.3和P1.4管脚和实时时钟芯片DS1302复用,所有在做矩阵键盘实验的时候务必拔去板上的DS1302芯片,以免产生干扰)。

2.按不同的键,用数码管的最后一位显示按键的键值。

3. 画出流程图。

4.根据流程图编写实验程序,并完成调试。

五、实验流程图矩阵键盘实验流程图六、实验程序/******************实验四 矩阵键盘实验****************/;实验名称:矩阵键盘实验;功 能:4*4矩阵键盘,按不同的键,用数码管的最后一位显示按键的键值。

1.置所有行值为低电平2.读取列的状态,给 A 开始A !=0? 延时10ms ,去抖动 置行计数器R0=00H 列列计数器R1=00H 置行输出扫描初始值为0FEH 输出行扫描字,置某一行为低 有列被按下? 行计数器增1 行扫描字左移一位 最后一行? 判断具体是哪一列按下 存列号到R1 计算键值并显示;编写人:陈建泽;编写时间:2010年11月2日/**********************程序代码************************/ORG 0000H ;上电或复位后初始化引导程序地址AJMP MAIN ;跳转到主程序ORG 0000HAJMP MAINORG 0030HMAIN: MOV P2,#0F7H ;选通数码管最后一位MOV P1,#0F0H ;令所有行为低电平MOV R7,#100 ;让P1输出稳定DJNZ R7,$MOV A,P1 ;先确定是否有键按下ANL A,#0F0HXRL A,#0F0H ;与上一句作用,判断是否有按键按下JZ MAIN ;无则重新扫描LCALL D10MS ;延时10ms,去除抖;判断是否确实有按键按下MOV A,#00HMOV R0,A ;R0做行计数器,初始值为0MOV R1,A ;R1做列计数器,初始值为0MOV R2,#0FEH ;R2低4位为行扫描子,初始值为1111 1110B SKEY0:MOV A,R2MOV P1,A ;输出行扫描字,先扫第一行MOV R7,#10 ;让P1输出稳定DJNZ R7,$MOV A,P1 ;读列值ANL A,#0F0HXRL A,#0F0H ;取列值JNZ LKEY ;A不为零,则确实有按键按下了;然后转去判断具体是哪一列INC R0 ;增1,记录准备扫描的下一行MOV A,R2RL A ;不带进位位,左移一位,准备扫描下一行MOV R2,AMOV A,R0 ;判断是否已经四行都扫描完了CJNE A,#04H,SKEY0AJMP MAIN ;都扫描完则循环开始;判断具体列值LKEY: JNB ACC.4,NEXT1 ;若ACC.4为1,则是第一列有按键按下了MOV A,#00H ;存0列号到R1MOV R1,AAJMP DKEY ;去计算键值并显示NEXT1:JNB ACC.5,NEXT2MOV A,#01H ;存1列号到R1MOV R1,AAJMP DKEYNEXT2:JNB ACC.6,NEXT3MOV A,#02H ;存2列号到R1MOV R1,AAJMP DKEYNEXT3:JNB ACC.7,MAIN ;到第四列都检测不到,则从新开始MOV A,#03H ;存3列号到R1MOV R1,AAJMP DKEY;计算键值并显示键值DKEY: MOV A,R0 ;取行号给AMOV B,#04HMUL ABADD A,R1 ;根据键值=行号*4+列号计算出具体键值AJMP SQR ;根据键值查询字型码/*********************查表子程序***************************/SQR: MOV DPTR,#TAB ;表首地址给DPTRMOVC A,@A+DPTR ;查第一个字型的字型码MOV P0,A ;送段码,数码管显示具体值AJMP MAIN ;返回开始TAB: DB 0C0H,0F9H,0A4H,0B0H,99H, 92H, 82H, 0F8H ;共阳极字型码表0——7 DB 80H, 90H, 88H, 83H, 0C6H,0A1H,86H, 8EH ;共阳极字型码表8——F/*********************10ms延时子程序**********************/D10MS:MOV R6,#10L1:MOV R5,#248DJNZ R5,$DJNZ R6,L1RETEND/*********************程序编写结束*************************/根据实验流程图,编写出一下实验程序。

单片机矩阵键盘实验

单片机矩阵键盘实验

单片机独立按键和矩阵键盘操作[实验要求]独立按键操作: 试操作P3.4~P3.7控制的四个独立按键中的某一个, 每按一次, 数码管上显示数字作一次加1或减1变化, 显示数字在0~9之间.矩阵键盘操作: 依次按下4*4 矩阵键盘上从第1 到第20 个键,同时在六位数码管上依次显示0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。

[实验原理](1) 按键识别去抖动原理:我们在手动按键的时候, 由于机械抖动或是其它一些非人为的因素很有可能造成误识别, 一般手动按下一次键然后接着释放, 按键两片金属膜接触的时间大约为50ms 左右,在按下瞬间到稳定的时间为5-10ms,在松开的瞬间到稳定的时间也为5-10ms,如果我们在首次检测到键被按下后延时10ms 左右再去检测,这时如果是干扰信号将不会被检测到,如果确实是有键被按下,则可确认,以上为按键识别去抖动的原理。

(2) 独立按键识别: 判断是否按下键盘,当单片机上电时所有I/O 口为高电平,参照实验电路图, S2 键一端接地另一端接P3.4,所以当键被按下时P3.4 口直接接地,此时检测P3.4 肯定为低电平。

(3) 矩阵键盘识别: 参照实验电路图, 矩阵键盘的四行分别与P3.0-P3.3 连接,四列分别与P3.4-P3.7 连接。

如识别第1列按键, 可给P3.4送低电平,其余为高电平, 把P3口数据读回, 判断其第4位是否全为1, 如果全为1,则该列无键按下, 可继续判断下1列, 如有某位为0, 则有键按下,并可根据其位置识别按键所在行,从而确定该按键位置和键值. 其它各列按键识别类同.[实验目的](1)掌握独立按键的识别方法.(2)掌握按键去抖动的基本原理。

(3)了解矩阵键盘检测的操作方法。

(4)进一步巩固掌握数码管的显示操作方法.[硬件电路]图1 独立键盘和矩阵键盘电路图图2 矩阵键盘接口图。

矩阵键盘实验报告

矩阵键盘实验报告

矩阵键盘实验报告矩阵键盘实验报告引言:矩阵键盘是一种常见的输入设备,广泛应用于电子产品中。

本实验旨在通过对矩阵键盘的研究和实验,深入了解其原理和工作机制,并探索其在实际应用中的潜力。

本文将从实验目的、实验步骤、实验结果和讨论四个方面进行论述。

实验目的:1. 理解矩阵键盘的工作原理;2. 掌握矩阵键盘的接线方法;3. 通过实验验证矩阵键盘的可靠性和稳定性。

实验步骤:1. 准备实验材料:矩阵键盘、电路板、导线等;2. 连接电路:将矩阵键盘与电路板通过导线连接;3. 编写程序:使用C语言编写程序,实现对矩阵键盘的扫描和按键检测;4. 烧录程序:将编写好的程序烧录到单片机中;5. 运行实验:按下矩阵键盘上的按键,观察电路板上的指示灯是否亮起。

实验结果:经过实验,我们成功地完成了矩阵键盘的接线和程序烧录,并进行了按键测试。

在按下不同的按键时,电路板上相应的指示灯亮起,证明了矩阵键盘的正常工作。

讨论:1. 矩阵键盘的工作原理:矩阵键盘是由行线和列线组成的,每个按键都与行线和列线相连。

当按下某个按键时,对应的行线和列线会短接,从而使得电流流过该按键,被检测到。

2. 矩阵键盘的接线方法:在本实验中,我们采用了常见的4行4列的接线方式,即将矩阵键盘的4个行线连接到单片机的4个输入引脚上,将4个列线连接到单片机的4个输出引脚上。

3. 矩阵键盘的可靠性和稳定性:通过实验,我们发现矩阵键盘具有较高的可靠性和稳定性。

即使在长时间使用和频繁按键的情况下,矩阵键盘仍能正常工作,并且按键的检测准确率较高。

4. 矩阵键盘的应用潜力:矩阵键盘广泛应用于各种电子产品中,如计算机、手机、电视遥控器等。

它具有结构简单、成本低廉、易于集成等优点,因此在电子产品设计中具有广阔的应用前景。

结论:通过本次实验,我们对矩阵键盘的工作原理和接线方法有了更深入的了解,并验证了其可靠性和稳定性。

矩阵键盘作为一种常见的输入设备,在电子产品设计中具有重要的地位和潜力。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验四单片机矩阵键盘检测和液晶仿真实验
(4学时)
一、实验任务
利用51单片机实现4X4矩阵键盘和LCD1602液晶显示人机交互系统,编程实现:
(1)按键扫描(1、2、……9、A、B、C、D、E、F)和LCD1602显示按键的键号,格式为:KEYNUM+按键号;
(2)LCD1602的第一行显示加1功能,初始数字为980,显示位置自己确定,每次按下某一个按键,数字加1,范围为15---20;
二、实验目的
1、掌握仿真软件Proteus和单片机联调的方法;
2、掌握矩阵键盘扫描检测的原理,并且编程实现键盘按键的检测;
3、掌握LCD1602液晶显示的原理,并且编程实现LCD1602的显示功能;
4、掌握利用单片机实现键盘检测和液晶显示的功能组合,并掌握独立编程控制的能力。

三、实验设备
电脑、Proteus软件、Keil软件
四、实验原理
(一)矩阵键盘扫描检测原理
按照按键结构原理可分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关等;另一类是无触点开关按键,如电气式按键、磁感应按键等。

在单片机应用系统中,通过按键实现控制功能和数据输入是非常普遍的。

在所需按键数量不多时,系统常采用独立式按键。

独立式按键是指每个按键单独占有一根I/O口线,且其工作状态不会影响其他I/O口线的工作状态。

这种按键的电路配置灵活,软件结构简单。

不过在实际应用中,由于不同的系统对按键的要求不同,因此,对按键程序的设计要考虑全面,以便更好地完成按键所设定的功能。

在按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图4.1所示。

在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一
个按键加以连接。

这样一个端口(如P1口)就可以构成4×4=16个按键,比直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出1键(共9键)。

由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。

矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些。

图4.1中,列线与行线通过按键连接。

假如将行线所接单片机的I/O口置高电平,作为输入端;将列线所接I/O口置低电平,作为输出端。

当按键没有按下时,所有行线都是高电平,所有列线都是低电平。

一旦有按键按下,则对应的行线输入端就会被拉低变成低电平,通过读入行线的状态就可得知是否有键按下了。

图4.1 矩阵键盘示例
(一)LCD1602液晶显示原理
1602液晶为5V电压驱动,带背光,可两行显示,每行16个字符,不能显示汉字,内含28个字符的ASCII字符集字库。

其有两种显示形式,一是在液晶的任意位置显示字符;另一是滚动显示一串字符。

图4.2 LCD1602液晶引脚功能
具体操作时序等资料,请查阅课本知识。

(二)步骤
1、Proteus仿真电路设计;
(1)设计原理图;(2)放置仿真元器件;
2、在Keil软件里面设计程序,生成HEX文件;
3、将HEX文件加载到仿真系统的51单片机里面,运行仿真,调试程序。

五、实验报告要求
1、截图仿真界面,包括程序、proteus原理图,显示的界面,图片不宜过大;
2、详细的画出矩阵键盘检测的C语言流程图。

3、请写下自己对于LCD1602时序的理解,一百字左右。

相关文档
最新文档