为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

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

2017-09-16 7页 doc 55KB 759阅读

用户头像

is_153723

暂无简介

举报
单片机课程设计报告---数码管显示4X4矩阵键盘按键号单片机课程设计报告---数码管显示4X4矩阵键盘按键号 设计名称: 单片机原理与应用 题 目: 数码管显示4X4矩阵键盘按键号 专 业: 计算机科学与技术 日 期: 2012 年 6 月 11日 1004402121计科本101 黄远利 一(设计目的: 1) 了解单片机系统实现LED动态显示的原理及方法; 2) 较为详细了解8051芯片的性能; 3) 能够了解到单片机系统的基本原理,了解单片机控制原理; 4) 掌握AT89C51程序控制方法; 5) 掌握AT89C51 C语言中的设计和学会分析程序,进而能够根...
单片机课程设计报告---数码管显示4X4矩阵键盘按键号
单片机课程报告---数码管显示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,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索