数码管显示4×4矩阵键盘的键盘号(程序解释好了)大作业

数码管显⽰4×4矩阵键盘的键盘号(程序解释好了)⼤作业
《单⽚机原理及应⽤课程设计》报告
——数码管显⽰4×4矩
阵键盘的键盘号
专业:电⼦信息科学与技术
班级:
姓名:
学号:
指导教师:
2012年5⽉15⽇
1、课程设计⽬的
1.1巩固和加深对单⽚机原理和接⼝技术知识的理解;
1.2培养根据课题需要选学参考书籍、查阅⼿册和⽂献资料的能⼒;
1.3学会⽅案论证的⽐较⽅法,拓宽知识,初步掌握⼯程设计的基本⽅法;
1.4掌握常⽤仪器、仪表的正确使⽤⽅法,学会软、硬件的设计和调试⽅法;
1.5能按课程设计的要求编写课程设计报告,能正确反映设计和实验成果,能⽤计算机绘制电路图和流程图。
2、课程设计要求
单⽚机的P1⼝的P1.0~P1.7连接4×4矩阵键盘,P0⼝控制⼀只数码管,当4×4矩阵键盘中的某⼀按键按下时,数码管上显⽰对应的键号。例如,1号键按下时,数码管显⽰“1”, 14号键按下时,数码管显⽰“E”等等。
3、硬件设计
3.1 设计思想
分析本任务的要求,在课程设计的基础上,添加要求,使设计能够完成当4×4矩阵键盘中的某⼀按键按下时,数码管上显⽰对应的键号。
3.2主要元器件介绍:
AT89C51单⽚机 LED数码管 4X4矩阵键盘
3.3 功能电路介绍
织物柔软剂AT89C51单⽚机:控制器。程序中将单⽚机的引脚置⾼电平低电平,单⽚机通过读取IO引脚的电平,在根据读取的数据去查数组中相应的按键值,然后在送到数码管也就是P0⼝去显⽰.(51单⽚机通过IO⼝来读取键盘的电平,再通过程序来查对应的数值,在送到数码管去显⽰)
LED数码管 :输出设备
4X4矩阵键盘:输⼊设备
777sao4、软件设计
4.1 设计思想
4.3源程序
#include
#define uchar unsigned char 开始初始化扫描键盘第⼀⾏若有按键按下,显⽰键盘号结束,返回若⽆按键按下扫描键盘第⼆⾏扫描键盘第三⾏扫描键盘第四⾏结束,返回
若⽆按键按下若⽆按键按下若⽆按键按下
#define uint unsigned int
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71};//定义显⽰段码uchar num,temp;
void delay(uchar k)//定义延时函数
{
uchar i,j;
for(i=k;i>0;i--)
for(j=110;j>0;j--);
}
void disp(char num1)//定义显⽰函数
{
P0=table[num1];//将段码值送⼊P0⼝显⽰
}
char keyscan()//定义键盘检测函数
{
P1=0xfe;//给P1⼝送检测信号11111110,即先检测第⼀列有⽆按键被按下(key1~key4)
temp=P1;//将检测信号赋给变量temp
temp=temp&0xf0;//与11110000相“与”去除低四位检测部分
while(temp!=0xf0)//判断是否有按键被按下,即key1-key4有任意按键被按下temp便不等于0xff
{
delay(5);//按键防抖动延时(时间要求不严格)
while(temp!=0xf0)//延时之后再次判断
{
temp=P1;//进⼊函数说明有按键被按下,再将p1值赋给temp进⾏判断是哪位被按下
switch(temp)//利⽤switch函数判断temp值
{
case 0xee://若P0等于0xee,即11101110,则由判断为0的位被按下即第四位(最低位),则应赋值num为0;
num=0;
break;
break;
case 0xbe://同上则num=2
num=2;
break;
case 0x7e://同上num=3
num=3;
break;
}
while(temp!=0xf0)//判断按键是否松开,循环判断直⾄按键松开
{
temp=P1;
temp=temp&0xf0;
}
}
}
P1=0xfd;//给P1⼝再次送检测信号11111101,来检测第⼆列有⽆按键被按下(key5~key8),以下⼏步同上temp=P1;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
while(temp!=0xf0)
{
temp=P1;
switch(temp)
{
case 0xed:
num=4;
break;
case 0xdd:
num=5;
break;
case 0xbd:
沉淀池
case 0x7d:
num=7;
break;
}
while(temp!=0xf0)
{
temp=P1;
temp=temp&0xf0;
}
}
}
P1=0xfb;//给P1⼝再次送检测信号11111011,来检测第三列有⽆按键被按下(key9~key12),以下⼏步同上
temp=P1;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
while(temp!=0xf0)
{
temp=P1;
switch(temp)
{
case 0xeb:
num=8;
break;
case 0xdb:
num=9;
break;
case 0xbb:
num=10;
break;
case 0x7b:
}
while(temp!=0xf0)
内螺旋涡流金属分选机
{
temp=P1;
temp=temp&0xf0;
}
}
}
P1=0xf7;//给P1⼝再次送检测信号11110111,来检测第四列有⽆按键被按下(key13~key16),以下⼏步同上temp=P1;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
while(temp!=0xf0)
{
temp=P1;
switch(temp)
{焊条烘干炉
case 0xe7:
num=12;
break;
case 0xd7:
num=13;
break;
case 0xb7:
num=14;
break;
case 0x77:
num=15;
break;
电表集中器}
while(temp!=0xf0)

本文发布于:2024-09-21 19:27:17,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/329608.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:键盘   设计   按键
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议