ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:531.74KB ,
资源ID:11917835      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-11917835.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机课设矩阵键盘控制七段数码管闪烁.docx)为本站会员(b****6)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

单片机课设矩阵键盘控制七段数码管闪烁.docx

1、单片机课设矩阵键盘控制七段数码管闪烁电气工程学院单片机原理及其应用第x次课外设计报告组 号: No. xxx 组 长: xxxxxxxxxxxxxxxxxx 组 员: xxxxxxxxxxxxxxxxxx 组 员: xxxxxxxxxxxxxxxxxx 设计时间: xxxxxxxxxxxxxxxxxx 评定成绩: 评定教师: 设计内容:利用单片机、1个按钮、4*4矩阵键盘和1位共阳数码管,实现显示闪烁控制功能。要求:按下数字键,将按下键对应位置值(0F)显示在数码管上;按下按钮,显示以0.5秒间隔闪烁;再次按下按钮,显示闪烁停止。摘 要:单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,

2、而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。从二十世纪九十年代开始,单片机技术就已经发展起来,随着时代的进步与科技的发展,目前该技术的实践应用日渐成熟,单片机被广泛应用于各个领域。现如今,人们越来越重视单片机在智能电子技术方面的开发和应用,单片机的发展进入到新的时期,无论是自动测量还是智能仪表的实践,都能

3、看到单片机技术的身影。电子信息技术与单片机技术相融合,有效提高了单片机应用效果。作为计算机技术中的一个分支,为智能化电子设备的开发和应用提供了新的出路,实现了智能化电子设备的创新与发展。单片机也被称为单片微控器,属于一种集成式电路芯片。在单片机中主要包含CPU、只读存储器ROM和随机存储器RAM等,多样化数据采集与控制系统能够让单片机完成各项复杂的运算,无论是对运算符号进行控制,还是对系统下达运算指令都能通过单片机完成。由此可见,单片机凭借着强大的数据处理技术和计算功能可以在智能电子设备中充分应用。简单地说,单片机就是一块芯片,这块芯片组成了一个系统,通过集成电路技术的应用,将数据运算与处理能

4、力集成到芯片中,实现对数据的高速化处理。关键字:单片机;实时时钟;AT89C51(1)任务分析:对题目做较详细的要求分析,按模块化原则进行功能分解利用单片机、1个按钮、4*4矩阵键盘和1位共阳数码管,实现显示闪烁控制功能。要求:按下数字键,将按下键对应位置值(0F)显示在数码管上;按下按钮,显示以0.5秒间隔闪烁;再次按下按钮,显示闪烁停止。题目要求用4*4矩阵式键盘进行扫描检测按下了什么键;再通过一个按钮来控制显示的数是否闪烁;最后用一位共阳极数码管将结果显示出来。数字输入模块:这里采用矩阵式键盘的中断方式扫描,设为外中断1。闪烁控制模块:再设置外中断0来控制数码管显示数字是否闪烁。数字显示

5、模块:最后通过一位共阳极数码管将数字显示出来。(二)方案设计:图2.1:系统总框图1、硬件设计:图2.2:原理图器件选择:AT89C52芯片:1片 排阻RX8(470):1个电阻(470):3个 74LS21四输入与门:1个共阳极数码管:1个 按钮:18个1MHZ晶振:1个 电解电容(1F):1个电容(30F):2个 电源:3个P1口作输入口:P10P13为列,P14P17为行,组成4*4矩阵键盘P3口作输入口:P32和P33分别为中断0和中断1P0口作输出口:P00P07将段码输出给数码管显示利用两个电容与晶振构成一个稳定的自激振荡器,XTAL1引脚为输入端,XTAL2引脚为输出端。2、软件

6、设计:图2.3:软件流程图(三)调试方案:首先根据题意用Proteus画出仿真图,再用keil软件编写源程序代码,保存运行后将代码编译成一个hex文件,然后将proteus和keil联调,点击工具菜单栏中的“debug”,选择“start/stop VSM Debugging”开始调试。1、调试过程:在将keil文件与Proteus仿真联调时,由于对软件联调不熟悉,不知道如何将两者结合在一起进行调试,后来通过查阅课本并结合老师讲的联调方法,去下载了VDM51.dll文件,将其分别复制到proteus安装文件下的MODELS目录下,以及keil安装文件下的C51BIN目录下,再分别对keil和p

7、roteus进行设置完成联调的初步准备。随后编写程序编译无误后生成Hex文件,在Proteus仿真软件中加入Hex文件后,点击运行按钮,观测实验现象。刚运行时数码管不显示任何数字,当点击矩阵键盘上的0F,数码管显示对应数字,再点击BLINK按钮,数码管上的数字开始以0.5S间隔闪烁,然后点击矩阵键盘上的0F中不同按键,数码管变成对应数字以0.5S闪烁,再次点击BLINK 按钮,数码管数字停止闪烁,再次点击BLINK按钮,数码管又开始以0.5S闪烁,实验现象符合预期效果,调试完成。2、运行效果:图3.1 仿真硬件图图3.2:点击运行时数码管无显示图3.3:点击矩阵键盘“F”,数码管显示“F”图3

8、.4:点击“BLINK”,数码管显示数字开始闪烁图3.5:闪烁时点击矩阵键盘“A”,数码管显示“A”并闪烁图3.6:再次点击“BLINK”,数码管显示数字停止闪烁proteus仿真并不是实际的情况,速度无法和单片机相比,一般只是用proteus检验程序是否符合预期,但是精确的测试还是要在单片机上完成。而且proteus仿真无法模拟实际中会出现的特殊情况,现实中的很多误差都会造成运行效果和仿真结果有出入。(四)设计总结:通过本次实验,我们用Proteus仿真实现了用一个4*4矩阵键盘,一个按钮,实现了按下数字键,将按下键对应位置值(0F)显示在数码管上;按下按钮,显示以0.5秒间隔闪烁;再次按下

9、按钮,显示闪烁停止。在本次试验中,通过综合运用本专业所学课程的理论基础,使我们对AT89C51单片机的功能有了更深层次的了解,了解了单片机的基本结构,提高了计算能力,绘制仿真图的能力,我们深刻意识到,想要完全掌握AT89C51单片机还有很长的路要走,还有很高的山要翻,但我们绝不会因此而退却,当攀过一座又一座山峰,我们就会成为最高的山峰。在本次实验中,我们也遇到了些许问题,程序出错,硬件仿真不能实现预期结果以及更优方案选择等等。比如在实验中我们调出了矩阵键盘显示功能后在考虑如何实现闪烁时,就考虑了很多语句,最后选择用ifelse语句。又比如我们做完后又想到可不可以再优化一下:按键检测中开始我们是

10、令列为高电平,然后循环扫描行而检测出是什么按键;经过改良后,我们先令列为高电平检测行是否为低电平从而确定行的位置,在令行为高电平检测列是否为低电平从而确定列位置,两个位置在通过“ keyval=h*4+l”确定键值。同时经过本次实验,我们对以前学习的数模电,C语言课程有了全面的复习,对这学期的课程也有了更深层次的了解,独立思考的能力也有所提高,在今后的学习中,我们考虑的不仅仅局限于实现功能,还要考虑到各个方面,给出最优方案。(五)参考文献,附录:1、参考文献:1张毅刚等.单片机原理及应用C51编程+Proteus仿真(第二版).北京:高等教育出版社,2016.2、附录:程序代码:#includ

11、e #define uchar unsigned charuchar dis16=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e; /共阳极数码管字符0F对应的段码unsigned int time;bit blink; /定义闪烁标志uchar keyval; /存储键值bit keyflag; /定义显示标志sbit L1=P10;sbit L2=P11;sbit L3=P12;sbit L4=P13;sbit H1=P14;sbit H2=P15;sbit H3=P16;sbi

12、t H4=P17;void delay(time) /延时函数 unsigned int j; for(j=0;jtime;j+) void main() /主函数 IT0=1; /外部中断0 为边沿触发 IT1=1; /外部中断1 为边沿触发 EX0=1; /允许外部中断0中断 EX1=1; /允许外部中断1中断 EA=1; /总中断允许 keyflag=0; blink=0; while(1) /等待中断 P1=0xf0; if(keyflag) if(blink) /以0.5S闪烁 P0=diskeyval; delay(500000); P0=0xff; delay(500000);

13、else P0=diskeyval; /直接显示 void int0() interrupt 0 using 0 /外中断0的中断函数 EX0=0; blink=blink; EX0=1;void int1() interrupt 2 using 1 /外中断1的中断函数 uchar h,l; EX1=0; keyflag=1; P1=0xf0; if(H1=0) h=0; /确定行值 if(H2=0) h=1; if(H3=0) h=2; if(H4=0) h=3; P1=0x0f; if(L1=0) l=0; /确定列值 if(L2=0) l=1; if(L3=0) l=2; if(L4=0) l=3; keyval=h*4+l; /确定键值 EX1=1;

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2