欢迎来到沃文网! | 帮助中心 分享知识,传播智慧!
沃文网
全部分类
  • 教学课件>
  • 医学资料>
  • 技术资料>
  • 学术论文>
  • 资格考试>
  • 建筑施工>
  • 实用文档>
  • 其他资料>
  • ImageVerifierCode 换一换
    首页 沃文网 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    设计键盘与显示课程设计采用8031单片机设计键盘与显示.doc

    • 资源ID:856512       资源大小:2.25MB        全文页数:15页
    • 资源格式: DOC        下载积分:20积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    微信扫一扫登录
    下载资源需要20积分
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,下载更划算!
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    设计键盘与显示课程设计采用8031单片机设计键盘与显示.doc

    1、动力与能源学院2011级自动化专业 微控制器原理课程设计报告目 录第一部分 设计题目 2第二部分 设计要求 2第三部分 硬件设计 2 1 、 硬件设计原理 2 2 、 硬件设计电路 2第四部分 软件设计 3 1 、 软件设计思想 32 、 流程图 43 、 源程序 5第五部分 仿真功能 13第六部分 收获与总结14第七部分 附录 14一、 设计题目采用8031单片机设计键盘与显示。二、 设计要求 1. 采用4位数码管显示通过键盘所按的数;2. 设计键盘与显示硬件电路要求键盘有12个按键(09),一个确认键,一个开关键;3编写软件,要求将按键数字显示在数码管上,具体格式:按数字键n个,然后按确认

    2、键,显示刚才键入的数。如果两次确认键之间按键数超过4位,则只显示按确认键最近的4位;如果两次确认键之间按键数少于4位,则显示实际按确位数;先按的键显示在高位。开关键用于显示的开关,按一开显示,再按一次关显示;4详细叙说软件设计方法。三、 硬件设计1、 硬件设计原理(1)的矩阵键盘,第1行与89C51的P3.0口相连,第2行与89C51的P3.1口相连,第3行与89C51的P3.2口相连;第1列与89C51的P3.4口相连,第2列与89C51的P3.5口相连,第3列与89C51的P3.6口相连,第4列与89C51的P3.7口相连。用来检测哪个按键被按下。(2)4个数码显示管,由89C51的P0口

    3、通过两个74HC573芯片控制显示,其中P2.6通过控制一个573来控制段码输入(段选),P2.7控制另一个573从而控制位码的输入(位选)。2、 硬件电路图(1)独立矩阵键盘与8031单片机P3口的连接图:图1 (2)P0口控制数码管显示电路:图2(3)模拟仿真电路图:图3四、 软件设计1、 设计思想本题可分为两部分,一部分为键盘扫描,另一部分为显示,并且选定第三行第三列为“确定键”,第三行第四列为“显示键”。为了方便录入数据和显示,采用两个数组,一个作为接收数组,用来接收按键值,一个作为显示数组,作为动态扫描显示。采用赋值、读值的方法确定是否存在按键输入,若有按键输入,则依次按键位顺序赋给

    4、接收数组高位0到9中的值(即按键值),每次有按键输入时数组左移,以保证每次数组中保留的都是最近的四个输入值。设置变量作为判定显示开关的依据,显示开时,将接收数组中的值赋给显示数组,用动态扫描的办法使数码管显示录入值。2、 流程图开始 接收按键输入显示=1?确定键?否 否 是 是接收数组值赋给显示数组接收数组初始化数码管显示数字3、 源程序(含注释) #include #define int8 unsigned char #define int16 unsigned int sbit dula=P26; /读段码,申明U1锁存器的锁存端 sbit wela=P27; /读位码,申明U2锁存器的锁

    5、存端 /段码 code unsigned char seg_code=0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00; int8 pre_array4=0x0a,0x0a,0x0a,0x0a;/接收按键数组 int8 hold_array=0x0a,0x0a,0x0a,0x0a;/显示数组 int8 a=0,temp; /a控制显示与否即显示键 ,n与key确定 int8 key=0xff; /key初始值 /延时程序 void delay(unsigned int x) unsigned char t; while(x-) fo

    6、r(t=0;t120;t+); void main() int m; while(1) /扫描第一行是否有按键输入,若有则temp&0xf0!=0xf0,而后进入switch语句P3=0xfe; temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(10); /延时去抖操作 if(temp!=0xf0) /确定是否有输入 temp=P3; switch(temp) case 0xee: /第一行第一列 key=0; break; case 0xde: /第一行第二列 key=1; break; case 0xbe: /第一行第三列 key=2; break

    7、; case 0x7e: key=3; break; while(temp!=0xf0) /等待按键释放 temp=P3; temp=temp&0xf0; /把最近的键盘输入值存入接收数组,保留最近四位 pre_array0= pre_array1; pre_array1= pre_array2 ; pre_array2= pre_array3; pre_array3=key; /扫描第二行是否有按键输入 P3=0xfd; temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(20); if(temp!=0xf0) temp=P3; switch(temp

    8、) case 0xed: key=4; break; case 0xdd: key=5; break; case 0xbd: key=6; break; case 0x7d: key=7; break; while(temp!=0xf0) temp=P3; temp=temp&0xf0; pre_array0= pre_array1; pre_array1= pre_array2 ; pre_array2= pre_array3; pre_array3=key; /扫描第三行是否有按键输入 P3=0xfb; temp=P3; temp=temp&0xf0; if(temp!=0xf0) del

    9、ay(10); if(temp!=0xf0) temp=P3; switch(temp) case 0xeb: key=8; break; case 0xdb: key=9; break; case 0xbb: /确定键 (此时按键为第3行第3列) /由按键存储数组到显示输出数组 hold_array0=pre_array0; hold_array1=pre_array1; hold_array2=pre_array2; hold_array3=pre_array3; /初始化for(m=0;m4;m+)pre_arraym=10; /按键接受数组准备下一轮的接收 break; case 0x

    10、7b: /显示键a (此时按键为第3行第4列) a=a; break; while(temp!=0xf0) temp=P3; temp=temp&0xf0; if(key=8|key=9) pre_array0= pre_array1; pre_array1= pre_array2 ; pre_array2= pre_array3; pre_array3=key; /显示if(a) /显示键a为1输出,为0黑屏 /动态扫描法输出 dula=0; P0=seg_codehold_array0; dula=1; dula=0; wela=0; P0=0xfe; /选中第一位数码管 wela=1;

    11、wela=0; delay(3); dula=0; P0=seg_codehold_array1; dula=1; dula=0; wela=0; P0=0xfd; wela=1; wela=0; delay(3);dula=0; P0=seg_codehold_array2; dula=1; dula=0; wela=0; P0=0xfb; wela=1; wela=0; delay(3);dula=0; P0=seg_codehold_array3; dula=1; dula=0; wela=0; P0=0xf7; wela=1; wela=0; delay(3); else /显示键a为

    12、0,输出黑屏 dula=0; P0=seg_code10; /0x00 dula=1; dula=0; wela=0; P0=0xf0; wela=1; wela=0; delay(3); 五、功能仿真当按键的数目为n(n=4时,显示的是最近按下的四个。六、收获与总结通过本次课设,使我学会了PROTEUS软件和KEILC软件的基本使用。使我能够综合运用微型计算机技术、C语言程序设计以及数字电路、模拟电路等课程中学到的知识做一些简单的电子产品的仿真,使我对C语言有了更好的掌握和运用,用其进行软件编程更加顺手。初步掌握了KEILC和PROTEUS等软件,可以用C语言或汇编语言编写一个较完整的实用程

    13、序。本次课设使我初步了解了单片机接口应用开发的全过程:分析需求、设计原理图、选用元器件、布线、编程、调试等。更重要的是,使我明白了无论是设计硬件电路还是编写相应的软件程序,我们应该时刻都要仔细认真。因为在这个过程中哪怕是出现一个小小的错误,都会导致不能仿真出正确的结果甚至根本不会出结果。课程设计的过程是一个不断学习的过程,我们需要充分利用好网络资源来解决我们在课设过程中遇到的问题,只有将遇到的问题解决好,才能真正的学到一些知识。七 、附录 元件清单: 器件 规格 数量 电阻 220 1 电阻 10k 2 电容 22pF 2 电容 10uF 2 STC89C52RC 1 晶振 11.0592MHz 1 数码管 共阴极 4 4X4矩阵键盘 1- 14 -


    注意事项

    本文(设计键盘与显示课程设计采用8031单片机设计键盘与显示.doc)为本站会员(精***)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给沃文网发消息,QQ:2622162128 - 联系我们

    版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

    Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1

    陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922