单片机控制的多功能电子时钟设计.docx

上传人:b****5 文档编号:7181828 上传时间:2023-01-21 格式:DOCX 页数:27 大小:201.02KB
下载 相关 举报
单片机控制的多功能电子时钟设计.docx_第1页
第1页 / 共27页
单片机控制的多功能电子时钟设计.docx_第2页
第2页 / 共27页
单片机控制的多功能电子时钟设计.docx_第3页
第3页 / 共27页
单片机控制的多功能电子时钟设计.docx_第4页
第4页 / 共27页
单片机控制的多功能电子时钟设计.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

单片机控制的多功能电子时钟设计.docx

《单片机控制的多功能电子时钟设计.docx》由会员分享,可在线阅读,更多相关《单片机控制的多功能电子时钟设计.docx(27页珍藏版)》请在冰豆网上搜索。

单片机控制的多功能电子时钟设计.docx

单片机控制的多功能电子时钟设计

摘要

单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。

导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。

更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。

因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。

单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域。

近年来随着微控技术的日益完善和飞速发展,单片机的应用正在不断深入,它的应用必将导致系统控制技术从根本上发生变革,同时带动传统控制检测技术日益更新。

它在工业控制、数据采集、智能化仪表、机电一体化、家用电器领域得到了广泛应用,极大地提高了这些领域的技术水平和自动化控制。

在实际检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面的知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。

而在繁华的都市之中,到处都是绚烂的霓虹灯,此次课程设计即为设计一花样流水灯。

目录

摘要…………………………………………………………………3

一、单片机概述……………………………………………………4

二、多功能电子时钟………………………………………………6

2.1设计内容要求…………………………………………………6

2.2实验电路组成…………………………………………………6

2.3电路方案设计…………………………………………………8

2.4系统资源分配…………………………………………………9

2.5模块化程序……………………………………………………9

2.6算法流程思路…………………………………………………9

小结………………………………………………………………10

参考文献…………………………………………………………10

附录程序…………………………………………………………10

 

一、单片机概述(芯片简介)

单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。

单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。

通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:

中央处理器、存储器和I/O接口电路等。

因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。

单片机经过1、2、3、3代的发展,目前单片机正朝着高性能和多品种方向发展,它们的CPU功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗。

IAP15F2K60S2简介

宏晶STC15F2K60S2系列主要性能:

●大容量2048字节片内RAM数据存储器

●高速:

1个时钟/机器周期,增强型8051内核(STCY5),速度比传统8051快7~12倍

速度也比STC早期的1T系列单片机(如STC12/11/10系列)的速度快20%

●宽电压:

5.5~3.8V,2.4~3.6V(STC15L2K60S2系列)

●低功耗设计:

低速模式,空闲模式,掉电模式(可由外部中断或内部掉电唤醒定时器唤醒)

内部高精度R/C时钟,±1%温飘(-40℃~+85℃),常温下温飘5‰,可彻底省掉外部昂贵的晶体时钟,内部时钟从5MHz~35MHz可选

●内部高可靠复位,ISP编程时8级复位门槛电压可选,彻底省掉外部复位电路

●支持掉电唤醒的资源有:

INT0/INT1(上升沿/下降沿中断均可),-INT2/-INT3/-INT4(下降沿中断);CCP0/CCP1/CCP2/RxD/RxD2/T0/T1/T2管脚;内部掉电唤醒专用定时器

●工作频率:

5~35MHz,相当于普通8051:

60~420MHz

●8/16/24/32/40/48/56/60/61K字节片内Flash程序存储器,擦写次数10万次以上

●大容量片内EEPROM(FLASH)功能,擦写次数10万次以上

●ISP/IAP(在系统可编程/在应用可编程),无需编程器/仿真器

●高速ADC,8通道10位,速度可达30万次/秒。

3路PWM还可当3路D/A使用

●3通道捕获/比较单元(CCP/PCA/PWM)

----也可用来再实现3路D/A3个定时器或3个外部中断(支持上升沿/下降沿中断)

●6个定时器,2个16位可重装载定时器T0和T1兼容普通8051的定时器,新增了一个16位的定时器T2,并可实现时钟输出,3路CCP/PCA可再实现3个定时器

●可编程时钟输出功能(对内部系统时钟或外部管脚的时钟输入进行时钟分频输出):

①T0在P3.5输出时钟;

②T1在P3.4输出时钟;

③T2在P3.0输出时钟,以上3个定时器/计数器输出时钟均可1~65536级分频输出;

④内部主时钟在P5.4/MCLKO对外输出时钟(STC15系列8-pin单片机的主时钟在P3.4/MCLKO对外输出时钟)

●硬件看门狗(WDT)

●SPI高速同步串行通信接口

●双串口/UART,两个完全独立的高速异步串行通信端口,分时切换可当5组串口使用

●先进的指令集结构,兼容普通8051指令集,有硬件乘法/除法指令

●通用I/O口(42/38/30/26个),复位后为:

准双向口R弱上拉(8051传统I/O口)

可设置四种模式:

准双向口弱上拉、强推挽弱上拉、仅为输入/高阻和开漏

每个I/O口驱动能力均可达到20mA,但整个芯片最大不要超过120mA

●如果I/O口不够用可以用3根普通I/O口线外接74HC595来扩展I/O口,并可多芯片级联扩展几十个I/O口,还可用A/D作按键扫描来节省I/O口

 

二、多功能电子时钟

2.1设计要求

1、实现时、分、秒、年、月、日的显示,而且还有闹钟的功能。

2、能够调整时钟的各个时钟单元的值,并且按键灵敏。

3、在调整时钟单元值的时候要求有闪烁功能。

2.2设计电路组成

本次课程设计采用宏晶公司最新STC15系列IAP15F2K61S2芯片

 

独立按键:

设计采用的是独立式按键:

当开关打到下面时由P0-P3构成了4个独立按键。

 

数码管:

设计采用的是8位共阴数码管显示

数码管驱动电路:

数码管驱动电路主要由2片74HC595组成,两片芯片之间级联。

一片驱动位选,一片驱动段选。

由单片机控制p0.3,p0.4,p0.5来控制两片芯片的输出。

程序下载芯片:

USB转串口芯片CH340G,可实现程序下载

2.3电路方案设计

1、电路主要由15F单片机、数码管、4个独立按键、74HC595,USB转串口芯片CH340G,8个LED灯。

2、单片机通过对按键的检测实现不同的功能,主要有以下几点:

(1)单片机通过对p0.3,p0.4,p0.5对两片74HC595写入数据来使8个数码管显示。

(2)当设置的闹钟时间匹配到当前时间时,单片机会点亮LED灯,检测合适的按键会使LED灯熄灭。

2.4系统资源分配

定时器T0:

用于时钟走时,对基本时间单位计数并对秒单元操作

定时器T1:

在功能键调整时对时钟单元时实现闪烁的的半秒计数

30H~38H是8个时钟数据单元,分别为秒、分、时、日、月、年、闹钟-秒、闹钟-分、闹钟-时单元

P0.3,P0.4,P0.5是74HC595控制单元,实现对数码管的显示

P2:

闹钟显示,闹钟匹配成功后点亮LED灯

R0:

功能键模式中指向修改单元的地址

R1:

时钟调整时所用的地址指针

R2:

写74HC595计数单元,写8位

R3、R4:

毫秒延时单元(用于数码管显示),R4还作为送数码管显示位选缓冲单元

R5:

基本的时钟单元计数,满100秒单元加一

R6:

半秒闪烁计数

P1.0,P1.1,P1.2,P1.3为四个独立按键位

20H.0,20H.1,20H.2为三个自定义按键标志位

40H:

对循环次数计数,满足条件时对指定单元加1(快速加数)

41H,42H:

对循环计数,满足条件时对指定单元清0

43H、44H、45H:

显示模块缓冲单元(写8个数码管)

47H:

数码管送显示缓冲单元

48H:

闪烁缓存单元,大小为0BBH,根据查表得到灯灭的段选码

2.5软件功能组成和模块化程序

整个程序主要有:

主程序、各个按键功能子程序、两个定时器中断程序、写74HC595芯片子程序还有其他模块子程序等等……

主程序模块:

在主程序中循环显示时钟与检测按键,若无按键则一直检测按键,

则一直进行此循环,知道检测到按键为止。

/***********************主程序**************************************/

START:

ACALLDISPLAY1

ACALLCLOCK;闹钟检查

TEST_S1:

JBS1,TEST_S2

ACALLK1;S1按下,调用年月日显示

TEST_S2:

JBP1.1,TEST_S3

ACALLK2;S2按下,调用K2(功能模块)

TEST_S3:

JBS3,TEST_S4

ACALLCL_DISP;显示闹钟

TEST_S4:

JBS4,TEST_EXT

MOVP2,#0FFH;对闹钟状态清除

TEST_EXT:

SJMPSTART

闹钟检查模块:

实现闹钟匹配,并执行相关的响应,在响应执行30秒后可自动清除闹钟响应,实现代码模块如下:

/**********************闹钟检查*************************************/

CLOCK:

MOVA,SECOND_CL

CJNEA,SECOND,C_EXT;匹配秒单元

MOVA,MINU_CL

CJNEA,MINU,C_EXT;匹配分单元

MOVA,HOUR_CL

CJNEA,HOUR,C_EXT;匹配时单元

MOVA,SECOND_CL

CLRC

ADDCA,#30H

DAA

MOVB,A

MOVP2,#0FH

C_EXT:

MOVA,B

CJNEA,SECOND,CLOCK_EXT

MOVP2,#0FFH

CLOCK_EXT:

RET

年月日显示模块:

按下S1按键,可显示年月日的信息,实现代码模块如下:

/*************************S1按键显示*******************************/

K1:

ACALLDISPLAY2;年月日显示

ACALLCLOCK

JBS1,K1_EXT

SJMPK1

K1_EXT:

RET

闹钟显示模块:

按下S3按键,可显示所定的闹钟时刻,实现代码模块如下:

/**********************闹钟显示************************************/

CL_DISP:

ACALLDISPLAY3

ACALLCLOCK

JNBS3,CL_DISP

RET

时钟修改功能键:

在修改时钟时,会对显示时钟闪烁处理,然后根据按键的情况来进行相关的操作,如:

S1长按会使指定单元数据增加的速度变快;S2按键会使指针指向下一个单元,准备对下一单元进行操作;S3按下时指针指向的单元(即闪烁单元)加1;S3长时间按下(如超过3秒),则对指定单元清0;S4按键按下后,退出S2功能模块,返回主程序显示模块。

实现代码模块如下:

/********************S2按键功能子程序******************************/

K2:

MOVTL1,#0F0H;S2按键调用

MOVTH1,#0D8H

MOVR6,#50

CLRTR0;关闭走时定时器

SETBF2;S2已按键标志

CLRF3;S3未按键标志

SETBTR1;开闪烁定时器

MOVSSDY,#0BBH;数码管全灭代码(第11个段选码为00H,数码管灭)

MOVR0,#SECOND;从第一个开始闪烁

MOV40H,#25

/*************************S3长按清“0”****************************/

K2_S3_2:

JBS3,S2_2_EXT

DJNZ41H,K2_S1

DJNZ42H,K2_S1;检测S3按下后循环210*2次,对闪烁单元清“0”

CJNE@R0,#0BBH,S2_2

MOVSSDY,@R0

S2_2:

MOV@R0,#00H

S2_2_EXT:

MOV41H,#210

MOV42H,#2;计数200*2次

/**********************S1长按快速加数******************************/

K2_S1:

JBS1,K2_SS

DJNZ40H,K2_SS

MOV40H,#25

ACALLCHANGE

AJMPS3_1

/**************闪烁模块(定时器T10.5秒标志F1)********************/

K2_SS:

JNBF1,K2_S2;判断闪烁标志

MOVA,SSDY

XCHA,@R0

MOVSSDY,A;闪烁

CLRF1

/**************S2按键对下一个单元操作******************************/

K2_S2:

ACALLS2_IN;指向下一个单位

/******************S3按键对指定单元加1*****************************/

K2_S3_1:

JBS3,S3_1_EXT;S3是否按下

JBF3,DISP_CH;S3按键已按下,查看上一个S3是否按下

SETBF3;没按下,说明是第一次按下

ACALLCHANGE;还原38H与闪烁单元的值

SJMPS3_1

S3_1_EXT:

CLRF3;S3未按下,清除S3按键标志

SJMPDISP_CH

S3_1:

ACALLCREASE;对闪烁的单元加1,十进制调整,上限设置

MOVR6,#50

CLRF1;按下键后可显示半秒

ACALLCHANGE

/******************对显示的单元进行选择*****************************/

DISP_CH:

ACALLCH_IN;对显示的单元进行选择

/*********************S4按键退出功能设置***************************/

K2_S4:

JNBS4,K2_EXT;S4按键按下则退出S2按键子程序,返回主程序CJNER0,#39H,K2_S3_2

K2_EXT:

ACALLCHANGE;还原38H与闪烁单元的值

MOVTL0,#0F0H

MOVTH0,#0D8H

MOVR5,#100

SETBTR0

CLRTR1;打开T0,关闭T1

RET

74HC595模块:

向595写一个字节的数据。

/***************************向595写一字节的数据*******************/

WRITE:

MOVR2,#8

WRT1:

RLCA

MOVDAT,C

NOP

SETBSH;上升沿输入数据

NOP

CLRSH

DJNZR2,WRT1

RET

定时器T0模块:

用于时钟走时,对时钟单元操作

/********************定时器T0(时钟走时)**************************/

TM00:

PUSHACC;定时器T0

DJNZR5,EXTT0

MOVR5,#95

ACALLADJUST;秒加1调整

EXTT0:

NOP

POPACC

RETI

定时器T1模块:

用于建立闪烁标志(F1),达到控制单元闪烁的目的。

/**********************定时器T0(单元闪烁)************************/

TM11:

PUSHACC;定时器T1

DJNZR6,EXTT1

MOVR6,#47

SETBF1;闪烁标志

EXTT1:

POPACC

RETI

数码管显示模块:

用于显示时钟信息。

(其他显示模块类似)

/************************显示模块1:

时分秒*************************/

DISPLAY1:

CLRA

MOVA,SECOND

MOV43H,A

MOVA,MINU

MOV44H,A

MOVA,HOUR

MOV45H,A

ACALLDISPLAY0

RET

2.6算法流程思路

1、主程序中,主要执行显示模块,显示时分秒,每次循环显示时都会检测

按键,通过不同的按键调用不同的功能子程序。

(1)当主程序中检测到S1按键时,调用年月日显示模块,显示年月日信息。

(2)当主程序中检测到S2按键时,调用功能模块—时钟修改:

可设置各个时钟的值于闹钟的值。

(3)当主程序中检测到S3按键时,调用闹钟时间显示模块,查看闹钟时间。

(4)如果达到闹钟时间并且有闹钟响应,此时期如果S4键按下,会清除闹钟响应。

2、S2功能模块:

单片机部分时间用于显示时钟信息,在显示循环中依次对各个按键进行检测,同时定时器定时检测按键,检测到按键则会做出相应的操作或建立标志,循环显示中根据标志或者按键做出相关的操作,如:

对单元加1、对单元清0、对下一个单元操作、返回主程序等功能。

(1)当检测到S1按键长时间按下时,会以很快的速度增加指定单元的值。

(2)当检测到S2按键按下时,地址指针指向下一个单元,并对指定单元闪烁。

(3)当检测到S3按键短时间按下时,对指定单元作加1操作。

但检测到S3按键长时间按下时,对指定单元清0。

(4)当检测到S4按键按下时,对标志位F1置1,循环中检测到F1标志后就会跳出S2功能子程序,返回主程序,时钟开始走时。

小结

1、本次课程设计已初步达到了课程设计要求:

(1)、实现时钟走时,并显示出来。

(2)、能够对时钟的值进行调整;调整指定的单元时,能够对指定单元闪烁提醒。

而且还增加了清0功能键与长按按键速加功能键。

(3)、能够设定闹钟,当闹钟与时钟匹配时,单片机会执行特定的提醒。

2、虽然本次课程设计实现了时钟的基本功能,但是还缺少很多人性化的功能

比如:

(1)、时钟初值是程序固定的,每次重启或复位单片机后,时钟都会回到固定的值。

(2)、本次课程设计使用的是定时器作为时钟基本计时单元,精度上与现有的时钟有不小的误差。

3、完成本次单片机课程设计,我有了很多的体会和感想

这次课程设计让我受益匪浅,无论从知识上还是其他的各个方面。

上课的时候的学习因为没有在单片机上实践过,只是从理论的角度去理解枯燥乏味,而且单片机实验课也不多,缺乏对单片机的了解。

这次课程设计由个人独立完成,单片机的外接电路也都由自己看原理图来分析、测试和使用,熟悉甚至使用了单片机及其系统,能够理论联系实际的学习,开阔了眼界,提高了单片机知识的理解和水平。

参考文献

[1]单片机原理与应用   朱兆优、陈坚、邓文娟  2012.7

[2]宏晶科技.STC15F2K60S2系列单片机器件资料,2012.

[3]电工电子实训教程.王怀平、管小明、冯林  2011.7

[4] XX百科

附录程序:

ORG0000

LJMPMAIN

ORG000BH

LJMPTM00

ORG001BH

LJMPTM11

ORG0100H

MAIN:

MOVSP,#6FH

MOVR5,#100;一秒定时计数100*10ms

MOVR6,#50;半秒定时闪烁定时计数50*10ms

MOVTMOD,#00;定时器工作方式0,16位自动重装

AUXRDATA8EH

MOVAUXR,#00H;12分频

MOVTL0,#0F0H

MOVTH0,#0D8H

MOVTL1,#0F0H

MOVTH1,#0D8H;定时10ms初值

SETBET0

SETBTR0

SETBEA;开中断,开中断允许

SETBET1

CLRTR1;开定时器0(走时计时),关闭定时器1(闪烁计时)

SHBITP0.3;595移位线

STBITP0.4;595锁存线

S1BITP1.0

S2BITP1.1

S3BITP1.2

S4BITP1.3;4独立按键

F1BIT20H.0;1个闪烁标志

F2BIT20H.1

F3BIT20H.2;3个按键标志位

SECONDEQU30H;秒单元

MINUEQU31H;分单元

HOUREQU32H;时单元

DAYEQU33H;日单元

MONTHEQU34H;月单元

YEAREQU35H;年单元

SECOND_CLEQU36H;闹钟-秒单元

MINU_CLEQU37H;闹钟-分单元

HOUR_CLEQU38H;闹钟-时单元

SSDYEQU48H;闪烁缓存单元

SEND_DATEQU47H;数码管送显示数据缓冲单元

DATBITP0.5;数码管静态显示,595控制位

CLRSH

CLRST

MOVSECOND_CL,#5H

MOVMINU_CL,#15H

MOVHOUR_CL,#01H

MOVSECOND,#59H

MOVMINU,#14H

MOVHOUR,#01H

MOVDAY,#23H

MOVMONTH,#06H

MOVYEAR,#14H;时钟初值

/************************主程序*************************************/

START:

ACALLDISPLAY1

ACALLCLOCK;闹钟检查

TEST_S1:

JBS1,TEST_S2

ACALLK1;S1按下,调用年月日显示

TEST_S2:

JBP1.1,TEST_S3

ACALLK2;S2按下,调用K2(功能模块)

TEST_S3:

JBS3,TEST_S4

ACALLCL_DISP;显示闹钟

TEST_S4:

JBS4,TEST_EXT

MOVP2,#0FFH;对闹钟状态清除

TEST_EXT:

SJMPSTART

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

当前位置:首页 > 工程科技 > 环境科学食品科学

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

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