还剩10页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
单片机MCS-51数字时钟课程设计系别专业班级姓名学号日期
一、课程设计的目的
二、设计内容
三、代码说明
四、组件说明与图示
五、MCS-51单片机系统简介
六、MCS-51单片机内部定时器/计数器中断系统简介
七、键盘和LED数码管显示器简介
八、总结
一、课程设计的目的本课程设计是自动化专业、电子信息技术专业学生在学完单片机原理及课程之后必修课程,它的教学目的和任务是综合利用所学单片机知识完成一个单片机应用系统设计并在实验室实现,从而加深对单片机软硬知识的理解,获得初步的应用经验,为走出校门从事单片机应用的相关工作打下基础
二、设计内容利用单片机的定时/计数器,中断系统以及阵列键盘和LED显示器进行设计在数码管显示器上实现电子时钟,并且能进行设置时间和暂停、启动控制用定时/计数器T0,工作于定时,采用方式1,对12MHZ的系统时钟进行定时计数,初值设为C34F形成定时时间为50ms用片内RAM的7BH单元对50ms计数,计20次产生秒计数器7BH单元加1,秒计数器加到60则分计数器79H单元加1,分计数器加到60则时计数器7AH单元加1,时计数器加到24则时计数器清0然后把秒、分、时计数器分成十位和个位放到8个数码管的显示缓冲区,通过数码管显示出来显示格式为小时十位、小时个位---分十位、分个位---秒十位、秒个位在处理过程中加上了按键判断程序,能对按键处理
三、代码说明;主程序START:MOVR0#70HMOVR7#04HINIT:MOV@R0#78HINCR0DJNZR7INIT;对78~7B初始化00MOV72H#10MOV75H#10;72H、75H=#10这个是时钟间隔的段选码MOVTMOD#01HMOVTL0#0B0HMOVTH0#03CH;定时T0初始化SETBEASETBET0;开启定时中断SETBTR0;定时开始START1:LCALLSCAN;输出时间(动态显示)LCALLKEYSCAN;检测按键SJMPSTART1;延时1MS子程序DL1MS:MOVR6#14HDL1:MOVR7#19HDL2:DJNZR7DL2DJNZR6DL1RET;延时20MS子程序DL20MS:ACALLSCANACALLSCAN;实际上包括了对数码管的3次动态显示ACALLSCANRET;数码管显示程序SCAN:MOVA78H;处理时间缓冲数据将60进制化为两个十进制(开始)MOVB#0AHDIVAB;处理秒MOV71HAMOV70HBMOVA79HMOVB#0AHDIVAB;处理分钟MOV74HAMOV73HBMOVA7AHMOVB#0AHDIVAB;处理时钟MOV77HAMOV76HBMOVR1#70H;R1是时间缓冲区首地址MOVR5#80H;R5是位选码,实现数码动态显示MOVR3#08HSCAN1:MOVAR5MOVP2A;位选码,R5实现数码动态显示MOVA@R1;从时间缓冲区提取一位数MOVDPTR#TAB;码表首地址TABMOVCA@A+DPTR;将该位数译码输出MOVP0A;;将该位数译码输出并显示MOVAR5LCALLDL1MS;每位输出后延迟1ms,然后进行下一位的输出显示INCR1;R1指向下一位时间缓冲区地址MOVAR5RrAMOVR5A;R5会选择下一位数码管DJNZR3SCAN1MOVP2#0fH;MOVP0#0c0H;这两句是扫描程序SCAN没有执行时数字时钟的状态,当按键按下不放时,前4位会显示0,RETTAB:DB0C0H0F9H0A4H0B0H99H92H82H0F8H80H90H0BFH;0~9-的共阳极字段码秒速五厘米;定时器/计数器T0中断服务程序INTT0:PUSHACCPUSHPSW;storethes__neCLRET0;停止定时时中断CLRTR0;停止定时MOVTL0#0B0HMOVTH0#03CHSETBTR0;restartTOINC7BH;MOVA7BHCJNEA#14HOUTT0;counttheTF0for20timesMOV7BH#00INC78H;increase1secondwhen7BHhascountedTF0=1for20timesthatis1Sintotal!MOVA78HCJNEA#3CHOUTT0MOV78H#00INC79H;increase1minutewhensecondisoverflowMOVA79HCJNEA#3CHOUTT0MOV79H#00INC7AH;increase1hourwhenminuteisoverflowMOVA7AHCJNEA#18HOUTT0MOV7AH#00;thenextdayOUTT0:SETBET0;中断服务结束,恢复定时中断0poppswpopacc;recoverythes__neRETI;按键处理程序KEYSCAN:CLREA;屏蔽中断JNBP
1.0KEYSCAN0JNBP
1.1KEYSCAN1JNBP
1.2KEYSCAN2KEYOUT:SETBEA;恢复中断RET;按键处理程序细节KEYSCAN0:LCALLDL20MSJBP
1.0KEYOUT;持续按下20ms以上按键才有效这20ms间实际上是对数码管作3次动态显示WAIT0:JNBP
1.0WAIT0INC7CH;7C代表状态,其初值为0(调整小时),第一次按下变为1(暂停并调整小时),二次按下变为2(暂停并调整分钟),三次按下变回0(从暂停中恢复)MOVA7CHCLRTR0;停止计时CLRET0;停止计时中断CJNEA#03HKEYOUT;当7C不为03时,停止计时MOV7CH#00;SETBTR0;恢复计时SETBET0;恢复计时中断SJMPKEYOUTKEYSCAN1:LCALLDL20MS;持续按下20ms以上按键才有效JBP
1.1KEYOUTWAIT1:JNBP
1.1WAIT1MOVA7CH;20ms后放下按键后CJNEA#02HKSCAN11;increaseminutewhen7C=2orhourotherwiseINC79H;increaseminuteMOVA79HCJNEA#3CHKEYOUTMOV79H#00SJMPKEYOUTKSCAN11:INC7AH;increasehourMOVA7AHCJNEA#18HKEYOUTMOV7AH#00SJMPKEYOUTKEYSCAN2:LCALLDL20MSJBP
1.2KEYOUTWAIT2:JNBP
1.2WAIT2;按下20ms以上按键才有效MOVA7CHCJNEA#02HKSCAN21;increaseminutewhen7C=2orhourotherwiseDEC79H;decreaseminuteMOVA79HCJNEA#0FFHKEYOUTMOV79H#__HSJMPKEYOUT;KSCAN21:DEC7AH;decreasehourMOVA7AHCJNEA#0FFHKEYOUTMOV7AH#17HSJMPKEYOUTEND
四、组件说明与图示本设计主要组件为时钟振荡源、复位电路、数码管接口、按键电路
1、复位电路说明当RST保持10ms以上的高电平时,单片机复位,但是内部RAM不会复位
2、时钟振荡源说明本设计使用内部时钟振荡电路,外接石英晶体和微调电容
3、数码管接口说明P0接数码管的段选口,P2接位选口数码管属共阴极,段选__低电平有效
4、按键电路说明由于使用内部程序ROM,所以EA接高电平;P
1.0~P
1.2接按键,低电平有效
5、电子时钟效果图
五、MCS-51单片机系统简介MCS-51单片机是美国INTE公司于1980年推出的产品,与MCS-48单片机相比,它的结构更先进,功能更强,在原来的基础上增加了更多的电路单元和指令指令数达111条,MCS-51单片机可以算是相当成功的产品,一直到现在,MCS-51系列或其兼容的单片机仍是应用的主流产品,各高校及专业学校的培训教材仍与MCS-51单片机作为代表进行理论基础学习我们也以这一代表性的机型进行系统的讲解 MCS-51系列单片机主要包括
8031、8051和8751等通用产品,其主要功能如下·8位CPU ·4kbytes程序存储器ROM ·128bytes的数据存储器RAM ·32条I/O口线 ·111条指令,大部分为单字节指令 ·21个专用寄存器 ·2个可编程定时/计数器 ·5个中断源,2个优先级 ·一个全双工串行通信口 ·外部数据存储器寻址空间为64kB ·外部程序存储器寻址空间为64kB ·逻辑操作位寻址功能 ·双列直插40PinDIP封装 ·单一+5V电源供电MCS-51以其典型的结构和完善的总线专用寄存器的集中管理,众多的逻辑位操作功能及面向控制的丰富的指令系统,堪称为一代“名机”,为以后的其它单片机的发展奠定了基础正因为其优越的性能和完善的结构,导致后来的许多厂商多沿用或参考了其体系结构,有许多世界大的电气商丰富和发展了MCS-51单片机,象PHILIPS、Dallas、ATMEL等著名的半导体公司都推出了兼容MCS-51的单片机产品,就连我国的__WINBOND公司也发展了兼容C51人们习惯将MCS-51简称C51如果没有特别声明,二者同指MCS-51系列单片机的单片机品种下表是80C51系列单片机的主要分类及功能特性系列 典型芯片I/O口定时/计数器中断源串行通信口片内RAM 片内ROM 说明80C31 4x8位 2x16位 5 1 128字节 无 80C51 4x8位 2x16位 5 1 128字节 4kB掩膜ROM 87C51 4x8位 2x16位 5 1 128字节 4kBEPROM __C51 4x8位 2x16位 5 1 128字节 4kBEEPROM 80C32 4x8位 2x16位 6 1 256字节 无 80C51 4x8位 2x16位 6 1 256字节 8kB掩膜ROM 87C52 4x8位 2x16位 6 1 256字节 4kBEPROM 89C52 4x8位 2x16位 6 1 256字节 4kBEEPROM 8051是MCS-51系列单片机中的代表产品,它内部集成了功能强大的__处理器,包含了硬件乘除法器、21个专用控制寄存器、4kB的程序存储器、128字节的数据存储器、4组8位的并行口、两个16位的可编程定时/计数器、一个全双工的串行口以及布尔处理器MCS-51具有比较大的寻址空间,地址线宽达16条,即外部数据存储器和程序存储器的寻址范围达216=64kB,这作为单片机控制来说已是比较大的,这同时具备对I/O口的访问能力此外,MCS-51采用模块化结构,可方便地增删一个模块就可引脚和指令兼容的新产品从而容易使产品形成系列化由于MCS-51集成了几乎完善的8位__处理单元,处理功能强,__处理单元中集成了方便灵活的专用寄存器,硬件的加、减、乘、除法器和布尔处理机及各种逻辑运算和转移指令,这给应用提供了极大的便利MCS-51的指令系统近乎完善,指令系统中包含了全面的数据传送指令、完善的算术和逻辑运算指令、方便的逻辑操作和控制指令、对于编程来说,是相当灵活和方便的 MCS-51单片机的工作频率为2-12MHz,当振荡频率为12MHz时,一个机器周期为1us这个速度应该说是比较快的8051中集成了完善的各种中断源,用户可十分方便地控制和使用其功能,使得它的应用范围加大,可以说它可以满足绝大部分的应用场合MCS-51把微型计算机的主要部件都集成在一块心片上,使得数据传送距离大大缩短,可靠性更高,运行速度更块由于属于芯片化的微型计算机,各功能部件在芯片中的布局和结构达最优化,抗干扰能力加强,工作亦相对稳定因此,在工业测控系统中,使用单片机是最理想的选择单片机属于典型的嵌入式系统,所以它是低端控制系统最佳器件MCS-51的__环境要求较低,软件资源十分丰富,介绍其功能特性书籍和__软件随处可取,只需配备一台PC(个人电脑——对电脑的配置基本上无要求),一台仿真编程器即可实现产品__,早期的__软件多使用DOS版本,随着Windows视窗软件的普及,现在几乎都使用Windows版本,并且软件种类繁多,琳琅满目,在众多的单片机品种中,C51的环境资源是最丰富的,这给C51用户带来极大的便利
六、MCS-51单片机内部定时器/计数器中断系统简介
(一)定时/计数器1工作方式0定时/计数器T0工作在方式0时,16位计数器只用了13位,即TH0的高8位和TL0的低5位,组成一个13位定时器/计数器1)、工作在定时方式2)、工作在计数方式2工作方式1定时器T0工作方式1与工作方式0类同,差别在于其中的计数器的位数工作方式0以13位计数器参与计数,工作方式1则以16位计数器参与计数1)、工作在定时方式2)、工作在计数方式工作方式1是16位计数器这是工作方式1与工作方式0在计数方式时唯一差别3工作方式2定时器T0在工作方式2时,16位的计数器分成了两个__的8位计数器TH0和TL01)、工作在定时方式2)、工作在计数方式工作方式2与工作方式
0、方式1的差别,在于工作方式2是一个8位的计数器4工作方式3工作方式3仅对定时器T0有效当定时器T0工作在方式3时,将16位的计数器分为两个__的8位计数器TH0和TL0当定时器T0工作在方式3时,定时器T1只能工作在方式0~2,并且工作在不需要中断的场合
(二)中断系统什么是中断,我们从一个生活中的例子引入你正在家中看书,突然__铃响了,你放下书本,去接__,和来__的人交谈,然后放下__,回来继续看你的书这就是生活中的“中断http://___.dpj
100.com/zhongduan/index.html”的现象,就是正常的工作过程被外部的__打断了仔细研究一下生活中的中断,对于我们学习单片机的中断也很有好处第
一、什么可以引起中断,生活中很多__可以引起中断有人按了门铃了,__铃响了,你的闹钟闹响了,你烧的水开了….等等诸如此类的__,我们把可以引起中断的称之为中断源,单片机中也有一些可以引起中断的__,8031中一共有5个两个外部中断,两个计数/定时器中断,一个串行口中断第
二、中断的嵌套与优先级处理设想一下,我们正在看书,__铃响了,同时又有人按了门铃,你该先做那样呢?如果你正是在等一个很重要的__,你一般不会去理会门铃的,而反之,你正在等一个重要的客人,则可能就不会去理会__了如果不是这两者(即不等__,也不是等人上门),你可能会按你通常的习惯去处理总之这里存在一个优先级的问题,单片机中也是如此,也有优先级的问题优先级的问题不仅仅发生在两个中断同时产生的情况,也发生在一个中断已产生,又有一个中断产生的情况,比如你正接__,有人按门铃的情况,或你正开门与人交谈,又有__响了情况考虑一下我们会怎么办吧第
三、中断的响应过程当有__产生,进入中断之前我们必须先记住现在看书的第几页了,或拿一个书签放在当前页的位置,然后去处理不同的事情(因为处理完了,我们还要回来继续看书)__铃响我们要到放__的地方去,门铃响我们要到门那边去,也说是不同的中断,我们要在不同的地点处理,而这个地点通常还是固定的计算机中也是采用的这种方法,五个中断源,每个中断产生后都到一个固定的地方去找处理这个中断的程序,当然在去之前首先要保存下面将执行的指令的地址,以便处理完中断后回到原来的地方继续往下执行程序具体地说,中断响应可以分为以下几个步骤
1、保护断点,即保存下一将要执行的指令的地址,就是把这个地址送入堆栈
2、寻找中断入口,根据5个不同的中断源所产生的中断,查找5个不同的入口地址以上工作是由计算机自动完成的,与编程者无关在这5个入口地址处存放有中断处理程序(这是程序编写时放在那儿的,如果没把中断程序放在那儿,就错了,中断程序就不能被执行到)
3、执行中断处理程序
4、中断返回执行完中断指令后,就从中断处返回到主程序,继续执行
七、键盘和LED数码管显示器简介键盘是一组按键组合的开关的__,平时按键开关处于断开状态,当按下时它才闭合当键位没按下时输出为高电平,键位按下时输出低电平通常一个单片机系统用到的键盘都包含很多键位,这些键位都通过IO接口进行连接,按下一个键位后通过键盘接口电路就得到该键位的编码通常有两种方法进行编码一是用连接键盘的IO线的二进制组合进行编码二是顺序排列编码此处是用的共阳极的LED数码管,共阳就是7段的显示字码共用一个电源的正原理示意图 从上图可以看出,要是数码管显示数字,有两个条件
1、是要在VT端(3/8脚)加正电源;
2、要使(abcdefgdp端接低电平或“0”电平这样才能显示的一般刚接触数码显示的网友搞不清字段和编码的关系,其实要看硬件的电路的组成的,本站的实验板上的数码显示是用P0口驱动的,原理图可以参阅实验板的网页,其计算的方法如下,供网友参考例如要显示“0”,则要 abcdef六个字段亮就显示“0”了,而g和dp字段不亮;这样只要向P0口送出相应的代码即可,编码方法如下表程序使用时,只需将显示数字所对应的编码送P0口,然后打开相应的数码管显示位的电源控制即可显示相应的字符
八、总结
一、这个时钟实际上并不精确,主要有几下几点原因
1、定时T0中断服务程序暂停了定时计数器,这造成了一定的延迟,延迟时间是定时T0中断服务程序运行的时间
2、即使定时T0中断服务程序不暂停定时计数器,定时计数器重置命令也会造成延迟(为几个机器周期)MOVTL0#0B0HMOVTH0#03CH解决方案设定T0的初值时,减去以上延迟就可以了
二、功能改进本设计是按下一次按键达20ms就使时针或者分针加1/减1可以通过修改代码实现当按键1s以上时,使指针在1s以上时指针快速增加/减小;WAIT1:JNBP
1.1WAIT1;去掉这句铵键等待,并增加以下代码KSCAN11:INC7AH;每次按键,时针自增一次MOVA7AHCJNEA#18Hdelay_keyMOV7AH#00delay_key:mov7dh#50delay_key_:lcallDL20MS;延迟50*20ms=1sdec7dhmova#0cjnea7dhdelay_key_JBP
1.1KEYOUT;1S后判断按键是否还按下,否则快速增加时针WAIT12:INC7AH;1s后时针快速增加MOVA7AHCJNEA#18HKk2MOV7AH#00kk2:LCALLDL20MS;即时显示调整的结果,时针每60ms增加一次LCALLDL20MSLCALLDL20MSJNBP
1.1WAIT12。