单片机课程设计报告_第1页
单片机课程设计报告_第2页
单片机课程设计报告_第3页
免费预览已结束,剩余26页可下载查看

下载本文档

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

文档简介

1、成都理工大学单片机课程设计报告姓名:XXX班级:测控一班学号:XXXXXXXXXXXXX日期:2011年12月一.系统设计要求1, 基本参数:电源电压:DC5V 系统时钟:6MHZ 键盘:4X 4行列式键盘显示输出:4位数码管和24只发光二极管动态显示扩展口: 1个2,电路特点:输入:采用4X4行列式键盘输入,各按键的功能可根据用户需要定义,从而编写从简单到复杂的应用试验 程序,特别适合编写和调试子程序。输出:4位数码管与24只发光二级管采用动态显示方式,既可学习动态显示的编程方法,还可以熟悉定时 中断的编程方法。拓展口 :利用P3 口作为扩展口,既可作I/O 口扩展,也可利用其第二功能进行扩

2、展,应用灵活,可扩展性 强。例如用串口可简单实现全双工串口通讯,再加上 INTO、INT1、TO、T1 口可实现外中断和计数功能。 3,例程使用说明:本电路板上的按键,定义了数字键 09和功能键F114及“ +”、“- ”键,需使单片机实现如下功能:F1:计算功能按F1键进入计算功能,数据与显示归零,按数字键输入数据,按“+”、“-”进行加减运算,数码管显示键入数据或运算结果。F2:时钟功能按F2键后进入时钟显示,数码管显示为时间状态F3:时间设置功能按F3键进入时间设置功能,当前设置位闪烁,键入数字设定时间,设定完成后按F2确认。F4:跑马灯功能按F4键有四种跑马灯模式循环切换,当然也可以通

3、过编程实现更多的样式。系统硬件设计1 硬件设计思路根据系统设计要求所规定的硬件硬件设计、实验。进行必要的工艺结构设计,制作出印刷电路板,组 装后即完成了硬件设计2.硬件电路组成及原理图系统主要由一块AT89C51芯片、电源电路、时钟电路和复位电路组成最小系统,由一个4X4行列式键盘、4位七段数码管、24个发光二级管扩展外设及一个 8 口的IC插座连接INT0、INT1、T0、T1、RXD TXD电源和地端。流程图:开始初始化时钟、标识位初始化 调用键入测试子程序有键输入调用显示子程序计算开启时钟开启调用计算子程序调用时钟子程序按F1键进入计算显示按F2键进入时钟显示按数字键0-9输入数据按F3

4、键进入时间设置功能按+、-进行加减运算键入数字设定时间显示数据或结果结束按F2确定学习帮手.系统程序设计用等值伪指令定义SUDATOO 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 2EHD

5、ISPDAT6 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

6、;时间设置标示主程序:ORG 0000HAJMP STARTORG)003HRETIORG)00BHAJMP TIME0ORC0013HRETIORC001BHLJMP TIME1ORC0O23H RETIORC0050HSTART:MOA,#00HMOVR0,#20HMOVR1,#30HLOOP0:MOR0,AINC R0DJNZ R1,LOOP0MOVSP,#50HMOVDISPLONG,#O7SETBRS0SETBRS1MOVR0,#DISPDAT0MOVR2,#200MOVR3,#120MOVR4,#00MOVR5,#00MOVR6,#0FEHMOVR7,DISPLONGCLRRS0M

7、OVR2,#50MOVR3,#30CLRRS1MOVLEDMOD,#02MOVDISPLONG,#07MOVDISPCON,#07MOVKEYDAT,#0FFHSETBTIMEMOVTL0,#0AH ;1EMOVTH0,#0F7HMOVE,#8AH1;开 T0, T1,t-t r 、亠 r、MOVMOD,#11H;定时方式SETBTR0MOVTL1,#00H ;MOVTH1,#0DCHSETBTR1MAIN:ACALLKEYJNBKEYBIT,MAIN1定时2.5MS定时10MSACALL DOKEYMAIN1:JB TIME,MAIN2JB TIMESET,MAIN2JB SU,MAIN3M

8、AIN2: MOV RO,#HOURHMOV R1,#DISPDAT0MOV R2,#04HMAINLOOP:MOV A,R0;时间转七段码送显示数据区MOV DPTR,#TABMOVC A,A+DPTRMOV C,DPMOV ACC.7,CMOV R1,AINC R0INC R1DJNZ R2,MAINLOOPSJMP MAINMAIN3:MOV R0,#SUDAT00 ;计算数转段码送显区MOV R1,#DISPDAT0MOV R2,#04HSJMP MAINLOOPTAB:DB 40H,79H,24H,30H,19HDB 12H,02H,78H,00H,10HDB 7FH,7FH,7FH

9、,7FH,7FH,7FH;0A-0FF全黑子程序:(1) 显示子程序R0显示数址,R6位选值,R7显示计数QISPL0NG显示数长度QISPDATA0显示数据区首址DISPLAY:MOVP2,#0FFHMOVP0,R0MOVP2,R6INCR0DJNZR7,DISPLAY1MOVR7,DISPLONGMOVR0,#DISPDAT0MOVR6,#0FEHSJMPDISPOUTDISPLAY1:MOV A,R6RL AMOV R6,ADISPOUT:RET(2) 键盘扫描程序KEYDA存放键码,双键按下只认前键,KEYBIT有键标示KEY:MOV P1,#0F0HMOV A,P1ORL A,#0F

10、HXRL A,#0FFHJZ KEYOUT0MOV A,#60HLCALL DELAYMOV P1,#0F0HMOV A,P1ORL A,#0FHXRL A,#0FFHJZ KEYOUT0MOV P1,#0FEH ;KEYDAT存放键码JNB P1.4,KEY1JNB P1.5,KEY2JNB P1.6,KEY3JNB P1.7,KEY4MOV P1,#0FDHJNB P1.4,KEY5JNB P1.5,KEY6JNB P1.6,KEY7JNB P1.7,KEY8MOV P1,#0FBHJNB P1.4,KEY9JNB P1.5,KEY10JNB P1.6,KEY11JNB P1.7,KEY1

11、2MOV P1,#0F7HJNB P1.4,KEY13JNB P1.5,KEY14JNB P1.6,KEY15JNB P1.7,KEY16MOV KEYDAT,#0FFHCLR KEYBITKEYOUT0:AJMP KEYOUT1KEY1:MOV KEYDAT,#OAHSJMP KEYOUTKEY2:MOV KEYDAT,#09HSJMP KEYOUTKEY3:MOV KEYDAT,#08HSJMP KEYOUTKEY4:MOV KEYDAT,#07HSJMP KEYOUTKEY5:MOV KEYDAT,#OBHSJMP KEYOUTKEY6:MOV KEYDAT,#06HSJMP KEYOU

12、TKEY7:MOV KEYDAT,#05HSJMP KEYOUTKEY8:MOV KEYDAT,#04HSJMP KEYOUTKEY9:MOV KEYDAT,#0CHSJMP KEYOUTKEY10:MOV KEYDAT,#03HSJMP KEYOUTKEY11:MOV KEYDAT,#02HSJMP KEYOUTKEY12:MOV KEYDAT,#01HSJMP KEYOUTKEY13:MOV KEYDAT,#0DHSJMP KEYOUTKEY14:MOV KEYDAT,#0EHSJMP KEYOUTKEY15:MOV KEYDAT,#00HSJMP KEYOUTKEY16:MOV KEYD

13、AT,#OFH KEYOUT:SETB KEYBITMOV P1,#0F0HMOV A,P1ORL A,#0FHXRL A,#0FFHJNZ KEYOUTMOV A,#100HLCALL DELAYKEYOUT1:RET(3)键盘处理,SU计算标志,TIME时间标志,TIMSET时间设置标志;SUCOF计算输入位数,TSETCON时间设置位数QISPCON显示位数;SUDAT00-03加数(减数),SUDAT10-13加数(被减数);LEDMO流水灯模式,TSETCON时间设置位数 QISPCON1示位数 ;ADDBIT加法标示,SUBBIT减法标示DOKEY:MOVA,KEYDATCLRCS

14、UBBA,#10H;大于16为错码JNCDONEXTCLRCMOVA,KEYDATSUBBA,#0AH ;大于10为功能键,小于10为数字键JC NEXTMOVB,#03MULABMOVDPTR,#DOFKEY ;功能键处理JMPA+DPTRDOFKEY:LJMPDOFKEY1LJMPDOFKEY2LJMPDOFKEY3LJMPDOFKEY4LJMPDOFKEY5LJMPDOFKEY6NOPNOPDONEXT:LJMP DOKEYOUT NEXT:LJMP DOSKEYDOFKEY1:;LCALL TIMDBJNB TIMESETQOFKEY11PUSH PSWSETB RS0SETB RS1

15、MOV R2,#200MOV R3,#120POP PSWDOFKEY11:SETB SU;SUCLR TIME;TIMECLR TIMESET;TIMSETMOV SUCON,#04H;SUCONSETB DP计算功能计算标志时间标志 时间设置标志 计算输入位数CLR SUBITMOV SUDAT00,#00HMOV SUDAT01,#00HMOV SUDAT02,#00HMOV SUDAT03,#00HMOV SUDAT10,#00HMOV SUDAT11,#00HMOV SUDAT12,#00HMOV SUDAT13,#00H LJMP DOKEYOUT DOFKEY2:;计时功能LCA

16、LL TIMDBJNB TIMESET,DOFKEY21PUSH PSWSETB RS0SETB RS1MOV R2,#200MOV R3,#120POP PSW DOFKEY21:SETB TIMECLR SUCLR TIMESETMOV SUCON,#00HSETB DPLJMP DOKEYOUTDOFKEY3:;时间设置功能LCALL TIMDBSETB TIMESETCLR TIMECLR SUMOV SUCON,#OOHSETB DPLJMP DOKEYOUTDOFKEY4:;流水灯功能MOV A,L EDMODCLR CSUBB A,#01HJNC DOFKEY40MOV LEDM

17、OD,#03MOV DISPLONG,#04HLJMP DOKEYOUTDOFKEY40:MOV LEDMOD,A显示位数MOV DISPLONG,#07H ;DISPLONGMOV A,L EDMODCJNE A,#02H,DOFKEY41MOV DISPDAT4,#00HMOV DISPDAT5,#00HMOV DISPDAT6,#00HLJMP DOKEYOUTDOFKEY41:MOV DISPDAT4,#24HMOV DISPDAT5,#92HMOV DISPDAT6,#49HLJMP DOKEYOUTDOFKEY5:;加号处理MOV R4,SUDAT00MOV R5,SUDAT01M

18、OV R6,SUDAT02MOV R7,SUDAT03MOV R0,SUDAT10MOV R1,SUDAT11MOV R2,SUDAT12MOV R3,SUDAT13LCALL BADDMOV SUCON,#04HCLR SUBITLJMP DOKEYOUTD0FKEY6:;减号处理MOV R4,SUDAT00MOV R5,SUDAT01MOV R6,SUDAT02MOV R7,SUDAT03MOV R0,SUDAT10MOV R1,SUDAT11MOV R2,SUDAT12MOV R3,SUDAT13LCALL BADDMOV SUCON,#04HSETB SUBITLJMP DOKEYOU

19、T DOSKEY:;JB SU,DOSKEY1JB TIMESETQOSKEY2 ;LJMP DOKEYOUTDOSKEY1:MOV A,SUCONCJNE A,#04H,DOSKEY10MOV SUDAT00,#00HMOV SUDAT01,#00HMOV SUDAT02,#00HMOV SUDAT03,#00H DOSKEY10:MOV A,SUCONJZ DOKEYOUTMOV SUDAT00,SUDAT01MOV SUDAT01,SUDAT02MOV SUDAT02,SUDAT03MOV SUDAT03,KEYDATDEC SUCONLJMP DOKEYOUT DOSKEY2:MOV

20、A,SUCON ;ADD A,SUCONMOV DPTR,#DOSKEY20JMP A+DPTR DOSKEY20:SJMP DOSKEY21SJMP DOSKEY22数字键处理时间设定设定时间SJMP DOSKEY23SJMP DOSKEY24D0SKEY21:MOV A,KEYDAT ; 设定小时高位CLR CSUBB A,#03JNC DOKEYOUTMOV HOURH,KEYDATSJMP DOSKEY25DOSKEY22:MOV A,HOURH ; 设定小时低位CJNE A,#02,NE1MOV A,KEYDATCLR CSUBB A,#4JNC DOKEYOUTNE1:MOV HO

21、URL,KEYDATSJMP DOSKEY25DOSKEY23:MOV A,KEYDAT ;设分高位CLR CSUBB A,#6JNC DOKEYOUTMOV MINH,KEYDATSJMP DOSKEY25DOSKEY24:MOV MINL,KEYDAT ;设分低位DOSKEY25:LCALL SU10T08LCALL TIMDBINC SUCONMOV A,SUCONCLR CSUBB A,#4JC DOKEYOUTMOV SUCON,#00HDOKEYOUT:CLR KEYBITMOV KEYDAT,#0FFH ;0FFH为无键码指示RET(4) TIME0;用第三组寄存器,MINL分钟

22、低位,MINH分钟高位;HOURL小时低位,HOURHJ、时高位TIME0:;T0计时PUSHACCMOVF0,CPUSHPSWSETBRS0SETBRS1MOVTL0,#0AH ;1E定时2.5MSMOVTH0,#0F7HSETBTR0ACALL DISPLAY ;0.25MS显示一位DJNZR2,TIMEOUTMOVR2,#200;200*0.25MS=0.5SJBSU,TIME00CPLDPTIME00:DJNZR3,TIMEOUTMOVR3,#120;120*0.5S=60SINCR4;R4计分钟值,满60向MOVA,R4CLRCSUBBA,#60JCTIME01MOVR4,#00IN

23、CR5;R5计小时值TIME01:MOVA,R4 ;将R5值化为十进制数MOVB,#10DIVABMOVMINH,AMOVMINL,BMOVA,R5CLRCSUBBA,#24JCTIME02MOVR5,#00TIME02:MOVA,R5MOVB,#10DIVABMOVHOURH,AMOVHOURL,BTIMEOUT:R5进位;R4分钟数60,R5小时数24 ,R2为2.5MS计数,R3为0.5S计数;DP秒闪标示POP PSWMOV C,PSW.1POP ACC(5)TIME1TIME1:;T1PUSHACC;R:MOVF0,C;r3PUSHPSW;FCLRRS0;SETBRS1MOVTL1,

24、#00H;MOVTH1,#0DCHSETBTR1JNBTIMESET,TI10DJNZR2,TI10MOVR2,#50MOVA,SUCONMOVR0,#HOURHADDA,R0MOVR0,AMOVA,R0CJNEA,#0AH,TI11MOVA,R4MOVR0,ASJMPTI10MOVA,R0MOVR4,AMOVR0,#0AHMOVA,L EDMODCJNEA,#02H,TI12DJNZR3,TI1OUTMOVR3,#15ACALLLEDSJMPTI1OUTDJNZR3,TI1OUTMOVR3,#60ACALLLEDRETITI11TI10TI12计时,用于跑马灯和控制时间设置闪烁 计数时间闪烁

25、频率 计数跑马灯频率 保存时间闪动初值 第二组寄存器定时10MSTI1OUT:POP PSWMOV C,PSW.1POP ACCRETI(6) DELAYDELAY:;PUSH ACCDELAY1:DJNZ ACC,$POP ACCDJNZ ACC,DELAYRET(7)流水灯子程序 LEDMO模式,流水灯数据在LED:MOV A,L EDMODADD A,L EDMODMOV DPTR,#LED0JMP A+DPTRLED0:SJMP MODL1SJMP MODL2SJMP MODL3MOV DISPLONG,#O4HRETRETMODL1:MOV C,DISPDAT6.7 ;MOV A,D

26、ISPDAT4RLC AMOV DISPDAT4,AMOV A,DISPDAT5RLC AMOV DISPDAT5,AMOV A,DISPDAT6RLC AMOV DISPDAT6,ARETMODL2:MOV C,DISPDAT4.0 ;MOV A,DISPDAT6RRC AMOV DISPDAT6,AMOV A,DISPDAT5延时程序,时间常数在ACCDISPDAT4-6右移动左移动RRC AMOV DISPDAT5,AMOV A,DISPDAT4RRC AMOV DISPDAT4,A RETMODL3:灯从左全亮后又到全灭MOV CQISPDAT4.7 ;CPL CMOV A,DISPD

27、AT5RLC AMOV DISPDAT5,AMOV A,DISPDAT6RLC AMOV DISPDAT6,AMOV A,DISPDAT4RLC AMOV DISPDAT4,A RET(8) 十进制加法子程序 ;入口 R0-3,R4-7,出口 R4-7SUADD:MOVA,R3ADDA,R7DAAMOVC,ACC.4ANLA,#0FHMOVR7,AMOVA,R2ADDCA,R6DAAMOVC,ACC.4ANLA,#0FHMOVR6,AMOVA,R1ADDCA,R5DAAMOVC,ACC.4ANLA,#0FHMOVR5,AMOVA,R0ADDCA,R4DAAMOV R4,ARET(9) DOBM

28、求补码DOBM:; 求补码MOV A,#99HCLR CSUBB A,R4MOV R4,AMOV A,#09HCLR CSUBB A,R5MOV R5,AMOV A,#09HCLR CSUBB A,R6MOV R6,AMOV A,#0AHCLR CSUBB A,R7MOV R7,ARET(10) BUM负数显示数BUM:;负数显示数(补码还原)MOVA,#99HCLRCSUBBA,R4MOVR4,AMOVA,#09HCLRCSUBBA,R5MOVR5,AMOVA,#09HCLRCSUBBA,R6MOVR6,AMOVA,#09HCLRCSUBBA,R7MOVR7,AMOVR0,#00HMOVR1

29、,#00HMOVR2,#00HMOVR3,#01HACALLSUADDANL A,#OFHMOV R4,ARET(11) BADD带符号十进制加法BADD:;带符号十进制加法JNB SUBIT,BADD1 ACALL DOBM ;BADD1:ACALL SUADD ;负时求补码相加ANL A,#0E0HJZ BADD2MOVA,R4ANLA,#0FHORLA,#90HMOVR4,AMOVSUDAT10,R4MOVSUDAT11,R5MOVSUDAT12,R6MOVSUDAT13,R7ACALL BUMMOVSUDAT00,R4MOVSUDAT01,R5MOVSUDAT02,R6MOVSUDAT

30、03,R7RETBADD2:MOVA,R4ANLA,#0FHMOVR4,AMOVSUDAT10,R4MOVSUDAT11,R5MOVSUDAT12,R6MOVSUDAT13,R7MOVSUDAT00,R4MOVSUDAT01,R5MOVSUDAT02,R6MOVSUDAT03,R7RET(12)十进制化为SU10T08:;PUSHPSWSETBRS0SETBRS1MOV A,HOURH16进制十进制化为16进制MOVB,#10MULABADDA,HOURLMOVR5,AMOVA,MINHMOVB,#10MULABADDA,MINLMOVR4,APOPPSWRET(13)将时间计数化为十进制TIMDBJ将时间计数化为十进制PUSHPSWSETBRS0SETBRS1MOVA,R4 ;将R4值化为十进制数MOVB,#10DIVABMOVMINH,AMOVMINL,BMOVA,R5 ;MOVB,#10DIV AB将R5值化为十进制数MOV HOURH,AMOV HOURL,BPOP PSWRETEND四调试与下载启动Keil u Vision,在界面新建一个工程项目,再设置好工程项目软硬件调试环境,编译程序联机调试。在Proteus中按照原理图放置元器件,设置好各项参数,连接好电路图后,把

温馨提示

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

评论

0/150

提交评论