找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5908|回复: 3
收起左侧

单片机电子时钟汇编语言课程设计

[复制链接]
ID:204068 发表于 2017-5-23 22:01 | 显示全部楼层 |阅读模式
一 课程设计的目的
单片计算机即单片微型计算机。(Single-Chip Microcomputer ),是 集CPU ,RAM ,ROM ,定时,计数和多种接口于一体的微控制器。他体积小,成本低,功能强,广泛应用于智能产品和工业自动化上。而51单片机是各单片机中最为典型和最有代表性的一种。这次课程设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。
二、课程设计的具体要求:
该课程设计是利用MCS-51单片机内部的定时/计数器、中断系统、以及行列键盘和LED显示器等部件,设计一个单片机电子时钟。设计的电子时钟通过数码管显示,并能通过按键实现设置时间和暂停、启动控制等。用定时/计数器T0,工作于定时,采用方式1,对12MHZ的系统时钟进行定时计数,初值设为XXYY(自己计算)。形成定时时间为50ms。用片内RAM的7BH单元对50ms计数,计20次产生秒计数器78H单元加1,秒计数器加到60则分计数器79H单元加1,分计数器加到60则时计数器7AH单元加1,时计数器加到24则时计数器清0。然后把秒、分、时计数器分成十位和个位放到8个数码管的显示缓冲区,通过数码管显示出来。显示格式为小时十位、小时个位---分十位、分个位---秒十位、秒个位。在处理过程中加上了按键判断程序,能对按键处理
三. MCS-51单片机系统简介
40个引脚按引脚功能大致可分为4个种类:电源、时钟、控制和I/O引脚。
  ⒈ 电源:
  ⑴ VCC - 芯片电源,接+5V;
  ⑵ VSS - 接地端;
  注:用万用表测试单片机引脚电压一般为0v或者5v,这是标准的TTL电平。但有时候在单片机程序正在工作时候测试结果并不是这个值而是介于0v-5v之间,其实这是万用表的响应速度没这么快而已,在某一个瞬间单片机引脚电压仍保持在0v或者5v。
  ⒉ 时钟:XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。
  ⒊ 控制线:控制线共有4根,
  ⑴ ALE/PROG:地址锁存允许/片内EPROM编程脉冲
  ① ALE功能:用来锁存P0口送出的低8位地址
  ② PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。
  ⑵ PSEN:外ROM读选通信号。
  ⑶ RST/VPD:复位/备用电源。
  ① RST(Reset)功能:复位信号输入端。
  ② VPD功能:在Vcc掉电情况下,接备用电源。
  ⑷ EA/Vpp:内外ROM选择/片内EPROM编程电源。
  ① EA功能:内外ROM选择端。
  ② Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。
  ⒋ I/O线
  80C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。
  P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)  
四、MCS-51单片机内部定时器/计数器、中断系统简介
定时/计数器是单片机中重要的功能模块之一,在检测,控制和智能仪器等设备中经常用它来定时。MCS-51系列中51子系列有2个16位的可编程定时/计数器:T0和T1;每个定时计数器既可以对系统时钟计数实现定时,也可以对外部信号计数实现计数功能,通过编程设定来实现。T0有4种工作方式,T1有3种工作方式,T2有3种工作方式,可通过编程设定。每个定时/计数器计数事件到时产生溢出,使相应的溢出位置位,溢出可通过查询或中断方式处理。
2.中断系统简介
MCS-51单片机提供5个硬件中断源:2个外部中断源INT0(P3.2)和INT1(P3.3),2个定时/计数器T0和T1的溢出中断TF0和TF1;1个串行口发送TI和接收RI中断。
T0中断服务程序流程图如图11.3。
五、键盘和LED数码管显示器简介
本系统共用8个数码管,从右到左依次显示秒个位、秒十位、横线、分个位、分十位、横线、时个位和时十位。采用软件译码动态显示。按键处理设置为:如没有按键,则时钟正常走时。当按下K0按键时,进入调分状态,时钟停止走动;按K1可K2按键可进行加1或减1操作;继续按K0键可分别进行分和小时的调整;最后按K0键将退出调整状态,时钟开始计时运行。


六、基本原理
1.定时器/计数器 T0   
        定时器/计数器T0用于时间计时。选择方式1,重复定时,定时时间设为50ms,定时时间到则中断,在中断服务程序中用一个计数器对50ms计数,计20次则对秒单元加1,秒单元加到60则对分单元加1,同时秒单元清0;分单元加到60则对时单元加1,同时分单元清0;时单元加到24则对时单元清0,标志一天时间计满。在对各单元计数的同时,把它们的值放到存储单元的指定位置。。
七.硬件电路
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps112D.tmp.png

八、软件程序流程及代码
1. T0中断服务程序流程图
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps112E.tmp.png  file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps112F.tmp.pngfile:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps1140.tmp.png
3.程序代码
ORG  0000H
LJMP  START
ORG  000BH     ;定时器/计数器T0中断程序入口
LJMP  INTT0
;主程序
START:MOV  R0,#70H
                MOV  R7,#0CH
INIT:  MOV  @R0,#00H
                INC  R0
                DJNZ  R7,INIT
                MOV  72H,#10
                MOV  75H,#10
                MOV  TMOD,#01H
                MOV  TL0,#0B0H
                MOV  TH0,#03CH
                SETB  EA
                SETB  ET0
                SETB  TR0
START1:LCALL  SCAN
                LCALL  KEYSCAN
                SJMP  START1
;延时1MS子程序
DL1MS:MOV  R6,#14H
DL1:MOV  R7,#19H
DL2:DJNZ  R7,DL2
        DJNZ  R6,DL1
        RET
;延时20MS子程序
DL20MS:ACALL  SCAN
                ACALL  SCAN
                ACALL  SCAN
                RET
;数码管显示程序
SCAN:        MOV  A,78H       ;时间存入显示缓冲区相应位置
                MOV  B,#0AH
                DIV  AB
                MOV  71H,A
                MOV  70H,B
                MOV  A,79H
                MOV  B,#0AH
                DIV  AB
                MOV  74H,A
                MOV  73H,B
MOV  A,7AH
                MOV  B,#0AH
                DIV  AB
                MOV  77H,A
MOV  76H,B
        MOV  R1,#70H     ;循环扫描显示
                MOV  R5,#80H
                MOV  R3,#08H
        SCAN1:MOV  A,R5
                MOV  P2,A
                MOV  A,@R1
                MOV  DPTR,#TAB
                MOVC  A,@A+DPTR
                MOV  P0,A
                MOV  A,R5
                LCALL  DL1MS
                INC  R1
                MOV  A,R5
                RR  A
                MOV  R5,A
                DJNZ  R3,SCAN1
                MOV  P2,#00H
                MOV  P0,#0FFH
                RET
        TAB:DB  0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH
                ;“0~9”,“-”的共阳极字段码

;定时器/计数器T0中断服务程序
INTT0:        PUSH  ACC
                PUSH  PSW
                CLR  ET0
                CLR  TR0
                MOV  TL0,#0B0H
                MOV  TH0,#03CH
                SETB  TR0
                INC  7BH
                MOV  A,7BH
                CJNE  A,#14H,OUTT0
                MOV  7BH,#00
                INC  78H
                MOV  A,78H
                CJNE  A,#3CH,OUTT0
                MOV  78H,#00
INC  79H
MOV  A,79H
                CJNE  A,#3CH,OUTT0
                MOV  79H,#00
INC  7AH
MOV  A,7AH
                CJNE  A,#18H,OUTT0
                MOV  7AH,#00
OUTT0:
SETB  ET0
POP  PSW
POP  ACC
                RETI
;按键处理程序
KEYSCAN:CLR  EA
                JNB  P1.0,KEYSCAN0
                JNB  P1.1,KEYSCAN1
                JNB  P1.2,KEYSCAN2
KEYOUT:SETB  EA
RET
KEYSCAN0:LCALL  DL20MS
JB  P1.0,KEYOUT
WAIT0:JNB  P1.0,WAIT0
                INC  7CH
                MOV  A,7CH
                CLR  ET0
                CLR  TR0
                CJNE  A,#03H,KEYOUT
                MOV  7CH,#00
                SETB  ET0
                SETB  TR0
                SJMP  KEYOUT
KEYSCAN1:LCALL  DL20MS
JB  P1.1,KEYOUT
WAIT1:JNB  P1.1,WAIT1
                MOV  A,7CH
                CJNE  A,#02H,KSCAN11
                INC  79H
MOV  A,79H
CJNE  A,#3CH,KEYOUT
                MOV  79H,#00
SJMP  KEYOUT
KSCAN11:INC  7AH
MOV  A,7AH
CJNE  A,#18H,KEYOUT
                MOV  7AH,#00
SJMP  KEYOUT
KEYSCAN2:LCALL  DL20MS
JB  P1.2,KEYOUT
WAIT2:JNB  P1.2,WAIT2
                MOV  A,7CH
                CJNE  A,#02H,KSCAN21
                DEC  79H
MOV  A,79H
CJNE  A,#0FFH,KEYOUT
                MOV  79H,#3BH
SJMP  KEYOUT
KSCAN21:DEC  7AH
MOV  A,7AH
CJNE  A,#0FFH,KEYOUT
                MOV  7AH,#17H
SJMP  KEYOUT
END               
九.设计制作流程
1、在PROTEUS中设计硬件
PROTEUS软件使用过程如下:
        1)选择元器件
        2)放置元器件
        3)连线
        4)添加程序
        5)运行仿真
元器件清单如下:
单片机:80C52
按键:BUTTON
电阻:RES
电容:CAP
晶振:CRYSTAL
LED数码管:7SEG-MPX8-CA-BLUE(CA:共阳,CC:共阴)
地:GRAND
电源:POWER
2、在KEIL51中编写程序,编译、连接形成HEX文件。
3、在PROTEUS中把HEX文件加载到单片机芯片上。
4、运行仿真看结果。

回复

使用道具 举报

ID:568296 发表于 2019-6-20 22:55 | 显示全部楼层
老哥  有图吗
回复

使用道具 举报

ID:613471 发表于 2019-9-19 12:39 | 显示全部楼层
感谢楼主,刚刚学单片机,正要用汇编编时钟
回复

使用道具 举报

ID:740427 发表于 2020-4-28 21:25 | 显示全部楼层
有图片么
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表