单片机课程设计报告.doc_第1页
单片机课程设计报告.doc_第2页
单片机课程设计报告.doc_第3页
单片机课程设计报告.doc_第4页
单片机课程设计报告.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

成都理工大学单片机课程设计报告姓名:XXX 班级:测控一班学号:xxxxxxxxxxxxx日期:2011年12月一 系统设计要求1, 基本参数:电源电压:DC5V 系统时钟:6MHZ 键盘:44行列式键盘 显示输出:4位数码管和24只发光二极管动态显示 扩展口:1个2, 电路特点:输入:采用44行列式键盘输入,各按键的功能可根据用户需要定义,从而编写从简单到复杂的应用试验程序,特别适合编写和调试子程序。输出:4位数码管与24只发光二级管采用动态显示方式,既可学习动态显示的编程方法,还可以熟悉定时中断的编程方法。拓展口:利用P3口作为扩展口,既可作I/O口扩展,也可利用其第二功能进行扩展,应用灵活,可扩展性强。例如用串口可简单实现全双工串口通讯,再加上INT0、INT1、T0、T1口可实现外中断和计数功能。3,例程使用说明: 本电路板上的按键,定义了数字键09和功能键F114及“+”、“-”键,需使单片机实现如下功能:F1:计算功能 按F1键进入计算功能,数据与显示归零,按数字键输入数据,按“+”、“”进行加减运算,数码管显示键入数据或运算结果。F2: 时钟功能 按F2键后进入时钟显示,数码管显示为时间状态F3:时间设置功能 按F3键进入时间设置功能,当前设置位闪烁,键入数字设定时间,设定完成后按F2确认。F4: 跑马灯功能 按F4键有四种跑马灯模式循环切换,当然也可以通过编程实现更多的样式。二 系统硬件设计1 硬件设计思路根据系统设计要求所规定的硬件硬件设计、实验。进行必要的工艺结构设计,制作出印刷电路板,组装后即完成了硬件设计2. 硬件电路组成及原理图系统主要由一块AT89C51芯片、电源电路、时钟电路和复位电路组成最小系统,由一个44行列式键盘、4位七段数码管、24个发光二级管扩展外设及一个8口的IC插座连接INT0、INT1、T0、T1、RXD、TXD、电源和地端。流程图:开始初始化时钟、标识位初始化调用键入测试子程序有键输入调用显示子程序计算开启 时钟开启调用计算子程序 调用时钟子程序按F1键进入计算显示 按F2键进入时钟显示按数字键0-9输入数据 按F3键进入时间设置功能按+、-进行加减运算 键入数字设定时间显示数据或结果 按F2确定 结束三 系统程序设计用等值伪指令定义SUDAT00 EQU 40H ;加(减数)SUDAT01 EQU 41HSUDAT02 EQU 42HSUDAT03 EQU 43HSUDAT10 EQU 44H ;加(被减数)SUDAT11 EQU 45HSUDAT12 EQU 46HSUDAT13 EQU 47HDISPDAT0 EQU 29H ;显示数据区DISPDAT1 EQU 2AHDISPDAT2 EQU 2BHDISPDAT3 EQU 2CHDISPDAT4 EQU 2DHDISPDAT5 EQU 2EHDISPDAT6 EQU 2FHDISPLONG EQU 31H ;显示长度DISPCON EQU 32H ;显示计位KEYDAT EQU 30H ;键码HOURH EQU 34H ;时间数据HOURL EQU 35HMINH EQU 36HMINL EQU 37HLEDMOD EQU 39H ;流水灯模式SUCON EQU 3AH ;输入计数SUBIT EQU 20H.1 ;减标示DP EQU 20H.2 ;秒显标示KEYBIT EQU 20H.3 ;有键码标示SU EQU 20H.4 ;计算标示TIME EQU 20H.5 ;时间标示TIMESET EQU 20H.6 ;时间设置标示主程序:ORG 0000HAJMP STARTORG0003HRETIORG000BHAJMPTIME0ORG0013HRETIORG001BHLJMP TIME1ORG0023HRETIORG0050HSTART:MOVA,#00HMOVR0,#20HMOVR1,#30HLOOP0:MOVR0,AINCR0DJNZR1,LOOP0 MOV SP,#50H MOV DISPLONG,#07 SETB RS0 SETB RS1 MOV R0,#DISPDAT0 MOV R2,#200 MOV R3,#120 MOV R4,#00 MOV R5,#00 MOV R6,#0FEH MOV R7,DISPLONG CLR RS0 MOV R2,#50 MOV R3,#30 CLR RS1 MOV LEDMOD,#02 MOV DISPLONG,#07 MOV DISPCON,#07 MOV KEYDAT,#0FFH SETB TIME MOV TL0,#0AH ;1E定时2.5MS MOV TH0,#0F7HMOVIE,#8AH ;开T0,T1MOVTMOD,#11H ;定时方式1 SETBTR0 MOV TL1,#00H ;定时10MS MOV TH1,#0DCH SETB TR1MAIN: ACALL KEY JNB KEYBIT,MAIN1 ACALL DOKEYMAIN1: JB TIME,MAIN2 JB TIMESET,MAIN2 JB SU,MAIN3MAIN2: MOV R0,#HOURH MOV R1,#DISPDAT0 MOV R2,#04HMAINLOOP: MOV A,R0 ;时间转七段码送显示数据区 MOV DPTR,#TAB MOVC A,A+DPTR MOV C,DP MOV ACC.7,C MOV R1,A INC R0 INC R1 DJNZ R2,MAINLOOP SJMP MAINMAIN3: MOV R0,#SUDAT00 ;计算数转段码送显区 MOV R1,#DISPDAT0 MOV R2,#04H SJMP MAINLOOPTAB:DB40H,79H,24H,30H,19HDB12H,02H,78H,00H,10H DB 7FH,7FH,7FH,7FH,7FH,7FH;0A-0FF全黑子程序:(1)显示子程序R0显示数址,R6位选值, R7显示计数,DISPL0NG显示数长度;DISPDATA0显示数据区首址DISPLAY: MOV P2,#0FFH MOV P0,R0 MOV P2,R6 INC R0 DJNZ R7,DISPLAY1 MOV R7,DISPLONG MOV R0,#DISPDAT0 MOV R6,#0FEH SJMP DISPOUTDISPLAY1: MOV A,R6 RL A MOV R6,ADISPOUT: RET(2)键盘扫描程序KEYDAT存放键码,双键按下只认前键,KEYBIT有键标示KEY: MOV P1,#0F0H MOV A,P1 ORL A,#0FH XRL A,#0FFH JZ KEYOUT0 MOV A,#60H LCALL DELAY MOV P1,#0F0H MOV A,P1 ORL A,#0FH XRL A,#0FFH JZ KEYOUT0 MOV P1,#0FEH ;KEYDAT存放键码 JNB P1.4,KEY1 JNB P1.5,KEY2 JNB P1.6,KEY3 JNB P1.7,KEY4 MOV P1,#0FDH JNB P1.4,KEY5 JNB P1.5,KEY6 JNB P1.6,KEY7 JNB P1.7,KEY8 MOV P1,#0FBH JNB P1.4,KEY9 JNB P1.5,KEY10 JNB P1.6,KEY11 JNB P1.7,KEY12 MOV P1,#0F7H JNB P1.4,KEY13 JNB P1.5,KEY14 JNB P1.6,KEY15 JNB P1.7,KEY16 MOV KEYDAT,#0FFH CLR KEYBITKEYOUT0: AJMP KEYOUT1KEY1: MOV KEYDAT,#0AH SJMP KEYOUTKEY2: MOV KEYDAT,#09H SJMP KEYOUTKEY3: MOV KEYDAT,#08H SJMP KEYOUTKEY4: MOV KEYDAT,#07H SJMP KEYOUTKEY5: MOV KEYDAT,#0BH SJMP KEYOUTKEY6: MOV KEYDAT,#06H SJMP KEYOUTKEY7: MOV KEYDAT,#05H SJMP KEYOUTKEY8: MOV KEYDAT,#04H SJMP KEYOUTKEY9: MOV KEYDAT,#0CH SJMP KEYOUTKEY10: MOV KEYDAT,#03H SJMP KEYOUTKEY11: MOV KEYDAT,#02H SJMP KEYOUTKEY12: MOV KEYDAT,#01H SJMP KEYOUTKEY13: MOV KEYDAT,#0DH SJMP KEYOUTKEY14: MOV KEYDAT,#0EH SJMP KEYOUTKEY15: MOV KEYDAT,#00H SJMP KEYOUTKEY16: MOV KEYDAT,#0FHKEYOUT: SETB KEYBIT MOV P1,#0F0H MOV A,P1 ORL A,#0FH XRL A,#0FFH JNZ KEYOUT MOV A,#100H LCALL DELAYKEYOUT1: RET(3)键盘处理,SU计算标志,TIME时间标志,TIMSET时间设置标志;SUCON计算输入位数 ,TSETCON时间设置位数;DISPCON显示位数;SUDAT00-03加数(减数),SUDAT10-13 加数(被减数);LEDMOD流水灯模式, TSETCON时间设置位数,DISPCON显示位数;ADDBIT加法标示,SUBBIT减法标示DOKEY: MOV A,KEYDAT CLR C SUBB A,#10H ;大于16为错码 JNC DONEXT CLR C MOV A,KEYDAT SUBB A,#0AH ;大于10为功能键,小于10为数字键 JC NEXT MOV B,#03 MUL AB MOV DPTR,#DOFKEY ;功能键处理 JMP A+DPTRDOFKEY: LJMP DOFKEY1 LJMP DOFKEY2 LJMP DOFKEY3 LJMP DOFKEY4 LJMP DOFKEY5 LJMP DOFKEY6 NOP NOPDONEXT: LJMP DOKEYOUTNEXT: LJMP DOSKEYDOFKEY1: ;计算功能 LCALL TIMDB JNB TIMESET,DOFKEY11 PUSH PSW SETB RS0 SETB RS1 MOV R2,#200 MOV R3,#120 POP PSWDOFKEY11: SETB SU ;SU计算标志 CLR TIME ;TIME时间标志 CLR TIMESET ;TIMSET时间设置标志 MOV SUCON,#04H ;SUCON计算输入位数 SETB DP CLR SUBIT MOV SUDAT00,#00H MOV SUDAT01,#00H MOV SUDAT02,#00H MOV SUDAT03,#00H MOV SUDAT10,#00H MOV SUDAT11,#00H MOV SUDAT12,#00H MOV SUDAT13,#00H LJMP DOKEYOUTDOFKEY2: ;计时功能 LCALL TIMDB JNB TIMESET,DOFKEY21 PUSH PSW SETB RS0 SETB RS1 MOV R2,#200 MOV R3,#120 POP PSWDOFKEY21: SETB TIME CLR SU CLR TIMESET MOV SUCON,#00H SETB DP LJMP DOKEYOUTDOFKEY3: ;时间设置功能 LCALL TIMDB SETB TIMESET CLR TIME CLR SU MOV SUCON,#00H SETB DP LJMP DOKEYOUTDOFKEY4: ;流水灯功能 MOV A,LEDMOD CLR C SUBB A,#01H JNC DOFKEY40 MOV LEDMOD,#03 MOV DISPLONG,#04H LJMP DOKEYOUTDOFKEY40: MOV LEDMOD,A MOV DISPLONG,#07H ;DISPLONG显示位数 MOV A,LEDMOD CJNE A,#02H,DOFKEY41 MOV DISPDAT4,#00H MOV DISPDAT5,#00H MOV DISPDAT6,#00H LJMP DOKEYOUTDOFKEY41: MOV DISPDAT4,#24H MOV DISPDAT5,#92H MOV DISPDAT6,#49H LJMP DOKEYOUTDOFKEY5: ;加号处理 MOV R4,SUDAT00 MOV R5,SUDAT01 MOV R6,SUDAT02 MOV R7,SUDAT03 MOV R0,SUDAT10 MOV R1,SUDAT11 MOV R2,SUDAT12 MOV R3,SUDAT13 LCALL BADD MOV SUCON,#04H CLR SUBIT LJMP DOKEYOUTDOFKEY6: ;减号处理 MOV R4,SUDAT00 MOV R5,SUDAT01 MOV R6,SUDAT02 MOV R7,SUDAT03 MOV R0,SUDAT10 MOV R1,SUDAT11 MOV R2,SUDAT12 MOV R3,SUDAT13 LCALL BADD MOV SUCON,#04H SETB SUBIT LJMP DOKEYOUTDOSKEY: ;数字键处理 JB SU,DOSKEY1 JB TIMESET,DOSKEY2 ;时间设定 LJMP DOKEYOUTDOSKEY1: MOV A,SUCON CJNE A,#04H,DOSKEY10 MOV SUDAT00,#00H MOV SUDAT01,#00H MOV SUDAT02,#00H MOV SUDAT03,#00HDOSKEY10: MOV A,SUCON JZ DOKEYOUT MOV SUDAT00,SUDAT01 MOV SUDAT01,SUDAT02 MOV SUDAT02,SUDAT03 MOV SUDAT03,KEYDAT DEC SUCON LJMP DOKEYOUTDOSKEY2: MOV A,SUCON ; 设定时间 ADD A,SUCON MOV DPTR,#DOSKEY20 JMP A+DPTRDOSKEY20: SJMP DOSKEY21 SJMP DOSKEY22 SJMP DOSKEY23 SJMP DOSKEY24DOSKEY21: MOV A,KEYDAT ;设定小时高位 CLR C SUBB A,#03 JNC DOKEYOUT MOV HOURH,KEYDAT SJMP DOSKEY25DOSKEY22: MOV A,HOURH ;设定小时低位 CJNE A,#02,NE1 MOV A,KEYDAT CLR C SUBB A,#4 JNC DOKEYOUTNE1: MOV HOURL,KEYDAT SJMP DOSKEY25DOSKEY23: MOV A,KEYDAT ;设分高位 CLR C SUBB A,#6 JNC DOKEYOUT MOV MINH,KEYDAT SJMP DOSKEY25DOSKEY24: MOV MINL,KEYDAT ;设分低位DOSKEY25: LCALL SU10T08 LCALL TIMDB INC SUCON MOV A,SUCON CLR C SUBB A,#4 JC DOKEYOUT MOV SUCON,#00HDOKEYOUT: CLR KEYBIT MOV KEYDAT,#0FFH ;0FFH为无键码指示 RET(4)TIME0;用第三组寄存器,MINL分钟低位,MINH分钟高位;HOURL小时低位,HOURH小时高位;R4分钟数60,R5小时数24 ,R2为2.5MS计数,R3为0.5S计数;DP秒闪标示TIME0: ;T0计时 PUSH ACC MOV F0,C PUSH PSW SETB RS0 SETB RS1 MOV TL0,#0AH ;1E定时2.5MS MOV TH0,#0F7H SETB TR0 ACALL DISPLAY ;0.25MS显示一位 DJNZ R2,TIMEOUT MOV R2,#200 ;200*0.25MS=0.5S JB SU,TIME00 CPL DPTIME00: DJNZ R3,TIMEOUT MOV R3,#120 ;120*0.5S=60S INC R4 ;R4计分钟值,满60向R5进位 MOV A,R4 CLR C SUBB A,#60 JC TIME01 MOV R4,#00 INC R5 ;R5计小时值TIME01: MOV A,R4 ;将R5值化为十进制数 MOV B,#10 DIV AB MOV MINH,A MOV MINL,B MOV A,R5 CLR C SUBB A,#24 JC TIME02 MOV R5,#00TIME02: MOV A,R5 MOV B,#10 DIV AB MOV HOURH,A MOV HOURL,BTIMEOUT: POP PSW MOV C,PSW.1 POP ACC RETI(5)TIME1TIME1: ;T1计时,用于跑马灯和控制时间设置闪烁 PUSH ACC ;R2计数时间闪烁频率 MOV F0,C ;r3计数跑马灯频率 PUSH PSW ;R4保存时间闪动初值 CLR RS0 ;第二组寄存器 SETB RS1 MOV TL1,#00H ;定时10MS MOV TH1,#0DCH SETB TR1 JNB TIMESET,TI10 DJNZ R2,TI10 MOV R2,#50 MOV A,SUCON MOV R0,#HOURH ADD A,R0 MOV R0,A MOV A,R0 CJNE A,#0AH,TI11 MOV A,R4 MOV R0,A SJMP TI10TI11: MOV A,R0 MOV R4,A MOV R0,#0AHTI10: MOV A,LEDMOD CJNE A,#02H,TI12 DJNZ R3,TI1OUT MOV R3,#15 ACALL LED SJMP TI1OUTTI12: DJNZ R3,TI1OUT MOV R3,#60 ACALL LEDTI1OUT: POP PSW MOV C,PSW.1 POP ACC RETI(6)DELAYDELAY: ;延时程序 ,时间常数在ACC PUSH ACCDELAY1: DJNZ ACC,$ POP ACC DJNZ ACC,DELAY RET(7)流水灯子程序LEDMOD模式,流水灯数据在DISPDAT4-6LED: MOV A,LEDMOD ADD A,LEDMOD MOV DPTR,#LED0 JMP A+DPTRLED0: SJMP MODL1 SJMP MODL2 SJMP MODL3 MOV DISPLONG,#04H RET RETMODL1: MOV C,DISPDAT6.7 ;右移动 MOV A,DISPDAT4 RLC A MOV DISPDAT4,A MOV A,DISPDAT5 RLC A MOV DISPDAT5,A MOV A,DISPDAT6 RLC A MOV DISPDAT6,A RETMODL2: MOV C,DISPDAT4.0 ;左移动 MOV A,DISPDAT6 RRC A MOV DISPDAT6,A MOV A,DISPDAT5 RRC A MOV DISPDAT5,A MOV A,DISPDAT4 RRC A MOV DISPDAT4,A RETMODL3: MOV C,DISPDAT4.7 ;灯从左全亮后又到全灭 CPL C MOV A,DISPDAT5 RLC A MOV DISPDAT5,A MOV A,DISPDAT6 RLC A MOV DISPDAT6,A MOV A,DISPDAT4 RLC A MOV DISPDAT4,A RET (8)十进制加法子程序 ;入口R0-3,R4-7,出口R4-7SUADD: MOV A,R3 ADD A,R7 DA A MOV C,ACC.4 ANL A,#0FH MOV R7,A MOV A,R2 ADDC A,R6 DA A MOV C,ACC.4 ANL A,#0FH MOV R6,A MOV A,R1 ADDC A,R5 DA A MOV C,ACC.4 ANL A,#0FH MOV R5,A MOV A,R0 ADDC A,R4 DA A MOV R4,A RET(9)DOBM求补码DOBM: ;求补码 MOV A,#99H CLR C SUBB A,R4 MOV R4,A MOV A,#09H CLR C SUBB A,R5 MOV R5,A MOV A,#09H CLR C SUBB A,R6 MOV R6,A MOV A,#0AH CLR C SUBB A,R7 MOV R7,A RET (10)BUM 负数显示数BUM: ;负数显示数(补码还原) MOV A,#99H CLR C SUBB A,R4 MOV R4,A MOV A,#09H CLR C SUBB A,R5 MOV R5,A MOV A,#09H CLR C SUBB A,R6 MOV R6,A MOV A,#09H CLR C SUBB A,R7 MOV R7,A MOV R0,#00H MOV R1,#00H MOV R2,#00H MOV R3,#01H ACALL SUADD ANL A,#0FH MOV R4,A RET (11)BADD 带符号十进制加法BADD: ;带符号十进制加法 JNB SUBIT,BADD1 ACALL DOBM ;负时求补码BADD1: ACALL SUADD ;相加 ANL A,#0E0H JZ BADD2 MOV A,R4 ANL A,#0FH ORL A,#90H MOV R4,A MOV SUDAT10,R4 MOV SUDAT11,R5 MOV SUDAT12,R6 MOV SUDAT13,R7 ACALL BUM MOV SUDAT00,R4 MOV SUDAT01,R5 MOV SUDAT02,R6 MOV SUDAT03,R7 RETBADD2: MOV A,R4 ANL A,#0FH MOV R4,A MOV SUDAT10,R4 MOV SUDAT11,R5 MOV SUDAT12,R6 MOV SUDAT13,R7 MOV SUDAT00,R4 MOV SUDAT01,R5 MOV SUDAT02,R6 MOV SUDAT03,R7 RET (12) 十进制化为16进制 SU10T08: ;十进制化为16进制 PUSH PSW SETB RS0 SETB RS1 MOV A,HOURH MOV B,#1

温馨提示

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

评论

0/150

提交评论