最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

单片机电子钟课程设计-汇编-中南大学-51-8255

来源:动视网 责编:小OO 时间:2025-09-30 22:13:59
文档

单片机电子钟课程设计-汇编-中南大学-51-8255

单片微机应用课程设计说明书设计题目电子钟机电工程院(系)机械设计制造及其自动化专业班级机械1102班学号0806110417设计人指导教师完成日期2015年1月日中南大学机电工程学院一、课程设计任务书题目:用8031的P1口和一片8255作输出口控制六个数码管显示(二个数码管显示“时”、二个数码管显示“分”、二个数码管显示“秒”),作输入口控制按键输入,74LS138译码器作8255的片选信号,做一台电子钟。要求:方案一:1、用一个按键控制作时钟调整状态输入(按下一次进入时钟调整状态下的“时”
推荐度:
导读单片微机应用课程设计说明书设计题目电子钟机电工程院(系)机械设计制造及其自动化专业班级机械1102班学号0806110417设计人指导教师完成日期2015年1月日中南大学机电工程学院一、课程设计任务书题目:用8031的P1口和一片8255作输出口控制六个数码管显示(二个数码管显示“时”、二个数码管显示“分”、二个数码管显示“秒”),作输入口控制按键输入,74LS138译码器作8255的片选信号,做一台电子钟。要求:方案一:1、用一个按键控制作时钟调整状态输入(按下一次进入时钟调整状态下的“时”
单片微机应用课程设计说明书

       设计题目              电子钟                    

  

  机电工程  院(系) 机械设计制造及其自动化 专业

   班级      机械1102班       学号   0806110417             

设计人                                          

 

指导教师                                        

完成日期    2015    年     1     月           日

中南大学机电工程学院

一、课程设计任务书

题目:用8031的P1口和一片8255作输出口控制六个数码管显示(二个数码管显示“时”、二个数码管显示“分”、二个数码管显示“秒”),作输入口控制按键输入,74LS138译码器作8255的片选信号,做一台电子钟。要求:

方案一:1、用一个按键控制作时钟调整状态输入(按下一次进入时钟调整状态下的“时”调整,再按下一次进入“分”调整,再按下一次进入“秒”调整,再按下一次退出时钟调整状态),一个按键用于调整时钟(在时钟调整状态下有效)。

        2、在时钟调整状态下,正在调整的“时”或“分”或“秒”要进行闪烁显示指示。

        3、完成设计时,交设计说明书和详细电子钟系统电路原理图。说明书书的要求见设计指导书。

我选择方案一 、题目1

用8255的A口和B口作输出口控制六个数码管显示(二个数码管显示“时”、二个数码管显示“分”、二个数码管显示“秒”),单片机P1口的P1.7、P1.6、P1.5作输入控制按键输入,请选用方案一或方案二做一台电子钟。要求:

8255的A口地址为0900H, 8255的B口地址为4900H

二、设计方案

1、模块设计

电子钟功能分模块实现,靠标志连接,便于编写调试。共五个模块。

模块1:按键扫描模块:循环扫描键1键2,扫描时同时调用显示子程序。

模块2:定时器中断模快:判断FLAG.1标志决定是秒加1还是反相FLAG.0。

模块3:转换段码模块:将时分秒查表转换为段码放在缓冲区,根据标志FLAG.0决定是时分秒全部转换还是部分转换,根据STATUS标志的内容决定不转换那部分(STATUS=3不转换时,STATUS=2不转换分,STATUS=1不转换秒,不转换部分段码置0),即实现闪烁显示。

模块4:段码位码送入8255:A口送段码,B口送位码,完成动态显示。

模块5:修改模块:扫描到键2按下则根据STATUS标志的内容修改相应的时分秒(STATUS=3时加1,STATUS=2分加1,STATUS=1秒加1,其它值不动作)

2、标志设置及RAM地址分配

序号名   称

注               释

  1DISM0~DISM5

显示缓冲区,用于显示程序中存放要显示的段码,占六个单元。

  2HH小时时间存放单元,占一个单元,初始值赋0

  3MM分时间存放单元,占一个单元,初始值赋0

  4SS秒时间存放单元,占一个单元,初始值赋0

  5HSEC小于0.5秒计数延时单元,占一个单元,用于时间调整时,闪烁指示状态用。定时器定时为50ms,该单元初始值赋10

  6SEC小于1秒计数延时单元,占一个单元,用于时钟计时用,定时器定时为50ms,该单元初始值赋20

  7FLAG标志存储器单元,占一个单元,单元中的每一位可用作标志,该单元必须定位在单片机片内20~2FH中(在这些单元中的每一位可按位寻址访问)。

  8STATUS时钟调整时的状态指针,在时钟调整状态下有效。为“3”时指示“时”调整,为“2”时指示“分”调整,为“1”时指示“秒”调整。

序号标志名称注               释

  1FLAG.1每隔0.5秒将此标志反相一次。在时钟调整状态下,用此标志控制数码管进行闪烁指示当前正在调整的是哪一个时钟单元。

  2STAUS按下时钟调整键后,此标志置“1”,进入时钟调整状态,先进行“时”调整((STATUS)=3),再按下时钟调整键,进行“分”调整((STATUS)=2),再按下时钟调整键,进行“秒”调整((STATUS)=1),再按下时钟调整键,则此标志置“0”,退出时钟调整状态。

  3FLAG.1按键按下后,此标志置“1”,键松开,此标志置“0”

3、相关计算

1)定时器初值:使用定时器0定时50ms,工作在方式0,初值为65535-5000=15535=3CAFH,故TH0=3CH、TL0=0AFH,在中断服务程序里通过减1判断20次实现定时1秒(SEC),判断10次实现定时0.5秒(HSEC)

2)七段数码管段码:

0123456789
3FH06H5BH4FH66H6DH7DH07H7FH6FH00H
3)地址分配

高八位对应关系如下表

P2P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0
A1A0G2B

G2A

GCBA
A00001001
B01001001
Control11001001
A口地址为0900H  B口地址为4900H 控制口地址为C900H

三、流程图

1、模块1---按键扫描模块

2、模块2--定时器中断模快

3、模块3--转换段码模块

4、模块4--段码位码送入8255

5、模块5--修改模块

四、硬件电路设计

1、ATC51

2、74LS138

当G2B_、G2_A为低电平,G1为高电平时芯片正常工作,根据输入ABC端口的电平由真值表可以查得输出值。

74LS138真值表

G1G2AG2BCBAY7Y6Y5Y4Y3Y2Y1Y0
0XXXXX11111111
X1XXXX11111111
XX1XXX11111111
10000011111110
10000111111101
10001011111011
10001111110111
10010011101111
10010111011111
10011010111111
10011101111111
3、8255

8255是可编程的并行输入/输出接口芯片,通用性强且使用灵活。8255按功能可分为三个部分,即:总线接口电路,I/O口电路和控制逻辑电路。

1.I/O口电路:8255共有三个八位口,其中A口和B口是单纯的数据口,供数据I/O口使用。

2.总线接口电路:它用于实现8255和单片机芯片的信号连接。

(1)CS——片选信号。

(2)RD——读信号。

(3)WR——写信号。

(4)A0、A1——端口选择信号。8255共有四个可寻址的端口,用二位编码可以实现。

3.控制逻辑电路:它是控制寄存器,用于存放各口的工作方式控制字。

本课程设计是利用8255可编程并行口芯片,实现数据的输入、输出。可编程通用接口芯片8255A有三个八位的并行的I/O口,它有三种工作方式。本实验采用的方式为0:PA口输出段码,PB口输出位码。故控制字为1000 0000H。

工作方式0是一种基本的输入输出方式。在这种方式下,三个端口都可以由程序设置为输入或输出,其基本功能可概括如下:

A、可具有两个八位端口(A、B)和两个4位端口(C口的上半部分和下半部)。

B、数据输出时可锁存,输入时没有锁存功能。

4、7段数码管(共阴极)

故有如下对应关系

0123456789
3FH06H5BH4FH66H6DH7DH07H7FH6FH00H
5、按键

实验台提供了8个按钮的小键盘,可接到单片机的并行口,如果有键按下,则相应输出为低,否则输出为高。

本次电子钟设计使用了P1.7和P1.6口分别控制按键1和按键2.

6、电路原理图

五、程序源代码

CLOCK-MAIN.ASM

FLAG EQU 21H

HH EQU 30H 

MM EQU 31H

SS EQU 32H

STATUS EQU 33H

HSEC EQU 34H

SEC EQU 35H

DISM0 EQU 40H

DISM1 EQU 41H

DISM6 EQU 42H ;段码为00H使得时分秒间隔显示更好看

DISM2 EQU 43H

DISM7 EQU 45H

DISM3 EQU 44H

DISM4 EQU 46H

DISM5 EQU 47H

DISM8 EQU 48H

K1 EQU P1.7

K2 EQU P1.6

ORG 0000H

AJMP MAIN

ORG 000BH

LJMP INT_0

MAIN:

MOV SP,#50H

MOV DPTR,#0C900H

MOV A,#80H

MOVX @DPTR,A    ;写入控制字

MOV SEC,#20   ;SET TIME=50MS *20 

MOV HSEC,#10  ;SET TME=50MS *10

MOV TMOD,#11H

MOV TH0,#3CH

MOV TL0,#0AFH  

SETB EA

SETB ET0

SETB TR0 

KEYTEST:

MOV STATUS,#4

CLR FLAG.1

TEST10:

LCALL DISBUF

LCALL DISP

JNB K2,TEST20  ;键2按下则跳出循环

 JB K1,TEST10  ;键1不按下则循环并显示

TEST11:

LCALL DISBUF

LCALL DISP

JNB K1,TEST11 ;键1不松开则循环并显示

DEC STATUS

SETB FLAG.1

START:

MOV R0,STATUS

CJNE R0,#0,TEST10 ;每按键1一次STATUS+1,按4次跳出循环

SJMP KEYTEST

TEST20:

LCALL DISBUF

LCALL DISP

JNB K2,TEST20  ;键2不松开则循环并显示

LCALL MODIFY

SJMP TEST10  ;键2按下一次则修改一次并跳出循环去进入按键1和2的测试循环

MODIFY:

MOV A,STATUS

CLR CY

SUBB A,#3

JZ MODFH

MOV A,STATUS

CLR CY

SUBB A,#2

JZ MODFM

MOV A,STATUS

CLR CY

SUBB A,#1

JZ MODFS    ;判断STATUS 为3时修改时 为2时修改分 为1时修改秒

SJMP RET_0

MODFH:

MOV A,HH

ADD A,#1

DA A

MOV HH,A

CJNE A,#24H,NEXTH

MOV HH,#0

NEXTH:

AJMP RET_0

MODFM:

MOV A,MM

ADD A,#1

DA A

MOV MM,A

CJNE A,#60H,NEXTM

MOV MM,#0

NEXTM:

AJMP RET_0

MODFS:

MOV A,SS

ADD A,#1

DA A

MOV SS,A

CJNE A,#60H,NEXTS

MOV SS,#0

NEXTS:

RET_0:

LCALL DISBUF

LCALL DISP

RET

INT_0:

JNB FLAG.1,TIME

MOV A,HSEC

DEC A

MOV HSEC,A

JNZ RET_A

CPL FLAG.0

MOV HSEC,#10

SJMP RET_A

TIME:

MOV A,SEC

DEC A

MOV SEC,A

JNZ RET_A

MOV A,SS

ADD A,#1

DA A

MOV SS,A

MOV SEC,#20

SJMP RET_A

RET_A:

MOV TH0,#3CH

MOV TL0,#0AFH

RETI

DISBUF:

JNB FLAG.0,LAB0 ;标志为0清除相应的时分秒

SJMP LAB1

LAB0:

LJMP NORMAL

LAB1:

MOV A,STATUS

CLR CY

SUBB A,#3

JZ FLICH  ;判断status 

MOV A,STATUS

CLR CY

SUBB A,#2

JZ FLICM

MOV A,STATUS

CLR CY

SUBB A,#1

JZ FLICS

SJMP NORMAL

FLICH:

MOV DISM0,#00H

MOV DISM1,#00H

SJMP NORMALM

FLICM:

MOV DISM2,#00H

MOV DISM3,#00H

MOV A,HH

ANL A,#0F0H

SWAP A

MOV DPTR,#DISTAB

MOVC A,@A+DPTR

MOV DISM0,A

MOV A,HH

ANL A,#0FH

MOV DPTR,#DISTAB

MOVC A,@A+DPTR

MOV DISM1,A   

MOV DISM4,#00H

MOV DISM5,#00H

MOV A,SS

ANL A,#0F0H

SWAP A

MOV DPTR,#DISTAB

MOVC A,@A+DPTR

MOV DISM4,A

MOV A,SS

ANL A,#0FH

MOV DPTR,#DISTAB

MOVC A,@A+DPTR

MOV DISM5,A 

SJMP RET_3

FLICS:

MOV DISM4,#00H

MOV DISM5,#00H

MOV A,HH

ANL A,#0F0H

SWAP A

MOV DPTR,#DISTAB

MOVC A,@A+DPTR

MOV DISM0,A

MOV A,HH

ANL A,#0FH

MOV DPTR,#DISTAB

MOVC A,@A+DPTR

MOV DISM1,A 

MOV A,MM

ANL A,#0F0H

SWAP A

MOV DPTR,#DISTAB

MOVC A,@A+DPTR

MOV DISM2,A

MOV A,MM

ANL A,#0FH

MOV DPTR,#DISTAB

MOVC A,@A+DPTR

MOV DISM3,A 

SJMP RET_3

NORMAL:

MOV A,HH

ANL A,#0F0H

SWAP A

MOV DPTR,#DISTAB

MOVC A,@A+DPTR

MOV DISM0,A

MOV A,HH

ANL A,#0FH

MOV DPTR,#DISTAB

MOVC A,@A+DPTR

MOV DISM1,A ;HH>>DISM0 DISM1

NORMALM:

MOV A,MM

ANL A,#0F0H

SWAP A

MOV DPTR,#DISTAB

MOVC A,@A+DPTR

MOV DISM2,A

MOV A,MM

ANL A,#0FH

MOV DPTR,#DISTAB

MOVC A,@A+DPTR

MOV DISM3,A ;MM>>DISM2 DISM3

NORMALS:

MOV A,SS

ANL A,#0F0H

SWAP A

MOV DPTR,#DISTAB

MOVC A,@A+DPTR

MOV DISM4,A

MOV A,SS

ANL A,#0FH

MOV DPTR,#DISTAB

MOVC A,@A+DPTR

MOV DISM5,A ;SS>>DISM4 DISM5

RET_3:

RET

DISTAB:DB 3FH,06H,5BH,4FH

DB 66H,6DH,7DH,07H

DB 7FH,6FH,3FH,3FH

DISP:

MOV A,SS

CJNE A,#60H,NEXT0    ;判断是否到60

MOV SS,#0

MOV A,MM

ADD A,#1

DA A

MOV MM,A

NEXT0:

MOV A,MM

CJNE A,#60H,NEXT1

MOV MM,#0

MOV A,HH

ADD A,#1

DA A

MOV HH,A 

NEXT1:

MOV A,HH

CJNE A,#24H,NEXT2

MOV HH,#0

NEXT2:      

MOV R0,#DISM0

MOV DISM8,#7FH

MOV R1,#8

DISP0:

MOV DPTR,#0900H

MOV A,@R0

MOVX @DPTR,A    ;A口送段码

MOV DPTR,#4900H

MOV A,DISM8

MOVX @DPTR,A   ;B口送位码

RR A

MOV DISM8,A  

MOV R2,#3

DEL:MOV R3,#250

DJNZ R3,$

DJNZ R2,DEL     ;延时

INC R0

DJNZ R1,DISP0

RET

RET

END

六、操作说明

运行后电子钟从00:00:00开始计时

用键1控制作时钟调整状态输入:按下一次进入时钟调整状态下的“时”调整,再按下一次进入“分”调整,再按下一次进入“秒”调整,再按下一次退出时钟调整状态。处于调整状态时相应的调整部分闪烁显示。

用键2调整时钟:在时钟调整状态下有效,按下一次闪烁的部分加1。

七、设计总结

1、本设计的优缺点

●优点:满足方案一所有要求。按键测试部分精彩。模块化设计思路清晰,易于编程调试。

●缺点:

1.本来坚持不重复自己原则(DRY),但是由于8051汇编指令缺少相等则转移、不带进位的减法等指令,使得其做多路判断不便。做判断调试未果,只好在模块3转换段码模块中使用了几处重复代码。

2.在写报告时发现源代码中的修改模块也做了到60H判断,实际上这是没有必要的,因为在转换段码模块已经做了判断。

2、心得体会

此次课程设计有了老师的设计指南起点高了很多,思路也更清晰。通过此次电子钟的设计,我掌握了如何运用设置标志来模块化优化设计,如何充分利用μvision IDE工具里的设置断点、单步运行(F11)、运行(F5)、查看/修改RAM、查看端口、定时器等来调试程序,了解了proteus电路图绘制与仿真,在程序设计和程序调试方面收获很大,通过十道思考题,提升了举一反三的能力。当程序写完后认为理论上是对的一运行却无法正常工作时无比懊恼,只能说服自己静下心耐心分模块一步一步调试,调试的过程中很明显地感受到到标志设置与模块化带来的优越性,这使得通过调试反馈修改让电子钟从不显示到显示一位到显示八位到按键一正常工作再到按键二正常工作完成设计,当自己编写的程序运行良好性能不错时无比喜悦,也是一小成就。此次课程设计还让我明白了算法设计与注重调试方法的重要性,在算法思路上多思考会带来代码编写的效率提升,充分利用调试的各种工具可以大大缩短调试程序的时间。

八、参考文献

[1] 万福君. 单片微机原理系统设计与应用. 中国科学技术大学出版社. 2005

[2] 李继灿. 新编微型计算机原理及应用. 清华大学出版社. 2008

文档

单片机电子钟课程设计-汇编-中南大学-51-8255

单片微机应用课程设计说明书设计题目电子钟机电工程院(系)机械设计制造及其自动化专业班级机械1102班学号0806110417设计人指导教师完成日期2015年1月日中南大学机电工程学院一、课程设计任务书题目:用8031的P1口和一片8255作输出口控制六个数码管显示(二个数码管显示“时”、二个数码管显示“分”、二个数码管显示“秒”),作输入口控制按键输入,74LS138译码器作8255的片选信号,做一台电子钟。要求:方案一:1、用一个按键控制作时钟调整状态输入(按下一次进入时钟调整状态下的“时”
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top