单片机课程设计报告.docx
单片机课程设计报告(单片机技术)课程设计实验报告专业:电子信息工程班级:07电信本一班姓名:李汶泽学号:200710312136指导老师:杨加国日期:20200-6-26目录一、课程设计的目的(3)二、课程设计详细要求(3)三、MCS-51单片机系统简介(3)四、MCS-51单片机内部定时器/计数器中断系统简介(4)五、键盘和LED数码管显示器简介(5)六、实验内容基本原理(7)七、硬件电路(8)八、程序简介与代码(8)九、设计制作经过(12)十、实验总结(17)一、课程设计的目的本课程设计是自动化专业、电子信息技术专业学生在学完单片机原理及课程之后必修课程,它的教学目的和任务是综合利用所学单片机知识完成一个单片机应用系统设计并在实验室实现,进而加深对单片机软硬知识的理解,获得初步的应用经历,为走出校门从事单片机应用的相关工作打下基础。二、课程设计详细要求1、在PROTEUS中设计硬件,在KEIL51中编写软件,在PROTEUS中运行程序仿真实现。2、写课程设计报告,给出设计思想,原理,硬件电路图,给出相应程序,并写出设计经过。三、MCS-51单片机系统简介单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路集成到一块硅片上构成的一个小而完善的计算机系统。MCS-51系列之功能与总线构造四、MCS-51单片机内部定时器/计数器中断系统简介定时/计数器:1、MCS-51系列中51子系列有两个16位可编程定时/计数器:定时计数器T0和定时计数器T12、每个定时/计数器即能够对系统时钟计数实现定时,可以以对外部信号计数实现计数功能,这些功能都是通过编程设定实现的、3、每个定时/计数器都是多种工作方式,其中T0有四种工作方式;T1有三种工作方式;T2有三种工作方式。通过编程可设定工作于某种方式。4、每一个定时/计数器定时计数时间到时产生溢出,使相应的溢出位置位,溢出可通过查询或中断方式处理.中断系统执行完服务程序后,再返回被暂停的位置继续执行原来的程序,这个经过称为中断,实现中断的硬件系统和软件系统称为中断系统。8051有两个外部中断源和三个内部源:两个定时器/计数器中断源和一个串行口中断源中断系统主要有中断允许控制器IE和中断优先级控制器IP等电路组成中断系统涉及了下面一个问题:1、中断源及中断请求2、中断优先权控制3、中断允许和中断屏蔽4、中断响应与中断返回五、键盘和LED数码管显示器简介键盘工作原理LED数码管显示器具有硬件译码方式和软件译码方式LED数码管显示器具有静态显示方式和动态显示方式六、实验内容基本原理利用单片机的定时计数器,中断系统,以及阵列键盘和LED显示器进行设计。在数码管显示器上实现电子时钟,并且能进行设置时间和暂停、启动控制。用定时计数器T0,工作于定时,采用方式1,对12MHZ的系统时钟进行定时计数,初值设为XXYY本人计算。构成定时时间为50ms。用片内RAM的7BH单元对50ms计数,计20次产生秒计数器7BH单元加1,秒计数器加到60则分计数器79H单元加1,分计数器加到60则时计数器7AH单元加1,时计数器加到24则时计数器清0。然后把秒、分、时计数器分成十位和个位放到8个数码管的显示缓冲区,通过数码管显示出来。显示格式为小时十位、小时个位-分十位、分个位-秒十位、秒个位。在处理经过中加上了按键判定程序,能对按键处理。七、硬件电路;采用8位LED软件译码动态显示程序;使用AT89C51单片机,12MHZ晶振,P0输出字段码,P2口输出位选码,用共阳;LED数码管,P1.0为调时位选择按键,P1.1为加1键,P1.2为减1键。;片内RAM的70H到77H单元为LED数码管的显示缓冲区;78H,79H,7AH分别为秒、分、小时计数单元;7BH为50ms计数器,7CH为调时按键计数器ORG0000HLJMPSTARTORG000BH;定时器/计数器T0中断程序入口LJMPINTT0;主程序START:MOVR0,#70HMOVR7,#0CHINIT:MOVR0,#00HINCR0DJNZR7,INITMOV72H,#10MOV75H,#10MOVTMOD,#01HMOVTL0,#0B0HMOVTH0,#03CHSETBEASETBET0SETBTR0START1:LCALLSCANLCALLKEYSCANSJMPSTART1;延时1MS子程序DL1MS:MOVR6,#14HDL1:MOVR7,#19HDL2:DJNZR7,DL2DJNZR6,DL1RET;延时20MS子程序DL20MS:ACALLSCANACALLSCANACALLSCANRET;数码管显示程序SCAN:MOVA,78H;时间存入显示缓冲区相应位置MOVB,#0AHDIVABMOV71H,AMOV70H,BMOVA,79HMOVB,#0AHDIVABMOV74H,AMOV73H,BMOVA,7AHMOVB,#0AHDIVABMOV77H,AMOV76H,BMOVR1,#70H;循环扫描显示MOVR5,#80HMOVR3,#08HSCAN1:MOVA,R5MOVP2,AMOVA,R1MOVDPTR,#TABMOVCA,A+DPTRMOVP0,AMOVA,R5LCALLDL1MSINCR1MOVA,R5RRAMOVR5,ADJNZR3,SCAN1MOVP2,#00HMOVP0,#0FFHRETTAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH;“09,“-的共阳极字段码;定时器/计数器T0中断服务程序INTT0:PUSHACCPUSHPSWCLRET0CLRTR0MOVTL0,#0B0HMOVTH0,#03CHSETBTR0INC7BHMOVA,7BHCJNEA,#14H,OUTT0MOV7BH,#00INC78HMOVA,78HCJNEA,#3CH,OUTT0MOV78H,#00INC79HMOVA,79HCJNEA,#3CH,OUTT0MOV79H,#00INC7AHMOVA,7AHCJNEA,#18H,OUTT0MOV7AH,#00OUTT0:SETBET0poppswpopaccRETI;按键处理程序KEYSCAN:CLREAJNBP1.0,KEYSCAN0JNBP1.1,KEYSCAN1JNBP1.2,KEYSCAN2KEYOUT:SETBEARETKEYSCAN0:LCALLDL20MSJBP1.0,KEYOUTWAIT0:JNBP1.0,WAIT0INC7CHMOVA,7CHCLRTR0CLRET0CJNEA,#03H,KEYOUTMOV7CH,#00SETBTR0SETBET0SJMPKEYOUTKEYSCAN1:LCALLDL20MSJBP1.1,KEYOUTWAIT1:JNBP1.1,WAIT1MOVA,7CHCJNEA,#02H,KSCAN11INC79HMOVA,79HCJNEA,#3CH,KEYOUTMOV79H,#00SJMPKEYOUTKSCAN11:INC7AHMOVA,7AH