基于单片机的个性化电子钟.docx

上传人:b****5 文档编号:6596467 上传时间:2023-01-08 格式:DOCX 页数:28 大小:435.25KB
下载 相关 举报
基于单片机的个性化电子钟.docx_第1页
第1页 / 共28页
基于单片机的个性化电子钟.docx_第2页
第2页 / 共28页
基于单片机的个性化电子钟.docx_第3页
第3页 / 共28页
基于单片机的个性化电子钟.docx_第4页
第4页 / 共28页
基于单片机的个性化电子钟.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

基于单片机的个性化电子钟.docx

《基于单片机的个性化电子钟.docx》由会员分享,可在线阅读,更多相关《基于单片机的个性化电子钟.docx(28页珍藏版)》请在冰豆网上搜索。

基于单片机的个性化电子钟.docx

基于单片机的个性化电子钟

材料与能源学院

课程设计

 

课程名称单片机课程设计

题目名称基于单片机的“个性化电子钟”

专业微电子学

年级班别

学号

学生姓名

指导教师

 

2015年1月8日

 

课程设计任务书

一.根据《单片机原理及接口技术》所学的内容及其他相关课程的知识,结合各生的基础,充分发挥个人的特长,设计个性化数字电子钟。

具体要求以下:

1.AT89S51CPU,12MHZ时钟,常规上电和手动复位电路。

2.4位LED数码显示器(带钟点),分别显示“小时:

分钟”或“分钟:

秒”

3.3个独立试按键,具体功能描述如下:

[MODE]——模式转换键,具有“正常——小时(校准)——分钟(校准)——小时(闹铃)——分钟(闹铃)”等5种模式,每按一次,转换一种模式。

假设当前处于正常模式,按一下此键,“小时”闪烁,表示进入“小时”调校模式,再按一次,转入分钟模式,如此类推,正常模式下不闪烁。

[UP]——加“1”键,按下此键,被选中的项目加“1”

[DOWN]——减“1”键,按下此键,被选中的项目减“1”

4.设计1路蜂鸣器输出驱动电路,用于报警或按键声

5.电源:

9V交流输入,全波整流,滤波,7805稳压电路,输出5V直流电源共给单片机系统。

6.编写数字电字钟的所有软件,包括主程序,定时器中断计时程序,定时器中断扫描显示程序,键盘扫描及功能程序,BCD码转换程序,“二翻十﹑拆字﹑转码”程序,闹铃程序等等。

将这些程序整合成一个完整的电子钟程序,在软件模拟器上调试,在MCS51学习机上调试,并测试其功能及性能。

在设计软件时,学生可充分发挥自己的特长和想象力,自行扩充功能,如“秒表”功能,通信功能,钟控功能等。

7.在程序调试通过后,测试计时精度,分析误差来源,提出补偿方法。

二.计报告要求:

每人一份设计报告,要求独立完成,用统一的封面装订,设计报告的内容包括以下部分:

1.设计任务书

2.个性化电子钟功能要求

3.单片机系统原理图及工作原理描述

4.程序模块框图

5.程序清单

6.设计或调试过程中碰到的问题及决计方法

7.测试数据,误差分析,补偿方法,补偿前后精度比较

8.完成课程设计后的收获或体会,对《单片机课程设计》提出改进意见。

三.课程设计验收标准:

本次课程设计的成绩由3大部分组成:

即硬件设计﹑软件设计和课程设计报告。

硬件设计主要是电路图设计(可以用手工画或计算机辅助设计)。

软件部分在答辩时验收,并结合答辩情况进行评定。

1.电路原理图设计(20%),包括以下知识点:

CPU及时钟,复位电路

显示接口电路

键盘接口电路

蜂鸣器驱动电路

电源部分

2.软件设计及答辩(60%),包括以下知识点:

主程序及初始化程序

定时中断及计时程序

定时中断及显示程序

键盘程序

闹铃程序

按键声程序

3.课程设计报告(20%),具体要求见上面所述.

四.基础较好的学生可以结合实际应用自拟题目,题目和具体设计内容定好后

由指导老师比准。

指导老师:

乐金松

2014,12,28

单片机系统原理图及工作原理描述

单片机系统原理图及工作原理描述

1.MCU:

采用40个引脚的芯片。

4个8位的并行I/o口:

p0,p1,P2和P3,可以外接各种元器件和电路,控制各个I/O口高低电平的输出,以实现预期的功能。

还有复位键,晶振时钟,EA口等组成单片机最小系统。

2.晶振模块:

晶振大小为11.0592MHZ。

分析整个振荡槽路可知,利用Cv来改变频率是有限的:

决定振荡频率的整个槽路电容C=Cbe,Cce,Cv三个电容串联后和Co并联再和C1串联。

可以看出:

C1越小,Co越大,Cv变化时对整个槽路电容的作用就越小。

因而能“压控”的频率范围也越小。

实际上,由于C1很小(1E-15量级),Co不能忽略(1E-12量级,几PF)。

所以,Cv变大时,降低槽路频率的作用越来越小,Cv变小时,升高槽路频率的作用却越来越大。

这一方面引起压控特性的非线性,压控范围越大,非线性就越厉害;另一方面,分给振荡的反馈电压(Cbe上的电压)却越来越小,最后导致停振。

3.数码管显示模块:

此为共阴极的八个数码管,p0口控制各个数码管的段选;再通过P2.2,P2.3,P2.4口,控制138译码器输入来控制译码器的8个输出口,以达到数码管的位控制。

如:

当p2口输入为11100011时,则控制第一个数码管点着,即LED1被点亮,其他熄灭。

 

4.复位模块:

上电或开关复位要求电源接通后,单片机自动复位,并且在单片机运行期间,用开关操作也能使单片机复位。

上电后,由于电容C5的充电和反相门的作用,使RST持续一段时间的高电平。

当单片机已在运行当中时,按下复位键K后松开,也能使RST为一段时间的高电平,从而实现上电或开关复位的操作。

5.独立按键模块:

分别为P3.0,P3.1,P3.2,P3.3口,为共阴极接法,当按键被按下时接入。

6.总电源模块:

实现5V电压转换,给其他元器件与电路供电。

 

7.蜂鸣器模块:

接入口为p1.5,当输入高电平时就会鸣响。

工作原理见附页

程序模块框图

主程序:

大概流程功能:

中断程序:

 

程序清单

;1、其中:

P1.2,P1.3,P1.4,P1.5,P1.6,P1.7分别控制LED6,LED5,LED4LED3LED2LED1的公共端

;P0口位正序连接的LED数码管段控制端口

;2、产生2MS定时中断,每次中断调用扫描显示程序

;3、系统时钟为12MHZ,N=1983

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

LED1EQU7FH

LED2EQU7EH

LED3EQU7DH

LED4EQU7CH

LED5EQU7BH

LED6EQU7AH

SCAN_COUNTEQU79H;扫描显示计数器

H_MEM1EQU78H

M_MEM1EQU77H

S_MEM1EQU76H

H_MEMEQU75H

M_MEMEQU74H

S_MEMEQU73H

TIMER_COUNTEQU72H;定时器中断次数软件计数器

TEMPEQU6EH;模式寄存器

FLASH_FLAGEQU20H.0;定义闪烁标志位

;----------------------------------------------------------------------------------------

ORG0000H

LJMPMAIN

ORG000BH;安装中断向量

LJMPT0_INT;和外部中断向量

;-------------------------------------------------------------------------------------------

ORG0030H

MAIN:

MOVSP,#2FH

MOVTL0,#(65536-1983)MOD256;初始化时间常数

MOVTH0,#(65536-1983)/256

MOVTMOD,#00000001B

SETBET0;开放定时器0中断

SETBTR0;开启定时器0

SETBEA

LCALLCLR_MEM

;---------------键盘扫描程序----------------------

KEYSCAN:

JNBP3.0,RING1

KEYSCAN1:

JNBP3.1,RING2

KEYSCAN2:

JNBP3.2,RING3

LJMPKEYSCAN

;-----------------按键声程序----------------------

RING1:

CALLD10MS

CPLP1.5;取反蜂鸣器

JNBP3.0,$

CPLP1.5

LJMPMODE

RING2:

CALLD10MS

CPLP1.5

JNBP3.1,$

CPLP1.5

LJMPUPSET_MODE11

RING3:

CALLD10MS

CPLP1.5

JNBP3.2,$

CPLP1.5

LJMPDOWNSET_MODE11

;-------------------------------------------------

MODE:

INCTEMP

MOVA,TEMP

CJNEA,#5,EXIT1

MOVTEMP,#0

EXIT1:

JNBP3.0,$

LJMPKEYSCAN1

;-----------------加键----------------------------------

UPSET_MODE11:

MOVA,TEMP

CJNEA,#1,UPSET_MODE12;判断模式1,是就进入下一程序,否跳转另一模式判断

JNBP3.1,$

INCH_MEM

MOVA,H_MEM

CJNEA,#24,UP_EXIT

MOVH_MEM,#0

LJMPKEYSCAN2

UPSET_MODE12:

MOVA,TEMP

CJNEA,#2,UPSET_MODE23

JNBP3.1,$

INCM_MEM

MOVA,M_MEM

CJNEA,#60,UP_EXIT

MOVM_MEM,#0

LJMPKEYSCAN2

UPSET_MODE23:

MOVA,TEMP

CJNEA,#3,UPSET_MODE24

JNBP3.1,$

INCH_MEM1

MOVA,H_MEM1

CJNEA,#24,UP_EXIT

MOVH_MEM1,#0

LJMPKEYSCAN2

UPSET_MODE24:

MOVA,TEMP

CJNEA,#4,UP_EXIT

JNBP3.1,$

INCM_MEM1

MOVA,M_MEM1

CJNEA,#60,UP_EXIT

MOVM_MEM1,#0

LJMPKEYSCAN

UP_EXIT:

JNBP3.1,$

LJMPKEYSCAN2

;-----------------减键--------------------------------

DOWNSET_MODE11:

MOVA,TEMP

CJNEA,#1,DOWNSET_MODE12

JNBP3.2,$

DECH_MEM

MOVA,H_MEM

CJNEA,#0FFH,DOWN_EXIT

MOVH_MEM,#23

LJMPKEYSCAN

DOWNSET_MODE12:

MOVA,TEMP

CJNEA,#2,DOWNSET_MODE21

JNBP3.2,$

DECM_MEM

MOVA,M_MEM

CJNEA,#0FFH,DOWN_EXIT

MOVM_MEM,#59

LJMPKEYSCAN

DOWNSET_MODE21:

MOVA,TEMP

CJNEA,#3,DOWNSET_MODE22

JNBP3.2,$

DECH_MEM1

MOVA,H_MEM1

CJNEA,#0FFH,DOWN_EXIT

MOVH_MEM1,#23

LJMPKEYSCAN

DOWNSET_MODE22:

MOVA,TEMP

CJNEA,#4,DOWN_EXIT

JNBP3.2,$

DECM_MEM1

MOVA,M_MEM1

CJNEA,#0FFH,DOWN_EXIT

MOVM_MEM1,#59

LJMPKEYSCAN

DOWN_EXIT:

JNBP3.2,$

LJMPKEYSCAN

;**************定时中断程序**********************************************

T0_INT:

PUSHACC;保护现场

PUSHPSW

PUSHDPL

PUSHDPH

SETBRS1;选择2区工作寄存器单元

MOVTL0,#(65536-1983)MOD256;恢复时间常数

MOVTH0,#(65536-1983)/256

LJMPMODE0

DIS:

LCALLDISPLAY

INCTIMER_COUNT

MOVA,TIMER_COUNT

CJNEA,#250,T0_INT1

MOVTIMER_COUNT,#0

CPLFLASH_FLAG;每2MS*250=500MS取反闪烁标志位

JNBFLASH_FLAG,T0_INT1

INCS_MEM

MOVA,S_MEM

CJNEA,#60,T0_INT1;对秒,分,时单元加1

MOVS_MEM,#0;满计数后清零

INCM_MEM

MOVA,M_MEM

CJNEA,#60,T0_INT1

MOVM_MEM,#0

INCH_MEM

MOVA,H_MEM

CJNEA,#24,T0_INT1

MOVH_MEM,#0

;---------------------闹钟-----------------

T0_INT1:

;每一次中断

MOVA,M_MEM;将现在的时间跟闹铃模式

CJNEA,M_MEM1,T0_INT2;设置的时间比较

MOVA,H_MEM

CJNEA,H_MEM1,T0_INT2

CPLP1.5;取反蜂鸣器控制位

T0_INT2:

POPDPH;中断结束恢复现场,注意出栈顺序

POPDPL

POPPSW

POPACC

RETI

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

;-------------MODE0(正常)-----------------

MODE0:

MOVA,TEMP

CJNEA,#0,MODE1

MOVR3,S_MEM;秒单元二翻十

MOVR2,#0

LCALLBTID

MOVA,R6

ANLA,#0FH

MOVDPTR,#LED_CODE

MOVCA,@A+DPTR

MOVLED1,A

MOVA,R6

ANLA,#0F0H

SWAPA

MOVDPTR,#LED_CODE

MOVCA,@A+DPTR

MOVLED2,A

MOVR3,M_MEM;分钟单元二翻十

MOVR2,#0

LCALLBTID

MOVA,R6

ANLA,#0FH

MOVDPTR,#LED_CODE

MOVCA,@A+DPTR

JNBFLASH_FLAG,MODE0_BCD1

CPLACC.7;点亮小数点

MODE0_BCD1:

MOVLED3,A

MOVA,R6

ANLA,#0F0H

SWAPA

MOVCA,@A+DPTR

MOVLED4,A

MOVR3,H_MEM;时钟单元二翻十

MOVR2,#0

LCALLBTID

MOVA,R6

ANLA,#0FH

MOVDPTR,#LED_CODE

MOVCA,@A+DPTR

JNBFLASH_FLAG,MODE0_BCD2

CPLACC.7;点亮小数点

MODE0_BCD2:

MOVLED5,A

MOVA,R6

ANLA,#0F0H

SWAPA

MOVCA,@A+DPTR

MOVLED6,A

LJMPDIS

;------------MODE1(时钟小时校准)-----------------------------

MODE1:

MOVA,TEMP

CJNEA,#1,MODE2

MOVR3,S_MEM;秒单元二翻十

MOVR2,#0

LCALLBTID

MOVA,R6

ANLA,#0FH

MOVDPTR,#LED_CODE

MOVCA,@A+DPTR

MOVLED1,A

MOVA,R6

ANLA,#0F0H

SWAPA

MOVDPTR,#LED_CODE

MOVCA,@A+DPTR

MOVLED2,A

MOVR3,M_MEM;分钟单元二翻十

MOVR2,#0

LCALLBTID

MOVA,R6

ANLA,#0FH

MOVDPTR,#LED_CODE

MOVCA,@A+DPTR

JNBFLASH_FLAG,MODE1_BCD1

CPLACC.7;点亮小数点

MODE1_BCD1:

MOVLED3,A

MOVA,R6

ANLA,#0F0H

SWAPA

MOVCA,@A+DPTR

MOVLED4,A

MOVR3,H_MEM;时钟单元二翻十

MOVR2,#0

LCALLBTID

MOVA,R6

ANLA,#0FH

MOVDPTR,#LED_CODE

MOVCA,@A+DPTR

JNBFLASH_FLAG,MODE1_BCD2

CPLACC.7;点亮小数点

MOVA,#00H

MODE1_BCD2:

MOVLED5,A

MOVA,R6

ANLA,#0F0H

SWAPA

MOVCA,@A+DPTR

JNBFLASH_FLAG,MODE1_BCD3;另时钟单元数码管闪烁

MOVA,#00H;对数码管熄灭

MODE1_BCD3:

MOVLED6,A;送显示到数码管

LJMPDIS

;-------------MODE2(时钟分钟校准)-------------

MODE2:

MOVA,TEMP

CJNEA,#2,MODE3

MOVR3,S_MEM;秒单元二翻十

MOVR2,#0

LCALLBTID

MOVA,R6

ANLA,#0FH

MOVDPTR,#LED_CODE

MOVCA,@A+DPTR

MOVLED1,A

MOVA,R6

ANLA,#0F0H

SWAPA

MOVDPTR,#LED_CODE

MOVCA,@A+DPTR

MOVLED2,A

MOVR3,M_MEM;分钟单元二翻十

MOVR2,#0

LCALLBTID

MOVA,R6

ANLA,#0FH

MOVDPTR,#LED_CODE

MOVCA,@A+DPTR

JNBFLASH_FLAG,MODE2_BCD1

CPLACC.7;点亮小数点

MOVA,#00H

MODE2_BCD1:

MOVLED3,A

MOVA,R6

ANLA,#0F0H

SWAPA

MOVCA,@A+DPTR

JNBFLASH_FLAG,MODE2_BCD3;另分钟单元闪烁

MOVA,#00H;熄灭数码管

MODE2_BCD3:

MOVLED4,A

MOVR3,H_MEM;时钟单元二翻十

MOVR2,#0

LCALLBTID

MOVA,R6

ANLA,#0FH

MOVDPTR,#LED_CODE

MOVCA,@A+DPTR

JNBFLASH_FLAG,MODE2_BCD2

CPLACC.7;点亮小数点

MODE2_BCD2:

MOVLED5,A

MOVA,R6

ANLA,#0F0H

SWAPA

MOVCA,@A+DPTR

MOVLED6,A

LJMPDIS

;-----------------MODE3(闹铃小时校准)----------------

MODE3:

MOVA,TEMP

CJNEA,#3,MODE4

MOVR3,S_MEM1;秒单元二翻十

MOVR2,#0

LCALLBTID

MOVA,R

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 工作总结汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1