单片机课程设计报告数码管显示4X4矩阵键盘按键号.docx
- 文档编号:9980373
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:7
- 大小:64.75KB
单片机课程设计报告数码管显示4X4矩阵键盘按键号.docx
《单片机课程设计报告数码管显示4X4矩阵键盘按键号.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报告数码管显示4X4矩阵键盘按键号.docx(7页珍藏版)》请在冰豆网上搜索。
单片机课程设计报告数码管显示4X4矩阵键盘按键号
课程设计报告书
设计名称:
单片机原理与应用
题目:
数码管显示4X4矩阵键盘按键号专业:
计算机科学与技术
日期:
2012年6月11日
一.设计目的:
1)了解单片机系统实现LED动态显示的原理及方法;
2)较为详细了解8051芯片的性能;
3)能够了解到单片机系统的基本原理,了解单片机控制原理;
4)掌握AT89C51程序控制方法;
5)掌握AT89C51C语言中的设计和学会分析程序,进而能够根据自己的需要编写代码;
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)启动keiuvision32)新建工程命名为单片机的C语言设计与应用
3)新建文件并另存为C51c.c4)在SourceGroop1导入文件5)编写代码,并生成C语言设计与应用.hex文件。
6)在Proteus中设计电路图
7)将keil与Proteus联机调试,记下实验记录,得出实验结果。
三.设计程序原理:
(包含仿真图和流程图)
1)主程序流程图
2)程序流程图
:
结束,返回
3)仿真图
四.程序代码
#include
#defineucharunsignedchar
#defineuintunsignedint
//段码
ucharcodeDSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
0x88,0x83,0xc6,0xa1,0x86,0x8e,0x00};
sbitBEEP=P3^7;
//上次按键和当前按键的序号,该矩阵中序号范围0~15,16表示无按键
ucharPre_KeyNo=16,KeyNo=16;
//延时
voidDelayMS(uintx)
{uchari;
while(x--)for(i=0;i<120;i++);
}
//矩阵键盘扫描
voidKeys_Scan()
{ucharTmp;
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列的哪一列
{case1:
KeyNo=0;break;
case2:
KeyNo=1;break;
case4:
KeyNo=2;break;
case8:
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
{case1:
KeyNo+=0;break;
case2:
KeyNo+=4;break;
case4:
KeyNo+=8;break;
case8:
KeyNo+=12;
}
}
//蜂鸣器
voidBeep()
{
uchari;
for(i=0;i<100;i++)
{DelayMS
(1);
BEEP=~BEEP;
}
BEEP=0;}
//主程序
voidmain()
{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.
六.实验体会:
这次的实验提高了我的设计能力与对电路的分析能力。
同时在软件的编程方面得到了很大的提高,使编程能力得到加强,在此同时对所学的单片机知识得到很大的巩固与加强。
本次实验熟悉单片机的使用功能,熟悉了KeiluVision进行程序调试,利用proteus7.8进行硬件设计。
在本实验中,我明白了4X4矩阵键盘按键号是用按键组成的,通过编写C语言程序显示管是完全可以显示出我们想要的信息,在以后的实验中我们可以通过一些可以连接LED、示波器、显示管等来了解如AT89C51、两机之间通信原理、DS12C887等的工作原理及组成部分作用的了解。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 报告 数码管 显示 X4 矩阵 键盘 按键