基于单片机AT89C51控制的动态流水灯课程设计报告.doc
宁波技师学院 课 程 设 计 报 告 论文题目 动态流水灯 专业班级 学生姓名 学 号 导师指导 宁波技师学院电气技术系 2013年9月29号 摘要 80C51单片机属于MCS-51系列单片机,由Intel公司开发,其结构是8048的延伸,改进了8048的缺点,增加了如乘(MUL)、除(DIV)、减(SUBB)、比较(CMP)、16位数据指针、布尔代数运算等指令,以及串行通信能力和5个中断源。采用40引脚双列直插式DIP(Dual In Line Package),内有128个RAM单元及4K的ROM。80C51有两个16位定时计数器,两个外中断,两个定时计数中断,及一个串行中断,并有4个8位并行输入口。80C51内部有时钟电路,但需要石英晶体和微调电容外接,本系统中采用12MHz的晶振频率。由于80C51的系统性能满足系统数据采集及时间精度的要求,而且产品产量丰富来源广,应用也很成熟,故采用来作为控制核心。 动态流水灯的原理图 PCB图 单片机程序;*伪定义*;*键控流水灯*ORG00HSJMPSTARTORG00BHSJMPT_0ORG30H;*全部初始化*START:MOVP0,#0C0HMOVP2,#0FEHCLR25HCLR26HCLR27HCLR28HMOV10H,#04HMOV11H,#0C8HMOV20H,#00HMOV30H,#00HMOVSP,#5FHLCALLINIT;*主程序*MAIN:JNB25H,ONE1CLR25HLCALLKEYSJMPMAINONE1:JNB26H,TWO1CLR26HLCALLDISPLAYSJMPMAINTWO1:JNB27H,THREE1CLR27HLCALLMAIN_QUICKLYTHREE1:JNB28H,MAINCLR28HLCALLMAIN_LEDSJMPMAIN;*中断定时器*T_0:PUSHPSWPUSHACCMOVTH0,#0F6HMOVTL0,#043HDJNZ10H,DIS11MOV10H,#04HSETB25HDIS11:SETB26HDJNZ11H,LIGHTSETB27HSETB28HLIGHT:POPACCPOPPSWRETI;*中断初始化*INIT:MOVTMOD,#01HMOVTH0,#0F6HMOVTL0,#043HMOVIP,#00HMOVIE,#82HMOVTCON,#10HRET;*调用按键按下次数子程序*KEY:JBP3.0,ONEJNBP3.0,$INC20HMOVA,20HCJNEA,#01H,AAAMOV40H,#0FCHAAA:CJNEA,#02H,BBBMOV40H,#03FHBBB:CJNEA,#03H,CCCMOV40H,#0FFHCCC:CJNEA,#04H,OUTMOVP1,#0FFHMOV20H,#00HONE:JBP3.1,OUTJNBP3.1,$MOV11H,#01HINC30HMOVA,30HCJNEA,#03H,OUTMOV30H,#00HOUT:RET;*调用显示子程序*DISPLAY:MOVP2,#0FEHMOVA,20HMOVDPTR,#TABMOVCA,A+DPTRMOVP0,ARET;*调用流水灯调速方式子程序*MAIN_QUICKLY:MOVA,30HCJNEA,#00H,QUICKLY_ONEMOV11H,#016HSJMPQUICKLY_THREEQUICKLY_ONE:CJNEA,#01H,QUICKLY_TWOMOV11H,#069HSJMPQUICKLY_THREEQUICKLY_TWO:CJNEA,#02H,QUICKLY_THREEMOV11H,#0FAHQUICKLY_THREE:RET;*调用流水灯循环方式子程序*MAIN_LED:MOVA,20HCJNEA,#00H,LED_ONESJMPLED_FOURLED_ONE:CJNEA,#01H,LED_TWOLCALLLED1SJMPLED_FOURLED_TWO:CJNEA,#02H,LED_THREELCALLLED2SJMPLED_FOURLED_THREE:CJNEA,#03H,LED_FOURLCALLLED3LED_FOUR:RET;*调用流水灯1子程序*LED1:MOVA,40HMOVP1,40HRLAMOV40H,ARET;*调用流水灯2子程序*LED2:MOVA,40HMOVP1,40HRRAMOV40H,ARET;*调用流水灯1子程序*LED3:MOVA,40HMOVP1,40HCPLAMOV40H,ARET;*共阳极数码管译码表格*TAB:DB0C0H,0F9H,0A4H,0B0H,099HDB092H,082H,0F8H,080H,090HEND 动态流水灯实物图