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

下载本文档

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

文档简介

1、成都理工大学单片机课程设计报告姓名:XXX班级:测控一班学号:xxxxxxxxxxxxx日期:2011年12月一.系统设计要求1, 基本参数:电源电压:DC5V 系统时钟:6MHZ 键盘:4 X4行列式键盘显示输出: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芯片、电源电路、时钟电路和复位电路组成最小系统,由一个4 X4行列式键 盘、4位七段数码管、24个发光二级管扩展外设及一个 8 口的IC插座连接INTO、INT1、T0、T1、 RXD、TXD、电源和地端。'_丄& & &O w O G*!*/ M!xnST£TL¥KT1-二A0?1-_-:w=mrvMil;UL:-JM!3J"SfclJ

4、87;!1流程图:开始初始化时钟、标识位初始化 调用键入测试子程序有键输入调用显示子程序计算开启时钟开启调用计算子程序调用时钟子程序按F1键进入计算显示按F2键进入时钟显示按数字键0-9输入数据按F3键进入时间设置功能按+、-进行加减运算键入数字设定时间显示数据或结果结束按F2确定学习帮手.系统程序设计用等值伪指令定义SUDATOOEQU40H;加(减数)SUDAT01EQU41HSUDAT02EQU42HSUDAT03EQU43HSUDAT10EQU44H;加(被减数)SUDAT11EQU45HSUDAT12EQU46HSUDAT13EQU47HDISPDAT0EQU29H;显示数据区DIS

5、PDAT1EQU2AHDISPDAT2EQU2BHDISPDAT3EQU2CHDISPDAT4EQU2DHDISPDAT5EQU2EHDISPDAT6EQU2FHDISPLONG| EQU31H;显示长度DISPCONEQU32H;显示计位KEYDATEQU 30H;键码HOURHEQU 34H;时间数据HOURL EQU 35HMINHEQU36HMINLEQU37HLEDMOD EQU 39H;流水灯模式SUCONEQU3AH;输入计数SUBITEQU20H.1诚标示DP EQU 20H.2;秒显标示KEYBIT EQU 20H.3;有键码标示SU EQU 20H.4;计算标示TIMEEQ

6、U 20H.5;时间标示TIMESET EQU 20H.6;时间设置标示主程序:ORG0000HAJMPSTARTORG0003HRETIORG000BHAJMPTIME0ORG0013HRETIORG001BHLJMPTIME1ORG0023HRETIORG 0050HSTART:MOV A,#00HMOV R0,#20HMOV R1,#30HLOOP0:MOV R0,AINC R0DJNZ R1,LOOP0MOVSP#50HMOVDISPLONG,#07SETBRS0SETBRS1MOVR0,#DISPDAT0MOVR2,#200MOVR3,#120MOVR4,#00MOVR5,#00MO

7、VR6,#0FEHMOVR7,DISPLONGCLRRS0MOVR2,#50MOVR3,#30CLRRS1MOVLEDMOD,#02MOVDISPLONG,#07MOVDISPCON,#07MOVKEYDAT,#0FFHSETBTIMEMOV TL0,#0AH ;1E 定时 2.5MSMOV TH0,#0F7HMOV IE,#8AH;开 T0 , T1MOV TMOD,#11H ;定时方式 1SETB TR0MOVTL1,#00H;定时 10MSMOVTH1,#0DCHSETB TR1MAIN:ACALL KEYJNB KEYBIT,MAIN1ACALL DOKEYMAIN1:JBTIME,M

8、AIN2JBTIMESET,MAIN2JBSU,MAIN3MAIN2:MOVRO,#HOURHMOVR1,#DISPDAT0MOVR2,#04HMAINLOOP:MOVA,R0MOVDPTR,#TABMOVCA,A+DPTRMOVC,DPMOVACC.7,CMOVR1,AINCR0INCR1DJNZR2,MAINLOOPSJMPMAINMAIN3:MOVR0,#SUDAT00MOVR1,#DISPDAT0MOVR2,#04HSJMPMAINLOOP;计算数转段码送显区;时间转七段码送显示数据区TAB:DB 40H,79H,24H,30H,19HDB 12H,02H,78H,00H,10HDB7

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

10、LA,#0FHXRLA,#0FFHJZKEYOUT0MOVA,#60HLCALLDELAYMOVP1,#0F0HMOVA,P1ORLA,#0FHXRLA,#0FFHJZKEYOUT0MOVP1,#0FEH;KEYDAT 存放键码JNBP1.4,KEY1JNBP1.5,KEY2JNBP1.6,KEY3JNBP1.7,KEY4MOVJNBJNBJNBJNBMOVJNBJNBJNBJNBMOVJNBJNBJNBJNBMOVCLRKEYOUTO:AJMPKEY1:MOVP1,#0FDHP1.4,KEY5P1.5,KEY6P1.6,KEY7P1.7,KEY8P1,#0FBHP1.4,KEY9P1.5,K

11、EY10P1.6,KEY11P1.7,KEY12P1,#0F7HP1.4,KEY13P1.5,KEY14P1.6,KEY15P1.7,KEY16KEYDAT,#0FFHKEYBITKEYOUT1KEY2:KEY3:KEY4:KEY5:KEY6:KEY7:KEY8:MOV KEYDAT,#09HSJMP KEYOUTMOV KEYDAT,#08HSJMP KEYOUTMOV KEYDAT,#07HSJMP KEYOUTMOV KEYDAT,#0BHSJMP KEYOUTMOV KEYDAT,#06HSJMP KEYOUTMOV KEYDAT,#05HSJMP KEYOUTMOV KEYDAT,#

12、04HKEY10:KEY11:KEY12:KEY13:KEY14:KEY15:MOV KEYDAT,#0CHSJMP KEYOUTMOV KEYDAT,#03HSJMP KEYOUTMOV KEYDAT,#02HSJMP KEYOUTMOV KEYDAT,#01HSJMP KEYOUTMOV KEYDAT,#0DHSJMP KEYOUTMOV KEYDAT,#0EHSJMP KEYOUTMOV KEYDAT,#00HSJMP KEYOUTKEYOUT:SETBKEYBITMOVP1,#0F0HMOVA,P1ORLA,#0FHXRLA,#0FFHJNZKEYOUTMOVA,#100HLCALLD

13、ELAYKEY0UT1:RET(3)键盘处理,SU计算标志,TIME时间标志,TIMSET时间设置标志;SUCON计算输入位数,TSETCON时间设置位数QISPCON显示位数;SUDAT00-03加数(减数),SUDAT10-13 加数(被减数);LEDMOD流水灯模式,TSETCON时间设置位数 QISPCON显示位数;ADDBIT加法标示,SUBBIT减法标示DOKEY:MOV A,KEYDATCLR CSUBBA,#10H;大于16为错码JNCDONEXTCLRCMOVA,KEYDATSUBBA,#0AH;大于10为功能键,小于10为数字键JCNEXTMOVB,#03MULABMOVD

14、PTR,#DOFKEY ;功能键处理JMPA+DPTRLJMPDOFKEY1LJMPDOFKEY2LJMPDOFKEY3LJMPDOFKEY4LJMPDOFKEY5LJMPDOFKEY6DOFKEY:NOPNOPDONEXT:LJMP DOKEYOUTNEXT:LJMPDOSKEYD0FKEY1:;计算功能LCALLTIMDBJNBTIMESETQOFKEY11PUSHPSWSETBRS0SETBRS1MOVR2,#200MOVR3,#120POPPSWDOFKEY11:SETBSU;SU计算标志CLRTIME;TIME时间标志CLRTIMESET;TIMSET时间设置标志MOVSUCON,#

15、04H;SUCON计算输入位数SETBDPCLRSUBITMOVSUDAT00,#00HMOVSUDAT01,#00HMOVSUDAT02,#00HMOVSUDAT03,#00HMOVSUDAT10,#00HMOVSUDAT11,#00HMOVSUDAT12,#00HMOVSUDAT13,#00HLJMPDOKEYOUTDOFKEY2:;计时功能LCALLTIMDBJNBTIMESETQOFKEY21PUSHPSWSETBRS0SETBRS1MOVR2,#200MOVR3,#120POPPSWD0FKEY21:SETBTIMECLRSUCLRTIMESETMOVSUCON,#00HSETBDP

16、LJMPDOKEYOUTDOFKEY3:;时间设置功能LCALLTIMDBSETBTIMESETCLRTIMECLRSUMOVSUCON,#00HSETBDPLJMPDOKEYOUTDOFKEY4:;流水灯功能MOVA,L EDMODCLRCSUBBA,#01HJNCDOFKEY40MOVLEDMOD,#03MOVDISPLONG,#04HLJMPDOKEYOUTDOFKEY40:MOVLEDMOD,AMOVDISPLONG,#07H;DISPLONG 显示位数MOVA,L EDMODCJNEA,#02H,DOFKEY41MOVDISPDAT4,#00HMOVDISPDAT5,#00HMOVD

17、ISPDAT6,#00HLJMPDOKEYOUTD0FKEY41:MOVDISPDAT4,#24HMOVDISPDAT5,#92HMOVDISPDAT6,#49HLJMPDOKEYOUTDOFKEY5:;加号处理MOVR4,SUDAT00MOVR5,SUDAT01MOVR6,SUDAT02MOVR7,SUDAT03MOVR0,SUDAT10MOVR1,SUDAT11MOVR2,SUDAT12MOVR3,SUDAT13LCALLBADDMOVSUCON,#04HCLRSUBITLJMPDOKEYOUTDOFKEY6:;减号处理MOVR4,SUDAT00MOVR5,SUDAT01MOVR6,SUD

18、AT02MOVR7,SUDAT03MOVR0,SUDAT10MOVR1,SUDAT11MOVR2,SUDAT12MOVR3,SUDAT13LCALLBADDMOVSUCON,#04HSETBSUBITLJMPDOKEYOUTDOSKEY:;数字键处理JBSUQOSKEY1JBTIMESETQOSKEY2 ;时间设定LJMPDOKEYOUTDOSKEY1:MOVA,SUCONCJNEA,#04H,DOSKEY10MOVSUDAT00,#00HMOVSUDAT01,#00HMOVSUDAT02,#00HMOVSUDAT03,#00HDOSKEY10:MOVA,SUCONJZDOKEYOUTMOVS

19、UDAT00,SUDAT01MOVSUDAT01,SUDAT02MOVSUDAT02,SUDAT03MOVSUDAT03,KEYDATDECSUCONLJMPDOKEYOUTD0SKEY2:MOVA,SUCON;设定时间ADDA,SUCONMOVDPTR,#DOSKEY20JMPA+DPTRDOSKEY20:SJMPDOSKEY21SJMPDOSKEY22SJMPDOSKEY23SJMPDOSKEY24D0SKEY21:MOVA,KEYDAT;设定小时高位CLRCSUBB A,#03JNC DOKEYOUTMOV HOURH,KEYDATSJMP DOSKEY25DOSKEY22:MOV A,

20、HOURH;设定小时低位CJNE A,#02,NE1MOV A,KEYDATCLR CSUBB A,#4JNC DOKEYOUTNE1:MOV HOURL,KEYDATSJMP DOSKEY25DOSKEY23:MOV A,KEYDAT ;设分高位CLR CSUBB A,#6JNC DOKEYOUTMOV MINH,KEYDATSJMP DOSKEY25DOSKEY24:MOV MINL,KEYDAT ;设分低位DOSKEY25:LCALL SU10T08LCALL TIMDBINC SUCONMOVA,SUCONCLRCSUBB A,#4JCDOKEYOUTMOV SUCON,#00HDOK

21、EYOUT:CLR KEYBITMOV KEYDAT,#0FFH ;0FFH 为无键码指示RET(4) TIME0;用第三组寄存器,MINL分钟低位,MINH分钟高位;HOURL小时低位,HOURH小时高位;R4分钟数60,R5小时数24 ,R2为2.5MS计数,R3为0.5S计数;DP秒闪标示TIME0:;T0 计时PUSH ACCMOVFO,CPUSHPSWSETBRSOSETBRS1MOVTL0,#0AH;1E 定时 2.5MSMOVTH0,#0F7HSETBTROACALLDISPLAY;0.25MS 显示一位DJNZR2,TIMEOUTMOVR2,#200;200*0.25MS=0.

22、5SJBSU,TIME00CPLDPTIMEOO:DJNZR3,TIMEOUTMOVR3,#120;120*0.5S=60SINCR4;R4计分钟值,满60向R5进位MOVA,R4CLRCSUBBA,#60JCTIME01MOVR4,#00INCR5;R5计小时值TIME01:MOVA,R4MOVB,#10DIVABMOVMINH,AMOVMINL,BMOVA,R5CLRCSUBBA,#24JCTIME02MOVR5,#00TIME02:MOVA,R5MOVB,#10DIVABMOVHOURH,AMOVHOURL,BTIMEOUT:POPPSWMOVC,PSW.1POPACC(5)TIME1:

23、PUSHTIME1;T1计时,用于跑马灯和控制时间设置闪烁ACC;R2计数时间闪烁频率MOVFO,C;r3计数跑马灯频率PUSHPSW;R4保存时间闪动初值CLRRS0;第二组寄存器SETBRS1MOVTL1,#00H;定时10MSMOVTH1,#0DCHSETBTR1JNBTIMESET,TI10DJNZR2,TI10MOVR2,#50MOVA,SUCONMOVR0,#HOURHADDA,R0MOVR0,AMOVA,R0CJNEA,#0AH,TI11MOVA,R4MOVR0,ASJMPTI10MOVA,R0MOVR4,AMOVR0,#0AHMOVA,L EDMODCJNEA,#02H,TI1

24、2DJNZR3,TI1OUTMOVR3,#15ACALLLEDSJMPTI1OUTDJNZR3,TI1OUTMOVR3,#60ACALLLEDPOPPSWMOVC,PSW.1POPACCTI11:TI10:TI12:TI1OUT:(6) DELAYDELAY:;延时程序,时间常数在ACCPUSH ACCDELAY1:DJNZ ACC,$POP ACCDJNZ ACC,DELAYRET(7) 流水灯子程序LEDMOD模式,流水灯数据在DISPDAT4-6LED:MOVA,L EDMODADDA,L EDMODMOVDPTR,#LED0JMP A+DPTRLED0:SJMP MODL1SJMP M

25、ODL2SJMP MODL3MOV DISPLONG,#04HRETM0DL1:MOVCQISPDAT6.7MOVAQISPDAT4RLCAMOVDISPDAT4,AMOVA,DISPDAT5RLCAMOVDISPDAT5,AMOVA,DISPDAT6RLCAMOVDISPDAT6,ARETMOVC,DISPDAT4.0MOVA,DISPDAT6RRCAMOVDISPDAT6,AMOVA,DISPDAT5RRCAMOVDISPDAT5,AMOVA,DISPDAT4RRCAM0DL2:;右移动;左移动MOVDISPDAT4,ARETM0DL3:MOVC,DISPDAT4.7;灯从左全亮后又到全灭

26、CPLCMOVA,DISPDAT5RLCAMOVDISPDAT5,AMOVA,DISPDAT6RLCAMOVDISPDAT6,AMOVA,DISPDAT4RLCAMOVDISPDAT4,ARET(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,R4DAAMOVR4,ARET(9)DO

27、BM求补码DOBM:;求补码MOVA,#99HCLRCSUBBA,R4MOVR4,AMOVA,#09HCLRCSUBBA,R5MOVR5,AMOVA,#09HCLRCSUBBA,R6MOVR6,AMOVA,#0AHCLRCSUBBA,R7MOVR7,ARET(10)BUM负数显示数BUM:;负数显示数(补码还原)MOVA,#99HCLRCSUBBA,R4MOVR4,AMOVA,#09HCLRCSUBBA,R5MOVR5,AMOVA,#09HCLRCSUBBA,R6MOVR6,AMOVA,#09HCLRCSUBBA,R7MOVR7,AMOVR0,#00HMOVR1,#00HMOVR2,#00HM

28、OVR3,#01HACALLSUADDANLA,#0FHMOVR4,ARET(11) BADD 带符号十进制加法BADD:;带符号十进制加法JNBSUBIT,BADD1ACALLDOBM;负时求补码BADD1:ACALLSUADD;相力卩ANLA,#0E0HJZBADD2MOVA,R4ANLA,#0FHORLA,#90HMOVR4,AMOVSUDAT10,R4MOVSUDAT11,R5MOVSUDAT12,R6MOVSUDAT13,R7ACALLBUMMOVSUDAT00,R4MOVSUDAT01,R5MOVSUDAT02,R6MOVSUDAT03,R7RETBADD2:MOVA,R4ANLA

29、,#0FHMOVR4,AMOVSUDAT10,R4MOVSUDAT11,R5MOVSUDAT12,R6MOVSUDAT13,R7MOVSUDAT00,R4MOVSUDAT01,R5MOVSUDAT02,R6MOVSUDAT03,R7RET(12)十进制化为16进制SU10T08:;十进制化为16进制PUSHPSWSETBRS0SETBRS1MOVA,HOURHMOVB,#10MULABADDA,HOURLMOVR5,AMOVA,MINHMOVB,#10MULABADDA,MINLMOVR4,APOPPSWRET(13)将时间计数化为十进制TIMDB:;将时间计数化为十进制PUSHPSWSETBRS0SETBRS1MOVA,R4;将R4值化为十进制数MOVB,#10DIVABMOVMINH,AMOVMINL,BMOVA,R5;将R5值化为十进制数MOVB,#10DIVABMOVHOURH,AMOVHOURL,BPOP PSWRETEND四.调试与下载启动Keil u Vision,在界面新建一个工程项目,再设置好工程项目软硬件调试环境,编译程序联机调 试。在Proteus中按照原理图放置元器件,设置好各项参数,连接好电路图后,把用Keil生成的机器 代码文件调入到Proteus中的AT89C

温馨提示

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

评论

0/150

提交评论