- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1004402121计科本101 黄远利
PAGE
PAGE 1
课程设计报告书
设计名称: 单片机原理与应用
题 目: 数码管显示4X4矩阵键盘按键号 专 业: 计算机科学与技术
日 期: 2012 年 6 月 11日
一.设计目的:
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)编写代码,并生成C语言设计与应用.hex文件。6) 在Proteus中设计电路图
7) 将keil与Proteus联机调试,记下实验记录,得出实验结果。
初始化三.设计程序原理:(包含仿真图和流程图)
初始化
1)主程序流程图
是否有按键按下
是否有按键按下
请按键标识
请按键标识
键值处理
键值处理
显示所有按键
显示所有按键
2)程序流程图
结束,返回
结束,返回
开始
开始
若有按键按下,显示键盘号
若有按键按下,显示键盘号
初始化
初始化
扫描键盘第一行
扫描键盘第一行
若无按键按下
若无按键按下
扫描键盘第二行
扫描键盘第二行
若无按键按下
若无按键按下
扫描键盘第三行:
扫描键盘第三行
若无按键按下
若无按键按下
扫描键第四行
扫描键第四行
若无按键按下
若无按键按下
结束,返回
结束,返回
3)仿真图
四.程序代码
#includereg51.h
#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;
//延时
void DelayMS(uint x)
{ uchar i;
while(x--) for(i=0;i120;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=P14^0x0f; //按键后 f0 变成 XXXX0000,X 中有 1 个为 0,三个仍为 1;高4位转移到低 4 位并异或得到改变的值
switch(Tm
您可能关注的文档
最近下载
- 口服国产托伐普坦片治疗肝硬化低钠血症的疗效观察.doc VIP
- 工程制图习题集(第3版)钟宏民 课后习题答案解析.pdf
- (青岛2024版)初中信息技术第一册 2.1 制作电子班牌 课件.pptx
- 新华师大版7年级上册数学全册课件(2024年秋新版教材).pptx
- 太阳能光热发电站安装调试技术.docx
- 手册三菱q系列plc培训.pdf
- 富士达各功能电梯地址码(1)(1).pdf VIP
- 10S505 柔性接口给水管道支墩.pptx VIP
- 序篇 不忘初心(第一课时)课件-2024-2025学年高中音乐人音版(2019)必修 音乐鉴赏.pptx VIP
- 2025年人教版三年级上册道德与法治精编知识点(新教材).pdf
文档评论(0)