您好,欢迎访问三七文档
电子钟及BCD码加法定时显示起止日期:2018/06/19~2018/06/29设计者:班级:目录CONTENTS01课程设计内容及要求02系统设计03程序设计及仿真验证课程设计内容及要求Coursedesigncontentandrequirements01课程设计内容及要求Coursedesigncontentandrequirements编写时钟程序,使用定时器产生一个40ms或者50ms的定时中断,对定时中断计数,将时、分、秒显示在数码管上;同时将两个六位的BCD码数相加显示在数码管上。进行实时电子钟的设计,采用24小时制,初始时间能设置。共有8位显示,其中用2位“-”作为时、分、秒的分隔符合。用2位数字显示秒值,秒的显示为00~59,如秒值计到60,则秒值显示清00,分值显示加1;用2位数字显示分值,分的显示为00~59,如分值计到60,则分值显示清00,时值显示加1;用2位数字显示时值,时的显示为00~23,如时值计到24,则时值显示清00。当显示到00-00-00时,将任意两个十进制数a=xxxxxx和b=yyyyyy相加得到c=zzzzzz的值。先将a的值显示在左边的六位数码管上,右边的两位显示时间从00秒计时到10秒时再显示六位b的值,右边的两位显示时间从00秒计时到10秒时,则显示结果c的值,如果c的值没有进位,则右边两位显示“--”,如果c的值有进位,则右边两位显示“∪∪”,验证c的显示结果。系统设计systemdesign02Pleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.请替换文字内容Step018255扩展原理图系统设计systemdesignPleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.请替换文字内容Step02系统接线图系统设计systemdesignPleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.请替换文字内容Step03实物接线图系统设计systemdesignB4区:CS、A0、A1——A3区:CS1、A0、A1B4区:JP56(PA口)——F4区:JP41(C)B4区:JP53(PB口)——F4区:JP42(B)D3区JP18三个短路块跳到右边的EDAPleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.请替换文字内容Step04主程序流程图系统设计systemdesignPleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.请替换文字内容Step05定时器中断服务程序流程图系统设计systemdesignPleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.请替换文字内容Step06显示子程序流程图系统设计systemdesign7FH-数码位选择变量8-计数器数码位选择变量-8255PA口显示缓冲区中对应数据转化为段码段码-8255PB口数码位选择变量循环右移一次延时1ms开始计数器–1=0返回YNPleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.请替换文字内容Step07加法子程序流程图系统设计systemdesign程序设计及仿真验证Programdesignandsimulationverification03PAXDATA0F000H;8255PA口地址:位码口PBXDATA0F001H;8255PB口地址:段码口CONXDATA0F003H;8255控制字BUFFERDATA30H;8个字节显示缓冲区30H~37HSECDATA20H;秒MINDATA21H;分HOURDATA22H;时;时、分、秒均为BCD码ORG0000HLJMPMAINORG000BHLJMPTTT0ORG0100H程序设计及仿真验证Programdesignandsimulationverification程序初始化MAIN:MOVSP,#60H;堆栈MOVHOUR,#23;时钟单元赋初值MOVMIN,#59MOVSEC,#57MOVR7,#00H;计数器,20次CLRF0;清1秒到标志位CLR6FH;小时到0标志位CLR5FH;计时到10标志位MOV60H,#0MOVR2,#0;加法计时10秒MOVTMOD,#01H;定时器0,方式1MOVTH0,#3CH;设置定时器初值(50ms)MOVTL0,#0B0HSETBET0;T0开中断SETBEA;CPU开中断SETBTR0;启动定时器0程序设计及仿真验证Programdesignandsimulationverification主程序MOVA,#80H;8255控制字MOVDPTR,#CON;指针指向控制口MOVX@DPTR,A;8255初始化,、A、BC均为输出口SETBF0;刷新标志位置1LOOP:JNBF0,LOOP0;标志位F0=0跳转CLRF0MOVA,22HCJNEA,#00,LOOP6;判断小时是否到0SETB6FH;小时到0标志位LCALLA1;输入并显示a的值MOVA,R2CJNEA,#10,LOOP7;是否到10秒JB5FH,CQ1;计时到10清零标志LOOP9:SJMPCQ2;到10秒输入并显示b的值CQ1:MOVR2,#0;计时清零CQ2:LCALLA2;MOVA,R2;CJNEA,#10,LOOP9;到10秒ab相加LCALLA3;调用相加程序SJMPLOOP8;相加完返回结束程序设计及仿真验证Programdesignandsimulationverification主程序LOOP6:LCALLXIANSHILOOP0:LCALLDIRLOOP7:SJMPLOOPLOOP8:RETXIANSHI:MOVB,#10;将时分秒-显示缓冲区;秒。MOVA,SECDIVABMOV30H,BMOV31H,AMOV32H,#16;-MOVB,#10;分,将压缩BCD码转换成单个BCD码MOVA,MINDIVABMOV33H,BMOV34H,AMOV35H,#16;-MOVB,#10;时,将压缩BCD码转换成单个BCD码MOVA,HOURDIVABMOV36H,BMOV37H,ARET程序设计及仿真验证Programdesignandsimulationverification将压缩BCD码转换成单个BCD码程序TTT0:MOVTH0,#3CH;恢复定时器初值MOVTL0,#0B0HINCR7CJNER7,#20,FANHUI;20次SETBF0;置1秒标志位MOVR7,#00HINCSEC;秒加1MOVA,SECJB6FH,NQ2;小时到0,标志位为1,转移开始计数10秒CJNEA,#60,ZHI0;判别秒单元到60秒MOVSEC,#00HINCMIN;分单元加1MOVA,MINCJNEA,#60,ZHI0;判别分单元到60MOVMIN,#00H;分单元复位0INCHOUR;时单元加1MOVA,HOURCJNEA,#24,ZHI0;判别时单元到24MOVHOUR,#00H;时单元复位0SJMPZHI0程序设计及仿真验证Programdesignandsimulationverification定时器中断服务程序NQ2:INCR2;10秒计数MOVA,R2CJNEA,#10,ZHI0;没到10秒刷新标志置1SETB5FH;到10秒清零标志位置1ZHI0:SETBF0FANHUI:RETIDIR:MOVR0,#30H;显示子程序,片内RAM30H~37HMOVR3,#7FH;显示缓冲区首地址送R3使显示器最左边位先亮MOVA,#80H;8255初始化,、A、BC均为输出口MOVDPTR,#CONMOVX@DPTR,A;MOVR4,#08H;计数器置8LOOP1:MOVDPTR,#PA;数据指针指向A口MOVA,R3MOVX@DPTR,AMOVA,@R0INCR0MOVDPTR,#TAB;数据指针指向表头地址MOVCA,@A+DPTR;查表MOVDPTR,#PB;据指针指B口MOVX@DPTR,A;送出显示ACALLDELAY;延时1ms程序设计及仿真验证Programdesignandsimulationverification显示子程序MOVA,R3JNBACC.0,LOOP2;判别是否扫描到第八个显示器RRA;未到,扫描码右移1位MOVR3,ASJMPLOOP1LOOP2:RETTAB:DB0FCH,60H,0DAH,0F2H,66H;0,1,2,3,4DB0B6H,0BEH,0E0H,0FEH,0F6H;5,6,7,8,9DB0EEH,3EH,9CH,7AH,9EH,8EH,02H,7CH;A,B,C,D,E,F,10(-),UDELAY:MOVR6,#2DELAY1:MOV27H,#0FFHDELAY2:DJNZ27H,DELAY2DJNZR6,DELAY1RET程序设计及仿真验证Programdesignandsimulationverification显示子程序A1:MOVB,#10;秒单元显示到缓冲区MOVA,R2DIVABMOV31H,AMOV30H,BMOV40H,#11;a的值137211放入40H、41H、42H单元中MOV41H,#72MOV42H,#13MOVB,#10;a的值放入显示缓冲区MOVA,40HDIVABMOV33H,AMOV32H,BMOVB,#10MOVA,41HDIVABMOV35H,AMOV34H,B程序设计及仿真验证Programdesignandsimulationverification加法程序—输入显示a的值MOVB,#10MOVA,42HDIVABMOV37H,AMOV36H,BLCALLDIR;调用显示子程序RETA2:MOVB,#10;秒单元显示到缓冲区MOVA,R2DIVABMOV31H,AMOV30H,BMOV50H,#22;a的值443322放入50H、51H、52H单元中MOV51H,#33MOV52H,#44MOVB,#10;b的值放入显示缓冲区MOVA,50HDIVABMOV33H,AMOV32H,BMOVB,#10MOVA,51HDIVABMOV35H,AMOV34H,B程序设计及仿真验证Programdesignandsimulationverification加法程序—输入显示b的值MOVB,#10MOVA,52HDIVABMOV37H,AMOV36H,BLCALLDIR;调用显示子程序RETA3:CLRCMOVA,50H;b的值的个位十位ADDA,40HMOVB,#10DIVABMOV32H,B;个位十位相加,个位结果放到32HLCALLFFFF11;判断十位是否有进位MOV33H,A;把十位放入33H中MOVA,51H;百位千位相加ADDCA,41HMOVB,#10DIVABMOV34H,BLCALLFFFF11MOV35H,A程序设计及仿真验证Programdesignandsimula
本文标题:单片机课设
链接地址:https://www.777doc.com/doc-4130069 .html