单片机课程设计报告数码管显示4X4矩阵键盘按键号.docx

上传人:b****8 文档编号:9980373 上传时间:2023-02-07 格式:DOCX 页数:7 大小:64.75KB
下载 相关 举报
单片机课程设计报告数码管显示4X4矩阵键盘按键号.docx_第1页
第1页 / 共7页
单片机课程设计报告数码管显示4X4矩阵键盘按键号.docx_第2页
第2页 / 共7页
单片机课程设计报告数码管显示4X4矩阵键盘按键号.docx_第3页
第3页 / 共7页
单片机课程设计报告数码管显示4X4矩阵键盘按键号.docx_第4页
第4页 / 共7页
单片机课程设计报告数码管显示4X4矩阵键盘按键号.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

单片机课程设计报告数码管显示4X4矩阵键盘按键号.docx

《单片机课程设计报告数码管显示4X4矩阵键盘按键号.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报告数码管显示4X4矩阵键盘按键号.docx(7页珍藏版)》请在冰豆网上搜索。

单片机课程设计报告数码管显示4X4矩阵键盘按键号.docx

单片机课程设计报告数码管显示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等的工作原理及组成部分作用的了解。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1