单片机设计与实训-设计报告.docx_第1页
单片机设计与实训-设计报告.docx_第2页
单片机设计与实训-设计报告.docx_第3页
单片机设计与实训-设计报告.docx_第4页
单片机设计与实训-设计报告.docx_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机设计与实训设计报告题 目: 姓 名: 班 级:学 号:指导老师:提交日期: 目录摘要11.设计背景21.1任务阐述21.2任务分析22.设计方案22.1系统方案设计22.2最小系统设计22.3单元电路设计32.4数码管显示电路52.5矩阵键盘电路53.方案实施63.1原理阐述63.2仿真结果64.程序设计84.1程序编写85.系统调试115.1软件测试115.2硬件调试126.总结与体会12参考文献13附录一14附件二15附件三21简易按键操作小游戏设计摘要: 近年来随着计算机在社会领域的渗透,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。关键词: 单片机 最小系统 Proteus Keil 矩阵键盘301.设计背景1.1任务阐述自制一个单片机最小系统,包括串口下载、复位电路。由系统随机生成099的数字在数码管上显示,操作人员必须在2S内按下对应的按键,按键正确获得一分,在2分钟内,对得分进行累加,到时后,由数码管显示得分值。游戏的启动、暂停(继续)可以由按钮控制。1.2任务分析 设计一个简易按键操作小游戏主要是设计一个单片机最小系统,单片机的最小系统分为四个部分,分别是晶振电路、复位电路、电源和AT89C51单片机。2.设计方案2.1系统方案设计 其原理图如图2.1。图2-1系统原理图2.2最小系统设计 单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路、按键输入、显示输出等。单片机接口电路主要用来连接计算机和其它外部设备,以下列举几个模块的原理及功能:复位电路:由电容串联电阻构成,由图并结合电容电压不能突变的性质,可以知道当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定。晶振电路:典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)/12MHz(产生精确的US级时歇,方便定时操作)。单片机:一片AT89S51或其他51系列兼容单片机。接口电路:具有人机交互接口。具有一定的可扩展性,单片机I/O口可方便地与其他电路板连接。2.3单元电路设计2.3.1MCU控制器简介AT89C51(如图2-2所示)是一种带4K字节FLASH存储器(FPEROMFlashProgrammableandErasableReadOnlyMemory)128*8字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,2个16位定时器/计数器,一个6向量2级中断结构,可编程串行通道低功耗的闲置和掉电模式,有片内振荡器和时钟电路,全静态工作0Hz-24MHz。的低电压、高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL的AT89S51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。图2-3 AT89C51引脚图2.3.2复位电路 单片机的置位和复位,都是为了把电路初始化到一个确定的状态,一般来说,单片机复位电路作用是把一个例如状态机初始化到空状态,而在单片机内部,复位的时候单片机是把一些寄存器以及存储设备装入厂商预设的一个值。单片机复位电路原理是在单片机的复位引脚RST上外接电阻和电容,实现上电复位。当复位电平持续两个机器周期以上时复位有效。复位电平的持续时间必须大于单片机的两个机器周期。具体数值可以由RC电路计算出时间常数。复位电路由按键复位和上电复位两部分组成。图2-4复位电路图2.3.3晶振电路 单片机系统里都有晶振,在单片机系统里晶振作用非常大,全称叫晶体振荡器,它结合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟频率越高,那么单片机运行速度就越快,单片接的一切指令的执行都是建立在单片机晶振提供的时钟频率。在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十。高级的精度更高。有些晶振还可以由外加电压在一定范围内调整频率,称为压控振荡器(VCO)。晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。单片机晶振的作用是为系统提供基本的时钟信号。通常一个系统共用一个晶振,便于各部分保持同步。有些通讯系统的基频和射频使用不同的晶振,通过电子调整频率的方法保持同步。2.4数码管显示电路 LED数码管显示是利用半导体发光制成条形的发光二极管,封装在一起组成数字或其他符号形状。数码管根据公共端不同,分为共阴极和共阳极两种形式。 根据设计需要,本次选用共阴极数码管。由于一个数码管不能实现多位数显示,同时从节省I/O端口考虑,结合数电知识,利用两片74HC573扩展单片机的I/O口,两片74HC573的输出分别接6位7段共阴数码管的段选端和公共端。图2-7数码管显示仿真电路2.5矩阵键盘电路矩阵键盘检测的原理和方法:矩阵键盘每个按键两端都与单片机I/O口相连,因此在检测时需人为通过单片机I/O口送出低电平。检测时,先送一列为低电平,其余几列全为高电平(此时确定了列数),然后立即轮流检测一次各行是否有低电平,若检测到某一行为低电平(这是有确定了行数),则便可以确认当前被按下的键是哪一列哪一行,用同样方法轮流送各列一次低电平,再轮流检测一次各行是否变为低电平,这样既可检测完所有的按键,当有键按下时便可判断出按下的是哪一个键。其工作原理是从0列开始顺序行扫描即该行输出为0。每扫描一行读入列线数据从0开始列检查找该行输出为0的列若无则顺序扫描下一行并检查其各列若找到某列线为0则该列与检查行交叉的按键为被按下的键。从0行0列开始顺序将按键编号就可以按扫描的值得到按键的值。本设计使用的是2个独立按键其功能设置为输入数字、开始/暂停。此外还需要消除按键在闭合或断开时的抖动。消抖的方法可采用消抖电路(RS触发器时锁电路硬件消除抖动),也可采用延时方式软件消除抖动(延时后再重读,以跳过抖动期),本设计采用软件消抖方式。3.方案实施3.1原理阐述 简易按键操作小游戏是基于单片机最小系统的一个系统设计,主要是通过编写程序,然后将写好的程序导入单片机使其能运行,将键盘串入单片机的输入口,数码管串入单片机的输出口,再连入LED指示灯。单片机最小系统的原理为:单片机最小系统包括振荡器电路,复位电路,单片机EA端接高电平(Vcc),P0口需要接上拉电阻(100K)。振荡器电路选用12MHz晶振,两个20pf电容,振荡器电路接单片机XTAL1和XTAL2引脚。复位电路原理:由电容串联电阻构成,由图并结合电容电压不能突变的性质,可以知道当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定。晶振电路原理:它结合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟频率越高,那么单片机运行速度就越快,单片接的一切指令的执行都是建立在单片机晶振提供的时钟频率。3.2仿真结果 通过在电脑上进行器件的选择以及线路的连接,其仿真图以及结果图如下图3-2系统仿真设计图图3-2仿真结果图4.程序设计4.1程序编写#include#includevoid main()unsigned char OverFlag = 0; /用户输入溢出标志位,当用户输入两个数字该位会为P0 = 0xff;/数码管初始化为零P2 = 0x00;TMOD = 0x01;/T0 工作方式1TH0 = (65536-20000)/256;/高八位TL0 =(65536-20000)%256;/低八位/TR0 = 1;/定时器0开始计时TR0 = 0;/关闭定时器0的计时,等待按键才能开始计时ET0 = 1;/打开定时器0中断EA = 1; /打开总中断P1 = 0xf0;YES = 1; /初始化回答指示灯不亮NO = 1;while(1)/键盘扫描程序P1 = 0xf0;if(P1&0x70)!= 0x70)/如果有按键按下delay(); /机械消抖if(P1&0x70)!= 0x70)UserSetUserFlag = Check(); /返回键值if(UserSetUserFlag = 11) /如果按下0 则将当前用户输入改为0,并将本次输入保存为上次输入,同时更新移位标志位 if(NormalFlag=1) UserSetUserFlag = 0; LastNumUserFlag = UserSetUserFlag; UserFlag+; else UserSetUserFlag = 10; else if(UserSetUserFlag = 10) /如果按下提交答案,忽略本次的用户输入,用上次的用户输入来替换本次的输入,同时溢出标志位置1,完成标志位为1 UserSetUserFlag = LastNumUserFlag; if(NormalFlag=1) /只有在系统运行时按键才有效 OKFlag + ; OverFlag = 1; else if(UserSetUserFlag = 12)NormalFlag+;if(NormalFlag = 1) TR0 = 1; UserSet0 = LastNum0; UserSet1 = LastNum1; /如果系统正常运行标志位为1 打开定时器0,开始计时,恢复显示内容if(NormalFlag = 2) NormalFlag = 0;TR0 = 0; UserSet0 = 10; UserSet1 = 10; /关闭定时器0,清除显示内容else if(NormalFlag=1) /只有在系统运行时按键才能有效LastNumUserFlag = UserSetUserFlag; UserFlag+;else UserSetUserFlag = 10; /正常状态下,将本次的输入保存到上次的输入,同时更新移位标志位if(UserFlag = 2) UserFlag = 0; /OverFlag = 1; 防止溢出的措施,使用户输入一直为2位if(NormalFlag=1) N=0;RefSet0 = sysNum_2s / 10; /系统正常运行时,更新系统的随机数,指示灯亮RefSet1 = sysNum_2s % 10;/RefSet0 = (Ref - (unsigned char)(Ref%10)/10;/RefSet1 = Ref % 10;elseN=1; /系统的指示灯灭,随机数数码管显示-故障RefSet0 = 11;RefSet1 = 11; if(OverFlag = 1) /如果用户输入了两个数据则进行判断if(RefSet0*10+RefSet1 = UserSet0*10+UserSet1) /如果用户输入和系统的随机数相同if(NormalFlag = 1) & (OKFlag = 1) /如果系统正常运行,并且用户已经提交答案Score+;ScoreShow0 = Score / 10;ScoreShow1 = Score % 10; YES = 0; /改变回答正误指示灯,并且更新积分NO = 1; else /改变回答正误指示灯,NO = 0;YES = 1;OKFlag = 0; /允许错误重新输入OverFlag = 0; /溢出标志位清零/S_2 = OFF; T_2 = OFF; /如果需要显示时间R_1 = ON;P0 = displayRefSet0;delay();R_1 = OFF;R_2 = ON;P0 = displayRefSet1;delay();R_2 = OFF;U_1 = ON;P0 = displayUserSet0;delay();U_1 = OFF;U_2 = ON;P0 = displayUserSet1;delay();U_2 = OFF;S_1 = ON;P0 = displayScoreShow0;delay();S_1 = OFF;S_2 = ON;P0 = displayScoreShow1;delay();S_2 = OFF;T_1 = ON;P0 = display(unsigned char)(Num_2s/10);delay();T_1 = OFF;T_2 = ON;P0 = display(unsigned char)(Num_2s%10);delay();5.系统调试5.1软件测试选择好器件,设置参数,正确连接,单片机导入程序,开始运行,首先点击复位按键,复位后点击开始游戏,黄灯亮,根据数码管上显示的产生的随机数输入数字点击提交,如果正确则绿灯亮,数码管上相应积一分,如果错误或者超过设定的两秒提交答案则红灯亮,超过两秒后输入数字显示的数码管自动清零。其运行仿真图如图5-1所示。图5-1仿真运行图图中数码管从左至右依次显示为随机数、用户输入数、正确个数、时间计数。5.2硬件调试1. 领取器件2. 排好位置,进行焊接,其间要注意引脚的位置3. 装上单片机等器件,调试电路4. 打开电源,按下复位按钮将电路复位,按下开始按钮(#键)开始游戏,根据数码管显示的数字相应按下数字,再按下提交按钮(*键)5. 观察可得按下开始游戏时黄灯亮,提交答案后数字正确并且提交时间小于2s则绿灯闪亮,并且数码管上分数显示加一分。输入数字错误或者超过两秒提交后红灯闪亮,数码管显示输入的部分超过两秒后自动清零。6. 游戏一次循环为2min,到达2min之后系统自动停止,这时需要重新开始游戏。6.总结与体会本次的课程设计实验使我收获良多。 锻炼了动手能力,本次设计,使我意识到自己的焊接技术还需要加强,要好好布局,焊接的时候不要虚焊。使用飞线的时候一定不要相互交叉,要做到飞线也要有一定的排列顺序。在调试的过程中,也学到了很多东西。调试的过程中一定要保持头脑清醒,当电路出现故障时要静下心来检查电路,考虑多方面的可能性,排查故障。上电过程也要注意,一开始就要搞清楚到底是多少伏的电压,到底是直流还是交流电,引脚图也要确定,错误之后很难改,数码管也要考虑是共阴极还是共阳极。实验中一定要细心。参考文献1李群芳,张士军,黄建等.单片微型计算机与接口技术.电子工业出版社,20092陈光东,赵性初.单片微型计算机原理与接口技术.华中科技大学出版社,20053高峰.单片微机应用系统设计及实用技术.机械工业出版社,20044孙余凯.数字集成电路实用技术.电子工业出版社,20105江晓.数字电子技术.西安电子科技大学出版社,2009附录一:元件清单序号元件数量1四位数码管221nf电容230.1uf电容14晶振15排阻16发光二极管378电阻9按钮附件二:程序清单#include#include/定义键盘的按键sbit H_1 = P10;sbit H_2 = P11;sbit H_3 = P12;sbit H_4 = P13;sbit V_1 = P14;sbit V_2 = P15;sbit V_3 = P16;sbit N = P30; /定义系统状态输出口/定义数码管的位选sbit R_1 = P20;sbit R_2 = P21;sbit U_1 = P22;sbit U_2 = P23;sbit S_1 = P24;sbit S_2 = P25;sbit YES = P26; /用户回答正确指示灯sbit NO = P27; /用户回答错误指示灯sbit T_1 = P31; /时间显示的十位sbit T_2 = P32; /时间显示的个位/数码管如果是低电平位选#define ON 0#define OFF 1/数码管如果是高电平位选/#define ON 1/#define OFF 0/一个自己定义的随机数组unsigned char sys =26,42,54,55,44,50, 3 ,0 ,12,84,64,68,40,65,68,52,62,25,76,22,27,25,6 ,35,23,64,99,19,21,99,88,74,81,61,6 ,97,93,72,64,48,51,19,85,69,22,53,19,56,5 ,50,81,96,60,95,80,66,34,62,68; unsigned char UserSet2=10,10; /用户的输入存放位置unsigned char RefSet2 = 7,7; /系统的随机数存放位置unsigned char ScoreShow2 = 0; /用户得分的存放位置unsigned char Score = 0; /用户得分unsigned char Num_2s=0; /2s的时钟计时unsigned char Norma

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论