文档库 最新最全的文档下载
当前位置:文档库 › 电子时钟程序

电子时钟程序

电子时钟程序
电子时钟程序

;****************************************************

;/******电子时钟程序******/

;程序主要包括MAIN函数,T0、T1中断程序,时间、闹钟显示程序,按键扫描、处理程序;****************************************************

ORG 0000H

AJMP MAIN ;跳转到主程序MAIN执行

ORG 000BH

AJMP INTT0 ;跳到INTT0执行

ORG 001BH

LJMP INTT1 ;跳到INTT1执行

ORG 0300H

;/******主函数******/预置T0\T1工作方式,置初值,预置时钟、闹钟,置位数码管MAIN:MOV SP,#80H

MOV TMOD,#11H ;设置定时器T0、T1工作于方式1

MOV TH0,#3CH ;装入时钟定时初值(50ms)

MOV TL0,#0B0H

MOV TH1,#0D8H ;装入闹铃定时初值(10ms)

MOV TL1,#0F0H

MOV R1,#00H ;确保首次默认闹铃工作

MOV 20H,#00H

MOV 21H,#00H

MOV 22H,#00H ;预置时钟分分

MOV 23H,#00H ;预置时钟时时

MOV 30H,#30H ;预置闹铃分分

MOV 31H,#08H ;预置闹铃时时

SETB P2.0 ;数码管接P2口,置位数码管,使其全灭

SETB P2.1

SETB P2.2

SETB P2.3

CLR P1.7 ;发光二极管LED7\LED8用于显示秒,清P1.7,发光二极管LED8亮

SETB P1.6 ;置位P1.6,发光二极管LED7灭

SETB EA ;开放总中断

SETB ET0 ;允许T0中断

SETB TR0 ;开启定时器T0

LOOP:LCALL DISPT ;调用时间显示子程序

LCALL RING ;调用闹铃处理子程序

LCALL KEY ;调用按键扫描子程序

JZ LOOP ;无键按下则循环

LCALL CASE ;有键按下则转按键处理子程序执行

SJMP LOOP ;循环

;/******T0一秒定时中断程序INTT0******/正常时钟计时

INTT0:PUSH PSW ;状态字入栈保护

PUSH ACC ;累加器入栈保护

MOV TL0,#0B0H ;装入计数初值,12MHZ晶振,形成1S中断MOV TH0,#3CH

INC 20H

MOV A,20H

CJNE A,#20,RETURN

CPL P1.7 ;一秒到发光二极管轮流亮,用于显示秒

CPL P1.6

MOV 20H,#00H ;一秒到清20H

MOV A,21H

ADD A,#01H

DA A

MOV 21H,A

CJNE A,#60H,RETURN

MOV 21H,#00H ;一分到,21H单元清零

MOV A,22H

ADD A,#01H

DA A

MOV 22H,A

CJNE A,#60H,RETURN

MOV 22H,#00H ;一小时到,22H单元清零

MOV A,23H

ADD A,#01H

DA A

MOV 23H,A

CJNE A,#24H,RETURN

MOV 23H,#00H ;满24,23H单元清零

RETURN: POP ACC

POP PSW

RETI

;/******时间显示子程序******/

DISPT: MOV A,22H

ANL A,#0FH

MOV 2AH,A ;时钟分的低位

MOV A,22H

ANL A,#0F0H

SWAP A

MOV 2BH,A ;时钟分的高位

MOV A,23H

ANL A,#0FH

MOV 2CH,A ;时钟时的低位

MOV A,23H

ANL A,#0F0H

SWAP A

MOV 2DH,A ;时钟时的高位

LED1: SETB P2.3

MOV A,2DH

MOV DPTR,#TAB

MOVC A,@A+DPTR

CLR P2.0 ;选通数码管1

MOV P0,A ;显示时钟时的十位部分

LCALL DELAY

LED2: SETB P2.0

MOV A,2CH

MOV DPTR,#TAB

MOVC A,@A+DPTR

CLR P2.1 ;选通数码管2

MOV P0,A ;显示时钟时的个位部分

LCALL DELAY

LED3: SETB P2.1

MOV A,2BH

MOV DPTR,#TAB

MOVC A,@A+DPTR

CLR P2.2 ;选通数码管3

MOV P0,A ;显示时钟分的十位部分

LCALL DELAY

LED4: SETB P2.2

MOV A,2AH

JB P1.7,TA2

TA1: ADD A,#10

TA2: MOV DPTR,#TAB

MOVC A,@A+DPTR

CLR P2.3 ;选通数码管4

MOV P0,A ;显示时钟分的个位部分

LCALL DELAY

RET

TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;共阳数码管的不带小数点的时间显示码

DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,10H;共阳数码管的带小数点的时间显示码

;/******按键扫描程序******/ 开关接P3口,判断按键情况

KEY: MOV P3,#0FFH

MOV A,P3

CPL A

ANL A,#2CH

JZ RETK ;无键按下则返回

LCALL DELAY ;延时消抖

MOV A,P3

CPL A

ANL A,#2CH

JZ RETK ;键盘去抖动

MOV R6,A ;将键值存入R6

LOOP1: LCALL DISPT;

MOV A,P3

CPL A

ANL A,#2CH

JNZ LOOP1 ;等待键释放

MOV A,R6

RETK: RET

;/******按键处理子程序******/根据按键情况进行处理

CASE: MOV A,R6

CLR P1.0 ;发光二极管LED1亮

JB ACC.2,SETH ;转调整时

JB ACC.3,SETM ;转调整分

JB ACC.5,SETR ;转闹铃设置

WAITCASE:LCALL DISPT ;无键按下时等待

LCALL KEY

JZ WAITCASE

;/******时间调整程序******/ 按键调整时间

SETT: LCALL DISPT

LCALL KEY

JZ SETT

MOV A,R6

JB ACC.2,SETH

JB ACC.3,SETM

JB ACC.5,KEYGO ;第二次按为确认离开

KEYGO: SETB P1.0 ;发光二极管LED1、LED2灭

SETB P1.1

RET

SETH: MOV A,23H ;调整时钟时,时加1

ADD A,#01H

DA A ;十进制调整

MOV 23H,A

CJNE A,#24H,HD ;判断是否到24,不到继续

MOV 23H,#00H ;到24时清零

HD: LJMP SETT

SETM: MOV A,22H ;分加1

ADD A,#01H

DA A ;十进制调整

MOV 22H,A

CJNE A,#60H,MD ;判断是否到1小时,不到继续

MOV 22H,#00H ;到1小时则清零

MD: LJMP SETT

;/******闹铃时间调整按键扫描及处理子程序******/

KEYR: MOV P3,#0FFH

MOV A,P3

CPL A

ANL A,#2CH

JZ RETK ;无键按下则返回

LCALL DISPR ;延时消抖

MOV A,P3

CPL A

ANL A,#2CH

JZ RETK ;键盘去抖动

MOV R6,A ;将键值存入R6

LJMP LOOPR

LOOPR: LCALL DISPR

MOV A,P3

CPL A

ANL A,#2CH

JNZ LOOPR ;等待键释放

MOV A,R6

AJMP RETK

;/******设置闹铃时间******/

SETR: SETB P1.0 ;发光二极管LED1灭

CLR P1.1 ;发光二极管LED2亮,改显示状态

LCALL DISPR

MOV R1,#00H ;设置闹钟时重设R1,用于检测闹铃播放与否MOV 53H,#03H ;重设闹铃次数

LCALL KEYR ;闹铃时间调整按键检测

JZ SETR

MOV A,R6

JB ACC.2,SETRH

JB ACC.3,SETRM

JB ACC.5,KEYGO ;第二次按为确认离开

SETRH: MOV A,31H ;闹钟时加1

ADD A,#01H

DA A ;十进制调整

MOV 31H,A

CJNE A,#24H,RHD ;判断是否到24,不到继续

MOV 31H,#00H ;到24时则清零

RHD: LJMP SETR

SETRM: MOV A,30H ;闹钟分加1

ADD A,#01H

DA A ;十进制调整

MOV 30H,A

CJNE A,#60H,RMD ;判断是否到1小时,不到继续MOV 30H,#00H ;到1小时则清零

RMD: LJMP SETR

;/******闹钟设置显示子程序******/

DISPR: MOV A,30H

ANL A,#0FH ;屏蔽高四位

MOV 3AH,A ;保留低位送3AH

MOV A,30H

ANL A,#0F0H ;屏蔽低四位

SWAP A ;高四位与第四位交换

MOV 3BH,A ;将保留的高4位送3BH

MOV A,31H

ANL A,#0FH

MOV 3CH,A ;低位

MOV A,31H

ANL A,#0F0H

SWAP A

MOV 3DH,A ;高位

LEDR1: SETB P2.3

MOV A,3DH

MOV DPTR,#TAB

MOVC A,@A+DPTR

CLR P2.0

MOV P0,A

LCALL DELAY

LEDR2: SETB P2.0

MOV A,3CH

MOV DPTR,#TAB

MOVC A,@A+DPTR

CLR P2.1

MOV P0,A

LCALL DELAY

LEDR3: SETB P2.1

MOV A,3BH

MOV DPTR,#TAB

MOVC A,@A+DPTR

CLR P2.2

MOV P0,A

LCALL DELAY

LEDR4: SETB P2.2

MOV A,3AH

MOV DPTR,#TAB

MOVC A,@A+DPTR

CLR P2.3

MOV P0,A

LCALL DELAY

RET

;/******延时子程序******/

DELAY: MOV R5,#2

D1: MOV R4,#250

D2: DJNZ R4,D2

DJNZ R5,D1

RET

;/******闹铃检测程序******/

RING: MOV A,23H ;比较时

CJNE A,31H,RETR

MOV A,22H ;比较分

CJNE A,30H,RETR

LCALL SING

RETR: RET

;/******定时器T1中断子程序******/

INTT1: PUSH PSW ;状态字入栈保护

PUSH ACC ;累加器入栈保护

INC 50H ;中断服务程序,中断计数器加1

MOV TH1,#0D8H ;装入计数初值,12M晶振,形成10MS中断MOV TL1,#0F0H

POP ACC

POP PSW

RETI

;/******响铃子程序******/

SING: CJNE R1,#01H,SING1 ;判断是否已经闹铃过一次LJMP RETS

SING1: SETB ET1

MOV 50H,#00H ;中断计数器清0

MOV 51H,#00H ;音符指针

MOV 52H,#00H ;节拍码指针

MOV 53H,#03H ;设置闹钟不退出响铃次数

GETNOT: MOV A,51H

MOV DPTR,#NOTE ;表头地址送DPTR

MOVC A,@A+DPTR ;查表取音符码

JZ ENDP ;是00H,则结束

MOV R6,A ;存R6

INC 51H

CJNE A,#0FFH,GETMET ;不为0FFH,转取节拍码

LJMP PAUSE ;转休止播放

LJMP GETNOT ;取音符码

GETMET: MOV A,52H

MOV DPTR,#METRE ;取节拍码首地址

MOVC A,@A+DPTR ;取节拍代码送R7

MOV R7,A

INC 52H

PLAY: SETB TR1 ;启动计数

CPL P2.4

LCALL KEY

JNZ RETS

MOV A,R6

MOV R3,A ;音符码存R3

LCALL DELAY1

MOV A,R7 ;取节拍码放A与中断计数比较CJNE A,50H,PLAY ;断计数器(50H)=R7否,不等继续循环MOV 50H,#00H ;等于,则取下一代码

LCALL DISPT

LCALL DISPT

LCALL DISPT

LCALL DISPT

CLR TR1

LJMP GETNOT

RETS: SETB P2.4 ;置位蜂鸣器,否则可能产生啸叫MOV R1,#01H ;表明播放过一次

CLR A ;清除A,防止进入按键处理子程序LJMP RETR

PAUSE: CLR TR1 ;休止100毫秒

MOV R2,#0DH

DELAY2: MOV R3,#0FFH

LCALL DELAY1

DJNZ R2,DELAY2

RET

ENDP: SETB P2.4

MOV R2,#0C7H ;歌曲结束,延时1秒后继续

END1M: MOV R3,#00H

LCALL DELAY1

DJNZ R2,END1M

DJNZ 53H,SING

RET

DELAY1: NOP ;R3为01H时,DELAY延时为20uS DELAY3: MOV R4,#02H

DELAY4: DJNZ R4,DELAY4

DJNZ R3,DELAY3

RET

NOTE: DB 7FH,7FH,7FH,60H,65H,72H,72H,72H,7FH,72H

DB 60H,72H,60H,72H,60H,72H,7FH,72H,7FH,98H,72H,7FH

DB 7FH,7FH,7FH,60H,65H,72H,72H,72H,7FH,72H

DB 60H,72H,60H,72H,60H,72H,7FH,72H,7FH,72H,4CH,55H,00H

METRE: DB 80H,20H,20H,20H,20H,20H,20H,20H,20H,80H

DB 20H,20H,20H,20H,40H,20H,20H,20H,20H,20H,20H,80H

DB 80H,20H,20H,20H,20H,20H,20H,20H,20H,80H

DB 20H,20H,20H,20H,40H,20H,20H,20H,20H,20H,20H,40H

END

261-简易电子钟论文

专业课程设计 基于单片机的简易电子钟设计 专业课设说明: 本次专业课程设计通过对本专业知识的学习、应用,以STC89C51单片机为核心,辅以必要的电路,设计了一个简易的电子时钟,它由5V直流电源供电,通过数码管能够准确显示时间,调整时间。数字钟是采用数字电路实现对“时”、“分”、“秒”数字显示的计时装置。在这次设计中,我们采用LED数码管显示时、分、秒,以24 小时计时方式,根据数码管动态显示原理来进行显示,用12MHz的晶振产生振荡脉冲,定时器计数。在此次设计中,电路具有显示时间的其本功能,还可以实现对时间的调整。 本次课设由本人(傅锦城136712117)孙龙龙(136712116)黄宗旭(136712107)为一组共同完成。本人负责搜集简易时钟的设计和制作原理以及所用电路元件的参数资料和使用方法等相关资料。并且负责电路的焊接工作。孙龙龙负责单片机程序的编写。黄宗旭负责电路原理图的绘制和模拟。 1. 系统基本设计思路 此设计是在数码管上显示时、分和秒,电路包括:键盘、单片机及显示驱动电路。 各部分说明: (1)键盘用于校正、调节数码管上显示的时间。 (2)单片机通过输出各种电脉冲信号开驱动控制各部分正常工作。 (3)单片机发送的信号经过显示电路通过译码最终在数码管上显示出来。 (4)按键还可以切换12小时制和24小时制,并有指示灯。 系统工作过程:时间的主要处理过程是在CPU中完成的。CPU会随时对时间进行读取数据的操作。在读取了相应的寄存器的值后,CPU将读取的值进行处理,再通过I/O口把数据显示在数码管上。 2. 单元电路方案 根据设计要求,本系统主要由控制器模块、显示驱动模块和输入模块构成。 2.1 控制器模块 采用51系列作为系统控制器 单片机算术运算功能强,软件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制。由于其功耗低、体积较小、技术成熟和成本低等优点,在各个领域应用广泛。而且抗干扰性能好。 2.2 计时模块 本方案完全用软件实现数字时钟。原理为:在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将十字节清零。该方案具有硬件电路简单的特点。但由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。而且,由于是软件实现,当单片机不上电,程序不执行时,时钟将不工作。 2.3 显示模块 采用LED数码管

用LCD设计的可调式电子钟

单片机应用 课程设计说明书 用1602LCD设计的可调式电子钟专业自动化 学生姓名 班级自动化142 学号 14100 指导教师蒋 完成日期 20年1 月23 日

目录 1 概述.......................................................................................... 错误!未指定书签。 2 课题研究背景与意义...................................................................... 错误!未指定书签。 2.1 课题研究背景....................................................................... 错误!未指定书签。 2.2 课题研究意义....................................................................... 错误!未指定书签。 3 系统方案设计与主要设计工作 ..................................................... 错误!未指定书签。 3.1 设计任务............................................................................... 错误!未指定书签。 3.2 功能要求说明....................................................................... 错误!未指定书签。4设计课题总体方案........................................................................... 错误!未指定书签。 4.1硬件设计方案........................................................................ 错误!未指定书签。 4.2系统软件设计........................................................................ 错误!未指定书签。 5. 软件仿真及实物设计调试 ........................................................... 错误!未指定书签。 5.1PROTUES仿真软件介绍 ......................................................... 错误!未指定书签。 5.2仿真运行结果说明 ............................................................... 错误!未指定书签。 5.3实物设计结果与调试 ........................................................... 错误!未指定书签。6课程设计实验总结........................................................................... 错误!未指定书签。参考文献.............................................................................................. 错误!未指定书签。附录.............................................................................................. 错误!未指定书签。 附录1:程序清单........................................................................ 错误!未指定书签。 附录2:系统电路原理图 ........................................................... 错误!未指定书签。 附录3:元器件清单.................................................................... 错误!未指定书签。

简易电子时钟的设计

单片机课程设计报告设计题目:简易电子时钟的设计 院别: 专业班级: 学号:

姓名: 指导教师: 摘要 通过一学期单片机的学习,对其已经有了初步的了解,但是随着社会的不断发展,单片机的应用正在不断地走向深入,它特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。我们也借此课程设计的机会,对单片机有更深一步的了解与学习。 本次课程课程设计的目的是设计一个简易的电子时钟,通过一个8位共阴极数码管进行时、分、秒的显示,另外设置7个按键,一个用来调整小时,一个用来调整分钟,一个开关控制是否调整时间。 关键词:AT89C51,数码管,按键,DS1303时钟芯片

1.概述 本设计是锻炼我们的自学能力合作能力,依靠团队的力量去完成一项具体的任务系统的训练了所学知识,设计的过程必将是难忘的,这也将是大学向社会工作过度的一个重要阶段。 本阶段过后要去能够熟练的运用单片机中的计数器、定时器、中断、数码管显示等参考教材或者相关资料,采用C语言实现数字时钟功能,在数码管上实时显示,并运用Protues软件绘制电路原理图,并进行仿真验证和误差分析。 2.系统总体方案设计 2.1系统方案的确定 用6位数码管,可以显示出时、分、秒;用P2端口控制位选,由定时器进行时间的控制(秒);当总按键按下时可以进行时间调整; 2.2方案分析 2.3系统总框图 图2.1

3.系统硬件系统设计 3.1复位电路 单片机复位电路就好比电脑的重启部分,当电脑在使用中出现死机,按下重启按钮电脑内部的程序从头开始执行。单片机也一样,当单片机系统在运行中,受到环境干扰出现程跑飞的时候,按下复位按钮内部的程序自动从头开始执行。 复位电路的工作原理: 在单片机系统中,系统上电启动的时候复位一次,当按键按下的时候系统再次复位,如果释放后再按下,系统还会复位。所以可以通过按键的断开和闭合在运行的系统中控制其复位。单片机复位电路如下图 图3.1 3.2时钟电路 单片机运行需要时钟支持——就像计算机的CPU一样,如果没有时钟电路来产生时钟驱动单片机,那单片机就不能执行程序。 单片机可以看成是在时钟驱动下的时序逻辑电路。 以5l单片机为例随明:51单片机为l2个时钟周期执行一条指令。也就是说单片机运行一条指令,必须要用r2个时钟周期。没有这个时钟,单片机就跑不起来了,也没有办法定时和进行和时间有关的操作。 时钟电路是微型计算机的心脏,它控制着计算机的二个节奏。CPU就是通过复杂的时序电路完成不同的指令功能的。51的时钟信号可以由两种方式产生:一种是内部方式,利用芯片内部的振荡电路,产生时钟信号:另一种为外部方式,时钟信号由外部引入。

时钟可调时间可报时程序

///////////////////////////////////////////////////////// // 工程名称:可调时报时电子钟 // 使用描述: // K1 按一次进入时间调整模块调完后,再按一次恢复时间 // K2 非时间调整模式下,按键报时时间调整模块下,按键选择调整秒分时 // K3 时间调整模块下,时间值增加 // K4 时间调整模块下,时间值减小 // 硬件连接:IOA0~IOA7接SEG IOA8~IOA15接1*8KEY // IOB0~IOB7接DIG 2*4KEY.D_dp接高电平 // 维护记录:2012-8-15 增加时间调整功能,增加报时功能 // /////////////////////////////////////////////////////////// #include "spce061a.h" #include "Sound.h" #include "Clock_Speech.h" //定义各种宏 #define P_IOA_Data (volatile unsigned int *)0x7000 #define P_IOA_Buffer (volatile unsigned int *)0x7001 #define P_IOA_Dir (volatile unsigned int *)0x7002 #define P_IOA_Attrib (volatile unsigned int *)0x7003 #define P_IOB_Data (volatile unsigned int *)0x7005 #define P_IOB_Buffer (volatile unsigned int *)0x7006 #define P_IOB_Dir (volatile unsigned int *)0x7007 #define P_IOB_Attrib (volatile unsigned int *)0x7008 #define P_Watchdog_Clear (volatile unsigned int *)0x7012 #define P_INT_Ctrl (volatile unsigned int *)0x7010 #define P_INT_Clear (volatile unsigned int *)0x7011 #define uint unsigned int #define KEY_ALL 0xff00 int DispTbl[10] = { 0x003F,0x0006,0x005B,0x004F,0x0066, 0x006D,0x007D,0x0007,0x007F,0x006F}; uint sec=0,min=0,hour=0; uint Start_End_Flag=0; uint Adjust_Wei=4; uint flag=1;

单片机电子时钟的设计报告

目录 1 引言 (1) 2 设计任务与要求 (2) 2.1. 设计题目 (2) 2.2. 设计要求 (2) 3 系统的功能分析与设计方案 (3) 3.1. 系统的主要功能 (3) 3.2. 系统的设计方案 (3) 3.3. 数码管显示工作原理 (4) 3.4. 电路硬件设计 (5) 3.4.1. 设计原理框图 (5) 3.4.2. 电源部分 (5) 3.4.3. 复位电路 (6) 3.4.4. 指示灯电路 (6) 3.4.5. 按键电路 (7) 3.4.6. 时钟电路 (7) 3.4.7. 驱动电路 (8) 3.4.8. 数码管连接电路 (8) 3.4.9. 主控模块AT89S52 (9) 3.4.10. 材料清单 (10) 3.4.11. 电路原理图、PCB图及实物图 (11) 3.5. 软件设计 (13) 3.5.1. 软件设计流程 (13) 3.5.2. 完整源程序 (15) 4 系统安装与调试 (21) 4.1. 硬件电路的安装 (21) 4.2. 软件调试 (21) 5 课程设计总结 (22) 参考文献 (23) 致谢 (24)

摘要 单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面。这次课程设计通过对它的学习、应用,以AT89S52芯片为核心,辅以必要的电路,设计了一个简易的单片机电子时钟,包括硬件电路原理的实现方案设计、软件程序编辑的实现、电子时钟正常工作的流程、硬件的制作与软件的调试过程。电子时钟由5.0V直流电源供电,数码管能够比较准确显示时间,通过按键能够调整时间,从而到达学习、设计、开发软、硬件的能力。 关键词:单片机;AT89S52;电子时钟;数码管;按键

电子时钟万年历设计

计算机科学与技术学院硬件课程设计报告

在日常生活中,手表,闹钟是不可或缺的。在实际生活生产活动中,也要考虑时间的因素,如工时的计算,霓虹灯的亮灭。 因为集成电路制造技术的不断提高,出现了高性能、高可靠的集成芯片。电子时钟在工业领域,日常生活中得到了广泛的应用。电子时钟在性能方面具有精度高,实时性好,易于调整等优点。这些使得温度控制系统的研究和开发得到的各方面的广泛关注和支持。 本次课程设计,我利用8254计数芯片,8255芯片,4*4小键盘,12864LCD 液晶显示器,蜂鸣器制作了一个带有闹钟功能的电子时钟万年历。它可以实现由4*4小键盘输入初始时间(包括年月日时分秒星期),利用8254计数,通过程序处理进位,判断闰年,在液晶显示屏上实时显示时间。还可以由小键盘选择不同的闹钟模式,设定闹钟时间。 关键词: 电子时钟; 8255A芯片; 8254芯片; 12864LCD液晶显示器;键盘输入;蜂鸣器;闹钟功能;万年历

1.设计任务与要求...........................................................................6- 1.1实验目的 (6) 1.2具体要求 (6) 2.总体方案与说明...........................................................................6- 2.1使用硬件 (6) 2.1流程设计 (6) 2.1.1系统程序模块 (6) 2.1.1系统流程图 (7) 3.硬件方案 (7) 3.1硬件说明 (7) 3.1.1计数芯片8254 (7) 3.1.2可编程外围接口芯片8255A (8) 3.1.2 128×64字符液晶显示器 (11) 3.2电路原理图与说明 (12) 3.2.1键盘电路 (13) 3.2.2 8254计数电路 (13) 3.2.3 液晶显示电路 (14) 3.3电路连接图 (14) 3.3.1 8254计数芯片 (14) 3.3.2 整体电路 (15) 4.软件方案 (15) 4.1软件主要模块流程图 (15) 4.1.1输入子程序模块流程图 (16) 4.1.2显示子程序模块流程图 (18) 4.1.2闰年子程序模块流程图 (18) 4.1.2蜂鸣器子程序模块流程图 (18) 4.1.2时间进位程序模块流程图 (19) 4.1.2主程序模块流程图 (20) 4.2源程序清单与注释 (21) 5.分析与测试 (38) 6.运行结果 (38) 6.1试验线路图 (39) 6.2实验结果 (39) 6.2.1欢迎界面 (39)

单片机课程设计--简易电子钟.doc

单片机课程设计报告设计课题:简易电子时钟的设计 专业班级:07通信1班 学生姓名:黎捐 学号:0710618134 指导教师:曾繁政 设计时间:2010.11.5—2010.12.20

一、设计任务与要求 (1)设计任务: 利用单片机设计并制作简易的电子时钟,电路组成框图如图所示。 (2)(2) 设计要求:1)制作完成简易的电子时钟,时间可调整。 2)有闹钟功能。 二、方案设计与论证 简易电子时钟电路系统由主体电路和扩展功能电路两主题组成,总体功能原理是以STC89C52单片机为主要的控制核心,通过外接4个独立式键盘作为控制信号源,八个七段数码管作为显示器件,蜂鸣器作为定时器件,单片机实时的去执行相应的功能。在数码管上显示出来,此时通过不同的按键来观看和调节各种数据。CPU 控制原理图如图1所示。 图1. CPU 控制原理图 三、硬件系统的设计 3.1 STC89C52控制模块 STC89C52是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O )端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,STC89C51可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash 存储器结合在一起,特别是可反复擦写的Flash 存储器可有效地降低开发成本。 MCS-52单片机内部结构 8052单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明: 中央处理器: 中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU 负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。 数据存储器(RAM): 8052内部有128个8位用户数据存储单元和128 个专用寄存器单元,它们是统一编 时间显示显示 主控器(51单片机) 时间 调整 声音报 时 (选做)

电子综合设计-基于单片机多功能数字时钟的设计(附完整程序)

课题:基于51单片机的多功能数字时钟系统设计 一、概述、设计思路 该设计方案是以MC51单片机为核心,采用LCD液晶屏幕显示系统,辅以闹钟模块,温度采集模块、日期提醒、键盘时间调整预设置等模块,所构建的数字时钟系统,能动态显示实时时钟的时、分、秒,数据显示(误差限制在30每天),对闹铃方式与温度调节模块进行了重点设计实现SB0、SB1、SB2、SB3四个键实现时钟正常显示,调时,及闹钟时间设置。本系统设计大部分功能有软件来实现,使电路简单明了,系统稳定性也得大大提高。 二、系统组成与工作原理 1、工作原理: 本设计采用STC89C51单片机作为本次课程设计的控制模块。单片机可把由DS18B20、DS1302、AT24C02中的数据利用软件来进行处理,从而把数据传输到显示模块,实现温度、日历和闹铃的显示。以LCD液晶显示器为显示模块,把单片机传来的的数据显示出来,并且显示多样化,在显示电路中,主要靠按键来实现各种显示要求的选择与切换。 2、总是设计框架图:

图二:系统总体电路图 三、单元电路的设计与分析 整个电子时钟系统电路可分为六大部分:中央处理单元(CPU)、复位电路部分、显示部分、键盘输入部分、温度采集部分。 1、MCS-51单片机 VCC: 89S51 电源正端输入,接+5V。 VSS: 电源地端。

XTAL1: 单芯片系统时钟的反相放大器输入端。 XTAL2: 系统时钟的反相放大器输出端,一般在设计上只要在XTAL1 和XTAL2 上接上一只石英振荡晶体系统就可以动作了,此外可以在两引脚与地之间加入一20PF 的小电容,可以使系统更稳定,避免噪声干扰而死机。 RESET: 89S51的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,AT89S51便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且至地址0000H处开始读入程序代码而执行程序。 EA/Vpp: "EA"为英文"External Access"的缩写,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。如果是使用8751 内部程序空间时,此引脚要接成高电平。此外,在将程序代码烧录至8751内部EPROM时,可以利用此引脚来输入21V的烧录高压(Vpp)。 ALE/PROG: 端口3的管脚设置: P3.0:RXD,串行通信输入。 P3.1:TXD,串行通信输出。 P3.2:INT0,外部中断0输入。

电子万年历

河北科技师范学院课程设计说明书 题目: 学院(系): 年级专业: 学号: 学生姓名: 指导教师:

摘要 本设计是电子万年历。具备三个功能:能显示:年、月、日、时、分、秒及星期信息,并具有可调整日期和时间功能。 我选用的是单片机8052来实现电子万年历的功能。该电子万年历能够成功实现时钟运行,调整,显示年月日时分秒及星期,温度等信息。 该电子万年历使用12MHZ晶振与单片机8052相连接,通过软件编程的方法实现了以24小时为一个周期,同时显示小时、分钟和秒的要求。利用单片机定时器及计数器产生定时效果通过编程形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据。同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。 电子万年历设计与制作可采用数字电路实现,也可以采用单片机来完成。若用数字电路完成,所设计的电路相当复杂,大概需要十几片数字集成块,其功能也主要依赖于数字电路的各功能模块的组合来实现,焊接的过程比较复杂,成本也非常高。若用单片机来设计制作完成,由于其功能的实现主要通过软件编程来完成,这样一来就降低了硬件电路的复杂性,从而使得其成本降低,更适合我们大学生自主研发。所以在该设计与制作中我选用了单片机8052,它是低功耗、高性能的CMOS型8位单片机。片内带有4KB的Flash存储器,且允许在系统内改写或用编程器编程。另外, 单片机8052的指令系统和引脚与8051完全兼容,片内有128B 的RAM、32条I/O口线、2个16位定时计数器、5个中断源、一个全双工串行口等。 因此,采用单片机8052原理制作的电子万年历,不仅仅在原理上能够成功实现计时等功能,也更经济,更适用,更符合我们实际生活的需要,对我们大学生来说也更加有用。

简易电子钟的设计

简易电子钟的设计 摘要 近年来随着计算机在社会领域的渗透和大规模集成电路地发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,一次特别适合于与控制有关的系统,越来越广泛地应用于各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及正对具体应用对象特点的软件结合,以作完善。本次做的电子时钟是以89C51为核心,结合相关的元器件(LED数码显示器、锁存/译码/驱动器等),再配以相应的软件,达到制作简易数字钟的目的,其硬件部分难点在于元器件的选择、布局及焊接。 关键词单片机 89C51 软件硬件 LED数码显示器锁存/译码/驱动器

Abstract With the computer in the social sphere in recent years, the penetration and development of large scale integrated circuits, microcontroller applications are continually deepening, because of its powerful function, small size, low power consumption, cheap, reliable, easy to use and so on , one particularly suited to and control of the system, more and more widely used in various fields, often microcontroller as a core component to use, in accordance with the specific hardware architecture, and is the object of the characteristics of the specific application software combine to make perfect. The electronic clock is done 89C51 core, combined with the components (LED digital display, latch / decoder / driver, etc.), which together with the corresponding software, to create simple digital clock purposes, the hardware The difficulty is the choice of components, layout, and welding. Keywords microcontroller 89C51 hardware software LED digital display latch / decoder / driver

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();

基于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();

基于单片机的电子时钟万年历设计

一、项目介绍与设计目的 基于单片机的电子时钟万年历为实现电子万年历的功能,采用单片机STC89C51,辅助以必要的外围电路,用C语言编写程序,并进行模块化设计而成的电子万年历系统.它通过LCD能正确显示年、月、日、周日、时、分、秒等,具有功能稳定,精确度高和可调的特点。 二、设计方案 1.项目环境要求 1.1时钟芯片选择 方案一:不使用芯片,采用单片机的定时计数器 这种方法原理是利用单片机芯片的定时器来产生固定的时间,模拟时钟的时, 分,秒。如:利用AT80C52芯片,定时器用工作方式1,每50ms产生一个中断,循环20次,即1s周期。每一个周期加1,那么1min为60个周期,1h就是60*60=3600个周期,一天就是3600*24=86400个周期。 此方法优点是可以省去一些外围的芯片,但这种方法只能适用于一些要求不是十分精确,不做长期保留的场合。 方案二:并行接口时钟芯片 DS12887 特点:采用单片机应用系统并行总线(三总线)扩展的接口电路,采用这种接口电路具有操作速度快,编程方便的优点。 但是对于80C52单片机来说,低位地址线要通过锁存器输出,还要地址译码器,而且并行口芯片的体积相对较大。 方案三:串行接口时钟芯片DS1302 芯片主特性: (1)实时时钟具有能计算2100 年之前的秒分时日日期星期月年的能力,还有闰年调整的能力

(2)31 8 位暂存数据存储RAM (3)串行 I/O 口方式使得管脚数量最少 (4)宽范围工作电压2.0 5.5V (5)工作电流 2.0V 时,小于300nA (6)读/写时钟或RAM 数据时有两种传送方式单字节传送和多字节传送字符组方式 (7)8 脚DIP 封装或可选的8 脚SOIC 封装根据表面装配 (8)简单 3 线接口 (9)与 TTL 兼容Vcc=5V (10)可选工业级温度范围-40~+85 优点:串行接口的日历时钟芯片,使用简单,接口容易,与微型计算机连线较少等特点,在单片机系统尤其是手持式信息设备中己得到了广泛的应用。 所以,最终选择串行时钟芯片DS1302,DS1302的管脚图如图2所示。 图2 DS1302管脚图 1.2显示模块选择 方案一:LED数码管显示 数码管显示比较常用的是采用CD4511和74LS138实现数码转换,数码显示分动态显示和静态显示,静态显示具有锁存功能,可以使数据显示得很清楚,但浪费了一些资源。目前单片机数码管普通采用动态显示。编程简单,但只能显示

基于单片机的可调电子钟的设计说明

编号: 基础工程设计 题目:基于单片机设计的可调电子时钟院(系):信息与通信学院 专业:微电子科学与工程 学生姓名:卢镜 学号:1300240119 指导教师:宋保林

2016 年 1 月 6 日 摘要 本人设计的是一个以单片机STC89C52为核心部件的电子钟,结合LCD液晶显示屏。可以在液晶屏上显示时间和字符,并可任意调整时间。本来想用数码管来显示,但是想到数码管仅能显示数字,所以采用了液晶显示屏。它不仅能显示数字,还能显示字符。它的计时周期为24小时,显满刻度为“23时59分59秒”。 文中详细论述了可调电子钟设计原理、使用的各芯片的介绍,阐明了本实例所使用的设计方案、详细的电路图以及程序。本文编写的主导思想是软硬件相结合,以硬件为基础,来进行各功能模块的编写。本系统以单片机的C语言进行软件设计,并着重介绍了所应用的各硬件接口技术和各个接口模块的功能及工作过程,其次,详细阐述了程序的各个模块和实现过程,并且还进行了软件仿真调试和硬件调试。 关键词:单片机STC89C52 ;可调电子钟;液晶显示;仿真

目录 摘要 (1) 前言 (3) 第一章设计说明 (5) 1.1 设计目的和内容 (5) 1.2 设计方案选择 (5) 1.3 设计总体框图 (7) 第二章系统主要硬件设计 (5) 2.1 单片机主控模块 (7)

2.1.1 STC89C52芯片简介 (7) 2.1.2 封装和引脚说明 (8) 2.2 液晶显示模块 (7) 2.2.1 LCD1602模块简介 (11) 2.2.2 LCD1602的控制指令及操作流程 (12) 2.3时钟电路及按键电路 (9) 2.3.1时钟电路 (9) 2.3.2按键电路 (10) 第三章系统软件设计 (10) 3.1 系统程序流程图 (10) 3.2系统程序设计电子时钟清单 (11) 第四章系统调试 (12) 4.1软件调试 (12) 4.2源代码 (14) 4.3硬件调试 (20) 4.3.1原理图 (20) 4.3.2 PCB图 (20) 4.3.3用跳线修改电路 (21) 结语 (21) 谢辞 (22) 参考文献 (23) 附录Ⅰ (24)

电子时钟的设计及程序

电子时钟的设计及程序 一.设计目的: 1.理解掌握定时/计数器和中断的使用方法。 2.掌握微机常用的输入输出方式及接口技术。 3.掌握一定的汇编语言知识,培养自己的动手操作能力。 4.学习程序设计的基本思路和方法。 二.程序内容: 第一部分:定义显示界面。 第二部分:调用系统时间,并将调用的用二进制表示的时间数转换成ASCII码,并将时间数存入内存区。 第三部分:将存在系统内存区的时间数用显示字符串的形式显示出来。 第四部分:获取键盘的按键值,以ESC键退出系统返回DOS。三.程序设计原理: 首先在数据段开辟一显示缓冲区,用来存储系统时间。调用DOS中断,返回系统时间,并将来返回的二进制时间转换成ASCII码,方便时间显示时的调用。分别将来小时数、分钟数、秒数存入显示缓冲区,并最终存入一结束字符号’$’。调用DOS字符串显示功能将时间显示 出来。并调用屏幕I/O中断,定位光标的开始位置,结合着将时间显示在我们预先定义好的位置上。由于获取了的系统时间不会自动刷

新,所以我们要设计成刷新的方式来不断获取系统的时间,这样就形成了会跳动的电子钟了。调用延时TIME延时中断服务程序,累加到存放秒值的寄存器DL中,并进行十进制调整。在累加的过程中,不断地对时、分、秒值进行比较,秒不能等于60,分不能等于60,时不能等于24。秒等于限制值时,则使秒值为0分值加1;分等于限制值时,则使分值为0时值加1;时等于限制值时,则使时值为0;时、分、秒值都不超过限制值时,就转显示屏输出。时间显示的刷新要配合延时程序进行,为了得到良好的显示效果,延时程序要尽量接近1秒,但又不能超过一秒,所以本程序调用了一段较精确的时间延迟程序。利用BIOSS设计窗口,选择适当的背景和前景等,使屏幕显示更加完美。程序一旦进入运行,就将不间断地在显示屏显示时间,要想程序停止运行,可同时在键盘按下ESC键返回DOS系统。四.程序流程图如下: DATA SEGMENT ;设置数据段 BUF1 DB 'THE TIME IS NOW: $' BUF5 DB ' @@@@@ ^^^^^^^ @@@@@@ $' BUF6 DB ' &&&&&& ####### &&&&&& $' BUF7 DB ' 00 >o o < 00 $' BUF8 DB ' 00 (::) 00 $' BUF9 DB ' 00 ~~ 00 $' BUF10 DB ' 00 !! 00 $' BUF3 DB 'CLASS:040402206 $' BUF4 DB 'NAME:hu ling wei $' BUF2 DB 10 DB 10 DUP(?) DATA ENDS STACK SEGMENT STACK ;设置堆栈段

单片机电子万年历含程序

CHANGZHOU INSTITUTE OF TECHNOLOGY 科研实践 项目名称:电子万年历设计 二级学院:电子信息与电气工程学院 专业:电气工程及其自动化班级: 10 电二 学生姓名:祝学东学号: 指导教师:庄志红职称:副教授 起止时间: 2013年12月9日—2013年12月20日 摘要 本设计是电子万年历。具备三个功能:能显示:年、月、日、时、分、秒、星期,并具有可调整日期和时间功能。 该电子万年历使用12MHZ晶振与单片机AT89C52相连接,通过软件编程的方法实现了以24小时为一个周期,同时显示小时、分钟和秒的要求。利用单片机定时器及计数器产生定时效果通过编程形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据。同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。 电子万年历设计与制作可采用数字电路实现,也可以采用单片机来完成。若用数字电路完成,所设计的电路相当复杂,大概需要十几片数字集成块,其功能也主要依赖于数字电路的各功能模块的组合来实现,焊接的过程比较复杂,成本也非常高。若用单片机来设计制作完成,由于其功能的实现主要通过软件编程来完成,这样一来就降低了硬件电路的复杂性,从而使得其成本降低,更适合我们大学生自主研发。 AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。

简易数字钟的设计

电 子 技 术 课 程 设 计 专业:电气工程及其自动化 学号: 姓名: 指导老师:

简易数字钟的设计 【摘要】本次在对简易数字钟进行设计中,提出了两种整体设计方案,设 计过程中对两种方案不断进行尝试,不断比较,在比较两个方案的优缺点后, 选择了其中较优的一个方案,进行由上而下层次化的设计,先定义和规定各 个模块的结构,再对模块内部进行详细设计。在之后详细设计的时候又根据 可采用的芯片,分析各芯片是否适合本次设计,选择较合适的芯片进行设计, 最后将设计好的模块组合并调试。 【关键词】 电路,数字钟,74LS160,子电路 一、引言 随着社会的进步,科技发展的速度越来越快,科技产品更新的频率加大,而且当今很多领域大都用到数字钟,我们身边也遍布与数字钟有关的生活用品。。 所谓数字钟,是指利用电子电路构成的计时器。相对机械钟而言,数字钟能达到准确计时,并显示小时、分、秒,同时能对该钟进行调整。在此基础上,还能够实现整点报时,定时报闹等功能。在做本简易数字钟设计之前,通过老师及查阅资料,我知道有对此多种设计方案 数字电路是我们计算机科学与技术学科的基础,数字电路实验是学习数字电路的一个重要环节,它不仅能巩固理论知识的学习,而其能提高实验动手能力,增强设计和调试电路的能力.设计过程采用系统设计的方法,先分析任务,得到系统要求,然后进行总体设计,划分子系统,然后进行详细设计,决定各个功能子系统中的内部电路,最后进行测试。 二、设计要求 能按时钟功能进行小时、分钟、秒计时,并显示时间及调整时间,能整点报时,定点报时,使用4个数码管,能切换显示。小时的计时要求为“12翻1”,分和秒的计时要求为60进位。 分和秒计数器都是模M=60的计数器,其计数规律为00—01—…—58—59—00…

相关文档