已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机与嵌入式系统作品设计报告专业: 电子信息科学与技术学生姓名: xxxxxxxxxxxxxxxxxxxxxxx 学号: 201108051010,21,24 指导教师: 杨宝亮完成日期:2013 年 12 月 28 日目录1 设计任务和性能指标.3 1.1 设计任务.错误!未定义书签。2 设计方案.32.1 任务分析. 32.2 方案设计. 33 系统软件设计.53.1 LED 的随机闪亮系统.53.2 按键比较系统. 53.3 数码管显示系统.53.4 LED 灯与按键比较设图.53.5 定时器 0 及中断响应.64 仿真及性能分析.64.1 仿真结果图. 64.2 仿真结果与分析. 6 5 心得体会.7 参考文献.9 附录 1 程序清单.91 设计任务1.1 设计任务利用单片机完成打地鼠的程序设计1. 基本要求(1) 将LED灯的随机状态表示出来(2) 将按键赋予对应的数值(3) 做出LED灯亮后的延时(4) 能够自己输入生命值和随机次数并在数码管上显示(5) 当随机LED灯亮后,按键赋予的值与之比对正确后加一分错误建生减值(6) 当生命值为零时程序停止并显示分数2 设计方案2.1 任务分析模拟打地鼠就是使用单片机来控制一些 LED 、按键和数码管,模拟真实打地鼠场景,分数和生命值显示时间等。2.2 方案设计1.硬件方案根据设计的要求可知,系统的硬件原理框图如图 5.2 所示。图 5.2 系统的硬件原理框图单片机可选用 AT89C51,它与 8051 系列单片机全兼容,但其内部带有 4KB 的 FLASH ROM,设计时无需外接程序存储器,为设计和调试带来极大的方便。南北向和东西向各采用 2 个数码管计时,同时需要对该方向的指示灯的点亮时间进行倒计时。键盘系统可以根据系统的需要设置不同的键的个数,可以选择线式键盘或矩阵式键盘,若单片机的 IO 口不够用时,可以考虑扩展 8255 或 8155 满足系统的要求。2. 软件方案根据设计要求,程序框图如图 5.3 所示。软件可由汇编语言完成,也可由 C 语言完成。软件设计可以分为以下几个功能模块:主程序:初始设置 LED 显示及键盘判断和数码管显示。计时程序模块:延时程序显示程序模块:完成 16 个发光二极管和 4 个 LED 数码管的显示驱动。键盘扫描程序模块:根据随机 LED 灯的显示判断按键的按下。主程序流程图3 系统软件设计3.1:LED 的随机闪亮系统,通过 LED 随机亮灭来模拟地鼠的随机状态。通过随机函数选取随机数,导入单片机让 LED 灯能够随机闪亮。3.2:按键比较系统,通过先给按键赋予初值,然后通过 LED 的亮灯的序号与之比对是否是对应的 LED 得分按键3.3:数码管显示系统,比较过后通过数码管来显示的分值与生命值。通过先打开位数开关,然后倒入显示的数来表示生命值与分值3.4:LED 灯与按键比较设计流程图3.5:定时器0 及中断响应4.仿真与性能分析4.1 仿真结果图5.2 仿真结果当通过数码管赋予生命值与随机次数后(第一个数码管为生命值,后三位为次数),LED灯开始随机闪亮。当按下开始对应的键后,数码管后三位开始显示分数。当生命值(英译:Health Point )为零时或者随机次数为零时结束并显示最后得分。开始赋予生命初值 3 与随机次数 10过程结果5 心得体会这次单片机课程设计历时三个星期的时间,在这三个星期里我们体验了从设计、画板、编程到调试的整个过程,让我们小小的体验了一次工程师的感觉。计划好设计方案后就开始画电路图,画好就开始进一步的确认。确认电路图无误后就开始依照设计流程图设计学出对应的程序,其中最大的问题就是随机函数的调用不知道如何去写,于是我们开始上网查找资料,几次试验后终于写出了随机函数成功的让了 LED 灯随机的亮了起来,接下来的按键对比与数码管的显示就比较好了,几次调试后也能后很好的工作。然后将几个板块最合在一起,修修改改后让他完美的结合在一起。这三周的时间说轻松也不轻松,说紧张却稍带着愉快的气氛,整个过程应该是充实的,时而惊喜,时而烦闷特别是最后调试阶段有一块调通了都会让我们高兴不已,当卡在某处时也确实是让人抓狂。总之通过这次课设,我们不但复习了过去所学,并且学到了一些新东西。更重要的是通过这一次切身实践,才使我们真正将理论与实际结合起来,并且遇到了很多实实在在的需要我们亲自解决的问题。通过解决这些问题,我们处理实际问题的能力有了很大提高,积累了我们的实践经验,以便为以后打下牢固的基础。而这些才是我们作为一名工科学生最宝贵的财富。参考文献百度随机函数的调用附录 1 程序清单#include#include #include #define uchar unsigned char uchar code led=0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7, 0x0f,0x1f,0x2f,0x3f,0x4f,0x5f,0x6f,0x7f,0xff; uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; uchar code num= 0xe0,0xd0,0xb0,0x70; int n=0,m=20,a,b,c,d,k,score,j; int button=16;void DelayTime_10ms(unsigned int DelayValue) unsigned int a,b; for(a=0;aDelayValue;a+) for(b=0;b1827;b+); voidlightseg()int i,j; for(i=0;i25;i+) for(j=0;j1;j+)P2=num3;P0=tablea;DelayTime_10ms(1);P2=0xff;P2=num2;P0=tableb;DelayTime_10ms(1);P2=0xff; P2=num1;P0=tablec;DelayTime_10ms(1);P2=0xff;P2=num0;P0=tabled;DelayTime_10ms(1);P2=0xff; voidlightseg_0()P2=num3;P0=tablea;DelayTime_10ms(1);P2=0xff;P2=num2;P0=tableb;DelayTime_10ms(1);P2=0xff; P2=num1;P0=tablec;DelayTime_10ms(1);P2=0xff;P2=num0;P0=tabled;DelayTime_10ms(1);P2=0xff; void butt() int i=1; unsigned char Temp=0; while(i)lightseg_0(); P3=0xfe;Temp=P3; Temp=Temp&0xf0; if(Temp!=0xf0)DelayTime_10ms(1);P3=0xfe;Temp=P3; Temp=Temp&0xf0; if(Temp!=0xf0) switch(Temp) case 0xe0:button=0;i=0;break; case 0xd0:button=1;i=0;break; case 0xb0:button=2;i=0;break; case 0x70:button=3;i=0;break; while(Temp!=0xf0)Temp=P3;Temp=Temp&0xf0;P3=0xfD;Temp=P3; Temp=Temp&0xf0; if(Temp!=0xf0)DelayTime_10ms(1);P3=0xfD;Temp=P3; Temp=Temp&0xf0; if(Temp!=0xf0) switch(Temp) case 0xe0:button=4;i=0;break; case 0xd0:button=5;i=0;break; case 0xb0:button=6;i=0;break; case 0x70:button=7;i=0;break; while(Temp!=0xf0)Temp=P3;Temp=Temp&0xf0;P3=0xfB;Temp=P3; Temp=Temp&0xf0; if(Temp!=0xf0)DelayTime_10ms(1);P3=0xfB;Temp=P3; Temp=Temp&0xf0; if(Temp!=0xf0) switch(Temp) case 0xe0:button=8;i=0;break; case 0xd0:button=9;i=0;break; case 0xb0:button=10;i=0;break; case 0x70:button=11;i=0;break; while(Temp!=0xf0)Temp=P3;Temp=Temp&0xf0;P3=0xf7;Temp=P3; Temp=Temp&0xf0; if(Temp!=0xf0)DelayTime_10ms(1);P3=0xf7;Temp=P3; Temp=Temp&0xf0; if(Temp!=0xf0) switch(Temp) case 0xe0:button=12;i=0;break; case 0xd0:button=13;i=0;break; case 0xb0:button=14;i=0;break; case 0x70:button=15;i=0;break; while(Temp!=0xf0) Temp=P3;Temp=Temp&0xf0; void setseg() butt();a=button;P2=num3;P0=tablea; butt();b=button;P2=num2;P0=tableb; butt();c=button;P2=num1;P0=tablec; butt();d=button;P2=num0;P0=tabled; score=b*100+c*10+d; void process()a+;b=0; c=0; d=0;TMOD=0X01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;while(1)butt(); void main()setseg(); lightseg(); process(); void rupt() interrupt 1 if(!a)P1=led16;while(1) lightseg(); if(score+1)=0)P1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全课件插图素材
- 小班学生安全教育课件
- 2025年招聘妇产科医护人员考试题库及答案1
- 2025年护师类之护师(初级)题库与答案
- 2025黑龙江省安全员B证考试题库附答案
- 咨询工程师继续教育节能试卷及答案
- 《煤矿地质工作规定》复习题版
- 专四08年完型与阅读部分真题及答案
- 党的基本理论知识试题含答案
- 建筑工地的安全培训课件
- 2025年甘肃省安全员《A证》考试题库及答案
- 2025年学生奶粉行业分析报告及未来发展趋势预测
- 2025普宁农商银行社会招聘笔试考试备考试题及答案解析
- 外墙干挂石材专项施工方案
- 挫折心理健康教育
- 2025年自考《人机工程学》试题及答案
- 2025年企业消防宣传月活动方案
- 文职人员职业方向
- 椴木衍生多孔碳的制备及其在锂二次电池中的应用研究
- 临时展览搭建与施工方案
- 2025天津宏达投资控股有限公司校园招聘18人笔试参考题库附带答案详解
评论
0/150
提交评论