电子时钟程序设计.pdf

合集下载

单片机电子时钟设计

单片机电子时钟设计

单片机在多功能数字电子钟中的应用已是非常普遍,人们对电子时钟的功能及工作顺序都已非常熟悉了,但是却很少知道它的内部结构以及工作原理。

由单片机作为电子时钟的核心控制器,可以通过它的时钟信号来实现计时功能,将时间数据由单片机输出,利用显示器将时间显示出来。

通过键盘可以进行时间的设定。

输出设备显示器可以用液晶显示技术或数码管来显示技术。

本系统利用单片机实现具有计时、校时等功能的数字电子时钟,是以单片机AT89C51 为核心元件同时采用LED数码管显示器动态显示“时”,“分” “秒”的现代计时装置。

与传统机械表相比,它具有走时精确,显示直观等特点。

另外具有校时功能,利用单片机实现的数字时钟具有编程灵活,便于功能的扩充等优点。

第一章概述1.1课题研究的目的和意义数字钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。

由于电子集成电路技术的发展和采用了先进的石英技术,使电子钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域,因此进行电子钟的设计是必要的。

尽管目前市场上已有现成的电子钟集成电路芯片出售,价格便宜、使用也方便,但鉴于单片机定时器的功能也可以完成电子钟电路的设计,因此进行电子钟的设计是可行的。

在这里我们将已学过的比较零散的数字电路和单片机的知识有机的、系统的联系、组织起来应用于实际,来培养我们的综合分析和设计电路,写程序,调试电路、程序的能力。

单片机具有体积小、功能强、可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。

1.2国内外研究的现状及发展趋势从单片机电子时钟近年的发展趋势来看,正朝着多层次用户、多品种、多规格、高精度、小体积、低能耗等方面发展。

在这种趋势下,时钟的数字化,智能化已经成为现代时钟生产研究的主导设计方向。

毕业设计(论文)-基于单片机多功能电子时钟的设计与仿真(含程序仿真)[管理资料]

毕业设计(论文)-基于单片机多功能电子时钟的设计与仿真(含程序仿真)[管理资料]

程序仿真等全套设计,联系153893706第1章绪论二十一世纪的今天,最具代表性的计时产品就是电子万年历,它是近代世界钟表业界的第三次革命。

第一次是摆和摆轮游丝的发明,相对稳定的机械振荡频率源使钟表的走时差从分级缩小到秒级,代表性的产品就是带有摆或摆轮游丝的机械钟或表。

第二次革命是石英晶体振荡器的应用,发明了走时精度更高的石英电子钟表,使钟表的走时月差从分级缩小到秒级。

第三次革命就是单片机数码计时技术的应用(电子万年历),使计时产品的走时日差从分级缩小到1/600万秒,从原有传统指针计时的方式发展为人们日常更为熟悉的夜光数字显示方式,直观明了,并增加了全自动日期、星期、温度以及其他日常附属信息的显示功能,它更符合消费者的生活需求!因此,电子万年历的出现带来了钟表计时业界跨跃性的进步……我国生产的电子万年历有很多种,总体上来说以研究多功能电子万年历为主,使万年历除了原有的显示时间,日期等基本功能外,还具有闹铃,报警等功能。

商家生产的电子万年历更从质量,价格,实用上考虑,不断的改进电子万年历的设计,使其更加的具有市场。

本设计为软件,硬件相结合的一组设计。

在软件设计过程中,应对硬件部分有相关了解,这样有助于对设计题目的更深了解,有助于软件设计。

基本的要了解一些主要器件的基本功能和作用。

除了采用集成化的时钟芯片外,还有采用MCU的方案,利用AT89系列单片微机制成万年历电路,采用软件和硬件结合的方法,控制LED数码管输出,分别用来显示年、月、日、时、分、秒,其最大特点是:硬件电路简单,安装方便易于实现,软件设计独特,可靠。

AT89C52是由ATMEL公司推出的一种小型单片机。

95年出现在中国市场。

其主要特点为采用Flash存贮器技术,降低了制造成本,其软件、硬件与MCS-51完全兼容,可以很快被中国广大用户接受。

本文介绍了基于AT89C52单片机设计的电子万年历。

选题背景及研究的目的与意义设计的目的电子钟已成为人们日常生活中必不可少的物品,广泛用于个人家庭以及车站码头、剧院、办公室等公共场所,给人们的生活、学习、工作、娱乐带来了极大的方便。

基于51的电子闹钟设计报告(附原理图、PCB图、程序)

基于51的电子闹钟设计报告(附原理图、PCB图、程序)

基于51的电⼦闹钟设计报告(附原理图、PCB图、程序)成都信息⼯程学院第五届嵌⼊式创新技术⼤赛基于MCS51的智能电⼦闹钟设计报告姓名学院班级实物图⽬录1.电⼦时钟的设计原理和⽅法 (1)1.1设计原理 (1)1.2 硬件电路的设计 (1)1.2.1 STC89C51RC简介 (1)1.2.2 键盘电路的设计 (2)1.2.3蜂鸣器驱动电路 (3)1.2.4 数码管驱动电路 (3)1.2.5 电源电路 (4)1.3软件部分的设计 (4)1.3.1主程序部分的设计 (4)1.3.2中断计时器及时间进位 (5)1.3.3 闹钟⼦函数 (7)1.3.4 按键扫描 (8)1.3.5 时钟闹钟设置 (9)1.3.6 显⽰数字函数 (10)1.3.7 显⽰界⾯函数 (10)1.3.8 闹钟记录及读取 (11)2.硬件调试 (13)附录A:电路原理图 (15)附录B:电路PCB图 (16)附录C:源程序 (17)1.电⼦时钟的设计原理和⽅法1.1设计原理系统框图1.2硬件电路的设计1.2.1 STC89C51RC简介STC89C52R CSTC89C51RC是⼀种带8K闪烁可编程可擦除只读存储器(FPETOM-FlashProgrammabalandErasableReadOnlyMemory )的低电压、⾼性能CMOS8位微型处理器,即单⽚机芯⽚。

单⽚机的可擦除只读存储器可以反复擦除1000次,内部FLASH 擦写次数为100000次以上。

该芯⽚使⽤⾼密度⾮易失存储制造技术,与⼯业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU 和闪烁存储器集成在单个芯⽚中,使得STC89C51RC 成为了⼀种性价⽐极⾼的微型处理器芯⽚,在许多电路设计中都得到了应⽤。

STC89C51RC 单⽚机特点:⼯作电压:5.5V-3.4V ⼯作频率:0-40MHz ⽤户应⽤程序空间:8K ⽚上集成128*8RAMISP (在系统可编程)/IAP (在应⽤可编程),⽆需专⽤编程器/仿真器可通过串⼝(P3.0/P3.1)直接下载⽤户程序EEPROM 功能共3个16位定时器/计数器,其中定时0还可以当成2个8位定时器使⽤外部中断4路通⽤异步串⾏⼝(UART ),还可⽤定时器软件实现多个UART ⼯作温度范围:0-75℃引脚说明:VCC:供电电压 GND :接地P0:P0是⼀个8位漏级开路双向I/O ⼝,低8位地址复⽤总线端⼝。

电子时钟的设计及程序

电子时钟的设计及程序

电子时钟的设计及程序一.设计目的: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 10DB 10 DUP(?)DATA ENDSSTACK SEGMENT STACK ;设置堆栈段STACK ENDSCODE SEGMENT ;设置代码段ASSUME CS:CODE,DS:DATA,SS:STACKCURSOR MACRO ROW,CLM ;设置光标位置MOV AH,2MOV BH,0MOV DH,ROWMOV DL,CLMINT 10HENDMWIN MACRO ROWL,CLML,ROWR,CLMR,COLOR ;设置窗口,位置,颜色MOV AH,6MOV AL,0MOV CH,ROWLMOV CL,CLMLMOV DH,ROWRMOV DL,CLMRMOV BH,COLORINT 10HENDMASCBCD MACRO REGINC BXINC BXMOV REG,[BX]MOV CL,4SHL REG,CLINC BXMOV AL,[BX]AND AL,0FHOR REG,ALENDMBCDASC MACRO REGINC BXINC BXMOV AL,REGMOV CL,4SHR AL,CLOR AL,30HMOV [BX],ALINC BXMOV AL,REGAND AL,0FHOR AL,30HENDMINCBCD MACRO REG,COUNT ;BCD数加1 MOV AL,REGINC ALDAAMOV REG,ALCMP AL,COUNTJNZ DISPYMOV REG,0ENDMSTRDSPY MACRO ADRSLEA DX,ADRSMOV AH,9INT 21HENDMCLOCK PROC FARSTART: PUSH DS ;显示字符串MOV AX,0PUSH AXMOV AX,DATAMOV DS,AXWIN 0,0,24,79,7WIN 6,9,18,70,01000001B ;设置窗口CURSOR 6,25 ;设置光标STRDSPY BUF5 ;显示字符串CURSOR 7,25 ;设置光标STRDSPY BUF6CURSOR 8,25STRDSPY BUF7CURSOR 9,25STRDSPY BUF8CURSOR 10,25STRDSPY BUF9CURSOR 11,25STRDSPY BUF10CURSOR 6,9STRDSPY BUF3CURSOR 7,9STRDSPY BUF4CURSOR 14,32STRDSPY BUF1CURSOR 15,36LEA DX,BUF2MOV AH,0AHINT 21H ;从键盘接收当前时间LEA BX,BUF2ASCBCD CH ;小时值ASCII到BCD;存CHASCBCD DH ;分值ASCII到BCD;存DHASCBCD DL ;秒值ASCII到BCD;存DLTIMER: CALL DELY ;延时1秒INCBCD DL,60H ;(DL)+1,并判;大于等于60?INCBCD DH,60H ;(DH)+1,并判;大于等于60?INCBCD CH,24H ;(CH)+1,并判;大于等于60?DISPY: LEA BX,BUF2BCDASC CH ;时值BCD转到ASCIIBCDASC DH ;分值BCD转到ASCIIBCDASC DL ;秒值BCD转到ASCIIINC BXMOV AL,'$'MOV [BX],ALPUSH DXCURSOR 15,36 ;设置光标STRDSPY BUF2+2 ;显示时,分,秒值POP DXMOV AH,01HINT 16HCMP AL,1BHJZ XXOR AL,ALJMP TIMERX:MOV AH,4CHINT 21HRETDELY PROCPUSH CXPUSH CXMOVE 4600X1:DEC CX,0FFFFHX2:DEC CXJNE X2DEC AXJNE X1POP AXPOP CXRETDELY ENDPCLOCK ENDPCODE ENDPEND START1)编译源文件,命名为HULINGWEI。

电子时钟程序设计

电子时钟程序设计

学号:电子时钟程序设计说明班级:11级计算机科学与技术本科班姓名:电子时钟程序设计这是一款基于对话框的简易电子时钟,功能实现比较简单,代码主要集中在显示模块。

程序运行界面如图1所示图1 电子时钟界面一、概述为了更好的学习C语言,熟练的掌握C语言的基本程序及其运行,进行了本次程序设计,通过本次程序编写及运行,掌握相关函数的功能和对话框程序的基本设计方法和技巧,提高程序编写能力。

此次程序设计,通过修改程序错误,反复运行,从而总结经验和方法,增强了熟练程度。

二、设计目的熟悉控件,更好的运用控件。

训练编写程序的基本技能,掌握对话框程序的基本设计方法和技巧。

基于对话框程序,练习编辑框、按钮、静态框的使用,提高程序编写能力。

编写一个数字电子时钟:1.显示与当前时间一致的时、分、秒。

2.用大字体显示,格式是HH:MM:SS三、功能描述该款电子时钟主界面由一个对话框构成,显示控件是一个静态框,包含一个时间模块,可以单独显示与当前时间一致的时:分:秒。

四、总体设计1.界面规划本程序是基于对话框的,界面设计就是画框的设计。

在工作区种打开资源视图,并添加一个对话框,向对话框中添加控件。

资源ID如下列表2.数据设计常量:#define IDC_MYICON 2#define IDD_CLOCK_DIALOG 102#define IDD_ABOUTBOX 103#define IDS_APP_TITLE 103#define IDM_ABOUT 104#define IDM_EXIT 105#define IDS_HELLO 106#define IDI_CLOCK 107#define IDI_SMALL 108#define IDC_CLOCK 109#define IDR_MAINFRAME 128#define IDC_EDIT3 1002#define IDC_STATIC -1#define IDC_STATIC_CLOCK -1// Next default values for new objects//#ifdef APSTUDIO_INVOKED#ifndef APSTUDIO_READONLY_SYMBOLS#define _APS_NEXT_RESOURCE_VALUE 129#define _APS_NEXT_COMMAND_VALUE 32771#define _APS_NEXT_CONTROL_VALUE 1003#define _APS_NEXT_SYMED_VALUE 110#endif#endif#include "stdafx.h"#include <time.h>#include "resource.h"3.函数功能1、主函数WinMainint APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){DialogBox(hInstance, (LPCTSTR)IDD_ABOUTBOX, NULL, (DLGPROC)Clock);return FALSE;}2、Clock函数LRESULT CALLBACK Clock(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam){PAINTSTRUCT ps;HDC hdc;switch (message){case WM_INITDIALOG:PostMessage(hDlg,WM_TIMER,0,0);//开始显示时间SetTimer(hDlg,1,1000,NULL);//设置一个1秒的定时器return TRUE;case WM_COMMAND:if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL){EndDialog(hDlg, LOWORD(wParam));return TRUE;}break;case WM_TIMER://定时器消息{char tmpbuf[9];//放置时间的字符串_strtime( tmpbuf );//获取时间字符串SetDlgItemText(hDlg,IDC_CLOCK,tmpbuf);//更改显示}break;case WM_PAINT:hdc = BeginPaint(hDlg, &ps);// TODO: Add any drawing code here...RECT rt;GetClientRect(hDlg, &rt);FillRect(hdc,&rt,CreateSolidBrush(RGB(222,0,222)));EndPaint(hDlg, &ps);break;}return FALSE;}五、程序实现1.程序清单// clock.cpp : Defines the entry point for the application.//#include "stdafx.h"#include "resource.h"#include <time.h>LRESULT CALLBACK Clock(HWND, UINT, WPARAM, LPARAM);int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){DialogBox(hInstance, (LPCTSTR)IDD_ABOUTBOX, NULL, (DLGPROC)Clock);return FALSE;}// Mesage handler for about box.LRESULT CALLBACK Clock(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam){PAINTSTRUCT ps;HDC hdc;switch (message){case WM_INITDIALOG:PostMessage(hDlg,WM_TIMER,0,0);//开始显示时间SetTimer(hDlg,1,1000,NULL);//设置一个1秒的定时器return TRUE;case WM_COMMAND:if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL){EndDialog(hDlg, LOWORD(wParam));return TRUE;}break;case WM_TIMER://定时器消息{char tmpbuf[9];//放置时间的字符串_strtime( tmpbuf );//获取时间字符串SetDlgItemText(hDlg,IDC_CLOCK,tmpbuf);//更改显示}break;case WM_PAINT:hdc = BeginPaint(hDlg, &ps);// TODO: Add any drawing code here...RECT rt;GetClientRect(hDlg, &rt);FillRect(hdc,&rt,CreateSolidBrush(RGB(222,0,222)));EndPaint(hDlg, &ps);break;}return FALSE;}2.源码分析1.WinMain 函数将向导生成的源代码,裁减成以上内容,显示对话框界面;2.Clock函数该函数实现时间的获取等与时间有关的内容3.调试和运行错误及解决方法六、结束语通过这次程序设计,我深刻认识到了实践对于我们学习的重要性。

电子时钟程序设计

电子时钟程序设计

1.设计目的电子时钟是采用数字电路实现对日期、时、分、秒,数字显示的计时装置,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表的报时功能。

电子时钟已成为人们日常生活中的必需品,广泛应用于家庭、车站、码头、22.1次的Flash MCS-51在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,又能便于添加各项功能。

程序可分为闹钟的声音程序、显示程序、闹钟显示程序、调时显示、定时程序。

运用这种方法,关键在于各模块的兼容和配合,若各模块不匹配会出现意想不到的错误。

2.3设计图2.4设计程序#include<reg51.h>#include<stdio.h>#include<intrins.h> chardatatime[6];voiddelay(unsignedchark); sbitcheck=P0^0;sbitinter0=P3^2;sbitinter1=P3^3;{chari;TR0=1;{{P1=sel[i];P2=buf[time[i]];delay(10);}if(check==0){delay(8);TR0=0;which=(which+1)%3;while(check==0);TR0=1;}}}voiddelay(unsignedchark){chari;for(;k>0;k--)for(i=0;i<80;i++){;}}voidtime_tr0()interrupt1 using2{{}}{TR0=1;}{}{delay(80);if(time[n]>0){time[n]=time[n]-1;}elseif(time[n]==0&&(n==3||n==1)){time[n]=5;smsub(n+1);}elseif(time[n]==0&&(n==4||n==2||n==0)){time[n]=23;smsub(n+1);}elseif(time[n]==0&&(n==5)){time[n]=0;}}voidsmadd(unsignedcharn){{}{smadd(n+1);}else{time[n]=time[n]+1;}}elseif(n==5){if(time[n]==2&&(time[n-1]==3)){time[5]=0;time[4]=0;}else{time[n]=time[n]+1;}}}2.5伟福系统仿真如图所示:3.。

电子闹钟(2)

电子闹钟(2)

带温度显示的电子闹钟的设计摘要电子时钟主要是利用电子技术将时钟电子化、数字化,拥有时钟精确、体积小、界面友好、可扩展性能强等特点,被广泛应用于生活和工作当中。

另外,在生活和工农业生产中,也常常需要温度,这就需要电子时钟具有多功能性。

本设计主要为实现一款可正常显示时钟/日历、测量环境温度、带有定时闹铃的电子时钟。

本文采用单片机技术实现带温度显示的电子闹(时)钟。

本设计应用AT89C51芯片作为核心,7位LED数码管显示,使用DS1302实时时钟日历芯片完成时钟/日历的基本功能,同时利用DS18B20温度传感器测量环境温度。

这种实现方法的优点是电路简单,性能可靠,实时性好,时间和温度精度高,操作简单,编程容易。

该电子时钟可以应用于一般的生活和工作中,也可通过改装,提高性能,增加新功能,从而给人们的生活和工作带来更多的方便。

目录摘要 (I)第一章绪论 (III)1.1电子时钟研究的背景和意义 (1)1.2 电子时钟的功能 (2)第二章电子时钟设计方案分析 (3)2.1 NE555时基电路设计方案 (3)2.2 单片机设计方案 (3)第三章基于单片机的电子时钟硬件设计 (5)3.1 主要IC芯片选择 (5)3.1.1 微处理器选择 (5)3.1.2. 常用时钟芯片的选择 (6)3.1.2.1芯片DS1302简介 (6)3.1.2.2 DS1302引脚说明 (7)3.1.2.3 DS1302的控制字和读写时序说明 (8)3.2.1.4 DS1302的片内寄存器 (10)3.1.3 环境温度传感器 (12)3.1.3.1常用温度传感器DS18B20简介123.1.3.2 DS18B20内部结构 (13)3.2 电子时钟硬件电路设计 (15)3.2.1 时钟电路设计 (16)3.2.2 环境温度采集电路设计 (16)3.2.3 显示电路 (17)3.2.4 按键电路设计 (18)3.2.5 闹铃电路设计 (20)第四章电子时钟软件设计 (21)4.1 主程序设计 (21)4.2 子程序设计 (21)4.2.1 实时时钟日历子程序设计 (22)4.2.2 环境温度采集子程序设计 (22)4.2.3 显示子程序设计 (26)4.2.4 键盘扫描子程序 (28)4.2.5 闹铃子程序设计 (29)第五章系统调试 (30)5.1 硬件调试 (31)5.1.1 单片机基础电路调试 (31)5.1.2 显示电路调试 (32)5.1.3 DS1302电路调试 (32)5.1.4 按键电路调试 (33)5.2 软件调试 (33)5.2.1 环境温度采集子程序调试 (34)5.2.2 键盘子程序调试 (34)结论 (35)致谢 (36)参考文献 (37)第一章绪论时间是人类生活必不可少的重要元素,如果没有时间的概念,社会将不会有所发展和进步。

单片机数字电子时钟设计

单片机数字电子时钟设计

单片机数字电子时钟设计摘要第一章电子时钟的设计 (3)1. 1电子时钟简介 (3)1.2电子时钟的工作原理 (3)第二章硬件设计方案 (4)2. 1硬件电路的设计方案 (4)2. 2硬件电路的原理图 (4)2. 3硬件电路说明 (5)第三章电子时钟的程序设计 (8)3. 1程序流程图 (8)3. 2程序设计 (11)总结15摘要随着现代生活的推进,电子时钟在人们的生活中差不多普及,本课题的要紧内容确实是结合单片机的强大功能,在一块一般的电子时钟集成多种功能,方便人们的日常生活,该功能是通过单片机、8段数码管以及一些简单辅助电路实现的。

由于之前没有独立做过单片机实现多功能电子时钟方面的内容,因此在做设计时总会遇见专门多问题,本次设计是在结合老师的指导及同学的关心下完成的,并通过本人在网上所查的大量资料及单片机设计中常见的电路而构思出来的。

单片运算机即单片微型运算机。

由RAM .ROM,CPU构成,定时, 计数和多种接口于一体的微操纵器。

它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。

而51系列单片机是各单片机中最为典型和最有代表性的一种。

这次课程设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。

本设计要紧设计了一个基于AT89C51单片机的电子时钟。

并在数码管上显示相应的时刻。

并通过一个操纵键用来实现时刻的调剂和是否进入省电模式的转换。

该方法仿真成效真实、准确,节约了硬件资源。

关键字:单片机、电子时钟、程序第一章电子时钟的设计1.1电子时钟简介电子钟是一种利用数字电路来显示秒、分、时的计时装豊,与传统的机械钟相比,它具有走时准确、显示直观、无机械传动装麗等优点,因而得到广泛应用。

随着人们生活环境的不断改善和美化,在许多场合都用到电子时钟。

现在高精度的计时工具大多数都使用了石英晶体振荡器,山于电子钟、石英钟、石英表都采纳了石英技术,因此走时精度高,稳固性好,使用方便,不需要经常调试,数字式电子钟用集成电路讣时时,译码代替机械式传动,用LED显示器代替指针显示进而显示时刻,减小了计时误差,这种表具有时、分、秒显示时刻的功能,还能够进行时和分的校对,片选的灵活性好。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2
熟悉硬件 了解各引脚功 能
完成整体电路图
分块设计各部分电 路
将分块的电路组合
认真学习单片机汇编 语言
确定变成结构和思 路
综合各程序完成整体 程序
编辑各个程序模块
调试程序,进行修改
对仿真中出现的问题 进行改正
仿真成功
软硬件结合,完成任务 书要求
用 Proteus 画出电路 图
画出仿真图进行仿 真
准备器件、搭接电 路
4
开始 计数单元清零 装入计数值 192 继续计数
一秒到
ss++ 一分到
mm++;ss=0 一小时 到
hh++;mm=0
调节小 时中断
调节分 钟中断
hh++
mm++;ss=0
数码显示
5
2.4 设计程序
#include<reg51.h> #include<stdio.h> #include<intrins.h> char data time[6]; void delay(unsigned char k); sbit check=P0^0; sbit inter0=P3^2; sbit inter1=P3^3; char data which=0; char data count=0; void smadd(unsigned char k); void smsub(unsigned char n); char code buf[]={ 0x00,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0xff,0x6f }; char code sel[]= {0x01,0x02,0x04,0x08}; void main() { char i; for(i=0;i<500;i++); time[0]=0; time[1]=1; time[2]=8; time[3]=0; time[4]=2; time[5]=1; TMOD=0X01; TH0=(65535-5000)/256; TL0=(65535-5000)%256; IP=0x07; IE=0X87; TR0=1; while(1)
time[n]=time[n]-1;
7
} else if(time[n]==0&&(n==3||n==1)) {
time[n]=5; smsub(n+1); } else if(time[n]==0&&(n==4||n==2||n==0)) { time[n]=23; smsub(n+1); } else if(time[n]==0&&(n==5)) { time[n]=0; } } void smadd(unsigned char n) { char flag=0; delay(80); if((n==0)||(n==2)||(n==4)) {
{ for(i=0;i<6;i++) { P1=sel[i]; P2=buf[time[i]] ; delay(10); } if(check==0) { delay(8); TR0=0;
6
which=(which+1)%3; while(check==0); TR0=1; }
} } void delay(unsigned char k) {char i; for (;k>0;k--)
1
结构。这样,既能做到经济合理又能实现预期的功能。 在程序方面,采用分块设计的方法,这样既减小了编程难度、使
程序易于理解,又能便于添加各项功能。程序可分为闹钟的声音程序、 显示程序、闹钟显示程序、调时显示、定时程序。运用这种方法,关 键在于各模块的兼容和配合,若各模块不匹配会出现意想不到的错 误。
2.设计内容
设计思想 针对要实现的功能,拟采用AT89C51单片机进行设计,AT89C51 单
片机是一款低功耗,高性能CMOS8位单片机,片内含4KB在线可编程 (ISP)的可反复擦写1000次的Flash只读程序存储器,器件采用高密 度、非易失性存储技术制造,兼容标准MCS- 51指令系统及80C51引脚
验证硬件电路
进行扩展
2.2 设计元件
元件 单片机 晶振 晶振电容 按键
AT89C51 12MHz 30pF
成功 规格
3
数量
1 1 2
4
电阻 电容 七段数码管 USB 接口 USB 延长线 底座
10K,1K,220 欧, 10uF(+) 共阳极四位、两位
40 脚
2.3 设计图
各 1,1,15 1 各 1,1 1 1/2 1
1.设计目的
电子时钟是采用数字电路实现对日期、时、分、秒,数字显示的 计时装置,由于数字集成电路的发展和石英晶体振荡器的广泛应用, 使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生 活带来了极大的方便,而且大大地扩展了钟表的报时功能。电子时钟 已成为人们日常生活中的必需品,广泛应用于家庭、车站、码头、剧 院、办公室等场所,给人们的生活、学习、工作带来极大的方便。不 仅如此,在现代化的进程中,也离不开电子钟的相关功能和原理,比 如机械手的控制、家务的自动化、定时自动报警、按时自动打铃、时 间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动 力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数 字化为基础的。而且是控制的核心部分。因此,研究电子时钟及扩大 其应用,有着非常现实的意义。
for(i=0;i<80;i++) {;}
} void time_tr0() interrupt 1 using 2 {
TH0=(65535-5000)/256; TL0=(65535-5000)%256; count++; if(count==100) {
smadd(0); } } void int0_i() interrupt 0 using 3 { TR0=0; smadd(which*2); TR0=1; while(inter0==0); } void int1_i() interrupt 2 using 1 { TR0=0; delay(20); smsub(which*2);; TR0=1; while(inter1==0); } void smsub(unsigned char n) { delay(80); if(time[n]>0) {
相关文档
最新文档