当前位置:文档之家› 51单片机数码管时钟电路的设计

51单片机数码管时钟电路的设计

51单片机数码管时钟电路的设计
51单片机数码管时钟电路的设计

数码管时钟电路的设计

一、设计目的:

通过这次课程设计掌握单片机系统的基本设计步骤及设计思路,掌握汇编语言的用法及各种指令的含义,比较熟练的运用指令进行单片机系统的设计的,熟悉用KEIL软件进行汇编语言的汇编,以及把代码写入实验板中,观测代码结合实际的运行结果后进行调整,体会到编程的分析问题、确定算法、画程序流程图、编写程序、程序功能模块化的优点的各各步骤。

二、设计要求:

LED数码管时钟电路采用24h计时方式,时、分、秒用六位数码管显示。该电路采用AT89C2051单片机,使用3V电池供电,只使用一个按键开关即可进入调时、省电(不显示LED数码管)和正常显示三种状态。

三、设计实验内容:

1. 硬件的设计

其采用AT89C51单片机应用设计,LED显示采用动态扫描方式实现,P0口输出段码数据,P2口输出位码数据,P1.1、P1.2接按钮开关。为了提供LED数码管的驱动电流,采用6MHz晶振。

2. 系统总体分析

系统主要包含四大模块:显示模块、时间计时模块、模式切换模块和模式设置模块。

●显示模块:主要由主循环负责。内存中开辟了一段8字节的内存空间,

用作数据显示的字符缓冲区。主循环不断将缓冲区中的字符呈现至数码管。

●时间计时模块:电子钟的核心模块,记录了时间的时、分、秒信息。

●模式切换模块(MODE):切换电子钟的设置模式,包括时设置、分设

置、秒设置、闹铃开关设置、闹铃时设置和闹铃分设置。相关数据被设置时将闪烁显示。

●模式设置模块(CONFIG):通过判断设置模式(MODE),执行相应的

设置。如时、分、秒的增1以及闹铃开关的变换。

另外,主循环还负责扫描键盘,检测相应键是否被按下,若MODE键被按下则在特定单元中登记该功能,并启动定时器1,然后返回继续执行显示功能。在定时器1中断时,被登记的功能正式执行。期间用时约10ms,用以消除机械抖动。

主循环流程图大致如下:

开始

键被按下

登记相应功能

数码管显示

图(一)主循环流程图

定时器1中断服务程序流程图如下:

定时器1中断

MODE CONFIG

logfunc = ?

执行MODE 执行CONFIG

结束

图(二)定时器1中断服务程序流程图

3. 系统主要程序的设计

1)主程序

本设计中的主程序主要负责对键盘扫描及显示数据,还包括判断是否闹钟正在活动。若键盘中的P1.6(模式键)或P1.7(设置键)被按下,登记将被执行的功能,主循环不负责功能模块的执行。若闹钟正在活动,调用蜂鸣函数。其中bPalse标识了一秒的前半秒和后半秒,是为了控制显示数据的半秒闪烁。主函数还包含初始化操作,以下省略。

loop:

MOV B, #01111111B ;位选通信号

MOV R0, #prebuf - 01H ;数据缓冲区

nextnum:

ACALL keyscan ;扫描键盘

INC R0

MOV A, @R0

PUSH ACC

MOV A, B

RL A

MOV B, A

JB bPalse, show

ORL A, dmask

JNB bAlaIng, show

ACALL beeponce 若闹铃活动,调用蜂鸣函数

DEC SP

SJMP loop

show:

PUSH ACC

ACALL displayone 在特定数码管显示数据。

DEC SP

DEC SP

ACALL delay

CJNE R0, #prebufend, nextnum

SJMP loop

keyscan:

JNB keym, keymode ;若切换键被按下,登记“切换”功能

JNB keyc, keyconf ;若设置键被按下,登记“设置”功能

RET

;=====================

;

;log function 'mode'

;

;=====================

keymode:

MOV funclog, #01H ;key act

ACALL funcperform ;激活“功能执行模块”(见下文),

RET

;=====================

;

;log function 'config'

;

;=====================

keyconf:

MOV funclog, #02H

ACALL funcperform ;激活“功能执行模块”(见下文)

RET

2)显示子程序

在特定数码管显示数据,通过堆栈传递参数。

第一个参数是待显示的字符,第二个参数是位选通信号。函数通过查字形码表将字形显示至数码管。

displayone:

PUSH ACC

PUSH PSW

MOV A, R0

PUSH ACC

PUSH B

MOV PSW, #00H

MOV A, SP

SUBB A, #07H

MOV R0, A

INC R0

MOV B, @R0

PUSH DPL

PUSH DPH

MOV DPTR, #metrix

MOVC A, @A + DPTR

JNB bPalse, noft

ANL A, ft

noft:

MOV lmask, B

MOV led, A

POP DPH

POP DPL

POP B

POP ACC

MOV R0, A

POP PSW

POP ACC

RET

3)定时器TO中断服务程序

电子钟的计秒程序,负责计算时间。act: ;main timer actor CJNE R2, #0BH, con

CLR bPalse ;palse per second con:

DJNZ R2, leave

MOV R2, #14H

PUSH ACC

PUSH PSW

MOV PSW, #00H

MOV A, s ;s

INC A

DA A

MOV s, A

CJNE A, #60H, incn

MOV s, #00H

MOV A, m ;m

INC A

DA A

MOV m, A

CJNE A, #60H, incn

MOV m, #00H

MOV A, h ;h

INC A

DA A

MOV h, A

CJNE A, #24H, incn

MOV h, #00H

incn:

SETB bPalse

JNB bAlaOn, alarmoff

ACALL checkala ;check alarm when alarm is ON

alarmoff:

MOV A, npage

ANL A, #02H

JNZ skip

ACALL prepare

skip:

POP PSW

POP ACC

leave:

MOV TH0,#03CH

MOV TL0,#0B0H

RETI

4)模式切换程序

切换设置模式,包括时间时设置、时间分设置、时间秒设置、闹铃开关设置、闹铃时设置、闹铃分设置。

mode: ;mode

;SETB P3.2

PUSH ACC

PUSH PSW

PUSH DPL

PUSH DPH

JNB bAlaIng, modeskip

SETB bKick ;stop alarm

CLR bAlaIng

SJMP modeleave

modeskip:

MOV npage, #00H

MOV DPTR, #maskdat

MOV A, cmode

INC A

CJNE A, #07H, enmode

MOV A, #00H

enmode:

MOV cmode, A

ANL A, #04H

JZ notalapage

MOV npage, #02H

ACALL preala ;时钟调整页准备

notalapage:

MOV A, cmode

MOVC A, @A + DPTR

MOV dmask, A ;设置时闪烁

modeleave:

POP DPH

POP DPL

POP PSW

POP ACC

RET

5)模式设置程序

对时间量执行加1,特别的闹铃开关执行开关设置。conf: ;conf

;SETB P3.3

PUSH ACC

PUSH PSW

MOV PSW, #00H

MOV A, cmode

PUSH DPL

PUSH DPH

JNB bAlaIng, confskip

;SETB bKick ;stop alarm

;CLR bAlaIng

SJMP confleave

confskip:

MOV DPTR, #confset

RL A

JMP @A + DPTR

set1: ;时设置

MOV A, h

INC A

DA A

MOV h, A

CJNE A, #24H, notset

MOV h, #00H

SJMP notset

set2: ;分设置

MOV A, m

INC A

DA A

MOV m, A

CJNE A, #60H, notset

MOV m, #00H

SJMP notset

set3: ;秒设置

MOV A, s

INC A

DA A

MOV s, A

CJNE A, #60H, notset

MOV s, #00H

SJMP notset

setae:

CPL bAlaOn ;闹钟开关

SJMP notseta

setah:

MOV A, ah ;闹钟时设置

INC A

DA A

MOV ah, A

CJNE A, #24H, notseta

MOV ah, #00H

SJMP notseta

setam:

MOV A, am ;闹钟分设置

INC A

DA A

MOV am, A

CJNE A, #60H, notseta

MOV am, #00H

notseta:

ACALL preala

CLR bKick

SJMP confleave

notset:

ACALL prepare

confleave:

POP DPH

POP DPL

POP PSW

POP ACC

RET

confset:

SJMP confleave

SJMP set1

SJMP set2

SJMP set3

SJMP setae

SJMP setah

SJMP setam

6)功能执行程序

执行程序负责执行被登记的功能,功能由主循环扫描键盘并登记。主循环中,当扫描到有键盘按下时,登记下将被执行的功能,然后启动定时器1,定时器1的中断服务程序即是功能执行程序,中断程序分析并执行被登记的功能。

encperform:

CLR TR1 ;act once

PUSH ACC

PUSH PSW

MOV A, funclog

CJNE A, #01H, encconf

JNB keym, encperformleave ;action just at button up;

ACALL mode ;do 'mode' function

SJMP encperformleave

encconf:

CJNE A, #02H, encperformleave

JNB keyc, encperformleave ;action just at button up;

ACALL conf ;do 'config' function

encperformleave:

POP PSW

POP ACC

RETI

四、完整源代码

s EQU 30H

m EQU 31H

h EQU 32H

dmask EQU 33H

cmode EQU 34H

ft EQU 36H

prebuf EQU 37H ;8 byte buffer prebufend EQU 3EH

am EQU 3FH ;alarm minite

ah EQU 40H ;alarm hour

npage EQU 41H ;function page

funclog EQU 42H ;func to act

stack EQU 4FH

;pin

led EQU P0

lmask EQU P2

beep EQU P3.3

keym EQU P1.6 ;key 'mode'

keyc EQU P1.7 ;key 'config'

;bit addr

bPalse EQU 00H

bAlaIng EQU 01H

bAlaOn EQU 02H

bKick EQU 03H

;metrix element

m_none EQU 0AH

m_o EQU 0BH

m_f EQU 0CH

m_n EQU 0DH

org 0000H

LJMP start

org 0003H

LJMP modelogger ;INT0 to mode

org 000BH

LJMP act ;timer

org 0013H

LJMP conflogger ;INT1 to config

org 001BH

LJMP encperform ;performer

org 0100H

start:

MOV SP, #stack

MOV TMOD,#11H

MOV TH0,#3CH

MOV TL0,#0B0H

MOV R2, #14H ;R2 used by T0

MOV s, #00H

MOV m, #00H

MOV h, #00H

MOV dmask, #00H

MOV cmode, #00H

MOV npage, #00H

MOV ah, #23H

MOV am, #59H

SETB EA

SETB ET0 ;T0

SETB PT0

SETB TR0

SETB ET1 ;T1

SETB EX0 ;INT0

SETB IT0

SETB EX1 ;INT1

SETB IT1

SETB P3.2

SETB P3.3

SETB keym

SETB keyc

CLR bAlaIng

CLR bAlaOn

CLR bKick

loop:

MOV B, #01111111B

MOV R0, #prebuf - 01H

nextnum:

ACALL keyscan

INC R0

MOV A, @R0

PUSH ACC

MOV A, B

RL A

MOV B, A

JB bPalse, show

ORL A, dmask

JNB bAlaIng, show

MOV led, #0FFH ;clr led when alarm ACALL beeponce

DEC SP

SJMP loop

show:

PUSH ACC

ACALL displayone

DEC SP

DEC SP

ACALL delay

CJNE R0, #prebufend, nextnum

SJMP loop ; end start beeponce:

CPL beep

MOV R5, #02H

beeploop2:

MOV R6, #0FFH

beeploop1:

NOP

DJNZ R6, beeploop1

DJNZ R5, beeploop2

RET ;end beeponce

;=====================

;;display one character

;

;@param char Character to display

;@param mask Position character to display

;=====================

displayone:

PUSH ACC

PUSH PSW

MOV A, R0

PUSH ACC

PUSH B

MOV PSW, #00H

MOV A, SP

SUBB A, #07H

MOV R0, A

MOV A, @R0

INC R0

MOV B, @R0

PUSH DPL

PUSH DPH

MOV DPTR, #metrix

MOVC A, @A + DPTR

JNB bPalse, noft

ANL A, ft

noft:

MOV lmask, B

MOV led, A

POP DPH

POP DPL

POP B

POP ACC

MOV R0, A

POP PSW

POP ACC

RET ;end displayone delay:

PUSH ACC

MOV A, R5

PUSH ACC

MOV A, R6

PUSH ACC

MOV R5, #03H

dloopo:

MOV R6, #0FFH

dloop:

NOP

DJNZ R6, dloop

DJNZ R5, dloopo

POP ACC

MOV R6, A

POP ACC

MOV R5, A

POP ACC

RET ;end delay

ORG 0200H

;=====================

;

;prepare time datas

;to the display buffer

;

;=====================

prepare:

MOV ft, #11011111B;enable ft

PUSH ACC

PUSH PSW

PUSH B

MOV A, R1

PUSH ACC

MOV R1, #prebuf

MOV @R1, #m_none

INC R1

MOV @R1, #m_none

INC R1

MOV A, h ;h

MOV B, A

SW AP A

ANL A, #0FH

MOV @R1, A

ANL B, #0FH

INC R1

MOV @R1, B

MOV A, m ;m

MOV B, A

SW AP A

INC R1

MOV @R1, A

ANL B, #0FH

INC R1

MOV @R1, B

MOV A, s ;s

MOV B, A

SW AP A

ANL A, #0FH

INC R1

MOV @R1, A

ANL B, #0FH

INC R1

MOV @R1, B

POP ACC

MOV R1, A

POP B

POP PSW

POP ACC

RET ;end prepare ;=====================

;

;prepare alarm datas

;to the display buffer

;

;=====================

preala:

MOV ft, #0FFH ;no ft

PUSH ACC

PUSH PSW

MOV R1, #prebuf

MOV @R1, #m_o

INC R1

JNB bAlaOn, alaoff

MOV @R1, #m_n

INC R1

MOV @R1, #m_none

SJMP alacon

alaoff:

MOV @R1, #m_f

INC R1

MOV @R1, #m_f

alacon:

INC R1

MOV @R1, #m_none

MOV A, ah

SW AP A

ANL A, #0FH

INC R1

MOV A, ah

ANL A, #0FH

INC R1

MOV @R1, A

MOV A, am

SW AP A

ANL A, #0FH

INC R1

MOV @R1, A

MOV A, am

ANL A, #0FH

INC R1

MOV @R1, A

POP PSW

POP ACC

RET ;end preala

ORG 0300H

;=====================

;

;perform action

;

;=====================

encperform:

CLR TR1 ;act once

PUSH ACC

PUSH PSW

MOV A, funclog

CJNE A, #01H, encconf

JNB keym, encperformleave ;action just at button up;

ACALL mode ;do 'mode' function SJMP encperformleave

encconf:

CJNE A, #02H, encperformleave

JNB keyc, encperformleave ;action just at button up;

ACALL conf ;do 'config' function encperformleave:

POP PSW

POP ACC

RETI

;=====================

;

;prepare to do function

;

;=====================

funcperform:

MOV TH1, #0D8H

MOV TL1, #0F0H

SETB TR1

RET

;=====================

;

;log function 'mode'

;

;===================== modelogger:

MOV funclog, #01H

ACALL funcperform

RETI

;=====================

;

;log function 'config'

;

;===================== conflogger:

MOV funclog, #02H

ACALL funcperform

RETI

ORG 0400H

;=====================

;

;mode

;

;to change function

;or stop alarm when

;alarming

;

;=====================

mode: ;mode

;SETB P3.2

PUSH ACC

PUSH PSW

PUSH DPL

PUSH DPH

JNB bAlaIng, modeskip

SETB bKick ;stop alarm

CLR bAlaIng

SJMP modeleave

modeskip:

MOV npage, #00H

MOV DPTR, #maskdat

MOV A, cmode

INC A

CJNE A, #07H, enmode

MOV A, #00H

enmode:

MOV cmode, A

JZ notalapage

MOV npage, #02H

ACALL preala

notalapage:

MOV A, cmode

MOVC A, @A + DPTR

MOV dmask, A

modeleave:

POP DPH

POP DPL

POP PSW

POP ACC

RET ;end mode

;=====================

;

;conf

;

;to change setting

;that the 'mode' decided

;

;=====================

conf: ;conf

;SETB P3.3

PUSH ACC

PUSH PSW

MOV PSW, #00H

MOV A, cmode

PUSH DPL

PUSH DPH

JNB bAlaIng, confskip

;SETB bKick ;stop alarm

;CLR bAlaIng

SJMP confleave

confskip:

MOV DPTR, #confset

RL A

JMP @A + DPTR

set1:

MOV A, h

INC A ;h

DA A

MOV h, A

CJNE A, #24H, notset

MOV h, #00H

SJMP notset

set2:

MOV A, m

INC A ;m

DA A

MOV m, A

CJNE A, #60H, notset

MOV m, #00H

SJMP notset

set3:

INC A ;s

DA A

MOV s, A

CJNE A, #60H, notset

MOV s, #00H

SJMP notset

setae:

CPL bAlaOn ;ala enable

SJMP notseta

setah:

MOV A, ah ;ala h

INC A

DA A

MOV ah, A

CJNE A, #24H, notseta

MOV ah, #00H

SJMP notseta

setam:

MOV A, am ;ala m

INC A

DA A

MOV am, A

CJNE A, #60H, notseta

MOV am, #00H

notseta:

ACALL preala

CLR bKick

SJMP confleave

notset:

ACALL prepare

confleave:

POP DPH

POP DPL

POP PSW

POP ACC

RET

confset:

SJMP confleave

SJMP set1

SJMP set2

SJMP set3

SJMP setae

SJMP setah

SJMP setam ; end conf

ORG 0500H

keyscan:

JNB keym, keymode

JNB keyc, keyconf

RET

;=====================

;

;log function 'mode'

;

;=====================

keymode:

MOV funclog, #01H ;key act

ACALL funcperform

RET

;=====================

;

;log function 'config'

;

;=====================

keyconf:

MOV funclog, #02H

ACALL funcperform

RET

ORG 0600H

act: ;main timer actor

CJNE R2, #0BH, con

CLR bPalse ;palse per second con:

DJNZ R2, leave

MOV R2, #14H

PUSH ACC

PUSH PSW

MOV PSW, #00H

MOV A, s ;s

INC A

DA A

MOV s, A

CJNE A, #60H, incn

MOV s, #00H

MOV A, m ;m

INC A

DA A

MOV m, A

CJNE A, #60H, incn

MOV m, #00H

MOV A, h ;h

INC A

DA A

MOV h, A

CJNE A, #24H, incn

MOV h, #00H

incn:

SETB bPalse

JNB bAlaOn, alarmoff

ACALL checkala ;check alarm when alarm is ON alarmoff:

MOV A, npage

ANL A, #02H

JNZ skip

ACALL prepare

skip:

POP PSW

POP ACC

leave:

MOV TH0,#03CH

MOV TL0,#0B0H

RETI ;end act

checkala:

MOV A, m

CJNE A, am, alashut

MOV A, h

CJNE A, ah, alashut

JB bKick, notala ;ala stop

SETB bAlaIng

SJMP notala

alashut:

CLR bAlaIng

CLR bKick

notala:

RET

maskdat:

DB 00000000B, 00001100B, 00110000B, 11000000B, 00000111B, 00110000B, 11000000B metrix:

;DB 0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F

DB 0x28, 0x7E, 0xA2, 0x62, 0x74, 0x61, 0x21, 0x7A, 0x20, 0x60

DB 0xFF ;0X0A: NONE

DB 0X27 ;0X0B: 'O'

DB 0XB1 ;0X0C: 'F'

DB 0X37 ;0x0D: 'n'

END

单片机时钟电路的设计

单片机时钟电路的设计 单片机内部虽有振荡电路,但要形成时钟必须在外总附加电路。 MCS-51单片机的时钟产生方法有如下两种。 1内部时钟方式 利用芯片内部的振荡电路,在XTAL1和XTAL2引脚上外接定时元件,内部振荡电路便产生自激振荡,用示波器可以观察到XTAL2输出时的时钟信号。 最常用的内部时钟方式是采用外接晶体(在频率稳定性要求不高而希望尽可能廉价时,可选用陶瓷谐振器)和电容组成的并联谐振回路,HMOS型和CHMOS型单片机和并联,谐振回路及参数相同。 振荡晶体可在1. 2MHz~12MHz之间。电容值无严格要求,但电容取值对振荡频率输出的稳定性、大小和振荡电路起振速度有少许影响,CX1和CX2可在20p~100pF间取值,但在60PF~70PF时振荡器有较高的频率稳定性。 在设计PCB板时,晶体或陶瓷谐振器和电容应尽可能靠近单片机芯片安装,以减少寄生电容,更好的保护振荡电路稳定可靠的工作。为了提高温度稳定性,采用NPO电容。2外部时钟方式 外部时钟方式是利用外部振荡信号源直接接入XRAL1或XTAL2。由于HMOS和CHMOS单片机内部时钟进入的引脚不同(CHMOS型单片同由XTAL1进入,HMOS 型单片机由XTAL2进入),其外部振荡信号源的接入方法也不同。HMOS型单片机的外部振荡信号接至XTAL2,而内部的反相放大器的输入端XTAL1应接地。由于XTAL2端的逻辑电平不是TTL的,故建议外接一个上拉电阻。而XTAL2不可以接地。 在CMOS电路中,因内部时钟引入端取自反相放大器的输入端(即与非门的输入端),故采用外部振荡信号源时接线方式与HNOS型有所不同,外部信号接至XTAL1,而XTAL2不可以接地。外部振荡信号通过去一个2分频的触发器而成为一个时钟信号。故对外部信号的占空比没什么要求,但高电平持续时间和低电平持续时间应大于20ns.

基于-89C51单片机的秒表课程设计汇本

《单片机技术》 课程设计报告 题目:基于MCU-51单片机的秒表设计班级: 学号: 姓名: 同组人员: 指导教师:王瑞瑛、汪淳 2014年6月17日

目录 1课程设计的目的 (3) 2 课程设计题目描述和要求 (3) 2.1实验题目 (4) 2.2设计指标 (4) 2.3设计要求 (4) 2.4增加功能 (4) 2.5课程设计的难点 (4) 2.6课程设计容提要 (4) 3 课程设计报告容 (5) 3.1设计思路 (5) 3.2设计过程 (6) 3.3 程序流程及实验效果 (7) 3.4 实验效果 (16) 4 心得体会 (17)

基于MCS-51单片机的秒表设计 摘要:单片机控制秒表是集于单片机技术、模拟电子技术、数字技术为一体的机电一体化高科技产品,具有功耗低,安全性高,使用方便等优点。本次设计容为以8051 单片机为核心的秒表,它采用键盘输入,单片机技术控制。设计容以硬件电路设计,软件设计和PCB 板制作三部分来设计。利用单片机的定时器/计数器定时和计数的原理,用集成电路芯片、LED 数码管以及按键来设计计时器。将软、硬件有机地结合起来,使他拥有正确的计时、暂停、清零、并同时可以用数码管显示,在现实生中应用广泛。 关键词:秒表;8051;定时器;计数器 1 课程设计的目的 《单片机应用基础》课程设计是学好本门课程的又一重要实践性教学环节,课程设计的目的就是配合本课程的教学和平时实验,以达到巩固消化课程的容,进一步加强综合应用能力及单片机应用系统开发和设计能力的训练,启发创新思维,使之具有独立单片机产品和科研的基本技能,是以培养学生综合运用所学知识的过程,是知识转化为能力和能力转化为工程素质的重要阶段。 2 课程设计题目描述和要求

51单片机作的电子钟程序及电路图

51单片机作的电子钟程序在很多地方已经有了介绍,对于单片机学习者而言这个程序基本上是一道门槛,掌握了电子钟程序,基本上可以说51单片机就掌握了80%。常见的电子钟程序由显示部分,计算部分,时钟调整部分构成。 时钟的基本显示原理:时钟开始显示为0时0分0秒,也就是数码管显示000000,然后每秒秒位加1 ,到9后,10秒位加1,秒位回0。10秒位到5后,即59秒,分钟加1,10秒位回0。依次类推,时钟最大的显示值为23小时59分59秒。这里只要确定了1秒的定时时间,其他位均以此为基准往上累加。 开始程序定义了秒,十秒,分,十分,小时,十小时,共6位的寄存器,分别存在30h,31h,32h,33h,34h,35h单元,便于程序以后调用和理解。 6个数码管分别显示时、分、秒,一个功能键,可以切换调整时分秒、增加数值、熄灭节电等功能全部集一键。

以下是部分汇编源程序,购买我们产品后我们用光盘将完整的单片机汇编源程序和烧写文件送给客户。;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 中断入口程序 ;; (仅供参考) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ORG 0000H ;程序执行开始地址 LJMP START ;跳到标号START执行 ORG 0003H ;外中断0中断程序入口 RETI ;外中断0中断返回 ORG 000BH ;定时器T0中断程序入口 LJMP INTT0 ;跳至INTTO执行 ORG 0013H ;外中断1中断程序入口

RETI ;外中断1中断返回 ORG 001BH ;定时器T1中断程序入口 LJMP INTT1 ;跳至INTT1执行 ORG 0023H ;串行中断程序入口地址 RETI ;串行中断程序返回 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 主程序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; START: MOV R0,#70H ;清70H-7AH共11个内存单元MOV R7,#0BH ;clr P3.7 ; CLEARDISP: MOV @R0,#00H ; INC R0 ; DJNZ R7,CLEARDISP ; MOV 20H,#00H ;清20H(标志用) MOV 7AH,#0AH ;放入"熄灭符"数据 MOV TMOD,#11H ;设T0、T1为16位定时器 MOV TL0,#0B0H ;50MS定时初值(T0计时用)MOV TH0,#3CH ;50MS定时初值 MOV TL1,#0B0H ;50MS定时初值(T1闪烁定时用)MOV TH1,#3CH ;50MS定时初值 SETB EA ;总中断开放 SETB ET0 ;允许T0中断 SETB TR0 ;开启T0定时器 MOV R4,#14H ;1秒定时用初值(50M S×20)START1: LCALL DISPLAY ;调用显示子程序 JNB P3.7,SETMM1 ;P3.7口为0时转时间调整程序SJMP START1 ;P3.7口为1时跳回START1 SETMM1: LJMP SETMM ;转到时间调整程序SETMM ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 1秒计时程序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;T0中断服务程序 INTT0: PUSH ACC ;累加器入栈保护 PUSH PSW ;状态字入栈保护

基于DS1302的数码管显示数字钟

单片机原理课程设计 课题名称:基于DS1302的数码管显示数字钟 专业班级:电子信息工程 学生学号: 学生姓名: 指导教师: 设计时间:2010年6月21日--2010年6月25日

目录 摘要........................................................................................................................................................................ 1 设计任务和要求............................................................................................................................................ 2 方案论证........................................................................................................................................................ 3 系统硬件设计................................................................................................................................................ 3.1 系统总原理图 ................................................................................................................................ 3.2 元器件清单...................................................................................................................................... 3.3 PCB板图....................................................................................................................................... 3.4 Proteus仿真图 ............................................................................................................................... 3.5 分电路图及原理说明................................................................................................................... 3.5.1 主控部分(单片机MCS-51).............................................................................. 3.5.2 计时部分(实时时钟芯片DS1302).................................................................. 3.5.3 显示部分(共阳极数码管)................................................................................ 3.5.4 调时部分(按键)................................................................................................ 4系统软件设计................................................................................................................................................ 4.1 程序流程图..................................................................................................................................... 4.2 程序源代码........................................................................................................................................ 5心得体会........................................................................................................................................................ 6参考文献........................................................................................................................................................ 7结束语............................................................................................................................................................

基于51单片机的实时时钟设计报告

课程设计(论文)任务书 信息工程学院信息工程专业(2)班 一、课程设计(论文)题目嵌入式课程设计 二、课程设计(论文)工作自 2014 年 6 月 9 日起至2014年 6月15日止。 三、课程设计(论文) 地点: 5-402 单片机实验室 四、课程设计(论文)内容要求: 1.本课程设计的目的 (1)使学生掌握单片机各功能模块的基本工作原理; (2)培养学生单片机应用系统的设计能力; (3)使学生能够较熟练地使用proteus工具完成单片机系统仿真。 (4)培养学生分析、解决问题的能力; (5)提高学生的科技论文写作能力。 2.课程设计的任务及要求 1)基本要求: (1)分析所设计系统中各功能模块的工作原理; (2)选用合适的器件(芯片); (3)提出系统的设计方案(要有系统电路原理图); (4)对所设计系统进行调试。 2)创新要求: 在基本要求达到后,可进行创新设计,如改善单片机应用系统的性能。 3)课程设计论文编写要求 (1)要按照书稿的规格打印撰写论文。 (2)论文包括目录(自动生成)、摘要、正文、小结、参考文献、附录等。 (3)论文装订按学校的统一要求完成。 4)答辩与评分标准: (1)完成原理分析:20分; (2)完成设计过程:30分; (3)完成调试:20分; (4)回答问题:20分; (5)格式规范性(10分)。

5)参考文献: (1)张齐.《单片机原理与嵌入式系统设计》电子工业出版社 (2)周润景.《PROTUES入门实用教程》机械工业出版社 (3)任向民.《微机接口技术实用教程》清华大学出版社 (4)https://www.doczj.com/doc/e87667214.html,/view/a5a9ceebf8c75fbfc77db2be.html 6)课程设计进度安排 内容天数地点 构思及收集资料1图书馆 系统设计与调试 4 实验室 撰写论文2图书馆、实验室 学生签名: 2014 年6 月9日 课程设计(论文)评审意见 (1)完成原理分析(20分):优()、良()、中()、一般()、差(); (2)设计分析(30分):优()、良()、中()、一般()、差(); (3)完成调试(20分):优()、良()、中()、一般()、差(); (4)回答问题(20分):优()、良()、中()、一般()、差(); (5)格式规范性(10分):优()、良()、中()、一般()、差(); 评阅人:职称: 2014 年6 月15 日

基于51单片机课程设计

基于51单片机课程设计报告 院系:电子通信工程 团组:电子设计大赛1组 姓名: 指导老师:

目录 一、摘要 (3) 二、系统方案的设计 (3) 三、硬件资源 (5) 四、硬件总体电路搭建 (13) 五、程序流程图 (14) 六、设计感想 (14) 七、参考文献 (16) 附录 (17) 附录 1 程序代码 (17)

一、摘要 本设计以STC89C51单片机为核心的温度控制系统的工作原理和设计方法。温度信号由温度芯片DS18B20采集,并以数字信号的方式传送给单片机。文中介绍了该控制系统的硬件部分,包括:温度检测电路、温度控制电路。单片机通过对信号进行相应处理,从而实现温度控制的目的。文中还着重介绍了软件设计部分,在这里采用模块化结构,主要模块有:数码管显示程序、键盘扫描及按键处理程序、温度信号处理程序、led控制程序、超温报警程序。 关键词:STC89C51单片机 DS18B20温度芯片温度控制 ,LED报警提示. 二、系统方案的设计 1、设计要求 基本功能: 不加热时实时显示时间,并可手动设置时间; 设定加热水温功能。人工设定热水器烧水的温度,范围在20~70度之间,打开开关后,根据设定温度与水温确定是否加热,及何时停止加热,可实时显示温度; 设定加热时间功能。限定烧水时间,加热时间内超过温度上限或低于温度下限报警,并可实时显示温度。 2、系统设计的框架

本课题设计的是一种以STC89C51单片机为主控制单元,以DS18B20为温度传感器的温度控制系统。该控制系统可以实时存储相关的温度数据并记录当前的时间。其主要包括:电源模块、温度测量及调理电路、键盘、数码管显示、指示灯、报警、继电器及单片机最小系统。 图1 系统设计框架 3 工作原理 温度传感器 DS18B20 从设备环境的不同位置采集温度,单片机STC8951获取采集的温度值,经处理后得到当前环境中一个比较稳定的温度值,再根据当前设定的温度上下限值,通过加热和降温对当前温度进行调整。当采集的温度经处理后超过设定温度的上限时,单片机通过三极管驱动继电器开启降温设备(压缩制冷器) ,当采集的温度经处理后低于设定温度的下时 , 单片机通过三极管驱动继电器开启升温设备 (加热器) ,这里采用通过LED1和LED2取代!!! 当由于环境温度变化太剧烈或由于加热或降温设备出现故障,或者温度传感头出现故障导致在一段时间内不能将环境温度调整到规定的温度限内的时候,单片机通过三极管驱动扬声器发出警笛声,这里采用HLLED提示。

51单片机数码管时钟电路的设计_AT89C51

广东石油化工学院 《51单片机原理与实践》课程设计报告 学院计算机与电子信息学院 专业 班级 学号 姓名 指导教师 课程成绩 完成日期 2010年12月27日

数码管时钟电路的设计 一、设计目的: 通过这次课程设计掌握单片机系统的基本设计步骤及设计思路,掌握汇编语言的用法及各种指令的含义,比较熟练的运用指令进行单片机系统的设计的,熟悉用KEIL软件进行汇编语言的汇编,以及把代码写入实验板中,观测代码结合实际的运行结果后进行调整,体会到编程的分析问题、确定算法、画程序流程图、编写程序、程序功能模块化的优点的各各步骤。 二、设计要求: LED数码管时钟电路采用24h计时方式,时、分、秒用六位数码管显示。该电路采用AT89C2051单片机,使用3V电池供电,只使用一个按键开关即可进入调时、省电(不显示LED数码管)和正常显示三种状态。 三、设计实验内容: 1. 硬件的设计 其采用AT89C51单片机应用设计,LED显示采用动态扫描方式实现,P0口输出段码数据,P2口输出位码数据,P1.1、P1.2接按钮开关。为了提供LED数码管的驱动电流,采用6MHz晶振。 2. 系统总体分析 系统主要包含四大模块:显示模块、时间计时模块、模式切换模块和模式设置模块。 显示模块:主要由主循环负责。内存中开辟了一段8字节的内存空间,

用作数据显示的字符缓冲区。主循环不断将缓冲区中的字符呈现至数码管。 ● 时间计时模块:电子钟的核心模块,记录了时间的时、分、秒信息。 ● 模式切换模块(MODE ):切换电子钟的设置模式,包括时设置、分设置、秒设置、闹铃开关设置、闹铃时设置和闹铃分设置。相关数据被设置时将闪烁显示。 ● 模式设置模块(CONFIG ):通过判断设置模式(MODE ),执行相应的设置。如时、分、秒的增1以及闹铃开关的变换。 另外,主循环还负责扫描键盘,检测相应键是否被按下,若MODE 键被按下则在特定单元中登记该功能,并启动定时器1,然后返回继续执行显示功能。在定时器1中断时,被登记的功能正式执行。期间用时约10ms ,用以消除机械抖动。 主循环流程图大致如下: 图(一)主循环流程图 定时器1中断服务程序流程图如下: 开始 键被按下 登记相应功能 数码管显示 是 否

AT89C51单片机时钟电路

工程设计 AT89C51单片机时钟电路 工程设计 目录 任务书 摘要 前言 说明书 第一章电路原理分析 1-1 显示原理 1-2 数码管结构及代码显示 1-3 键盘及读数原理 1-4 连击功能的实现 第二章程序设计思想和相关指令介绍 2-1 数据与代码转换 2-2 计时功能的实现与中断服务程序 2-3 时间控制功能与比较指令 2-4 时钟误差的分析 附录A 电路图 附录B 存储单元地址表 附录C 输入输出口功能分配表 附录D 定时中断程序流程图 附录F 调时功能流程图 附录G 程序清单 摘要

单片计算机即单片微型计算机。(Single-Chip Microcomputer ),是集 CPU ,RAM ,ROM ,定时,计数和多种接口于一体的微控制器。他体积小,成本低,功能强,广泛应用于智能产品和工业自动化上。而51 单片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。 前言 本文通过用对一个能实现定时,时钟,日历显示功能的时间系统的设计学习,详细介绍了51 单片机应用中的数据转换显示,数码管显示原理,动态扫描显示原理,单片机的定时中断原理、从而达到学习,了解单片机相关指令在各方面的应用。系统由AT89C51、LED 数码管、按键、二极管等部分构成,能实现时钟日历的功能:能进行时、分、秒的显示。也具有日历计算、显示和时钟,日历的校准、定时时间的设定,实现三路开关定时输出等功能。文章后附有电路图,程序清单,各数据存储单元的所在地址,输入输出口对应表。以供读者参考。因作者本人也是个初学者,水平有限,难免有疏落不足之处,敬请老师和同学能给与批评正。 说明书 系统由AT89C51、LED 数码管、按键、发光二极管等部分构成,能实现时间的调整、定时时间的设定,输出等功能。系统的功能选择由SB0、SB1、SB2、SB3、SB4 完成。其中SB0为时间校对,定时器调整功能键,按SB 0 进入调整状态。SB1 为功能切换键。第一轮按动SB1 依次进入一路、二路、三路定时时间设臵提示程序,按SB3 进入各路定时调整状态。定时时间到,二极管发亮。到了关断时间后灭掉。如果不进入继续按SB1 键,依次进入时间?年?位校对、?月?位校对、?日?位校对、?时?位校对、?分?位校对、?秒?位校对状态。不管是进入那种状态,按动SB2 皆可以使被调整位进行不进位增量加1 变化。各预臵量设臵完成后,系统将所有的设臵存入RAM 中,按SB1 退出调整状态。上电后,系统自动进入计时状态,起始于? 00?时? 00?分。SB4 为年月日显示转换键,可使原来显示时分秒转换显示年月日。 二、电路原理分析 1. 显示原理 电原理图见附图1。由6 个共阴极的数码管组成时、分、秒的显示。P0 口的8 条数据线P0.0 至P0.7 分别与两个CD4511 译码的ABCD 口相接,P2 口的P2.0 至P2.2 分别通过电阻R10 至R13 与VT1 至VT3 的基极相连接。这样通过P0 口送出一个存储单元的高位、低位BCD显示代码,通过P2 口送出扫描选通代码轮流点亮LED1 至LED6,就会将要显示的数据在数码管中显示出来。从P0 口输出的代码是BCD 码,从P2 口输出的就是位选码。 2. 数码管结构及代码显示

基于51单片机的电子时钟设计源程序

#include unsigned char DispBuf[6]; //时间显示缓冲区 unsigned char Disdate[6]; //日期显示缓冲区 unsigned char DisSec[6]; //秒表缓冲区 struct //设定时间结构体 { unsigned char Hour; unsigned char Min; unsigned char Sec; }Time; struct //设定日期结构体 { unsigned char Year; unsigned char Month; unsigned char Days; }Date; struct //设定毫秒结构体 { unsigned char Minite; unsigned char Second; unsigned char MilliSec; }Millisecond; unsigned char point=0; unsigned char point1=0; unsigned char point2=0; unsigned char Daymount; unsigned char Daymount1; unsigned char T0_Int_Times=0; //中断次数计数变量 unsigned char Flash_flag=0; //闪烁标志,每半秒闪烁 unsigned char Flash_flag1=0; //闪烁标志,每半秒闪烁 unsigned char DisPlay_Back=0; //显示缓冲区更新备份,如果显示缓冲区更新则跟闪烁标志不一致 unsigned char DisPlay_Back1=0; //显示缓冲区更新备份,如果显示缓冲区更新则跟闪烁标志不一致 unsigned char i,j; unsigned char SetMillisecond; //启动秒表 code unsigned char LEDCode[]={0x01,0xd7,0x22,0x82,0xc4,0x88,0x08,0xc1,0x00,0x80}; //数码管显示代码 code unsigned char ErrorLEDCode[]={0x01,0xe7,0x12,0x82,0xc4,0x88,0x08,0xc1,0x00,0x80};//绘制错误图纸的数码管显示代码 void DisPlayBuf(); void ChangeToDispCode(); void ChangeToDispCode1(); void changedate(); // 调日期 void displaydate(); // 显示日期 void makedays(); //确定每个月的日期 void runSec();

51单片机红绿灯课程设计

1 电源提供方案 为使模块稳定工作,须有可靠电源。因此考虑了两种电源方案:方案一:采用独立的稳压电源。此方案的优点是稳定可靠,且有各种成熟电路可供选用;缺点是各模块都采用独立电源,会使系统复杂,且可能影响电路电平。 方案二:采用单片机控制模块提供电源。改方案的优点是系统简明扼要,节约成本;缺点是输出功率不高。综上所述,选择方案二。 2 显示界面方案 该系统要求完成倒计时功能。基于上述原因,我考虑了二种方案:方案一:采用数码管显示。这种方案只显示有限的符号和数码字符,简单,方便。方案二:采用点阵式LED 显示。这种方案虽然功能强大,并可方便的显示各种英文字符,汉字,图形等,但实现复杂,成本较高。 综上所述,选择方案一。 3 输入方案: 设计要求系统能调节灯亮时间,并可处理紧急情况,我研究了两种方案:方案一:采用8155扩展I/O 口及键盘,显示等。 该方案的优点是:使用灵活可编程,并且有RAM,及计数器。若用该方案,可提供较多I/O 口,但操作起来稍显复杂。 方案二:直接在I/O口线上接上按键开关。 由于该系统对于交通灯及数码管的控制,只用单片机本身的I/O 口就可实现,且本身的计数器及RAM已经够用。

综上所述,选择方案二。 3.1单片机交通控制系统的通行方案设计 设在十字路口,分为东西向和南北向,在任一时刻只有一个方向通行,另一方向禁行,持续一定时间,经过短暂的过渡时间,将通行禁行方向对换。其具体状态如下图所示。说明:黑色表示亮,白色表示灭。交通状态从状态1开始变换,直至状态6然后循环至状态1,周而复始,即如图2.1所示: 图1 交通状态 本系统采用MSC-51系列单片机AT89C51作为中心器件来设计交通灯控制器。实现以下功能:

基于51单片机的电子时钟的设计

目录 0 前言 (1) 1 总体方案设计 (2) 2 硬件电路设计 (2) 3 软件设计 (5) 4 调试分析及说明 (7) 5 结论 (9) 参考文献 (9) 课设体会 (10) 附录1 电路原理 (12) 附录2 程序清单 (13)

电子时钟的设计 许山沈阳航空航天大学自动化学院 摘要:传统的数字电子时钟采用了较多的分立元器件,不仅占用了很大的空间而且利用率也比很低,随着系统设计复杂度的不断提高,用传统时钟系统设计方法很难满足设计需求。 单片机是集CPU、RAM、ROM、定时器/计数器和多种接口于一体的微控制器。它体积小、成本低、功能强,广泛应用于智能产品和工业自动化上。而51系列的单片机是各单片机中最为典型和最有代表性的一种。,本次设计提出了系统总体设计方案,并设计了各部分硬件模块和软件流程,在用C语言设计了具体软件程序后,将各个模块完全编译通过过后,结果证明了该设计系统的可行性。该设计给出了以AT89C2051为核心,利用单片机的运算和控制功能,并采用系统化LED显示模块实时显示数字的设计方案,适当地解决了实际生产和日常生活中对计时高精确度的要求,因此该设计在现代社会中具有广泛的应用性。 关键字:AT89C2051,C语言程序,电子钟。 0前言 利用51单片机开发电子时钟,实现时间显示、调整和闹铃功能。具体要求如下: (1)按以上要求制定设计方案,并绘制出系统工作框图; (2)按要求设计部分外围电路,并与单片机仿真器、单片机实验箱、电源等正确可靠的连接,给出电路原理图; (3)用仿真器及单片机实验箱进行程序设计与调试;

(4)利用键盘输入调整秒、分和小时时刻,数码管显示时间; (5)实现闹钟功能,在设定的时间给出声音提示。 1总体方案设计 该电子时钟由89C51,BUTTON,1602 LCD液晶屏等构成,采用晶振电路作为驱动电路,利用单片机内部定时计数器0通过软件扩展产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。闹钟和时钟的时分秒的调节是由一个按键控制,而另外一个按键控制时钟和闹钟的时间的调节。 图1 系统结构框图 该电子时钟由STC89C51,BUTTON,1602 LCD液晶屏等构成,采用晶振电路作为驱动电路,晶振电路的晶振频率为12MHZ,使用的定时器/计数器工作方式0,通过软件扩展产生的一秒定时,达到时分秒的计时,60秒为一分钟,60分钟为一小时,24小时为一天,又重00:00:00开始计时。没有按键按键按下时,时钟正常运行,当按下调节时钟按键K1,就会关闭时钟,当按下闹钟按键K3时时钟就会进入设置时间界面,但是时钟不会停止工作,按K2键,,就可以对时钟和闹钟要设置的时间进行调整。 2硬件电路设计

用数码管显示实时日历时钟的应用设计

(用数码管显示实时日历时钟的应用设计)

摘要 本课题通过MCS-51单片机来设计电子时钟,采用汇编语言进行编程,可以实现以下一些功能:小时,分,秒和年,月,日的显示。本次设计的电子时钟系统由时钟电路,LED显示电路三部分组成。51单片机通过软件编程,在LED数码管上实现小时,分,秒和年,月,日的显示;利用时钟芯片DS1302来实现计时。本文详细介绍了DS1302 芯片的基本工作原理及其软件设计过程,运用PROTEUS软件进行电路连接和仿真,同时还介绍了74LS164,通过它来实现I|O口的扩展。 关键词:时钟芯片,仿真软件,74LS164 目录 前言 0.1设计思路 (8) 0.2研究意义 (8)

一、时钟芯片 1.1 了解时钟芯片……………………………………………….8-9 1.2 掌握时钟芯片的工作原理………………………………….10-11二、74LS164 2.1 了解74LS164........................................................11-12 2.2 掌握的74LS164工作原理. (12) 三、数码管 3.1 熟悉常用的LED数码管...........................................12-13 3.2 了解动态显示与静态显示. (13) 四、程序设计 4.0 程序流程图 (14) 4.1 DS1392的驱动.......................................................15-16 4.2 PROTUES实现电路连接. (17) 4.3 数码管的显示:小时;分;秒 (18) 4.4 数码管显示:年;月;日 (19) 五、总结…………………………………………………………………..20-21 六、附页程序………………………………………………………………22-31前言

51单片机课程设计

课程设计说明书
课程设计名称






学生姓名
指导教师
单片机原理及应用课程设计 电子信息工程 140405 20141329 李延琦 胡黄水
2016 年 12 月 26 日

课程设计任务书
课程设计 题目
酒精测试仪
起止日期
2016 年 12 月 26 日— 2017 年 1 月 6 日
设计地点
计算机科学与工程学 院单片机实验室 3409
设计任务及日程安排: 设计任务:分两部分: (一)、设计实现类:进行软、硬件设计,并上机编程、联线、调试、 实现; 1.电子钟的设计 2.交通灯的设计 3.温度计的设计 4.点阵显示 5.电机调速 6.电子音乐发声(自己选曲) 7.键盘液晶显示系统 (二)、应用系统设计类:不须上机,查资料完成软、硬件设计画图。 查资料选定题目。 说明:第 1--7 题任选其二即可。(二)里题目自拟。 日程安排: 本次设计共二周时间,日程安排如下: 第 1 天:查阅资料,确定题目。 第 2--4 天:进实验室做实验,连接硬件并编写程序作相关的模块实验。 第 5--7 天:编写程序,并调试通过。观察及总结硬件实验现象和结果。 第 8--9 天:整理资料,撰写课程设计报告,准备答辩。 第 10 天:上交课程设计报告,答辩。 设计报告要求:
1. 设计报告里有两个内容,自选题目内容+附录(实验内容),每 位同学独立完成。 2. 自选题目不须上机实现,要求能正确完成硬件电路和软件程序 设计。内容包括: 1) 设计题目、任务与要求 2)硬件框图与电路图 3) 软件及流程图 (a)主要模块流程图 (b)源程序清单与注释 4) 总结 5) 参考资料 6)附录 实验上机调试内容
注:此任务书由指导教师在课程设计前填写,发给学生做为本门课程设计 的依据。

数字电子钟电路的设计

江西航空职业技术学院毕业设计说明书(论文) 课题名称数字电子钟电路的设计 航空电子设备维修专业101332班 学生姓名学号15号 指导老师技术职称副教授 2013年3月10日

江西航空职业技术学院 毕业设计(论文)任务书 学生姓名:刘红亮班级:101332 1.毕业设计(论文)题目:数字电子钟电路的设计 2.毕业设计(论文)使用的原始资料数据及设计技术要求 1:基本概念清楚,基本原理正确; 2:电路图设计符合国家有关规范和标准; 3:按时参加指导教师辅导,按进度要求完成课程设计任务; 4:设计说明书不少于5000字; 2.毕业设计(论文)工作内容及完成时间:

1:数字电子时钟电路的背景和意义 2:数字电子钟电路的系统设计 3:数字钟原理图所需原件的作用 日期:自2012年12月30日至2013年4月6日 指导老师评语: ___________________________________________________ ___________________________________________________ ___________________________________________________ ___________________________________________________ ___________________________________________________ _____________________ 指导老师:姚卫华系主任:周延

摘要 现代生活的人们越来越重视起了时间观念,可以说是时间和金钱划上了等号。对于那些对时间把握非常严格和准确的人或事来说,时间的不准确会带来非常大的麻烦,所以以数码管为显示器的时钟比指针式的时钟表现出了很大的优势。数码管显示的时间简单明了而且读数快、时间准确显示到秒。而机械式的依赖于晶体震荡器,可能会导致误差。数字钟是采用数字电路实现对“时”、“分”、“秒”数字显示的计时装置。数字钟的精度、稳定度远远超过老式机械钟。在这次设计中,我们采用LED数码管显示时、分、秒,以24小时计时方式,根据数码管动态显示原理来进行显示,用32768MHz的晶振产生振荡脉冲,定时器计数。在此次设计中,电路具有显示时间的其本功能,还可以实现对时间的调整。数字钟是其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广大消费的喜爱,因此得到了广泛的使用。 关键字:数字钟晶振计数

51单片机课程设计 AD转换

课程设计报告 华中师范大学武汉传媒学院 传媒技术学院 电子信息工程2011 仅发布百度文库,版权所有.

AD转换 要求: A.使用单片机实现AD转换 B.可以实现一位AD转换,并显示(保留4位数字)设计框图:

方案设计: AD转换时单片机设计比较重要的实验。模数转换芯片种类多,可以满足不同用途和不同精度功耗等。 外部模拟量选择的是简单的电位器,通过控制电位器来改变模拟电压。显示电压值采用一般的四位七段数码管。而AD转换芯片采用使用最广的ADC0809 ADC0809芯片有28条引脚,采用双列直插式封装,如图所示。 下面说明各引脚功能: ?IN0~IN7:8路模拟量输入端。 ?2-1~2-8:8位数字量输出端。 ?ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路。?ALE:地址锁存允许信号,输入端,高电平有效。 ?START: A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。 ?EOC: A/D转换结束信号,输出端,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。 ?OE:数据输出允许信号,输入端,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。 ?CLK:时钟脉冲输入端。要求时钟频率不高于640KHz。

?REF(+)、REF(-):基准电压。 ?Vcc:电源,单一+5V。 ?GND:地 工作原理: 首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC 变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。 本次实验采用中断方式 把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。 不管使用上述哪种方式,只要一旦确定转换完成,即可通过指令进行数据传送。 首先送出口地址并以信号有效时,OE信号即有效,把转换数据送上数据总线,供单片机接受。 采用中断可以减轻单片机负担。并可以使程序有更多的空间作二次开发。

51单片机简易可调的数码管电子钟程序

#include sbit KEY1=P3^0; sbit KEY2=P3^1; sbit KEY3=P3^2; sbit KEY4=P3^3; sbit LED=P1^2; code unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳数码管0-9 unsigned char StrTab[8]; //定义缓冲区 unsigned char minute=30,hour=12,second; //定义并且初始化值12:30:00 void delay(unsigned int cnt)//延时函数 { while(--cnt); } void Displaypro(void) { StrTab[0]=tab[hour/10]; //显示正常时间 StrTab[1]=tab[hour%10]; StrTab[2]=0xBF; StrTab[3]=tab[minute/10]; StrTab[4]=tab[minute%10]; StrTab[5]=0xBF; StrTab[6]=tab[second/10]; StrTab[7]=tab[second%10]; } main()//主函数 { TMOD |=0x01;//定时器0 10ms in 12M crystal 用于计时 TH0=0xd8; TL0=0xf0; ET0=1; TR0=1; TMOD |=0x10; //定时器1用于动态扫描 TH1=0xF8; TL1=0xf0; ET1=1; TR1=1; EA =1; Displaypro();

单片机课程设计——基于C51简易计算器

单片机十进制加法计算器设计 摘要 本设计是基于51系列的单片机进行的十进制计算器系统设计,可以完成计 算器的键盘输入,进行加、减、乘、除3位无符号数字的简单四则运算,并在LED上相应的显示结果。 设计过程在硬件与软件方面进行同步设计。硬件方面从功能考虑,首先选择内部存储资源丰富的AT89C51单片机,输入采用4×4矩阵键盘。显示采用3位7段共阴极LED动态显示。软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。编程语言方面从程序总体设计以及高效性和功能性对C 语言和汇编语言进行比较分析,针对计算器四则运算算法特别是乘法和除法运算的实现,最终选用全球编译效率最高的KEIL公司的μVision3软件,采用汇编语言进行编程,并用proteus仿真。 引言 十进制加法计算器的原理与设计是单片机课程设计课题中的一个。在完成理论学习和必要的实验后,我们掌握了单片机的基本原理以及编程和各种基本功能的应用,但对单片机的硬件实际应用设计和单片机完整的用户程序设计还不清楚,实际动手能力不够,因此对该课程进行一次课程设计是有必要的。 单片机课程设计既要让学生巩固课本学到的理论,还要让学生学习单片机硬件电路设计和用户程序设计,使所学的知识更深一层的理解,十进制加法计算器原理与硬软件的课程设计主要是通过学生独立设计方案并自己动手用计算机电路设计软件,编写和调试,最后仿真用户程序,来加深对单片机的认识,充分发挥学生的个人创新能力,并提高学生对单片机的兴趣,同时学习查阅资料、参考资料的方法。 关键词:单片机、计算器、AT89C51芯片、汇编语言、数码管、加减乘除

目录 摘要 (01) 引言 (01) 一、设计任务和要求............................. 1、1 设计要求 1、2 性能指标 1、3 设计方案的确定 二、单片机简要原理............................. 2、1 AT89C51的介绍 2、2 单片机最小系统 2、3 七段共阳极数码管 三、硬件设计................................... 3、1 键盘电路的设计 3、2 显示电路的设计 四、软件设计................................... 4、1 系统设计 4、2 显示电路的设计 五、调试与仿真................................. 5、1 Keil C51单片机软件开发系统 5、2 proteus的操作 六、心得体会.................................... 参考文献......................................... 附录1 系统硬件电路图............................ 附录2 程序清单..................................

相关主题
文本预览
相关文档 最新文档