《单片机设计报告(共10页).doc》由会员分享,可在线阅读,更多相关《单片机设计报告(共10页).doc(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上 单片机及嵌入式系统课程设计 学 院 专业班级 学 号 姓 名 指导老师 2016年 6 月 20 日专心-专注-专业一、 设计目的1. 巩固和掌握对“单片机及嵌入式系统”课程内容的认识和理解,提高应用水平。2. 掌握汇编语言程序的编制方法。3. 熟悉键盘控制和七段码管及74系列芯片的使用。二、 系统结构设计中通过键盘输入到单片机中,由程序控制找到输入点,计算键码,调用显示模块,把输入的数值通过LED显示器显示出来。 1. 判断键盘中有无键按下: 将全部行线P1.0到P1.3置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低
2、电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。 2. 判断闭合键所在的位置: 在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:将行线置为低电平,即在置行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。检测的方法是P1.4-P1.7输出全“1”,读取P1.0-P1.3的状态,若P1.0-P1.3为全“0”,则无键闭合,否则有键闭合。3. 去除键抖动:当检测到有键按下后,延时一段时间再做下一步的检测判断。4. 识别:当确定键按下时,通过软件计算键码找到
3、相对位置的数据调用显示模块把数字或字母显示出来或者实现其他功能。各主要部件的功能:1. 矩阵键盘:44矩阵键盘,按键传送输入信息; 2. 单片机AT89C51:采用软件编程来实现按键信息的提取和转换;3. 七段数码管:用于显示最终被单片机转换过的按键信息。三、 系统原理1. 单片机简介及主系统电路 AT89C51单片机是51系列单片机的一个成员,是8051单片机的简化版。内部自带2K字节可编程FLASH存储器的低电压、高性能COMS八位微处理器,与Intel MCS-51系列单片机的指令和输出管脚相兼容。由于将多功能八位CPU和闪速存储器结合在单个芯片中,因此,AT89C2051构成的单片机系
4、统是具有结构最简单、造价最低廉、效率最高的微控制系统,省去了外部的RAM、ROM和接口器件,减少了硬件开销,提高了系统的性价比。其最小系统电路图如下:2. 数码管工作原理LED是发光二极管的英文缩写,LED显示器是由发光二极管构成的,它在单片机中的应用非常普遍。通常所说的LED显示器由7个发光二极管组成。此外,显示器中还有一个圆点型发光二极管以dp表示,用于小数点表示。通过七个发光二极管亮暗的不同组合,可以显示多种数字、字母以及其它符号。LED显示中的发光二极管共有两种连接方法:共阳极接法:把发光二极管的阳极连在一起构成公共阳极。使用时公共阳极接+5V。这样阴极端输入低电平的段发光二极管就导通
5、点亮,而输入高电平的则不亮。共阴极接法:把发光二极管的阴极连在一起构成公共阴极。使用时公共阴极接地。这样阳极端输入高电平的段发光二极管就导通点亮,而输入低电平的则不亮。 控制数码管驱动级的控制电路有静态式和动态式两类: 静态驱动:它是指每个数码管都要用一个译码器译码驱动。 动态驱动:它是所的数码管使用一个专门的译码驱动器,使各位数码管逐个轮流显示,它的扫描速度极快,因此显示效果与静态驱动相同。 本次的设计采用共阳极接法和动态驱动。数码管硬件电路图3. 44矩阵键盘的工作原理键盘是由若干按键组成的开关矩阵,是嵌入式控制系统的一种输入部件。键盘分两种:一种是独立式按键,另一种是矩阵式按键。如图所示
6、。独立式按键用的比较少,可以直接与单片机的P1口某一位进行连接,通过判断这一位的状态知道是否有键输入。在应用中通常需要数量较多的按键,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图所示。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。 矩阵式键盘矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,
7、上图中,行线通过电阻接正电源,并将列线所接的单片机的I/O口作为输出端,而行线所接的I/O口则作为输入。这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。四、 系统软件框图开始否是结束显示数据查表得键码有无按键按下输出列扫描信号初始化读行信号五、 软件代码ORG 0000HLJMP MAINORG 0100HMAIN: MOV 50H, #00HMOV 51H, #00HMOV 52H, #00HMOV 53H, #00HMOV 54H, #00HMOV 55H, #00HBEGI
8、N:MOV R5, OOHMOV A, P2ANL A, #0FHCJNE A, #0FH, INK1 ACALL DIS AJMP BEGININK1:ACALL DL1MS MOV A, P2 ANL A, #0FHCJNE A, #0FH, INK2AJMP BEGININK2:MOV P0,#FEHMOV A, P2JNB ACC.0,KEY0JNB ACC.1,KEY4JNB ACC.2,KEY8JNB ACC.3,KEYCMOV P0,#FDHMOV A, P2JNB ACC.0,KEY1JNB ACC.1,KEY5JNB ACC.2,KEY9JNB ACC.3,KEYDMOV P
9、0,#FBHMOV A, P2JNB ACC.0,KEY2JNB ACC.1,KEY6JNB ACC.2,KEYAJNB ACC.3,KEYEMOV P0,#FDHMOV A, P2JNB ACC.0,KEY3JNB ACC.1,KEY7JNB ACC.2,KEYBJNB ACC.3,KEYFLJMP STTKKEY0:MOV A, #00HACALL PUFBUFACALL DISAJMP STTKKEY1:MOV A, #01HACALL PUFBUFACALL DISAJMP STTKKEY2:MOV A, #02HACALL PUFBUFACALL DISAJMP STTKKEY3:M
10、OV A, #03HACALL PUFBUFACALL DISAJMP STTKKEY4:MOV A, #04HACALL PUFBUFACALL DISAJMP STTKKEY5: MOV A, #05HACALL PUFBUFACALL DISAJMP STTKKEY6:MOV A, #06HACALL PUFBUFACALL DISAJMP STTKKEY7:MOV A, #07HACALL PUFBUFACALL DISAJMP STTKKEY8:MOV A, #08HACALL PUFBUFACALL DISAJMP STTKKEY9:MOV A, #09HACALL PUFBUFA
11、CALL DISAJMP STTK KEYA:MOV A, #0AHACALL PUFBUFACALL DISAJMP STTKKEYB:MOV A, #0BHACALL PUFBUFACALL DISAJMP STTKKEYC:MOV A, #0CHACALL PUFBUFACALL DISAJMP STTKKEYD:MOV A, #0DHACALL PUFBUFACALL DISAJMP STTKKEYE:MOV A, #0EHACALL PUFBUFACALL DISAJMP STTKKEYF:MOV A, #0FHACALL PUFBUFACALL DISAJMP STTKPUTBUF
12、:PUSH 00HPUSH ACCMOV A, R5MOV R0, APOP ACCMOV R0, ADEC R5CJNE R5, #4FH, GOBACKMOV R5, #55HGOBACK:POP 00HRETDIS: PUSH ACCPUSH 00HPUSH 03HMOV R0, #50HMOV R3, 0DFHAA2: MOV A, R0MOV DPTR, #AA1MOVC A, A+DPTRMOV P1, AMOV, P0, R3ACALL DL1MSMOV A, R3JNB ACC.0, AA3RR AMOV R3, AINC R0AJMP AA2AA3:POP 03HPOP 00HPOP ACCRETAA1:DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H DB 7FH, 6FH, 77H, 7CH, 39H, 5EH, 79H, 71HDL1MS:MOV R7, #01HDL0: MOV R6, #0FFHDJNZ R6, DL1DJNZ R7, DL0RETSTTK: ACALL DISMOV P0 , #00HMOV A, P2ANL A, #0FHCJNE A, #0FH, STTKAJMP BEGINEND