基于单片机的键盘系统

合集下载

基于单片机的模拟手机键盘

基于单片机的模拟手机键盘

信息工程学院课程设计报告书题目 :基于单片机的模拟手机键盘专业:电子信息科学与技术班级:_学号:学生姓名:_指导教师:2013年10月18日信息工程学院课程设计任务书学号学生姓名专业(班级)电子信息设计题目基于单片机的模拟手机键盘单片机晶振频率:12MHz;电源电压: +5v设计技术参数编程控制单片机端口实现按键输出0~9 十个数字并在液晶上显示出来。

设计要求两天工作量注:可填写课程设计报告的字数要求或要完成的图纸数量。

工作计划[1]康华光,陈大钦 . 电子技术基础—模拟部分(第五版)[M]. 北京:高等教育出版社,2005参考[2] 郭天祥 .51 单片机 C 语言教程[ M]. 北京:电子工业出版, 2012资料指导教师签字教研室主任签字信息工程学院课程设计成绩评定表学生姓名:学号:专业(班级):电子信息课程设计题目:基于单片机的模拟手机键盘指导教师评语:成绩:指导教师:年月日摘要本文是做基于89C52 单片机的手机键盘的设计;利用P0 端 3*4 的键值来模拟手机键盘中的数字,将采用编程的方法来实现使用12 个键来做到0 到 9 的数字输出和退位清零,并在液晶屏上显示。

手机作为现代移动通信的载体,其技术也得到了很大的发展,手机的键盘布局已经成了各大厂商门竞争的主要方面,本次设计提高了我们对单片机的操作能力,让我们更加认识到单片机的广阔前景,对于我们更加深入学习和了解单片机提供了极大的帮助。

关键词:矩阵键盘,LCD液晶屏, 89C52 单片机。

目录1任务提出与方案论证 ..............................................................................................................- 2 -1.1方案一 ......................................................................................................................- 2 -1.2方案二 ..........................................................................................................................- 2 -1.3方案对比与选择 ............................................................................................................- 2 -2.系统硬件电路的设计 .............................................................................................................- 4 -2.1微处理器的选择 ...........................................................................................................- 4 -2.2单片机的基本机构 ........................................................................................................- 4 -2.3键盘接口电路 ................................................................................................................- 5 -2.4消除抖动 ........................................................................................................................- 6 -3详细设计 ..................................................................................................................................- 7 -3.1程序流程设计 ...............................................................................................................- 7 -3.2硬件电路设计 ...............................................................................................................- 8 -4总结.........................................................................................................................................- 9 -参考文献 (10)附录 (11)1任务提出与方案论证1.1 方案一采用 8255 芯片,通过 PA,PB 口输出; PC 的高四位输出,低四位输入;定时器测量两次按键的间隔,进行手机键盘的模拟;此种方法思路简单,能够实现 0 到 9 的数值在数码管上的显示。

基于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);

基于AT89C51单片机键盘控制和LCD显示

基于AT89C51单片机键盘控制和LCD显示
判断被按下键的位置:
依次将所有的行线Y4~Y7置为低电平,在判断4根列线的电平状态,当遇到某一列的电平
键盘扫描流程图
为低时表示此键按下。
5LCD1602液晶显示屏
液晶显示器具有显示质量高、发光恒定、不会刷新亮点和闪烁、体积小、电流小、字迹清晰以及功耗低的特点。本实验才用了16×2个字符,5×7点阵,8位数据接口的液晶显示。
{
P3=0xf7;
if(P3!=0xf7)
{
temp=P3&0xf0;
switch(temp)
{
case 0xe0:num_0=0;write_cmd(0x01);
break;
}
}
}
void keyscan() //键盘扫描程序操作
{
P3=0xf7;
if(P3!=0xf7)
{
delay(20);//延迟20ms
write_cmd(0x04);
i=0;
c=(long)(((float)sqrt(a))*1000);
while(c!=0)
{
write_dat(0x30+c%10);
c=c/10;
i++;
if(i==3)
write_dat(0x2e);
}
if(sqrt(a)<=0)
write_dat(0x30);
}
else if(fuhao==4){write_cmd(0x80+0x4f);
系统硬件设计框图如图1
图1
2AT89S52是一种带4kB闪烁可编程课擦除只读存储器的低电压、高性能CMOS型8位微处理器,俗称单片机。它是一个低功耗、高性能的8位CMOS微控制器。由片内可反复

基于51单片机按键长按短按效果源程序

基于51单片机按键长按短按效果源程序

基于51单片机按键长按短按效果源程序[复制链接]* 实验名称:多位数按键加减** 晶振:12MHZ* 内容:按键加减数字,多个数码管显示,使用定时器做数码管动态扫描** 并区别长按短按效果,完全可以应用的实际生产中** ---------------------------------------------------------------*/#include<reg52.h> //包含头文件,一般情况不需要改动,//头文件包含特殊功能寄存器的定义sbit KEY_ADD=P3^3; //定义按键输入端口S17sbit KEY_DEC=P3^2; //S18#define DataPort P1 //定义数据端口程序中遇到DataPort 则用P1 替换sbit LATCH1=P2^0;//定义锁存使能端口段锁存sbit LATCH2=P2^1;// 位锁存sbit P35 = P3^5;//这是为了关闭开发板上的点阵实际应用去掉unsigned char code HEYAO_DuanMa[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};// 显示段码值0123456789unsigned char code HEYAO_WeiMa[]={0x1,0x2,0x4,0x8,0x10,0x20,0x40,0x80};//分别对应相应的数码管点亮,即位码unsigned char TempData[8]={0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF};//存储显示值的全局变量void DelayUs2x(unsigned char t);//函数声明void DelayMs(unsigned char t);void Init_Timer0(void);void Display(unsigned char FirstBit,unsigned char Num);/*------------------------------------------------主函数------------------------------------------------*/void main (void){unsigned char num=0,key_press_num;P35=0; //这是为了关闭开发板上的点阵实际应用去掉KEY_ADD=1; //按键输入端口电平置高KEY_DEC=1;Init_Timer0();while (1) //主循环{if(!KEY_ADD) //如果检测到低电平,说明按键按下DelayMs(10); //延时去抖,一般10-20msif(!KEY_ADD) //再次确认按键是否按下,没有按下则退出{while(!KEY_ADD){key_press_num++;DelayMs(10); //10x200=2000ms=2sif(key_press_num==200) //大约2s{key_press_num=0; //如果达到长按键标准//则进入长按键动作while(!KEY_ADD) //这里用于识别是否按//键还在按下,如果按//下执行相关动作,否则退出{if(num<99) //加操作num++;//即时把显示数据处理,如果去掉下面2//句处理信息,实际上看不到渐变效果,//而是看到跳变效果//用户可以自行屏蔽测试//分解显示信息,如要显示68,则68/10=6 68%10=8 TempData[0]=HEYAO_DuanMa[num/10];TempData[1]=HEYAO_DuanMa[num%10];DelayMs(50);//用于调节长按循环操作//的速度,可以自行调整此值以便达到最佳效果}}}key_press_num=0;//防止累加造成错误识别if(num<99) //加操作num++;}}if(!KEY_DEC) //如果检测到低电平,说明按键按下{DelayMs(10); //延时去抖,一般10-20msif(!KEY_DEC) //再次确认按键是否按下,没有//按下则退出{while(!KEY_DEC)key_press_num++;DelayMs(10);if(key_press_num==200) //大约2s{key_press_num=0;while(!KEY_DEC){if(num>0) //减操作num--;//分解显示信息,如要显示68,则68/10=6 68%10=8 TempData[0]=HEYAO_DuanMa[num/10];TempData[1]=HEYAO_DuanMa[num%10];DelayMs(50);//用于调节长按循环操作的速度}}}key_press_num=0;//防止累加造成错误识别if(num>0) //减操作num--;}}//分解显示信息,如要显示68,则68/10=6 68%10=8 TempData[0]=HEYAO_DuanMa[num/10];TempData[1]=HEYAO_DuanMa[num%10];// Display(0,8); //显示全部8位//主循环中添加其他需要一直工作的程序}}/*------------------------------------------------uS延时函数,含有输入参数unsigned char t,无返回值unsigned char 是定义无符号字符变量,其值的范围是0~255 这里使用晶振12M,精确延时请使用汇编,大致延时长度如下T=tx2+5 uS------------------------------------------------*/void DelayUs2x(unsigned char t){while(--t);}/*------------------------------------------------mS延时函数,含有输入参数unsigned char t,无返回值unsigned char 是定义无符号字符变量,其值的范围是0~255 这里使用晶振12M,精确延时请使用汇编------------------------------------------------*/void DelayMs(unsigned char t){while(t--){//大致延时1mSDelayUs2x(245);DelayUs2x(245);}}/*------------------------------------------------显示函数,用于动态扫描数码管输入参数FirstBit 表示需要显示的第一位,如赋值2表示从第三个数码管开始显示如输入0表示从第一个显示。

单片机矩阵键盘

单片机矩阵键盘
单片机矩阵键盘
汇报人: 202X-01-04
contents
目录
• 单片机矩阵键盘概述 • 单片机矩阵键盘硬件设计 • 单片机矩阵键盘软件编程 • 单片机矩阵键盘调试与测试 • 单片机矩阵键盘优化与扩展
01 单片机矩阵键盘 概述
定义与特点
定义
单片机矩阵键盘是一种由行线和 列线组成的键盘,通过按键的行 和列交叉点来识别按键。
用于显示输入的信息或状态, 如数码管、液晶显示屏等。
电源模块
为整个系统提供稳定的电源, 保证系统的正常工作。
电路连接
01
矩阵键盘的行线和列线分别连接到单片机的输入/输出端口,通 过软件扫描方式检测按键状态。
02
单片机控制模块与显示模块连接,将需要显示的信息传输给显
示模块。
电源模块为整个系统提供稳定的电源,保证系统的正常工作。
在通讯设备领域,单片机矩阵键盘可以用 于手机、电话等设备的操作面板,实现拨 号、挂断等功能。
பைடு நூலகம்
02 单片机矩阵键盘 硬件设计
硬件组成
01
02
03
04
矩阵键盘模块
由行线和列线组成的键盘矩阵 ,按键被安排在行线和列线的
交叉点上。
单片机控制模块
用于接收和处理来自矩阵键盘 的信号,控制整个系统的运行

显示模块
软件编程
编写单片机程序,用于扫描矩阵键盘并识 别按键按下事件。
测试方法
按键响应时间测试
测试从按键按下到单片机响应 的时间,确保在合理范围内。
按键防抖测试
测试按键防抖功能是否正常, 即在按键按下和释放时是否能 够正确识别。
多键同时按下测试
测试在多个按键同时按下时, 单片机是否能够正确识别并处 理。

基于单片机的PS2键盘设计

基于单片机的PS2键盘设计

PS2键盘在单片机上的应用摘要:在嵌入式PC应用系统中,作为人机交互设备的键盘,往往采用结构简单按键少的矩阵键盘。

标准键盘虽然能直接与嵌入式PC机的PS/2接口相连,但是体积大,按键多,不能满足需求,本文提出用一种AT89C52单片机实现具有标准PS/2接口的矩阵键盘,具有便捷,实用的特点。

关键词:PS/2接口,PS/2键盘,拨号键,AT89C52,LCD1602Abstract:PS/2 interface is one of the most useful mouse interface.It was IBM’s patent named osulum before. It is the dedicate interface of mouse and keyboard. This text implied a plan using PS/2 to make a system. PS/2 tansmit the data which was pressed, and AT89C52 receive it ,disposed it and transmit it to Lcd1602. Lcd1602 discover it to make us know which key has been pressed. PS/2 simulate a phone’s dial keyboard. This system’s feature is the circuit is sample and useful.Keywords:PS/2 keyboard, AT89C52, LCD1602,PS/2 interface,dial keyboard目录1、前言 (1)2、整体方案设计 (2)2.1方案论证 (2)2.2方案比较 (3)3、单元模块设计 (4)3.1PS2键盘模块 (4)3.2单片机模块 (6)3.3LCD显示模块 (7)4、软件设计 (9)5、系统技术指标及精度和误差分析 (10)6、结论 (11)7、设计小结 (12)8、致谢 (14)9、参考文献 (14)附录1:电路总图 (15)附录2:仿真图 (16)附录3:软件代码 (17)1、前言单片机因其性价比高, 处理能力强, 且抗干扰能力好, 在医疗器械、机电液控制、数据传输等各类工控系统和设备仪器中得到广泛应用。

单片机实验五报告_单片机键盘实验

单片机实验五报告_单片机键盘实验

单片机实验五报告_单片机键盘实验一、实验目的本次单片机键盘实验的主要目的是让我们深入了解单片机与键盘的接口技术,掌握如何通过编程实现对键盘输入的检测和响应,从而提高我们在单片机应用开发中的实际操作能力。

二、实验原理在单片机系统中,键盘通常是作为输入设备使用的。

常见的键盘有独立式键盘和矩阵式键盘两种类型。

独立式键盘是每个按键单独占用一根 I/O 线,其优点是电路简单,编程容易,但缺点是占用较多的 I/O 口资源。

矩阵式键盘则是将按键排列成矩阵形式,通过行线和列线的交叉来识别按键。

这种方式可以有效地节省 I/O 口资源,但电路和编程相对复杂一些。

在本次实验中,我们采用了矩阵式键盘。

其工作原理是通过逐行扫描或者逐列扫描的方式,检测行线和列线的电平状态,从而确定按下的按键。

三、实验设备及材料1、单片机开发板一块2、计算机一台3、编程软件(如 Keil C51)4、下载工具(如 STCISP)四、实验步骤1、硬件连接将矩阵式键盘与单片机的 I/O 口进行连接,注意行线和列线的对应关系。

连接好电源和地线,确保硬件电路正常工作。

2、软件编程打开编程软件,创建一个新的工程。

编写初始化程序,包括设置 I/O 口的工作模式、中断等。

编写键盘扫描程序,通过循环扫描行线和列线的电平状态,判断是否有按键按下。

当检测到按键按下时,根据按键的编码执行相应的操作,如在数码管上显示按键值、控制 LED 灯的亮灭等。

3、编译和下载对编写好的程序进行编译,检查是否有语法错误。

如果编译成功,使用下载工具将程序下载到单片机中。

4、实验调试观察硬件电路的工作状态,看是否有异常现象。

按下不同的按键,检查程序的响应是否正确。

如果出现问题,通过调试工具(如单步调试、断点调试等)查找并解决问题。

五、实验代码以下是本次实验的部分关键代码:```cinclude <reg51h>//定义键盘的行和列define ROW_NUM 4define COL_NUM 4//定义行线和列线的端口sbit ROW1 = P1^0;sbit ROW2 = P1^1;sbit ROW3 = P1^2;sbit ROW4 = P1^3;sbit COL1 = P1^4;sbit COL2 = P1^5;sbit COL3 = P1^6;sbit COL4 = P1^7;//定义按键值的编码unsigned char code KeyCodeMapROW_NUMCOL_NUM ={{'1','2','3','A'},{'4','5','6','B'},{'7','8','9','C'},{'','0','','D'}};//键盘扫描函数void KeyScan(){unsigned char i, j, temp;unsigned char keyValue = 0;//逐行扫描for (i = 0; i < ROW_NUM; i++){//先将所有行线置高电平ROW1 = ROW2 = ROW3 = ROW4 = 1;//将当前行线置低电平switch (i){case 0: ROW1 = 0; break;case 1: ROW2 = 0; break;case 2: ROW3 = 0; break;case 3: ROW4 = 0; break;}//读取列线的电平状态temp = COL1 | COL2 | COL3 | COL4;//如果有列线为低电平,则表示有按键按下if (temp!= 0xF0){//延迟去抖动delay_ms(10);//再次读取列线的电平状态temp = COL1 | COL2 | COL3 | COL4; if (temp!= 0xF0){//确定按下的按键for (j = 0; j < COL_NUM; j++){if ((temp &(1 << j))== 0){keyValue = KeyCodeMapij;break;}}//执行相应的操作switch (keyValue){case '1'://具体操作break;case '2':break;//其他按键的操作}}}}}//主函数void main(){while (1){KeyScan();}}```六、实验结果及分析在实验过程中,我们成功地实现了对矩阵式键盘的输入检测,并能够根据不同的按键执行相应的操作。

单片机实现触摸键盘技术

单片机实现触摸键盘技术

单片机实现触摸键盘技术触摸键盘技术可以通过单片机实现,这种技术使用户能够通过触摸屏幕或触摸按键进行输入操作,替代了传统的物理按键,提供了更加便捷和灵活的输入方式。

触摸键盘技术的实现涉及到多个方面的知识,包括硬件设计和软件编程。

在硬件设计方面,我们需要选择合适的触摸屏幕或触摸按键模块,并与单片机进行连接。

在软件编程方面,需要编写相应的驱动程序和应用程序,实现触摸键盘的功能。

下面将详细介绍触摸键盘技术的实现步骤。

一、选择合适的触摸屏幕或触摸按键模块在选择触摸屏幕或触摸按键模块时,需要考虑它们的硬件接口和性能指标。

通常情况下,触摸屏幕模块使用SPI或I2C接口与单片机进行通信,触摸按键模块使用GPIO接口进行输入。

此外,还需要考虑模块的精度、灵敏度、稳定性等性能指标,以满足具体应用需求。

二、连接触摸屏幕或触摸按键模块将选定的触摸屏幕或触摸按键模块与单片机进行连接。

具体的连接方式取决于模块的硬件接口。

如果是触摸屏幕模块,可以通过SPI或I2C接口连接到单片机的相应引脚上。

如果是触摸按键模块,可以通过GPIO接口连接到单片机的输入引脚上。

三、编写触摸键盘驱动程序编写触摸键盘的驱动程序,用于与触摸屏幕或触摸按键模块进行通信,并获取用户输入的数据。

驱动程序需要实现以下功能:1.初始化模块:初始化触摸屏幕或触摸按键模块,配置相关参数。

2.检测触摸事件:周期性地检测触摸事件,包括触摸按下、触摸移动和触摸释放等事件。

3.获取坐标数据:在触摸事件发生时,获取触摸坐标数据,可以通过模块提供的接口实现。

4.处理输入数据:根据获取到的坐标数据,将其转换为具体的按键输入,可以使用坐标与按键的对应关系表进行转换。

四、编写触摸键盘应用程序在单片机上编写触摸键盘的应用程序,用于处理用户的输入和实现相应的功能。

应用程序需要实现以下功能:1.显示界面:根据应用需求,通过单片机的显示模块显示相应的界面,如按钮、菜单等。

2.响应输入:通过触摸键盘驱动程序获取用户的输入数据,并根据输入数据执行相应的操作,如按钮的点击、菜单的选择等。

基于单片机的键盘和LED数码管工作原理

基于单片机的键盘和LED数码管工作原理

基于单片机的键盘和LED数码管工作原理单片机是一种集成电路芯片,它包含了中央处理器、存储器和各种输入输出接口等核心功能。

而键盘和LED数码管则是单片机中常用的输入和输出设备之一键盘通常由多个按键组成,每个按键对应一个电路开关。

当按键按下时,电路闭合,形成通路,使电流流过。

按键抬起时,电路断开,通路被切断。

在单片机的键盘应用中,常用的键盘有矩阵键盘和独立按键两种。

矩阵键盘是将多个按键排列成矩阵的形式,通过行和列两个方向上的电极连接到单片机的输入输出引脚上。

当一些按键按下时,对应的行和列的电极会形成电路,单片机通过扫描行和列的方式,来检测按键的状态。

具体的工作原理如下:1.单片机通过输出行电平信号,将每行的引脚设置为输出模式,并将行的电平拉低;2.单片机通过输入列电平信号,将每列的引脚设置为输入模式,并开启输入状态;3.单片机依次扫描每行,检测是否有按键按下;4.如果有按键按下,则表示该行对应的列电平会被单片机检测到;5.单片机根据行和列的组合,确定按下的按键。

独立按键则是将每个按键对应的引脚直接连接到单片机的输入引脚上,按键按下时,直接检测到引脚的电平信号。

LED数码管是一种显示设备,它由多个LED组成,可以用于显示数字、字母和符号等信息。

在单片机的LED数码管应用中,常见的数码管有共阳和共阴两种类型,在工作时,需要通过单片机的输出引脚来控制数码管的亮灭。

共阳数码管的工作原理如下:1.单片机通过输出引脚产生一个高电平信号,与数码管的相应位相连接;2.当输出引脚电平为高时,该位的LED被通电,发出光亮;3.当输出引脚电平为低时,该位的LED断电,熄灭。

共阴数码管的工作原理与共阳相反:1.单片机通过输出引脚产生一个低电平信号,与数码管的相应位相连接;2.当输出引脚电平为低时,该位的LED被通电,发出光亮;3.当输出引脚电平为高时,该位的LED断电,熄灭。

通常,为了达到流水灯效果或同时显示多位数字,需要使用多个输出引脚来控制多个LED数码管。

基于单片机的PS2键盘设计

基于单片机的PS2键盘设计

PS2键盘在单片机上的应用摘要:在嵌入式PC应用系统中,作为人机交互设备的键盘,往往采用结构简单按键少的矩阵键盘。

标准键盘虽然能直接与嵌入式PC机的PS/2接口相连,但是体积大,按键多,不能满足需求,本文提出用一种AT89C52单片机实现具有标准PS/2接口的矩阵键盘,具有便捷,实用的特点。

关键词:PS/2接口,PS/2键盘,拨号键,AT89C52,LCD1602Abstract:PS/2 interface is one of the most useful mouse interface.It was IBM’s patent named osulum before. It is the dedicate interface of mouse and keyboard. This text implied a plan using PS/2 to make a system. PS/2 tansmit the data which was pressed, and AT89C52 receive it ,disposed it and transmit it to Lcd1602. Lcd1602 discover it to make us know which key has been pressed. PS/2 simulate a phone’s dial keyboard. This system’s feature is the circuit is sample and useful.Keywords:PS/2 keyboard, AT89C52, LCD1602,PS/2 interface,dial keyboard目录1、前言 (1)2、整体方案设计 (2)2.1方案论证 (2)2.2方案比较 (3)3、单元模块设计 (4)3.1PS2键盘模块 (4)3.2单片机模块 (6)3.3LCD显示模块 (7)4、软件设计 (9)5、系统技术指标及精度和误差分析 (10)6、结论 (11)7、设计小结 (12)8、致谢 (14)9、参考文献 (14)附录1:电路总图 (15)附录2:仿真图 (16)附录3:软件代码 (17)1、前言单片机因其性价比高, 处理能力强, 且抗干扰能力好, 在医疗器械、机电液控制、数据传输等各类工控系统和设备仪器中得到广泛应用。

基于单片机技术的按键扫描电路分析

基于单片机技术的按键扫描电路分析

四、实验验证
为了验证本次演示所介绍的基于单片机技术的按键扫描电路分析的正确性, 我们设计了一个简单的实验:通过单片机控制一个4×4的按键矩阵,实现8个按 键的扫描和识别。实验结果表明,该方法可以有效地实现对多个按键的扫描和识 别。
五、总结
本次演示详细介绍了基于单片机技术的按键扫描电路的基本概念、电路组成、 电路原理、电路板设计以及软件设计等方面的内容。通过实验验证,该方法可以 有效地实现对多个按键的扫描和识别。未来可以进一步研究如何提高按键扫描电 路的性能和稳定性,以及在实际应用中的优化问题。
3、输出控制:经过按键处理后,单片机根据预设的程序对外部设备进行控 制。例如,当按下某个按键时,单片机可以控制一个LED灯的亮灭。
二、单片机按键模块的设计方法
下面以8051单片机为例,介绍一种常见的单片机按键模块设计方法。
1、硬件设计:8051单片机具有 4个并行输入输出口(P0、P1、 P2、P3)
(1)按键抖动:按键抖动是由于按键过程中电压波动引起的现象。为了消 除按键抖动,可以在程序中加入去抖动算法,例如延时检测、两次确认等。
(2)连键:连键是指多个按键同时按下或相互连通的现象。为了避免连键 现象,可以在程序设计时增加防连键处理,例如为每个按键设置唯一的标识符, 同时按下多个按键时只识别其中的一个。
参考内容
在现代电子设备中,按键模块是一种常见的人机交互方式。通过按键,用户 可以向电子设备发送指令,控制设备的运行。单片机作为嵌入式系统的重要分支, 具有体积小、价格低、可靠性高等优点,因此在按键模块设计中具有广泛的应用。
一、单片机按键模块的基本原理
单片机按键模块的工作原理主要包括三个步骤:按键检测、按键处理和输出 控制。
if(KEY != key1) //如果检测到按键状态发生变化 key1 = KEY; //更新输出位状态

利用51单片机,8个按键,8路发光二级管构成一个独立式键盘系统,按下8个按键,点亮对应的灯。

利用51单片机,8个按键,8路发光二级管构成一个独立式键盘系统,按下8个按键,点亮对应的灯。

电子信息工程学院电子设计应用软件训练任务【训练任务】:1、熟练掌握PROTEUS软件的使用;2、按照设计要求绘制电路原理图;3、能够按要求对所设计的电路进行仿真;【基本要求及说明】:1、按照设计要求自行定义电路图纸尺寸;2、设计任务如下:利用51单片机,8个按键,8路发光二级管构成一个独立式键盘系统,按下8个按键,点亮对应的灯。

3、按照设计任务在Proteus 6 Professional中绘制电路原理图;4、根据设计任务的要求编写程序,在Proteus下进行仿真,实现相应功能。

【按照要求撰写总结报告】指导教师年月日负责教师年月日学生签字年月日成绩评定表电子设计应用软件训练总结报告一.任务说明本次任务是利用51单片机、按键以及发光二极管设计一个独立式键盘系统,要求独立简单可控。

首先要明确51单片机的工作原理,在此基础上编写单片机程序,再载入到所连电路原理图中实现按键控制二极管亮灭。

此次任务需要完成电路原理图的绘制、单片机汇编语言的编程。

目的是通过本次设计熟悉Proteus软件的工作环境,掌握基本的操作及流程以及对单片机汇编语言的进一步学习,使之前的学习得到巩固。

二.原理图绘制说明总体而言,一个完善的系统最重要的是稳定,精确,设计简单,修护容易,成本低,体积小。

满足以上条件的系统我们都可以说是完善的系统。

因此,我在设计中选用了一些比较成熟的器件,这些器件都经过时间的考验,能稳定的工作,同时,价格也相对便宜。

下面对原理图中主要的硬件进行简单介绍。

2.1 AT89C51的基本概述AT89C5l单片机,是一种低功耗、高性能的、片内含有4KB Flash ROM的8位CMOS 单片机,工作电压范围为2.7~6V(实际使用+5V供电),8位数据总线。

它有—个可编程的全双工串行通信接口,能同时进行串行发送和接收。

AT89C51具有4K并行可编程的非易失性FLASH程序存储器,可实现对器件串行在系统编程ISP和在应用中编程(IAP)。

基于51单片机的PS2键盘1602显示24c02存储的密码锁设计(附程序)

基于51单片机的PS2键盘1602显示24c02存储的密码锁设计(附程序)

基于51单片机的PS2键盘密码锁设计摘要:AT89S52是一种低功耗、高性能CMOS 8位微控制器,具有8K在系统可编程Flash 存储器,被广泛应用于各个领域。

LCD1602液晶显示器以其微功耗、体积小、超薄轻巧等诸多优点而备受人们喜爱。

本作品是以AT89S52作为主控芯片,LCD1602作为显示器,以PS2键盘作为输入设备的密码锁。

PS2键盘与AT89S52通过PS2接口协议进行通信,可以完成密码设置,密码重置及显示等诸多功能。

本作品还使用了24C02存储器来实现密码锁的掉电保存功能。

关键词:AT89S52;LCD1602;24C02;PS2键盘Abstract:AT89S52 is a low power,high performance CMOS 8 bit microcontroller, with 8K flash memory, is widely applied in various fields. LCD1602 liquid crystalDisplay with its low power consumption, small size, thin lightweight and many other advantages, is liked by people.This work is based on the AT89S52 as the main chip, the LCD1602 as display, PS2 keyboard as an input device of the cipher lock. PS2 keyboard and AT89S52 through PS2 interface protocolFor communication, can complete password, password reset and display and other functions. This work we also used the 24C02 memory to realize the password lock the power-down save function.Keywork: A T89C52; LCD1602; 24C02;PS/2 keyboard1 实验目的及意义在单片机系统中,经常使用的键盘都是专用键盘.此类键盘为单独设计制作的,成本高、使用硬件连接线多,且可靠性不高,这一状况在那些要求键盘按键较多的应用系统中更为突出.与此相比,在PC系统中广泛使用PS/2键盘具有价格低、通用可靠,且使用连接线少(仅使用2根信号线)的特点,并可满足多种系统的要求.因此在单片机系统中应用PS/2键盘是一种很好的选择.对于单片机初学者的我而言,AT89S52简单易学,非常适合我学习。

单片机系统键盘的设计小结

单片机系统键盘的设计小结
的工 作 方 式
非 编码 键 盘 : 只简 单地 提 供键 盘 的 行列 与 矩 阵 , 他 操 作 如 其 键 的识别 , 决定 按 键的 读数 等仅 靠 软件 完成 , 故硬 件较 为简 单 , 但
占用 C U较 多时 间 。有 : P 独立 式按 键结 构 、 矩阵 式按键 结 构 。
响 的 软 件措 施 是切 实 可行 的 。)
务 繁重 之情 况 . 用 8 7 采 2 9可 编 程键 盘 管 理 接 口芯 片 构 成 编 码 式 键 盘 系统 是 很 实 用 的方 案 。
这 种 方法 只适 用 于 键 的 数 目较少 的情 况 。
软 件 消 抖 : 果 按 键 较 多 , 件 消抖 将 无 法 胜 任 , 采 用 如 硬 常
(. 阳 东软 派 斯 通 医疗 系统 有 限公 司 , 宁 沈 阳 10 7 ; 1沈 辽 1 19 2内蒙 古 西部 天 然 气 股份 有 限公 司 , . 内蒙 古 鄂 尔 多斯 0 70 ) 10 0
【 摘 要 】 文章介 绍 了单片机键盘 的设计要求和工作原理 , 并结合开发过程 , 讨论分析 了键盘的分类、 结构、 功能特点以及 应用
对 按 键释 放 的处 理 . 了消 除连 击 , 得 一次 按 键 只产 生 一次 键 为 使 功 能 的执 行 ( 管 一次 按 键持 续 的 时 间多 长 , 不 仅采 样 一个 数 据 ) 。 否 则的话 , 功 能程 序 的执 行 次数 将 是 不 可预 知 , 按键 时 间决 键 由 定 连 击 是 可以利 用的 。 连击 对 于用计 数 法设 计 的多功 能 键特别
软 件 消抖 。 常 采 用 软 件 延 时 的方 法 : 第 一 次检 测 到 有 键 按 通 在 下 时 , 行 一段 延 时 1ms 子 程 序 后 , 确 认 电平 是 否 仍 保 执 0 的 再

基于单片机AT89S52单片机的密码锁设计

基于单片机AT89S52单片机的密码锁设计

基于单片机AT89S52单片机的密码锁设计一、系统总体设计方案本密码锁系统主要由 AT89S52 单片机、矩阵键盘、液晶显示屏(LCD)、存储芯片、报警模块和开锁电路等组成。

用户通过矩阵键盘输入密码,单片机对输入的密码进行处理和判断,并将结果显示在LCD 屏上。

如果输入的密码正确,单片机控制开锁电路打开锁具;如果密码错误,系统会发出报警信号,并记录错误次数。

当错误次数超过设定值时,系统将锁定一段时间,以防止非法入侵。

二、硬件设计1、单片机最小系统AT89S52 单片机是整个系统的核心,它负责控制和协调各个模块的工作。

单片机最小系统包括单片机芯片、晶振电路和复位电路。

晶振电路为单片机提供时钟信号,复位电路用于系统的初始化和异常情况下的复位操作。

2、矩阵键盘矩阵键盘用于输入密码,采用 4×4 的矩阵式键盘布局,共 16 个按键,分别代表数字 0-9、确认键和删除键等。

通过扫描键盘的行和列,可以确定用户按下的按键值,并将其传输给单片机进行处理。

3、液晶显示屏(LCD)LCD 显示屏用于显示系统的工作状态和提示信息,如输入密码、密码正确、密码错误等。

本系统选用 1602 液晶显示屏,它具有体积小、功耗低、显示内容丰富等优点。

4、存储芯片存储芯片用于存储密码信息,选用 EEPROM 芯片 AT24C02。

EEPROM 具有掉电不丢失数据的特点,可以保证密码信息的安全性和可靠性。

5、报警模块报警模块由蜂鸣器和发光二极管组成,当密码输入错误次数超过设定值时,蜂鸣器发出报警声音,发光二极管闪烁,以提醒用户和起到威慑作用。

6、开锁电路开锁电路由继电器和电磁锁组成,当单片机判断输入的密码正确时,输出控制信号使继电器闭合,从而接通电磁锁的电源,打开锁具。

三、软件设计1、主程序流程系统上电后,首先进行初始化操作,包括单片机端口初始化、LCD 初始化、存储芯片初始化等。

然后进入密码输入等待状态,当用户按下按键时,读取按键值并进行相应的处理。

基于AT89C5131单片机和CPLDUSB接口用户专用键盘设计

基于AT89C5131单片机和CPLDUSB接口用户专用键盘设计

基于AT89C5131单片机和CPLD的USB接口用户专用键盘设计摘要:随着时代的发展,科技的进步,以及某些特殊场合情况下控制模块的深入研究和快速发展,我们需要研究出一种满足用户可自定义按键功能要求的用户专用键盘模块。

本设计采用带有usb微控制器单片机芯片at89c5131为通信的控制核心,at89c5131有较快的处理速度和较大的存储容量,还可以在系统编程,是usb接口设计的理想选择,通过编写单片机固件驱动程序和cpld控制程序,将硬件构造模块化,应用至相关特殊行业中。

关键词:at89c5131;cpld;usb;键盘设计中图分类号:tp368.11文献标识码:a文章编号:1007-9599 (2013) 06-0000-02随着时代的发展,科技的进步,以及某些特殊场合中情况下控制模块的深入研究和快速发展,我们需要研究出一种满足用户可自定义按键功能要求的用户专用键盘模块。

在用户专用键盘模块上可按用户要求布局各种功能按键,在模块面板上与按键内印制功能指示说明,例如设备的“开”、“关”、“升”、“降”等功能,用户可根据指示说明的详细流程,进而进行操作键盘模块以控制设备。

操作功能按键,按键键码由用户专用键盘发送至主机,主机返回对应点灯码或灭灯码控制用户专用键盘按键内部指示灯的亮、灭,同时主机接收键码调用对应函数控制外部设备以实现相应功能。

1用户专用键盘硬件设计本次设计用户专用键盘模块主要由at89c5131单片机、cpld、eao功能按键组成。

at89c5131单片机控制电路的主要功能是与主机进行通信,执行主机按键状态查询命令。

因单片机gpio口数量相对较少,故选择cpld作为按键和按键指示灯的扩展电路,这样的选择更适合我们的用户专用键盘的扩展设计。

1.1单片机控制设计at89c5131单片机是atmel公司生产的基于52内核的高性能微处理器芯片。

用户可以使用片上的boot loader或flashapi,通过usb接口或其他接口对flash存储器(32kb)和e2prom存储器(1kb)进行isp或者iap编程。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
键盘A1~A8接单片机p1.0~p1.7 p1口全为输入端
p0口p0.0~p0.7接显示器D0~D7为输出口
p0作为输出口是,锁存器cp端一写入脉冲,与内部总线相连的D端数据取反后出现在/Q端,又经T2反相,在p0引脚上的数据正好是内部总线上的数据。
四程序设计
/* s1,s2,s3,s4分别是123+
一设计任务:液晶显示控制系统
任务要求:1.可显示键盘输入数字。
2.可实现编辑操作。
二总体方案设计
1.硬件设计
1.1 4*4行列式键盘
系统所用键盘为4x4行列式扫描键盘,由P1口实现,A1到A8分别接P1.0到P1.7。如下图(具体接线由硬件电路图提供):
1.2 LCD显示原理
字符型型液晶是一种用5×7点阵图形来显示字符的液晶显示器,根据显示的容量可以分为1行16个字、2行16个字、2行20个字等,最常用的为2行16个字。LCD1602就是这样。LCD1602的驱动控制器为HD44780及其兼容集成电路。HD44780内置了DDRAM、CGRAM和CGRAM。如下图:
lcdwrc(0x0c);
key=0;
num=0;
flag=0;
fuhao=0;
a=0;
b=0;
c=0;
d=0;
biao=0;
led=0;
}
void keyscan()
{
P1=0xfe; //令第一行为0,然后判断是哪一列按下
if(P1!=0xfe)
{
delay(1000);
if(P1!=0xfe)
{
lcdwrd(0x30+c%10);//显示结果的最后一位在0x4f的位置
c=c/10;//取前面的结果数据
}
lcdwrd(0x3d); //显示等于号=
a=0;
b=0;
flag=0;
fuhao=0;//全部清除为0
}
if(fuhao==4)
{
k=0;
lcdwrc(0x4f+0x80);
lcdwrc(0x04);//设置光标左移,屏幕不移动
flag=0;
fuhao=0;
break;
case 15:
flag=1;
fuhao=4;
lcdwrd(0x2f);//除号/
break;
case 14:
if(fuhao==1)//加
{
lcdwrc(0x4f+0x80);
lcdwrc(0x04);//设置光标左移,屏幕不移动
c=a+b;
while(c!=0)//一位一位显示
{
lcdwrd(0x30+c%10);//显示结果的最后一位在0x4f的位置
c=c/10;//取前面的结果数据
}
lcdwrd(0x3d); //显示等于号=
a=0;
b=0;
flag=0;
fuhao=0;//全部清除为0
}
if(fuhao==2) //减
{
lcdwrc(0x4f+0x80);
lcdwrc(0x04);//设置光标左移,屏幕不移动
uint8 k; //定义小数点后面显示的位数
uint8 biao;
uint8 dat1[]={1,2,3,0x2b-0x30, 4,5,6,0x2d-0x30, 7,8,9,0x2a-0x30, 0,0x01-0x30,0x3d-0x30,0x2b-0x30 };//保存显示的数据
void delay(uint16 i)
在这次课程设计过程中,不仅将以前学习到的微机原理和单片机相关知识得到了巩固和进一步的提高,而且对单片机C语言有了更好的理解和掌握,虽然过程中碰到了很多的问题,但是通过查阅相关书籍、资料,特别是老师的细心教导,不仅给了我思路上的开阔,而且使我认识到自己的不足之处,最终完成了本次课程设计。通过这次课程设计,我也发现了自身的很多不足之处,在以后的学习过程中,我会不断的完善自我,勤动手,多思考,不断进取,为自己在专业上的深入发展构筑一个好的平台。
(5)将Hex文件装入DICE中,下载到AT89C51中,运行系统。
5.3结果分析
通过按照设计的电路图连接电路,装载、编译并运行程序,可以实现通过键盘按键对LCD1602显示器进行操作,使数字显示到LCD1602显示屏上。
六总结
这次课程设计主要通过对AT89C51的基本认识,利用4*4矩阵键盘扫描进行LCD显示,从而设计成一个与键盘、LCD等模块组成核心主控制模块,在主控模块上设有16个按键的简易4*4键盘LCD1602显示器。由于本次设计的4*4键盘LCD1602显示键盘设计比较简单,所以没有增设键盘的消除抖动功能。
}
lcdwrd(0x30+dat1[num]);
}
P1=0xfb;//令第三行为0,判断哪一列按下
if(P1!=0xfb)
{
delay(1000);
if(P1!=0xfb)
{
key=P1&0xf0;
switch(key)
{
case 0xe0: num=8;break;//7
case 0xd0: num=9;break;//8
s5,s6,s7,s8分别是456-
s9,s10,s11,s12分别是789*
s13,s14,s15,s16分别是0,清除,=,/ */
/*实现两个数的运算,每个数的位数至少可以八位*/
#include<reg52.h>
typedef unsigned char uint8;
typedef unsigned int uint16;
if(P1!=0xfd)
{
delay(1000);
if(P1!=0xfd)
{
key=P1&0xf0;
switch(key)
{
case 0xe0: num=4;break;//4
case 0xd0: num=5;break;//5
case 0xb0: num=6;break;//6
case 0x70: num=7;break;//减—
}
}
while(P1!=0xfd);
if(num==4||num==5||num==6)
{
if(flag==0)//没有按下符号键
{
//led=1;
a=a*10/led=1;
b=b*10+dat1[num];
}
}
else
{
flag=1;
fuhao=2;//带表减号
c=c/10;//取前面的结果数据
}
lcdwrd(0x3d); //显示等于号=
a=0;
b=0;
flag=0;
fuhao=0;//全部清除为0
}
if(fuhao==3)//乘法
{
lcdwrc(0x4f+0x80);
lcdwrc(0x04);//设置光标左移,屏幕不移动
c=a*b;
while(c!=0)//一位一位显示
LCD1602模块的各引脚功能如下图所示:
1.3单片机采用89C52。
2软件设计
本次课程设计实现了一个以AT89C52单片机为核心控制元件,与键盘、LCD显示器等模块组成核心主控制模块,通过按键,实现用户按键显示到LCD1602液晶显示器上的简易4*4键盘LCD显示器。主程序流程图如图:

三硬件电路设计
(1)根据要求在Proteus中选取元器件,设计电路图。
(2)编写代码,实现软件设计。
(3)使用Kiel编译程序,产生相应的Hex文件。
(4)将Hex文件装入Proteus仿真软件中,实现仿真。
5.2测试
(1)根据要求选取元器件。
(2)根据所设计电路图连接电路:
(3)编写代码,实现软件设计。
(4)使用Kiel编译程序,产生相应的Hex文件。
e=0;
rs=0;
}
void lcdinit()
{
delay(1500);
lcdwrc(0x38);
delay(500);
lcdwrc(0x38);
delay(500);
lcdwrc(0x38);
delay(500);
lcdwrc(0x38);
lcdwrc(0x08);
lcdwrc(0x01);
lcdwrc(0x06);
sbit rw=P2^5;
sbit rs=P2^6;
sbit e=P2^7;
sbit led=P3^7;
sbit beep=P2^0;
uint8 key,num;
uint8 fuhao;//定义具体的那个符号,是加减还是乘除。
uint8 flag;//定义有没有按下符号键,这个是统称
long a,b,c,d;//定义运算数据的第一个和第二个及等于的数变量
{
led=1;
b=b*10+dat1[num];
}
}
else
{
flag=1;
fuhao=3;//带表乘号*
}
lcdwrd(0x30+dat1[num]);
}
P1=0xf7;//令第四行为0,判断哪一列按下
if(P1!=0xf7)
{
delay(1000);
if(P1!=0xf7)
{
key=P1&0xf0;
c=(long)(((float)a/b)*1000);//强制转换为long。
while(c!=0)//一位一位显示
{
k++;
lcdwrd(0x30+c%10);//显示结果的最后一位在0x4f的位置
相关文档
最新文档