基于单片机的作息时间控制钟系统设计.docx

上传人:b****3 文档编号:4734307 上传时间:2022-12-08 格式:DOCX 页数:37 大小:210.18KB
下载 相关 举报
基于单片机的作息时间控制钟系统设计.docx_第1页
第1页 / 共37页
基于单片机的作息时间控制钟系统设计.docx_第2页
第2页 / 共37页
基于单片机的作息时间控制钟系统设计.docx_第3页
第3页 / 共37页
基于单片机的作息时间控制钟系统设计.docx_第4页
第4页 / 共37页
基于单片机的作息时间控制钟系统设计.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

基于单片机的作息时间控制钟系统设计.docx

《基于单片机的作息时间控制钟系统设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的作息时间控制钟系统设计.docx(37页珍藏版)》请在冰豆网上搜索。

基于单片机的作息时间控制钟系统设计.docx

基于单片机的作息时间控制钟系统设计

课程设计任务书

分院

信息科学与工程学院

专业

自动化

学生姓名

王利伟

学号

0803010319

设计题目

基于单片机的作息时间控制钟系统的设计

——软件设计

课程设计内容及要求:

内容:

1设计电路,选择器件

2利用Protel画原理图

3编程,调试

4焊接电路,调试

要求:

1.系统时间设计,设计以24小时为周期的时间钟。

2.LED数码管显示时间。

3.设计键盘,通过键盘修改时间、设定闹铃。

进度及安排:

(10天)

1.查资料(2天)

2.设计电路画电路图(2天)

3.编程与调试(2天)

4.焊接硬件电路并调试(2天)

5.写报告(2天)

指导教师(签字):

年月日

分院院长(签字):

年月日

 

摘要

单片机作息时间控制系统设计的目的和意义:

随着计算机技术的发展和在控制系统中的广泛应用,以及设备向小型化、智能化发展,作为高新技术之一的单片机以其体积小、功能强、价格低廉、使用灵活等优势,显示出了很强的生命力。

进入21世纪以来,开发推出单片机的公司很多,各种高性能单片机芯片市场也异常活跃,新技术的不断采用,更加使单片机的种类、性能以及应用领域不断扩大和提高。

因其功耗低,超高型,低成本,功能完整,在国内越来越受到用户的重视和广泛使用。

随着科技的进步和技术不断的提升。

一块大而复杂的模拟电路花费了您巨大的精力,繁多的元器件增加了您的成本。

而现在,只需要一块几厘米见方的单片机,写入简单的程序,就可以使您以前的电路简单很多。

相信您在使用并掌握了单片机技术后,不管在您今后开发或是工作上, 一定会带来意想不到的惊喜。

 以AT89S52为核心控制器件的作息时间控制钟,由键盘、声音输出模块、电源转换模块和存储模块四部分组成。

它利用AT89S52的定时/计数器来计算时间,并用存储器记录数据,保证了系统的可靠性。

AT89S52单片机是整个设计的核心控制器件,根据从键盘接受的数据控制整个系统的工作流程。

整体性好,人性化强、可靠性高,实现了对时间控制的智能化,摆脱了传统由人来控制时间的长短的不便,是现代学校必不可少的设备。

本次校园作息时间控制系统主要用于学校,对一些以24小时为周期的开关量进行自动控制。

如上下课打铃及扩音设备的开与关。

采用AT89S52单片机来实现对上述开关量的控制,利用24C02芯片来存储数据,设有六位数码管、可以实时显示时间、系统还设有输入键盘,用以修改实时时钟,体现了系统简单、工作稳定可靠、价廉、控制时间精确及系统体积小等优点。

 

关键词:

作息时间控制;AT89S52;24C02

 

2.4系统整体电路图4

3.3.1系统主程序6

3.3.2系统数据读写子程序10

3.3.3显示子程序14

3.3.4报警扫描子程序19

3.3.5键盘扫描子程序20

3.3.6设置时钟子程序22

3.3.7T1定时器中断子程序25

5结论29

1绪论

1.1背景介绍

随着计算机技术的发展和在控制系统中的广泛应用,以及设备向小型化、智能化发展,作为高新技术之一的单片机以其体积小、功能强、价格低廉、使用灵活等优势,显示出了很强的生命力。

进入21世纪以来,开发推出单片机的公司很多,各种高性能单片机芯片市场也异常活跃,新技术的不断采用,更加使单片机的种类、性能以及应用领域不断扩大和提高。

16位单片机的问世,使得单片机的科技含量及应用跃上一个新的台阶。

因其功耗低,超高型,低成本,功能完整,在国内越来越受到用户的重视和广泛使用。

本设计是一个具有报时功能的作息时间控制钟。

它利用AT89S52单片机的定时器计时,进行时间计算;在进行时间计算,分每加一时,都与规定的作息时间比较,如果相等则进行相应的控制或动作。

由键盘和显示部分组成,系统扩展八个按键用于报时及校正时间。

现代机关企业,特别是学校要求对时间加以控制,要按时打铃及播放广播,以保证学习与工作的正常运行。

本设计实现了这些功能,给学校及其他机关企业带来方便,整体性好,人性化强、可靠性高,实现了对时间控制的智能化。

1.2作息时间控制钟概述

科技的进步需要技术不断的提升。

一块大而复杂的模拟电路花费了您巨大的精力,繁多的元器件增加了您的成本。

而现在,只需要一块几厘米见方的单片机,写入简单的程序,就可以使您以前的电路简单很多。

相信您在使用并掌握了单片机技术后,不管在您今后开发或是工作上, 一定会带来意想不到的惊喜。

该系统以AT89S52为主体的设计,整体性好,人性化强、可靠性高,实现了对时间控制的智能化,摆脱了传统由人来控制时间的长短的不便,是现代学校必不可少的设备。

 

2硬件介绍

2.1硬件仿真环境介绍:

Protues软件是英国Labcenterelectronics公司出版的EDA工具软件。

它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。

它是目前最好的仿真单片机及外围器件的工具。

虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。

Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。

是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。

在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。

支持当前的主流单片机,如51系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列、68000系列等。

  1)提供软件调试功能  2)提供丰富的外围接口器件及其仿真  RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。

这样很接近实际。

在训练学生时,可以选择不同的方案,这样更利于培养学生。

  3)提供丰富的虚拟仪器  利用虚拟仪器在仿真过程中可以测量外围电路的特性,培养学生实际硬件的调试能力。

  4)具有强大的原理图绘制功能

2.2系统整体设计

根据设计要求画出系统框图,如图1.1所示:

 

图2.1系统总体框图

该系统是由微处理器、存储器、数码显示部分以及键盘输入部分所组成。

该控制系统用LED数码管显示时、分、秒时间,可以显示实时时钟,显示闹铃时间,尽量减少时间积累误差,具有秒闪功能。

显示电路采用了7407芯片来完成驱的功能,利用上拉电阻共同驱动数码管显示时间。

系统采用AT89S52作为处理器,利用24C02芯片作为数据存储器,打铃时间点数据存储于非易失存储器存储24C02中,防止掉电丢失数据;能逐个检查、修改、删除已设置的打铃时间点和增加打铃时间点。

系统还设有输入键盘,用以校正实时时钟,设定闹铃时间,键盘设计简单、易于操作。

输出驱动电路部分,利用220V电源为系统提供供电,利用继电器驱动,便于控制220V的电铃。

同时利用直流——交流转换模块为整个系统提供电源,更方便实际应用。

2.3控制钟硬件设计

按系统框图分五个部分设计如下图2.1。

图2.2硬件系统框图

系统以单片机为基本核心,利用24C02芯片可以记录40个闹铃时间,并且可以长时间记录时间,不会造成时间混乱,可以满足正常的作息时间设置,简单实用,可以满足正常的生活。

根据学校作息时间,可以得到需要打铃的时间如下表所示:

 

表2.1作息时间控制表

时间

事件

动作

8:

00

第一节课上课

铃响;延时20S

8:

45

第一节课下课

铃响;延时20S

8:

55

第二节课上课

铃响;延时20S

9:

40

第二节课下课

铃响;延时20S

10:

00

第三节课上课

铃响;延时20S

10:

45

第三节课下课

铃响;延时20S

10:

55

第四节课上课

铃响;延时20S

11:

40

第四节课下课

铃响;延时20S

13:

00

第五节课上课

铃响;延时20S

13:

45

第五节课下课

铃响;延时20S

13:

55

第六节课上课

铃响;延时20S

14:

40

第六节课下课

铃响;延时20S

14:

50

第七节课上课

铃响;延时20S

15:

35

第七节课下课

铃响;延时20S

15:

45

第八节课上课

铃响;延时20S

16:

30

第八节课下课

铃响;延时20S

16:

40

第九节课上课

铃响;延时20S

17:

25

第九节课下课

铃响;延时20S

17:

35

第十节课上课

铃响;延时20S

18:

20

第十节课下课

铃响;延时20S

2.4系统整体电路图

系统的整体的电路图如下图所示:

图2.3作息时间控制钟系统整体电路图

3作息时间控制钟软件设计

3.1总体介绍

硬件平台结构一旦确定,大的功能框架即形成。

软件在硬件平台上构筑,完成各部分硬件的控制和协调。

系统功能是由软硬件共同实现的,由于软件的可伸缩性,最终实现的系统功能可强可弱,差别可能很大。

因此,软件是本系统的灵魂。

软件采用模块化设计方法,不仅易于编程和调试,也可减小软件故障率和提高软件的可靠性。

同时,对软件进行全面测试也是检验错误排除故障的重要手段。

本程序用汇编语言设计。

3.2软件环境介绍:

KeiluVision2是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,使用接近于传统c语言的语法来开发,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用,而且大大的提高了工作效率和项目开发周期,他还能嵌入汇编,您可以在关键的位置嵌入,使程序达到接近于汇编的工作效率。

  KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面,使您能在很短的时间内就能学会使用keilc51来开发您的单片机应用程序。

  另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。

在开发大型软件时更能体现高级语言的优势。

3.3流程图介绍

软件设计以定时器T1、T2定时、内存读取、时钟显示、键盘扫描、报警程序为主程序。

在设计中利用单片机时钟计时集成电路完成计时的任务,并500ms向单片机发一个中断,中断子程序有时钟显示及时间比较,如比较相等,则说明作息时间已到,发出指令控制电铃开、关操作。

3.3.1系统主程序

根据控制钟的设计要求,设计的程序的主流程图如图所示:

开始

 

不相等

比较键值是否相等

不等

比较键值

图3.1主程序流程图流程图

程序如下:

TF2EQU0CFH;T2中断标志控制位

TR2EQU0CAH;T2启动/停止控制位

ET2EQU0ADH;T2允许中断控制位

PT2EQU0BDH;T2优先级控制位

RCAP2LEQU0CAH;T2自动重载低位

RCAP2HEQU0CBH;T2自动重载高位

TL2EQU0CCH;T2计数器低位

TH2EQU0CDH;T2计数器高位

I2cStartEQU55H;I2C开始标志

I2cStopEQU0AAH;I2C结束标志

SDAEQU0B2H;I2C数据线

SCLEQU0B3H;I2C时钟线

SHOW_CODEEQU80H;显示段码

SHOW_BITEQU0A0H;显示位码

KeyFlagEQU00H;按键标志位

S_FlashEQU01H;秒闪标志位

LED_FLAGEQU02H;LDE显示模式标志位

BeforKeyEQU22H;上次采样键值

NowKeyEQU23H;现在次采样键值

LS_SEQU24H;临时变量1

LS_MEQU25H;临时变量2

LS_HEQU26H;临时变量3

CLOCK_DATA0EQU27H;时钟秒

CLOCK_DATA1EQU28H;时钟分

CLOCK_DATA2EQU29H;时钟时

SHOW_MOUDEEQU2AH;显示模式

SHOW_PCEQU2BH;显示数据指针

RingCountEQU2CH;报警数据个数

ShowRingEQU2DH;显示报警数据地址

RINGDATAHEQU2EH;报警数据高位起始地址

RINGDATALEQU57H;报警数据低位起始地址

ORG0000H

MOVSP,#10H

SJMPSTART

ORG0001BH

AJMPINT_T1

ORG0002BH

CPLP3.5

CLRTF2

RETI

ORG00035H

START:

MOVTH2,#3CH;设置T2定时50ms

MOVTL2,#0B0H

MOVRCAP2H,#3CH

MOVRCAP2L,#0B0H

SETBPT2

SETBET2

MOVTMOD,#60H;设置T1定时500ms(T2中断10次,T1中断5次)

MOVTH1,#0FBH

MOVTL1,#0FBH

SETBET1

ACALLREAD_DATA

SETBEA

SETBTR2

SETBTR1

MOVCLOCK_DATA0,#0

MOVCLOCK_DATA1,#0

MOVCLOCK_DATA2,#12

SETBLED_FLAG

CLRP3.4

AGAIN:

MOVSHOW_MOUDE,#0;显示模式0

MOVSHOW_PC,#CLOCK_DATA0;显示时钟(传时钟地址指针)

ACALLDISPLAY;调用动态扫描子程序

ACALLCOMP_DATA;调用报警扫描子程序

MOVBeforKey,NowKey

ACALLGETKEY;调用键盘扫描子程序

MOVNowKey,A

CJNEA,BeforKey,AGAIN

CJNEA,#0,NEXT_KEY0

SETBKeyFlag

SJMPAGAIN

NEXT_KEY0:

JNBKeyFlag,AGAIN

CLRKeyFlag

CJNEA,#1,NEXT_KEY2

ACALLSetTimer;调用设置时钟子程序

SJMPAGAIN

NEXT_KEY2:

CJNEA,#2,AGAIN

ACALLSetRing;调用设置报警子程序

SJMPAGAIN;--------------------//主程序结束//

3.3.2系统数据读写子程序

系统中利用24C02存储系统数据,该芯片为单电源供电,工作电压范围为1.8-5.5V,低功耗CMOS技术,自定时写周期,页面写周期的典型值为2ms,具有硬件写保护。

通过串行I2C总线扩展技术对数据进行读写操作,节省了接口引脚数,只利用两根传输总线就可以实现全双工同步数据传送。

其程序流程图如下:

 

开始

 

读开始错误刷新24C02

 

数据读取结束

读取结束

未读完

是否读完

结束

图3.2数据读写子程序流程图

程序如下:

I2C_START:

;I2C开始

SETBSDA

SETBSCL

NOP

CLRSDA

NOP

CLRSCL

RET

I2C_STOP:

;I2C结束

CLRSDA

NOP

SETBSCL

NOP

SETBSDA

RET

I2C_SEND:

;I2C发送一个字节

MOVR7,#08

CLRC

SEND_BIT:

RLCA

MOVSDA,C

NOP

SETBSCL

NOP

CLRSCL

DJNZR7,SEND_BIT

SETBSDA

NOP

SETBSCL

NOP

CLRSCL

RET

I2C_RECEIVE:

;I2C接收一个字节

MOVR7,#08

RECEIVE_BIT:

SETBSCL

NOP

MOVC,SDA

RLCA

CLRSCL

DJNZR7,RECEIVE_BIT

SETBSDA

NOP

SETBSCL

NOP

CLRSCL

RET

READ_24C02:

;读24C02

ACALLI2C_START

MOVA,#0A0H

ACALLI2C_SEND

MOVA,R0

ACALLI2C_SEND

ACALLI2C_START

MOVA,#0A1H

ACALLI2C_SEND

ACALLI2C_RECEIVE

ACALLI2C_STOP

RET

WRITE_24C02:

;写24C02

ACALLI2C_START

MOVA,#0A0H

ACALLI2C_SEND

MOVA,R0

ACALLI2C_SEND

MOVA,R1

ACALLI2C_SEND

ACALLI2C_STOP

RET

READ_DATA:

;--------------------从24C02中读取数据更新内存

MOVR2,#10

READ_START_AGAIN:

;读开始标志位

MOVR0,#0

CLREA

ACALLREAD_24C02

SETBEA

CJNEA,#I2cSTART,READ_SUB

SJMPWRITE_STOP

READ_SUB:

DJNZR2,READ_START_AGAIN;读开始位错误刷新24C02

WRITE_STOP:

XRLA,#I2cSTART

JZREAD_NEXT1

MOVR0,#0

MOVR1,#I2cStart

CLREA

ACALLWRITE_24C02;写开始字节

SETBEA

MOVR7,#5

ACALLDelay1ms

MOVR0,#1

MOVR1,#I2cStop

CLREA

ACALLWRITE_24C02;写结束字节

SETBEA

MOVR7,#5

ACALLDelay1ms

READ_NEXT1:

MOVR0,#1;读数据地址;R1为间地址寻址寄存器

MOVR3,#0;读数据总数;R2为数据缓存器

READ_DATA_AGAIN:

CLREA

ACALLREAD_24C02;读高位

SETBEA

INCR0

CJNEA,#I2cStop,READ_NEXT2;判断是否是结束标志

SJMPREAD_EXIT

READ_NEXT2:

MOVR2,A

MOVA,#RINGDATAH

ADDA,R3

MOVR1,A

MOVA,R2

MOV@R1,A

CLREA

ACALLREAD_24C02;读低位

SETBEA

INCR0

MOVR2,A

MOVA,#RINGDATAL

ADDA,R3

MOVR1,A

MOVA,R2

MOV@R1,A

INCR3

CJNER3,#40,READ_DATA_AGAIN

READ_EXIT:

MOVRingCount,R3;更新报警数据个数

RET

3.3.3显示子程序

对多位LED显示器的动态显示,通常都是采用动态扫描的方法进行显示,即逐个循环点亮各位显示器。

这样虽然在任一时刻只有一位显示器被点亮,但是由于间隔时间较短,且人眼具有视觉残留效应,看起来与全部显示器持续点亮一样。

为了实现LED显示器的动态扫描,除了要给显示器提供的输入之外,还要对显示器加位选择控制,这就是通常所说的段控和位控。

因此多位LED显示器接口电路需要有两个输出口,其中一个用于输出8位信号;另一个用于输出段控制信号。

其显示模式有五种:

0:

正常显示数据;1:

显示调试模式(0,1位闪烁);2:

显示调试模式(2,3位闪烁);3:

显示调试模式(4,5位闪烁);4:

显示特殊字符模式。

其程序流程图如下:

开始

A=0A=0

未完全显示

数码管

 

结束

图3.3显示子程序流程图

程序如下:

SHOW_NUMBER:

;段码

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

DB40H

SHOW_NULL:

;空码

DB00H,38H,38H,3EH,37H,00H

SHOW_BIT_CODE:

;位码

DB0DFH,0EFH,0F7H,0FBH,0FDH,0FEH

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

DISPLAY:

;显示子程序

MOVR1,#6

SHOW_AGAIN:

MOVA,SHOW_MOUDE

XRLA,#4

JZSHOW_CHAR

MOVA,R1

ACALLGETCODE;调用得到位数据子程序

MOVDPTR,#SHOW_NUMBER

MOVCA,@A+DPTR

SJMPSHOW_TO_CODE

SHOW_CHAR:

;显示模式为4则显示字符NULL

MOVDPTR,#SHOW_NULL

MOVA,R1

DECA

MOVCA,@A+DPTR

SHOW_TO_CODE:

MOVSHOW_BIT,#0FFH;-------显示数据屏蔽

MOVSHOW_CODE,A

MOVA,R1

MOVDPTR,#SHOW_BIT_CODE-1

MOVCA,@A+DPTR

MOVSHOW_BIT,A

MOVR7,#1

ACALLDelay1ms

DJNZR1,SHOW_AGAIN

 

MOVSHOW_BIT,#0FFH;--------显示数据屏蔽

RET

Delay1ms:

;-----------延时1MS

MOVR5,#2

DELAY:

MOVR6,#0

DJNZR6,$

DJNZR5,DELAY

DJNZR7,Delay1ms

RET

GETCODE:

;得到位数据子程序

MOVB,#10

DECA

RLA

MOVDPTR,#FIND_BIT

JMP@A+DPTR

FIND_BIT:

;位散转

SJMPSHOW_0

SJMPSHOW_1

SJMPSHOW_2

SJMPSHOW_3

SJMPSHOW_4

SJMPSHOW_5

SHOW_0:

;得到位0数据

MOVR0,SHOW_MOUDE

CJNER0,#1,SHOW_LED_0

JBS_Fl

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

当前位置:首页 > 法律文书 > 调解书

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

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