单片机课程设计报告---数码管显示4X4矩阵键盘按键号单片机课程设计报告---数码管显示4X4矩阵键盘按键号
设计名称: 单片机原理与应用
题 目: 数码管显示4X4矩阵键盘按键号 专 业: 计算机科学与技术
日 期: 2012 年 6 月 11日
1004402121计科本101 黄远利
一(设计目的:
1) 了解单片机系统实现LED动态显示的原理及方法;
2) 较为详细了解8051芯片的性能;
3) 能够了解到单片机系统的基本原理,了解单片机控制原理; 4) 掌握AT89C51程序控制方法;
5) 掌握AT89C51 C语言中的设计和学会分析程序,进而能够根...
单片机课程
报告---数码管显示4X4矩阵键盘按键号
设计名称: 单片机原理与应用
题 目: 数码管显示4X4矩阵键盘按键号 专 业: 计算机科学与技术
日 期: 2012 年 6 月 11日
1004402121计科本101 黄远利
一(设计目的:
1) 了解单片机系统实现LED动态显示的原理及方法;
2) 较为详细了解8051芯片的性能;
3) 能够了解到单片机系统的基本原理,了解单片机控制原理; 4) 掌握AT89C51程序控制方法;
5) 掌握AT89C51 C语言中的设计和学会分析程序,进而能够根据自己的需要编写代码;
6) 掌握4X4矩阵式键盘程序识别原理;
7) 掌握4X4矩阵式键盘的设计方法;
8) 学习键盘的扫描方式和应用程序设计;
9) 培养根据课题需要选学参考
籍、查阅手册和文献资料的能力; 10) 能够按课程设计的要求编写课程设计报告,能够正确反映设计和实验成果。 二(设计要求与主要内容:
设计要求:
单片机的P1口P1.0,P1.7连接4X4矩阵键盘,P0口控制一只P0口控制一只数码管,当4×4矩阵键盘中的某一按键按下时,数码管上显示对应的键号。例如,1号键按下时,数码管显示“1”, 二号按下的时候,数码管显示“2”,14号键按下时,数码管显示“E”等等。
主要内容:
1)4×4矩阵键盘程序识别原理 。
2)每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线都连接到AT89C51中,通过按键K0,K16,来在数码管显示不同的值。
实验步骤:
1) 启动keiuvision3 2)新建工程命名为单片机的C语言设计与应用 3)新建文件并另存为C51c.c 4)在SourceGroop1导入文件 5)编写代码,并生
1
1004402121计科本101 黄远利 成C语言设计与应用.hex文件。6) 在Proteus中设计电路图
7) 将keil与Proteus联机调试,记下实验
,得出实验结果。
三(设计程序原理:(包含仿真图和
图)
初始化
1)主程序流程图
是否有按键按下
请按键标识
键值处理
显示所有按键
2)程序流程图
结束,返回 开始
若有按键按下,显示键盘号
初始化
扫描键盘第一行
若无按键按下
扫描键盘第二行
若无按键按下
扫描键盘第三行 :
若无按键按下
扫描键第四行
2
1004402121计科本101 黄远利
若无按键按下
结束,返回
3)仿真图
四(程序代码
#include
#define uchar unsigned char #define uint unsigned int
//段码
ucharcode
DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
0x88,0x83,0xc6,0xa1,0x86,0x8e,0x00}; sbit BEEP=P3^7;
//上次按键和当前按键的序号,该矩阵中序号范围 0~15,16 示无按键 uchar Pre_KeyNo=16,KeyNo=16;
3
1004402121计科本101 黄远利 //延时
void DelayMS(uint x) { uchar i;
while(x--) for(i=0;i<120;i++);
}
//矩阵键盘扫描
void Keys_Scan()
{ uchar Tmp;
P1=0x0f; //高 4 位置 0,放入 4 行
DelayMS(1);
Tmp=P1^0x0f; //按键后 0f 变成 0000XXXX,X 中一个为 0,3 个仍为1,
通过异或把3个1变为 0,唯一的0变为1
switch(Tmp) //判断按键发生于 0~3 列的哪一列
{ case 1: KeyNo=0;break;
case 2: KeyNo=1;break;
case 4: KeyNo=2;break;
case 8: KeyNo=3;break;
default:KeyNo=16; //无键按下
}
P1=0xf0; //低 4 位置 0,放入 4 列
DelayMS(1);
Tmp=P1>>4^0x0f; //按键后 f0 变成 XXXX0000,X 中有 1 个为 0,三个
仍为 1;高4位转移到低 4 位并异或得到改变的值 switch(Tmp) //对 0~3 行分别附加起始值 0,4,8,12 {case 1: KeyNo+=0;break;
case 2: KeyNo+=4;break;
case 4: KeyNo+=8;break;
case 8: KeyNo+=12;
}
4
1004402121计科本101 黄远利 }
//蜂鸣器
void Beep()
{
uchar i;
for(i=0;i<100;i++)
{ DelayMS(1);
BEEP=~BEEP;
}
BEEP=0; }
//主程序
void main()
{ P0=0x00;
BEEP=0;
while(1)
{ P1=0xf0;
if(P1!=0xf0) Keys_Scan(); //获取键序号
if(Pre_KeyNo!=KeyNo)
{ P0=~ DSY_CODE[KeyNo];
Beep();
Pre_KeyNo=KeyNo;
}
DelayMS(100);} } 五(实验结果:
当按键按下k0,显示管显示0,当按键按下k1时显示1,显示管可以显示
1,2,3,4,5,6,7,8,9,A,B,C,D,F.
5
1004402121计科本101 黄远利
六(实验体会:
这次的实验提高了我的设计能力与对电路的分析能力。同时在软件的编程方面得到了很大的提高,使编程能力得到加强,在此同时对所学的单片机知识得到很大的巩固与加强。本次实验熟悉单片机的使用功能,熟悉了Keil uVision 进行程序调试,利用proteus7.8进行硬件设计。在本实验中,我明白了4X4矩阵键盘按键号是用按键组成的,通过编写C语言程序显示管是完全可以显示出我们想要的信息,在以后的实验中我们可以通过一些可以连接LED、示波器、显示管等来了解如AT89C51、两机之间通信原理、DS12C887等的工作原理及组成部分作用的了解。
6
1004402121计科本101 黄远利
7
1004402121计科本101 黄远利
8
1004402121计科本101 黄远利
9
本文档为【单片机课程设计报告---数码管显示4X4矩阵键盘按键号】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。