51单片机数字时钟

合集下载

基于51单片机的多功能电子钟设计

基于51单片机的多功能电子钟设计

基于51单片机的多功能电子钟设计1. 本文概述随着现代科技的发展,电子时钟已成为日常生活中不可或缺的一部分。

本文旨在介绍一种基于51单片机的多功能电子钟的设计与实现。

51单片机因其结构简单、成本低廉、易于编程等特点,在工业控制和教学实验中得到了广泛应用。

本文将重点阐述如何利用51单片机的这些特性来设计和实现一个具有基本时间显示、闹钟设定、温度显示等功能的电子钟。

本文的结构安排如下:将详细介绍51单片机的基本原理和特点,为后续的设计提供理论基础。

接着,将分析电子钟的功能需求,包括时间显示、闹钟设定、温度显示等,并基于这些需求进行系统设计。

将详细讨论电子钟的硬件设计,包括51单片机的选型、时钟电路、显示电路、温度传感器电路等。

软件设计部分将介绍如何通过编程实现电子钟的各项功能,包括时间管理、闹钟控制、温度读取等。

本文将通过实验验证所设计的电子钟的功能和性能,并对实验结果进行分析讨论。

通过本文的研究,旨在为电子钟的设计提供一种实用、经济、可靠的方法,同时也为51单片机的应用提供一个新的实践案例。

2. 51单片机概述51单片机,作为一种经典的微控制器,因其高性能、低功耗和易编程的特性而被广泛应用于工业控制、智能仪器和家用电器等领域。

它基于Intel 8051微处理器的架构,具备基本的算术逻辑单元(ALU)、程序计数器(PC)、累加器(ACC)和寄存器组等核心部件。

51单片机的核心是其8位CPU,能够处理8位数据和执行相应的指令集。

51单片机的内部结构主要包括中央处理单元(CPU)、存储器、定时器计数器、并行IO口、串行通信口等。

其存储器分为程序存储器(ROM)和数据存储器(RAM)。

程序存储器通常用于存放程序代码,而数据存储器则用于存放运行中的数据和临时变量。

51单片机还包含特殊功能寄存器(SFR),用于控制IO端口、定时器计数器和串行通信等。

51单片机的工作原理基于冯诺伊曼体系结构,即程序指令和数据存储在同一块存储器中,通过总线系统进行传输。

基于51单片机的简易数字钟系统设计

基于51单片机的简易数字钟系统设计

简易数字钟系统设计完成一个简易数字时钟系统设计。

要求:用3个独立按键调整时间。

一个按键控制启动运行。

在调整结束后按运行键后开始运行。

1,开机时,显示00:00:00时间从零开始调整。

2,P10控制秒的调整,每按一次加1s。

3,p11控制分的调整,每按一次加1min。

4,p12控制时的调整,每按一次加1h。

5,p13控制运行和停止。

程序:#include<reg52.h>sbit key1=P3^4;sbit key2=P3^5;sbit key3=P3^6;sbit key4=P3^7;#define uchar unsigned char#define uint unsigned intuchar shi,ge,aa,num,num1,num2,tt;uint n;uchar q1,q2,b1,b2;sbit dula=P2^6;sbit wela=P2^7;void keyscan();void delay(uint);void display();uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void keyscan(){if(key1==0){ num2++;if(num2==24)num2=0;while(!key1);if(key2==0){num1++;if(num1==60)num1=0;while(!key2);}if(key3==0){num++;if(num==60)num=0;while(!key3);}if(key4==0){ TR0=~TR0;while(!key4);}}void main(){TMOD=0x00;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;while(1){ k eyscan();display();}}void time0()interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;tt++;if(tt==100){ tt=0;num++;if(num==60){ num=0;num1++;if(num1==60){ num1=0;num2++;if(num2==24)num2=0;}}}}void display(){q1=num2/10;q2=num2%10;b1=num1/10;b2=num1%10;shi=num/10;ge=num%10;wela=1;P0=0xfe;wela=0;P0=0xff;P0=table[q1]; dula=0; delay(1);wela=1;P0=0xfd; wela=0;P0=0xff; dula=1;P0=table[q2]; dula=0; delay(1);wela=1;P0=0xfb; wela=0;P0=0xff; dula=1;P0=table[b1]; dula=0; delay(1);wela=1;P0=0xf7; wela=0;P0=0xff; dula=1;P0=table[b2]; dula=0; delay(1);wela=1;P0=0xef; wela=0;P0=0xff; dula=1;P0=table[shi]; dula=0; delay(1);wela=1;P0=0xdf;P0=0xff;dula=1;P0=table[ge];dula=0;delay(1);}void delay(uint x){uint i,j;for(i=x;i>0;i--)for(j=110;j>0;j--); }。

51单片机数码管时钟电路的设计

51单片机数码管时钟电路的设计

51单片机数码管时钟电路的设计设计一个51单片机数码管时钟电路,让我们开始吧。

一、设计思路该数码管时钟电路的设计主要包括以下几个方面:1.使用DS1302时钟芯片获取真实时间;2.使用I2C总线方式将DS1302时钟芯片与51单片机连接;3.使用74HC595芯片驱动数码管显示;4.使用按键控制时钟的设置和调节;5.使用蜂鸣器发出报警声;6.使用LED指示灯显示时钟状态。

二、硬件设计部分数码管显示部分:1.使用4位共阳数码管作为时分显示器,使用1位共阳数码管作为秒显示器;2.使用8片74HC595芯片级联起来,将时分秒数据传输到数码管显示;3.设置共阳数码管的通阳管为P0口,设置74HC595的DS(串行数据输入)、SH(上升沿锁存)、STCP(74HC595的8位锁存输出)引脚接到P1.2、P1.3、P1.4端口;4.设置8个控制引脚接到P1.5~P1.12端口。

实时时钟部分:1.使用DS1302时钟芯片连接到P2.0、P2.1、P2.2、P2.3、P2.4、P2.5、P2.6、P2.7端口;2.设置时钟复位引脚接到P0.1端口,时钟传输使能引脚接到P0.2端口。

按键输入部分:1.设置按键S1接到P3.2端口,按键S2接到P3.3端口;2.设置按键的上拉电阻,使其处于高电平状态;3.设置按键的下降沿触发外部中断,以便检测按键的按下事件。

其他部分:1.设置蜂鸣器接到P0.0端口,并使用普通电阻限流;2.设置LED指示灯接到P0.7端口。

三、软件设计部分1.初始化函数:初始化P0、P1、P2、P3口的状态;2.DS1302驱动函数:包括初始化DS1302芯片和读写DS1302寄存器的函数;3.74HC595驱动函数:包括初始化74HC595芯片,以及向74HC595芯片发送8位数据的函数;4.数码管显示函数:将时分秒数据按位转换为对应的数字和状态,并调用74HC595驱动函数显示;5.按键检测函数:检测按键的按下事件,并根据按键事件的不同触发不同的操作;6.报警函数:当设定时间到达时,将触发报警声,并控制LED灯闪烁;7.主函数:循环读取DS1302时间,并更新数码管显示,检测按键事件,触发报警。

51单片机数字钟设计

51单片机数字钟设计

51单片机数字钟设计是一种常用的电子设计,它使用51单片机作为控制核心,通过数码管显示时间。

以下是一个简单的51单片机数字钟设计步骤:
1. 硬件设计
首先,需要选择一个合适的51单片机型号,如AT89C51、AT89S52等。

然后,需要选择数码管显示模块,可以选择多个数码管显示小时、分钟和秒。

同时,还需要选择适当的电源模块为数码管和单片机提供电源。

2. 软件设计
在软件设计方面,需要编写程序来控制数码管的显示,并实现时间的计数和更新。

可以使用定时器中断来实现时间的计数和更新。

同时,还需要编写程序来读取按键输入,以便用户可以调整时间。

3. 调试
在完成硬件和软件设计后,需要进行调试。

首先,需要检查硬件连接是否正确,然后通过调试程序来检查数码管的显示是否正确,以及时间计数和更新是否正常。

以上是一个简单的51单片机数字钟设计步骤,实际的设计可能需要根据具体需求进行修改和调整。

基于51单片机的数字电子时钟设计

基于51单片机的数字电子时钟设计

课程设计任务书摘要数字钟因其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广大消费的喜爱,因此得到了广泛的使用。

单片机为基础上设计出来的数字时钟数字钟,在日常生活中最常见,应用也最广泛。

本次课程设计的时钟就是以STC89C52单片机为核心,配备LED显示模块、时钟模块、等功能模块的数字电子钟。

采用24小时制方式显示时间。

文章主要从硬件设计和软件编程两个大的方面。

硬件电路设计主要包括中央处理模块、时钟模块,显示模块等几部分。

时钟电路采用DS1302芯片,并选用LED显示器。

软件方面用keil C语言来实现。

软硬件配合,达到电子时钟精准的显示。

关键字:单片机,时钟模块,精准目录1绪论 (2)1.1设计概述 (2)1.2技术简述 (2)1.3本课题的背景 (3)1.4本课题的意义 (3)2系统设计 (4)2.1设计目的 (4)2.2设计功能及要求 (4)2.3设计思路 (4)2.4硬件方案 (4)2.4.1时钟芯片的选择 (5)2.4.2显示屏的选择 (5)2.4.3单片机的选择 (5)2.5软件方案 (5)2.6整体方案 (6)2.7元器件清单 (6)3硬件设计 (7)3.1单片机最小系统 (7)3.1.1时钟电路 (7)3.1.2复位电路 (8)3.2时钟电路 (8)3.3电源电路 (9)3.4系统整体电路 (9)3.5系统仿真 (10)3.6硬件制作 (10)4软件设计 (11)4.1程序设计步骤 (11)4.2系统主程序 (11)4.3时钟模块子程序 (12)4.4显示模块子程序 (12)4.5主程序 (13)5联机调试 (14)6总结 (15)7参考文献 (16)1绪论1.1设计概述在单片机技术日趋成熟的今天,其灵活的硬件电路和软件程序的设计,使单片机得到广泛的应用,从小的电子产品,到大的工业控制,单片机都起到了举足轻重的作用。

数字电子时钟是基于单片机和DS1302时钟芯片的一种计时工具。

51单片机数字时钟设计参数计算

51单片机数字时钟设计参数计算

51单片机数字时钟设计参数计算一、概述1.1 51单片机数字时钟的设计意义1.2 研究背景和意义1.3 文章内容概要二、数字时钟的基本结构2.1 数字时钟的组成要素2.2 51单片机在数字时钟设计中的应用三、时钟参数计算3.1 时钟频率的选择3.2 倍频电路的设计3.3 分频电路的设计3.4 时钟精度的计算四、时钟电路的仿真与测试4.1 仿真软件的选择4.2 时钟电路仿真实验步骤4.3 实验结果分析与讨论五、数字时钟功能设计5.1 显示模块的选择与设计 5.2 时间调整与校准5.3 报警功能设计5.4 其他功能设计六、数字时钟的电路设计6.1 电源电路设计6.2 主控模块电路设计6.3 显示模块电路设计6.4 控制模块电路设计七、数字时钟的外壳设计7.1 外壳材料与工艺选择 7.2 外观设计要素7.3 外壳制作与装配八、数字时钟的成品制作8.1 PCB制作8.2 元件焊接8.3 软件编程8.4 调试与测试九、总结与展望9.1 设计过程总结9.2 设计成果评价9.3 后续工作展望结语以上是对51单片机数字时钟设计参数计算的一份初步构思,希望上述内容能够对相关领域的研究者或爱好者有所帮助。

感谢您的阅读。

十、时钟参数计算在数字时钟的设计中,时钟频率的选择是至关重要的。

时钟频率决定了数字时钟的精度和稳定性。

而在使用51单片机设计数字时钟时,我们需要根据具体的要求和应用场景来确定合适的时钟频率。

3.1 时钟频率的选择针对数字时钟而言,我们通常需要考虑其显示的精度和稳定性,因此要选用较高的时钟频率。

一般来说,数字时钟的显示要求在秒级,所以时钟频率需要能够满足秒级的计数要求。

时钟频率过高会增加功耗和电路复杂度,过低则会影响时钟的显示精度。

我们需要综合考虑这些因素来选择合适的时钟频率。

3.2 倍频电路的设计在实际应用中,我们常常会对晶振的频率进行倍频,以获得更高的时钟频率。

倍频电路一般采用锁相环(PLL)或者数字锁相环(DLL)来实现,通过合理的倍频系数,我们可以将晶振的频率提升到所需的高频率,以满足数字时钟的要求。

51单片机数字钟实验(原理图及程序)

51单片机数字钟实验(原理图及程序)

51单片机数字钟实验(原理图及程序)1.实验任务(1.开机时,显示12:00:00的时间开始计时;(2.P0.0/AD0控制“秒”的调整,每按一次加1秒;(3.P0.1/AD1控制“分”的调整,每按一次加1分;(4.P0.2/AD2控制“时”的调整,每按一次加1个小时;2.电路原理图图4.20.13.系统板上硬件连线(1.把“单片机系统”区域中的P1.0-P1.7端口用8芯排线连接到“动态数码显示”区域中的A-H端口上;(2.把“单片机系统:区域中的P3.0-P3.7端口用8芯排线连接到“动态数码显示”区域中的S1-S8端口上;(3.把“单片机系统”区域中的P0.0/AD0、P0.1/AD1、P0.2/AD2端口分别用导线连接到“独立式键盘”区域中的SP3、SP2、SP1端口上;4.相关基本知识(1.动态数码显示的方法(2.独立式按键识别过程(3.“时”,“分”,“秒”数据送出显示处理方法5.程序框图6.汇编源程序SECOND EQU 30HMINITE EQU 31HHOUR EQU 32HHOURK BIT P0.0MINITEK BIT P0.1SECONDK BIT P0.2DISPBUF EQU 40HDISPBIT EQU 48HT2SCNTA EQU 49HT2SCNTB EQU 4AHTEMP EQU 4BHORG 00HLJMP STARTORG 0BHSTART: MOV SECOND,#00HMOV MINITE,#00HMOV HOUR,#12MOV DISPBIT,#00HMOV T2SCNTA,#00HMOV T2SCNTB,#00HMOV TEMP,#0FEHLCALL DISPMOV TMOD,#01HMOV TH0,#(65536-2000) / 256 MOV TL0,#(65536-2000) MOD 256 SETB TR0SETB ET0SETB EAWT: JB SECONDK,NK1LCALL DELY10MSJB SECONDK,NK1INC SECONDMOV A,SECONDCJNE A,#60,NS60MOV SECOND,#00HNS60: LCALL DISPJNB SECONDK,$NK1: JB MINITEK,NK2LCALL DELY10MSJB MINITEK,NK2INC MINITECJNE A,#60,NM60 MOV MINITE,#00H NM60: LCALL DISPJNB MINITEK,$ NK2: JB HOURK,NK3LCALL DELY10MS JB HOURK,NK3INC HOURMOV A,HOURCJNE A,#24,NH24 MOV HOUR,#00H NH24: LCALL DISPJNB HOURK,$NK3: LJMP WTDELY10MS:MOV R6,#10D1: MOV R7,#248DJNZ R7,$DJNZ R6,D1RETDISP:MOV A,#DISPBUF ADD A,#8DEC AMOV R1,AMOV A,HOURMOV B,#10MOV @R1,ADEC R1MOV A,BMOV @R1,ADEC R1MOV A,#10MOV@R1,ADEC R1MOV A,MINITE MOV B,#10DIV ABMOV @R1,ADEC R1MOV A,BMOV @R1,ADEC R1MOV A,#10MOV@R1,ADEC R1MOV A,SECOND MOV B,#10DIV ABMOV @R1,ADEC R1MOV A,BMOV @R1,ADEC R1INT_T0:MOV TH0,#(65536-2000) / 256 MOV TL0,#(65536-2000) MOD 256 MOV A,#DISPBUFADD A,DISPBITMOV R0,AMOV A,@R0MOV DPTR,#TABLEMOVC A,@A+DPTRMOV P1,AMOV A,DISPBITMOV DPTR,#TABMOVC A,@A+DPTRMOV P3,AINC DISPBITMOV A,DISPBITCJNE A,#08H,KNAMOV DISPBIT,#00HKNA: INC T2SCNTAMOV A,T2SCNTACJNE A,#100,DONEMOV T2SCNTA,#00HINC T2SCNTBMOV A,T2SCNTBCJNE A,#05H,DONEMOV T2SCNTB,#00HINC SECONDMOV A,SECONDCJNE A,#60,NEXTMOV SECOND,#00HINC MINITEMOV A,MINITECJNE A,#60,NEXTMOV MINITE,#00HINC HOURMOV A,HOURCJNE A,#24,NEXTMOV HOUR,#00HNEXT: LCALL DISPDONE: RETITABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H TAB: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FHEND7.C语言源程序#include <AT89X51.H>unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; unsigned char dispbitcode[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char dispbuf[8]={0,0,16,0,0,16,0,0};unsigned char dispbitcnt;unsigned char second;unsigned char minite;unsigned char hour;unsigned int tcnt;unsigned char mstcnt;unsigned char i,j;void main(void){TMOD=0x02;TH0=0x06;TL0=0x06;TR0=1;ET0=1;EA=1;while(1){if(P0_0==0){for(i=5;i>0;i--)for(j=248;j>0;j--);if(P0_0==0){second++;if(second==60){second=0;}dispbuf[0]=second%10; dispbuf[1]=second/10; while(P0_0==0);}}if(P0_1==0){for(i=5;i>0;i--)for(j=248;j>0;j--);if(P0_1==0){minite++;if(minite==60){minite=0;}dispbuf[3]=minite%10; dispbuf[4]=minite/10; while(P0_1==0);}}if(P0_2==0){for(i=5;i>0;i--)for(j=248;j>0;j--);if(P0_2==0){hour++;if(hour==24){hour=0;}dispbuf[6]=hour%10;dispbuf[7]=hour/10;while(P0_2==0);}}}}void t0(void) interrupt 1 using 0{mstcnt++;if(mstcnt==8){mstcnt=0;P1=dispcode[dispbuf[dispbitcnt]]; P3=dispbitcode[dispbitcnt];dispbitcnt++;if(dispbitcnt==8){dispbitcnt=0;}}tcnt++;if(tcnt==4000){tcnt=0;second++;if(second==60){second=0;minite++;if(minite==60){minite=0;hour++;if(hour==24) {hour=0; }}}dispbuf[0]=second%10; dispbuf[1]=second/10; dispbuf[3]=minite%10; dispbuf[4]=minite/10; dispbuf[6]=hour%10; dispbuf[7]=hour/10; }}。

基于51单片机多功能数字时钟任务书

基于51单片机多功能数字时钟任务书
教研室(学科组)主任签字:
第八~九周
第十周
收集资料并对课题做深入的了解,撰写开题报告;
学习单片机AT89S52、时钟芯片DS1302的相关知识;
完成基于AT89S52和DS1302设计的研究总体方案设计;
完成系统软件各模块设计,并且购买元器件;
对电路板进行焊接,仿真和烧写,并进行整体调试;
翻译资料,并撰写毕业设计论文;
修改毕业论文,为毕业论文答辩作准备。
毕业设计任务书
题目
(包括副标题)
电子万年历设计与制作
教师姓名
XXX
职称
XXX
系别
XXX
学生姓名
XXX
学号
XXX
班级
XXX
成果形式
A论文B设计说明书C实物D软件E作品
■□■□□
任务下达时间
2006年11月
1.毕业设计课题任务的内容和要求:
1、毕业设计的主要内容:
1)设计并制作电子万年历
2)完成相关的技术文档和毕业设计论文பைடு நூலகம்
2、毕业设计的主要技术指标
1)显示阳历年、月、日、时、分、秒、星期及阴历年、月、日,能标明是否闰月
2) 用液晶进行显示,用按键进行调整
3) 实现闹铃功能
3、毕业设计的基本要求:
1)完成电子系统的方案设计,技术调试,硬件实现
2.毕业设计工作进度计划:
周 次
工作内容
早进入阶段
第一周
第二周
第三~五周
第六~七周

51单片机数字钟介绍

51单片机数字钟介绍

51单片机数字钟介绍随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断走向深入,由于它具有功能强、体积小、功耗低、价格便宜、工作可靠、使用方便等特点,因此越来越广泛地应用于自动控制、智能化仪器、仪表、数据采集、军工产品以及家用电器等各个领域。

51单片机数字钟应用单片机中断、定时技术,通过调整键、加1键、减1键、确定键四个按键,用8位数码管设计制作了一个可以调整时间的数字钟,实现了对时、分、秒进行数字显示,可广泛用于个人家庭、车站、码头、办公室等公共场所,方便人们的日常生活。

一、系统方框图51单片机数字钟以STC89C52单片机为核心,采用12MHZ晶振,以汇编语言为程序设计语言,结合相关的元器件(共阳极四位一体LED数码显示器、BCD -七段译码/驱动器74HC537等),再配以相应的软件,用8位数码管显示“时、分、秒”。

显示格式为:时-分-秒XX-XX-XX ,由时个位和时十位、分个位和分十位、秒个位和秒十位计数器组成。

秒、分计数器为60进制计数器,时计数器为24进制计数器。

通过调整、加1、减1、确定4只按键来调整时间。

按下调整键SET_KEY(P1.0),显示“时”的两位数码管以1Hz的频率闪烁。

如果再次按下调整键,则“分”两位数码管开始闪烁,“时”两位数码管恢复正常显示,依次循环,直到按下确定键OK_KEY(P1.3),恢复正常的时间显示。

在数码管闪烁的时候,按下加1键ADD_KEY(P1.1)或者减1键DEC_KEY(P1.2 ),可以调整相应的显示内容。

按一次键,则选中的“时”“分”“秒”分别加1或减1,如果长按,系统识别后以一定速率连续增加或连续减少,进行快速调时。

二、动态扫描数码管显示采用动态扫描方法。

把8位数码管的8个笔画字段(a~g和dp)同名端连在一起由一片74HC573驱动;每一位数码管的公共极COM端(位)各自独立,连接在另外一片74HC573输出上接受P2口的控制。

(完整word版)51单片机数字钟

(完整word版)51单片机数字钟

目录1 设计任务与要求 (I)2 设计方案 (1)3 硬件设计 (2)3.1 AT89C51单片机简介 2 3.2单片机型号的选择 (6)3.3数码管显示工作原理 (6)4 软件设计 (7)4.1主程序模块介绍 (7)4.2主程序 (7)5 仿真调试 ......................................... 错误!未定义书签。

5.1K EIL仿真结果.................................. 错误!未定义书签。

5.2仿真结果分析 (13)6 小结 ............................................. 错误!未定义书签。

1 设计任务与要求1. 设计一个基于单片机的电子时钟,并且能够实现时分秒的现实和调节。

2. 设计出硬件电路。

3. 设计出软件编程方法,并写出源代码。

4. 用PROTEUS进行仿真。

5.用汇方式实现目的。

7.系统的各各功能模块要编语言编实现程序设计。

6.利用查表,中断等清楚,有序。

8.程序运行时有友好的用户界面。

2 设计方案本设计主要设计了一个基于AT89C51单片机的电子时钟。

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

并通过一个控制键用来实现时间的调节和是否进入省电模式的转换。

应用Proteus的ISIS软件实现了单片机电子时钟系统的设计与仿真。

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

该设计的硬件部分主要包括89C51多功能接口芯片用于开发电子时钟芯片、LED七段数码显示器用于显示时间、8031集成定时器用于定时、0.125W、8欧姆的扬声器用于定时发声。

软件部分包括主程序、定时计数中断程序、时间调整程序、延时程序四大模块。

通过中断程序进行定时器计数,时间调整程序是当键按下时间小于1秒,关闭显示(省电)进入调节时间状态,延时程序用于时间的延迟。

先设计个秒钟程序,在秒钟程序中先不设计按钮,直接通电运行,使用40H 存放计数值,从00—59,一直循环,把40H中的数值拆分成个位和十位,分别存在30H与31H中,要求动态扫描时,使用21H当标志位,用指令JB控制显示个位与十位,程序中使用中间寄存器R0与R1用于存放拆分后的字型,再传到30H与31H中去,再设计时钟程序。

用51单片机和1602液晶做的数字钟

用51单片机和1602液晶做的数字钟

用51单片机和1602液晶做的数字钟数字钟是人们日常生活中常见的时间显示设备,它能够精确显示当前的时间,并且兼具简约和实用性。

本文将介绍使用51单片机和1602液晶屏幕制作自己的数字钟的方法。

所需材料在开始制作之前,我们需要准备以下材料: - 51单片机开发板 - 1602液晶屏幕 - 数字时钟芯片RTC(Real-Time Clock) - 面包板和导线 - 电阻和电容 - 编程器和烧录器硬件连接首先,我们需要将51单片机、1602液晶屏幕和RTC芯片连接起来。

根据硬件接口的定义和引脚功能的规定,我们可以进行以下连接: - 将51单片机的VCC 引脚连接到1602液晶屏幕的VCC引脚,用于提供电源。

- 将51单片机的GND引脚连接到1602液晶屏幕的GND引脚,用于地线连接。

- 将51单片机的P0口连接到1602液晶屏幕的数据线D0-D7,用于数据传输。

- 将51单片机的P2口连接到1602液晶屏幕的RS引脚,用于选择数据和命令传输。

- 将51单片机的P3口连接到1602液晶屏幕的EN引脚,用于启用LCD。

此外,还需要将RTC芯片连接到51单片机上,以实现时间的准确显示。

具体的连接方式可以参考RTC芯片的规格说明书。

软件编程完成硬件连接后,我们需要进行软件编程,以便控制51单片机、1602液晶屏幕和RTC芯片的功能。

初始化首先,我们需要对51单片机和1602液晶屏幕进行初始化设置。

这包括设置引脚的功能模式、初始化1602液晶屏幕的显示模式和清空显示区域。

读取时间接下来,我们需要通过RTC芯片来读取当前的时间。

这通常包括读取RTC芯片存储的年、月、日、时、分和秒的数据。

显示时间读取时间后,我们可以将其显示在1602液晶屏幕上。

这可以通过更新特定的LCD显示区域来实现。

我们可以在指定的位置、特定的行和列上显示时间。

更新时间为了实现实时的时间显示,我们需要定期更新显示的时间。

可以使用定时器中断来定期更新时间,并根据需要刷新液晶屏幕上的显示。

基于51单片机汇编语言的数字钟课程设计报告(含有闹钟万年历)

基于51单片机汇编语言的数字钟课程设计报告(含有闹钟万年历)

单片微型计算机课程设计报告多功能电子数字钟姓 名 许伟敏学 号 060301021124班 级 电气二班指导教师 林卫2009-06-25目录一:概述 (1)二:设计基本原理简介 (2)三:设计要求及说明 (3)四:整体设计方案 (4)系统硬件电路设计 4系统软件总流程设计 5模块划分及分析 6五:单模块流程设计 (8)各模块设计概述、流程图 8模块源程序集合及注释 13六:单模块软件测试 (23)七:系统检测调试 (24)硬件电路调试软件部分烧写调试八:系统优化及拓展 (26)九:心得体会 (28)单片微型计算机课程设计 基于汇编语言的电子数字钟 概述课程设计流程图↑一、概述课程设计题目:电子数字钟应用知识简介:● 51单片机单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。

作为嵌入式系统控制核心的单片机具有其体积小、功能全、性价比高等诸多优点。

51系列单片机是国内目前应用最广泛的单片机之一,随着嵌入式系统、片上系统等概念的提出和普遍接受及应用,51系列单片机的发展又进入了一个新的阶段。

在今后很长一段时间内51系列单片机仍将占据嵌入式系统产品的中低端市场。

● 汇编语言汇编语言是一种面向机器的计算机低级编程语言,通常是为特定的计算机或系列计算机专门设计的。

汇编语言保持了机器语言的优点,具有直接和简捷的特点,其代码具有效率高实时性强等优点。

但是对于复杂的运算或大型程序,用汇编语言编写将非常耗时。

汇编语言可以与高级语言配合使用,应用十分广泛。

● ISPISP (In-System Programming )在系统可编程,是当今流行的单片机编程模式,指电路板上的空白元器件可以编程写入最终用户代码,而不需要从电路板上取下元器件。

已经编程的器件也可以用ISP 方式擦除或再编程。

本次课程设计便使用ISP 方式,直接将编写好的程序下载到连接好的单片机中进行调试。

51单片机数字钟设计程序

51单片机数字钟设计程序

51单片机数字钟设计程序51单片机是一种常用的单片机芯片,它具有体积小、功耗低、性能稳定等特点,被广泛应用于各种电子设备中。

本文将以51单片机数字钟设计程序为主题,介绍如何使用51单片机设计并实现一个简单的数字钟。

我们需要了解一下数字钟的基本原理。

数字钟主要由时钟芯片、数码管、按键等组成。

时钟芯片负责计时和控制,数码管用于显示时间,按键则用于设置和调整时间。

在设计数字钟的程序时,我们需要考虑以下几个方面:1. 时钟设置:首先,我们需要设置时钟芯片的工作模式。

一般来说,时钟芯片有两种工作模式,分别是24小时制和12小时制。

我们可以通过按键来选择工作模式,并将选择结果保存到相应的寄存器中。

2. 时间显示:接下来,我们需要将时钟芯片中的时间数据通过数码管显示出来。

数码管通常由7段LED组成,每段LED对应一个数字或字符。

我们可以通过控制数码管的引脚状态来实现不同数字的显示。

同时,为了使时间显示更加清晰,我们可以在数码管之间加入冒号等分隔符。

3. 时间调整:为了保证时间的准确性,我们需要提供时间调整的功能。

可以通过按键来实现时间的增加和减少,从而调整时钟芯片中的时间数据。

当按键按下时,我们可以检测到相应的信号,并将其转换为时间调整的命令。

4. 闹钟功能:除了显示时间,数字钟还可以具备闹钟功能。

我们可以设置一个闹钟时间,并在达到闹钟时间时触发相应的报警信号。

一般来说,闹钟功能可以通过按键设置,并将设置结果保存在相应的寄存器中。

当时钟芯片中的时间与闹钟时间一致时,我们可以通过控制蜂鸣器等外设来发出报警信号。

通过以上的设计,我们可以实现一个简单的数字钟。

当然,如果我们希望数字钟具备更多的功能,比如温湿度显示、定时器等,我们还可以在程序中添加相应的代码来实现。

总结一下,本文以51单片机数字钟设计程序为主题,介绍了数字钟的基本原理以及设计过程。

通过对时钟芯片、数码管、按键等的控制,我们可以实现时间的显示、调整和闹钟功能。

基于AT89S51单片机的数字时钟

基于AT89S51单片机的数字时钟

基于AT89S51单片机的数字时钟摘要:随着科技的快速发展,时间的流逝,从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。

本次设计的数字时钟电路采用AT89S51单片机作为核心,对于数字电子时钟采用直观的数字显示(LED),可以同时显示时、分、秒等信息,还具有时间校准等功能,功耗小,使用寿命长,误差小,能在3V的低压工作,电压可选用3~5V电压供电。

综上所述此数字时钟具有读取方便、显示直观、电路简洁、成本低廉等诸多优点,实用性较强,性能稳定,有一定的市场前景。

~~~~~~目录~~~~~~一、设计要求与方案论证 (3)1.1 设计要求 (3)1.2 系统基本方案选择和论证 (3)1.2.1单片机芯片的选择方案和论证 (3)1.2.2 显示模块选择方案和论证 (4)1.2.3 时钟芯片的选择方案和论证 (5)1.2.4 电源的选择方案与论证 (5)二.系统的硬件设计与实现 (6)2.1 电路设计框图 (6)2.2 系统硬件概述 (6)2.3 主要单元电路的设计 (8)2.3.1单片机主控制模块的设计 (8)2.3.2电源电路模块的设计 (8)2.3.3校时校分电路设计 (9)2.3.4显示模块的设计 (9)三、系统的软件设计 (10)3.1主程序部分 (11)3.2计时显示中断子程序部分 (12)3.3校分显示子程序部分 (15)3.4校时显示子程序部分 (16)四. 指标测试 (17)4.1 测试仪器 (17)4.2硬件测试 (17)4.3软件测试 (18)4.4测试结果分析与结论 (18)4.4.1 测试结果分析 (18)4.4.2 测试结论 (18)五、作品总结与设计感想 (18)参考文献 (19)附录一:汇编语言源程序 (20)附录二:PCB印刷版图 (23)一、设计要求与方案论证1.1 设计要求:(1)基本要求(a)具备显示时、分等功能;(b)具备时、分校准功能;1.2 系统基本方案选择和论证1.2.1单片机芯片的选择方案和论证:方案一:采用89C51芯片作为硬件核心,其内部采用Flash ROM,具有4KB ROM 存储空间,能于3V 的超低压工作,但运用于电路设计中时由于不具备ISP在线编程技术,烧入程序时需要专门的C编程器(当前可用的实验烧写开发板只支持具有ISP在线编程功能的AT89S**系列的芯片),当在对电路进行调试时,更显麻烦,并且增加了造价,方案二:采用89S51芯片作为主控模块,AT89S51是MCS-51系列单片机目前运用较多的一种芯片,采用Flash ROM,内部具有4KB ROM 存储空间,能于3V的超低压工作,而且具备ISP在线编程技术,方便对电路进行调试.但由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。

51单片机做数字电子钟

51单片机做数字电子钟

51单片机做数字电子钟悬赏分:10 - 解决时间:2009-7-5 17:42设计一个数字电子钟,要求可以进行时、分、秒显示,最大显示时间为23:59:59,并且可以通过按键进行时、分调整。

"画出硬件连接电路图,说明各个控制信号的作用。

"画出程序流程图,编写程序,硬件连接调试,直至正确。

"编写课程设计报告。

"3、给定条件在Dais-52PH+单片机实验箱中,有一片8155芯片用于扩展3×3键盘,还具有6位LED 数码显示器,可分别用于按键和显示控制。

在PC机上调试可使用MCS51仿真开发系统。

数字电子钟的工作过程为:从00:00:00(时:分:秒)开始计时,以24小时为一循环,最大计时时间为23:59:59。

当需要校正时间时,按下调整键,小时的十位闪烁,等待键入新值,若需调整则按下加1按键,数值以秒为单位自动加1,当十位调整好后,按下确认键确认,然后小时的个位闪烁,等待键入新值,按照十位的调整步骤调整时间,并按下确认键确认,当确认后,分钟的十位开始闪烁,等待键入新值,分钟的十位和个位调整过程与小时调整一样,只是当分的个位调整好后,按下确认键即启动计时。

数字电子钟是以1s为最小定时单位的,51单片机自身具有两个16位定时/计数器,当晶振频率为6MHz时,最大定时时间为0.13s。

而具有时、分和秒的数字电子钟只能以1s定时,所以要实现实现1s定时,必须采用软件计数和定时器定时相结合的方法。

每1s定时到,修改显示值,送6位LED显示。

本课题需用6个LED数码管显示时间值,并且需调整键、加1键、确认键等控制键。

在Dais-52PH+单片机实验箱中,6位LED数码显示器的字形口地址为0FFDCH,字位口地址为0FFDDH,字形表和字位表见附录一。

可通过8155可编程接口芯片驱动的3×3键盘实现按键控制(具体电路参考课题一数字秒表)。

8155的PC0~PC2为3×3键盘的行扫线,PB0~PB2为3×3键盘的列扫线,键盘工作过程为:单片机从8155的PB0~PB2送出全零,并从PC0~PC2读入数据,当PC0~PC2≠000时,表明有键按下,则逐行从PB0~PB2送出零,再从PC0~PC2口读入,最终确定按键位置和键值,此后,转入相应的按键处理程序,修改显示缓冲区内容。

简单的51单片机时钟程序

简单的51单片机时钟程序

简单的51单片机时钟程序,可以通过按键来设置时间,按键可以自己更改。

#include<reg52.h>#define uint unsigned int#define uchar unsigned char#define tt 46080 //设置时间间隔,对应11.0592MHZ的晶振uchar code table[]="Happy every day!";uchar code table1[]="00:00:00";uchar num,hh,mm,ss,t,s1num=0;sbit en=P3^4;sbit rs=P3^5;sbit rw=P3^6;sbit s1=P3^0;sbit s2=P3^1;sbit s3=P3^2;//按键所用的端口sbit s4=P3^3;void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--); //大约是1ms,因为单片机的时钟周期为11.0592mhz。

}void write_com(uchar com){rs=0; //指令P0=com; //写指令函数delay(1);en=1;delay(1);en=0;}void write_data(uchar dat){rs=1; //数据P0=dat; //写指令函数delay(1);en=1;delay(1);en=0;}void init(){en=0; //初始时使能为0rw=0;write_com(0x38); //显示屏模式设置为1602方案write_com(0x0c);write_com(0x06); //显示开关/光标设置write_com(0x01); //清屏write_com(0x80); //指针置零for(num=0;num<16;num++)write_data(table[num]);write_com(0xc3);for(num=0;num<8;num++)write_data(table1[num]);}void dingshi(){TMOD=0x01; //确定定时器工作模式(定时模式)TH0=(65536-tt)/256; //赋初值为tt微秒TL0=(65536-tt)%256; //不赋值时默认其值是0EA=1; //开总中断ET0=1; //开定时器0中断// IE=0x82; //总线写法TR0=1; //启动定时器0 总线TCON=0x10;}void shuanxin(uchar add,uchar date){uchar shi,ge;write_com(0xc3+add); //指针指向shi=date/10;ge=date%10;write_data(0x30+shi);write_data(0x30+ge); //指针自动后移,故不必再写指针位置}/***************借助蜂鸣器接地起作用***************/ void keyscan(){if(s1==0){delay(5);if(s1==0){s1num++;while(!s1);if(s1num==1){TR0=0; //时钟停止运行write_com(0xca); //指针指向sswrite_com(0x0f); //光标闪烁}if(s1num==2){write_com(0xc7); //指针指向mmwrite_com(0x0f);}if(s1num==3){write_com(0xc4); //指针指向hhwrite_com(0x0f);}if(s1num==4){s1num=0;TR0=1; //时钟运行write_com(0x0c); //取消闪烁}}}/***************调节时间****************/if(s1num!=0) //目的是使s1按下的前提才起作用{if(s2==0){delay(5);if(s2==0){while(!s2); //松手检测,松手后方可向下执行if(s1num==1){ss++;if(ss==60)ss=0;shuanxin(6,ss);write_com(0xca);}if(s1num==2){mm++;if(mm==60)mm=0;shuanxin(3,mm);write_com(0xc7);}{hh++;if(hh==24)hh=0;shuanxin(0,hh);write_com(0xc4);}}}}if(s1num!=0) //s1按下的前提才起作用{if(s3==0){delay(5);if(s3==0){while(!s3);if(s1num==1){ss--;ss=59;shuanxin(6,ss);write_com(0xca);}if(s1num==2){mm--;if(mm==-1)mm=59;shuanxin(3,mm);write_com(0xc7);}if(s1num==3){hh--;if(hh==-1)hh=23;shuanxin(0,hh);write_com(0xc4);}}}}if(s1num!=0) //s1按下的前提才起作用{if(s4==0){delay(5);if(s4==0){while(!s4);if(s1num==1){ss=0;shuanxin(6,ss);write_com(0xca);}if(s1num==2){mm=0;shuanxin(3,mm);write_com(0xc7);}if(s1num==3){hh=0;shuanxin(0,hh);write_com(0xc4);}}}}}void main(){init();dingshi();while(1){keyscan();if(t==20){P1=P1-1;t=0;ss++;if(ss==60){ss=0;mm++;if(mm==60){mm=0;hh++;if(hh==24){hh=0;}shuanxin(0,hh);}shuanxin(3,mm);}shuanxin(6,ss);}}}void time0() interrupt 1{TH0=(65536-tt)/256; //不赋值时默认其值是0 TL0=(65536-tt)%256;t++;}。

51单片机数字时钟设计仿真参数计算

51单片机数字时钟设计仿真参数计算

51单片机是一种常用的微控制器,被广泛应用在数字时钟等电子产品中。

数字时钟设计仿真参数计算是数字时钟设计中的关键步骤,通过计算仿真参数可以帮助设计者更好地了解数字时钟的性能和稳定性,为设计提供重要的参考依据。

本文将详细介绍51单片机数字时钟设计仿真参数计算的方法和步骤,并结合具体实例进行说明,帮助读者更好地理解和掌握这一关键技术。

一、51单片机数字时钟设计概述数字时钟是一种常见的电子产品,其设计涉及到数字电路、时序控制、显示技术等多个方面的知识。

在数字时钟的设计中,常常需要使用微控制器来实现时钟的控制和显示功能。

51单片机是一种常用的微控制器,具有成本低、性能稳定等优点,因此被广泛应用在数字时钟等电子产品中。

数字时钟的设计仿真参数计算是设计过程中的重要步骤,通过计算仿真参数可以帮助设计者更好地了解数字时钟的性能和稳定性,为设计提供重要的参考依据。

在51单片机数字时钟设计中,仿真参数计算尤为重要,可以帮助设计者优化时钟的控制逻辑、减小时钟的功耗等,从而提高产品的质量和可靠性。

二、51单片机数字时钟设计仿真参数计算的方法和步骤1. 确定时钟的基本参数在进行数字时钟设计仿真参数计算之前,首先需要确定时钟的基本参数,包括时钟频率、时钟周期、时钟精度等。

这些参数是仿真计算的基础,对于设计者而言至关重要。

在确定时钟的基本参数时,需要考虑到实际应用场景的需求,确定一个合适的基准。

对于数字时钟的设计而言,常见的时钟频率为1Hz、10Hz、100Hz等,时钟周期为1s、0.1s、0.01s等。

2. 计算时钟的定时参数时钟的定时参数是指时钟的稳定性、精度、偏差等参数。

在进行数字时钟设计仿真参数计算时,需要对时钟的定时参数进行详细的计算和分析。

常见的定时参数计算方法包括定时精度分析、定时偏差分析、定时稳定性分析等。

通过对时钟的定时参数进行计算和分析,可以更好地了解时钟的工作性能,为后续的设计优化提供重要参考依据。

3. 分析时钟的功耗参数时钟的功耗是设计过程中需要重点考虑的一个方面。

51单片机数字时钟(带闹钟)

51单片机数字时钟(带闹钟)

51单片机数字时钟(带闹钟)计算机硬件综合课程设计报告课目:学院:班级:姓名:指导教师:目录1.1 功能需求1.2 设计要求2.1 总体描述2.2 系统总体框图2.3 Proteus仿真电路图3 软件设计流程及描述3.1 程序流程图3.2 函数模块及功能4 心得体会附:源程序11.1功能需求(1)实现数字时钟准确实时的计时与显示功能;(2)实现闹钟功能,即系统时间到达闹钟时间时闹铃响;(3)实现时间和闹钟时间的调时功能;(4)刚启动系统的时候在数码管上滚动显示数字串(学号)。

1.2设计要求(1)应用MCS-51单片机设计实现数字时钟电路;(2)使用定时器/计数器中断实现计时;(3)选用8个数码管显示时间;(4)使用3个按钮实现调时间和闹钟时间的功能。

按钮1:更换模式(模式0:正常显示时间;模式1:调当前时间的小时;模式2;调当前时间的分钟;模式3:调闹钟时间的小时;模式4:调闹钟时间的分钟);按钮2:在非模式0下给需要调节的时间数加一,但不溢出;按钮3:在非模式0下给需要调节的时间数减一,但不小于零;(5)在非0模式下,给正在调节的时间闪烁提示;(6)使用扬声器实现闹钟功能;(7)采用C语言编写程序并调试。

2.1总体描述(1)单片机采用AT89C51型;(2)时间显示电路:采用8个共阴极数码管,P1口驱动显示数字,P2口作为扫描信号;(3)时间设置电路:P3.0、P3.1、P3.2分别连接3个按键,实现调模式,时间加和时间减;(4)闹钟:P3.3口接扬声器。

2.2系统总体框图2.3Proteus仿真电路图3 软件设计流程及描述3.1 程序流程图(1) void display_led()(2)学号的滚动显示函数;(3) void display()显示时间以及显示调节时间和闹钟时间的闪烁;(4)voidkey_prc()键盘功能函数,实现3个按键有关的模式转换以及数字加一减一;(5) void init()初始化设置中断;(6) void time1() interrupt 3定时器1中断函数,实现计时功能。

基于51单片机LCD1602数字钟讲解

基于51单片机LCD1602数字钟讲解

基于51单片机的数字时钟实训单位: 南耕科技系别: 工程技术系专业:姓名:摘要本文介绍了基于AT89C51单片机的数字式时钟的设计,详细叙述了系统硬件、软件的具体实现过程。

本文在硬件、软件设计上均采用模块化的方法,使得在设计和调试方面取得很大的方便。

软件同样采用模块化的设计,包括中断模块、时间调整模块等设计,并采用简单流通性强的C语言编写实现。

本设计实现了时、分、秒的显示和时间修改的功能。

通过对比实际的时钟,查找出误差的来源,确定调整误差的方法,尽可能的减少误差,使得系统可以达到实际数字钟的允许误差范围内。

关键字:AT89C51单片机;数字钟;模块化;目录1 绪论 (1)1.1 课题背景 (1)1.2 课题意义 (2)1.3 数字式时钟的应用 (2)1.4 本章小结 (3)2 单片机简介 (3)2.1 单片机的选择 (3)2.1.1 单片机的特点 (5)2.1.2 单片机的应用领域 (5)2.2 AT89C51单片机的基本结构 (6)2.3 本章小结 (11)3 数字式时钟的硬件设计 (12)3.1 最小系统设计 (13)3.2 数字式时钟的外围电路设计 (14)3.3 本章小结 (19)4 数字式时钟的软件设计 (19)4.1 系统软件设计内容 (19)4.2主程序 (20)4.3时钟设置子程序 (22)4.4中断子程序 (24)4.5 LCD显示子程序 (24)4.6 本章小结 (26)5 数字式时钟的Protues软件仿真 (26)5.1 Protues软件的概述 (26)5.2 Protues软件的功能特点 (27)5.3 Protues软件具有4大功能模块 (27)5.4 数字式时钟的Proteus软件仿真 (29)5.5 本章小结 (35)结论 (36)致谢 (37)单片机介绍 (37)附录 (41)1 绪论1.1 课题背景单片机自1976年由Intel公司推出MCS-48开始,迄今已有二十多年了。

基于51单片机的数字钟

基于51单片机的数字钟

1 摘要系统由8051、led数码管、按键、电源等部分组成,能实现时间记录和调整功能。

上电后,系统自动进入时间显示状态。

显示电路中,利用三个两位数码显示管分别显示时间的时、分、秒。

时间调节通过两个按键S1和S2实现,其中S1控制调节时、分,S2用于数值加一得操作,调节结束后,按S1退出进入正常计时状态。

2 设计项目内容与要求设计基于单片机的时钟显示器。

3 硬件电路原理分析3.1 上拉电阻图1 上拉电阻上拉电阻就是将不确定的信号通过一个电阻嵌位在高电平,电阻同时起限流作用,是对器件注入电流。

P0口作为I/O口输出的时候时,输出低电平为0,输出高电平为高组态(并非5V,相当于悬空状态)。

也就是说P0 口不能真正的输出高电平,给所接的负载提供电流,因此必须接上拉电阻(一电阻连接到VCC),由电源通过这个上拉电阻给负载提供电流。

原理图如图1所示。

3.2 控制电路图2 控制电路图2显示为控制电路,具有设置时间的功能,只能调节时和分。

图中S1按键:按一下分显示数码管开始闪动,按两下时显示数码管开始闪动,按三下则恢复正常时钟状态。

S2按键,当时或分显示数码管闪动时,每按一下,时或分数值加一。

3.3显示电路图3为显示电路原理图。

通过3个两位LED数码管组成的显示电路,从上至下分别显示时、分、秒。

4 功能分析4.1显示时间通过3个两位晶体管准确显示时、分、秒。

为了完整清晰地显示时间,需要分别显示时、分、秒,且时的显示范围为0-23,分0-59,秒0-59,即均需要使用两位的晶体管。

所以使用三个两位晶体管,分别显示时、分、秒4.2 设置时间通过按键电路实现对时间的调整和设置。

为了达到能够分别设置时和分的功能,需使用两个按键,其一确定设置的对象,另一个完成设置功能。

如图3所示。

图3 显示电路5 流程图根据功能分析,做系统流程图如图4所示。

图4 流程图6 电路原理图系统电路原理图见附件一。

其中有1个6位共阴极数码管7SEG-MPX6-Cc-RED,AT89C51,2个按键开关BUTTON,6个5K 欧电阻RES,VCC电源,7 仿真图系统仿真仿真图见附件一。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机课程设计报告题目名称:单片机数字时钟学院:信息工程学院专业:电子信息工程姓名:学号:同组人:指导教师:2011年12月05日一、课程设计名称:51单片机电子时钟二、设计方案:1、通过单片机内部的计数/定时器,采用软件编程来实现时钟计数,一般称为软时钟,这种方法的硬件线路简单,系统的功能一般与软件设计相关,通常用在对时间精度要求不高的场合。

2、采用时钟芯片,它的功能强大,功能部件集成在芯片内部,具有自动产生时钟等相关功能,硬件成本相对较高;软件编程简单,通常用在对时钟精度要求较高的场合。

三、设计内容:这里采用应用广泛的AT89C51作为时钟控制芯片,利用单片机内部的定时/计数器T0 实现软时钟的目的。

首先将T0设定工作于定时方式,对机器周期计数形成基准时间(50ms),然后用另一个定时/计数器T1对基准时间计数形成秒,妙计60次形成分,分计60形成小时,小时计到12。

最后通过数码管把它们的内容在相应的位置显示出来,达到时、分、秒计时的功能。

此外还要实现对时间的调整功能,89C52的P1.0、P1.1、P1.2外接三个独立按键,当按下P1.0按键时,系统进入调时间的状态或启动时间显示的功能;当按下P1.1按键时,对显示的数码管进行加一的功能;当按下P1.2按键时,对显示的数码管进行减一的功能,达到调整时间的目的。

四、系统软件程序设计1.主程序先对显示单元和定时器/计数器初始化,然后重复调用数码管显示模块和按键处理模块,当有按键按下时,则转入相应的功能程序。

2、数码管显示模块本实验有8个数码管,从右到左为妙、横线、分、横线、时。

在本系统中数码管显示采用软件译码动态显示。

在存储器中首先建立一张显示信息的字段码表,显示时,先从显示缓冲区中取出显示的信息,然后通过查表程序在字段表中查出所显示的信息的断码,从P0端口输出,同时在P2端口进行数码管显示。

3、定时器/计数器T0中断服务程序T0用于计时,选中方式一,重复定时,定时时间设为50ms,定时时间到则中断,在中断服务程序中用一个计数器对50ms计数,计20次则对秒单元加一。

秒单元加到60则对分单元加一,同时秒单元清0;分单元加到60则对时单元加一,同时分单元清0;时单元加到24则对时单元清0,标志一天时间计满。

在对各单元计数的同时,把他们的值放到存储器单元的指定位置。

流程图如下:4、按键处理模块按键设置为:如果没有按键吗,则时钟正常走时。

当按下K0键时,进入调分状态,时钟停止走动;按K1和K2按键可以进行加一和减一操作;继续按K0键可以分别进行分和小时的调整;最后按K0键启动计时。

5、汇编语言程序ORG 0000HLJMP STARTORG 000BHLJMP INIT0START: MOV R0,#70H ;主程序开始MOV R7,#0CHINIT: MOV @R0,#00HINC R0DJN Z R7,INITMOV 72H,#10 ;对连字符进行装值MOV 75H,#10MOV TMOD,#01H ;选择定时器/计数器T0的方式1MOV TL0,#0B0H ;对低位赋初值MOV TH0,#03CH ;高位赋初值SETB EASETB ET0SETB TR0START1: LCALL SCANLCALL KEYSCANSJMP START1DL1MS: MOV R6,#14H ;延时1子程序DL1: MOV R7,#19HDL2: DJNZ R7,DL2DJNZ R6,DL1RETDL20MS: ACALL SCAN ;延时20ms子程序ACALL SCANACALL SCANRET ;数码管显示程序开始SCAN: MOV A,78HMOV B,#0AHDIV AB ;时间秒的十位送给A,时间秒的个位送BMOV 71H,A ;时间秒要显示的十位MOV 70H,B ;时间秒要显示的个位MOV A,79HMOV B,#0AHDIV AB ;时间分的十位送给A,时间分的个位送BMOV 74H,A ;时间分要显示的十位送地址MOV 73H,B ;时间分要显示的个位送地址MOV A,7AHMOV B,#0AHDIV AB ;时间时的十位送给A,时间时的个位送BMOV 77H,A ;时间时显示的十位送地址MOV 76H,B ;时间时要显示的个位送地址MOV R1,#70HMOV R5,#01HMOV R3,#09HSCAN1: MOV A,R5 ;数码管的显示程序MOV P2,AMOV A,@R1MOV DPTR,#TABMOVC A,@A+DPTR ;对字段表取值显示MOV P0,ALCALL DL1MSINC R1MOV A,R5RL AMOV R5,ADJNZ R3,SCAN1MOV P2,#0FFHMOV P0,#0FFHRET ;"0~9"和"-"的字段表TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH;定时/计数器T0中断程序INIT0: PUSH ACCPUSH PSWCLR ET0CLR TR0MOV TL0,#0B0HMOV TH0,#03CHSETB TR0INC 7BHMOV A,7BHCJNE A,#14H,OUTT0 ;50ms是否到20次,没有到就继续执行50ms的延时MOV 7BH,#00INC 78HMOV A,78HCJNE A,#3CH,OUTT0 ;一秒的延时是否计到60次,没有就继续执行MOV 78H,#00INC 79HMOV A,79HCJNE A,#3CH,OUTT0MOV 79H,#00INC 7AHMOV A,7AHCJNE A,#18H,OUTT0 ;60分钟的延时是否计到24次,没有就继续执行程序MOV 7AH,#00OUTT0:SETB ET0 ;启动定时器T0POP PSWPOP ACCRETI;按键处理程序KEYSCAN:CLR EAJNB P1.0,KEYSCAN0 ;P1.0有按键按下则跳转到子程序JNB P1.1,KEYSCAN1 ;P1.1有按键按下则跳转到子程序JNB P1.2,KEYSCAN2 ;P1.2有按键按下则跳转到子程序KEYOUT: SETB EARETKEYSCAN0:LCALL DL20MS ;20ms的延时消抖JB P1.0,KEYOUTWAIT0: JNB P1.0,WAIT0 ;判断按键是否松手,松手就往下执行程序INC 7CHMOV A,7CHCLR ET0CLR TR0CJNE A,#03H,KEYOUT ;按下第一次和第二次对时、分选定MOV 7CH,#00 ;按下第三次时就启动计时SETB ET0SETB TR0SJMP KEYOUTKEYSCAN1:LCALL DL20MS ;按键加一的程序JB P1.1,KEYOUTWAIT1: JNB P1.1,WAIT1MOV A,7CHCJNE A,#02H,KSCAN11 ;如果功能键按下则对时加一调整INC 79HCJNE A,#3CH,KEYOUT ;如果加到60则清零MOV 79H,#00SJMP KEYOUTKSCAN11:INC 7AH ;如果功能键是按下第二次则对分进行加一调整MOV A,7AHCJNE A,#18H,KEYOUTMOV 7AH,#00SJMP KEYOUTKEYSCAN2:LCALL DL20MS ;延时消抖程序JB P1.2,KEYOUTWAIT2: JNB P1.2,WAIT2 ;判断是否放开按键MOV A,7CHCJNE A,#02H,KSCAN21 ;如果功能键是按下第一次对时进行减一DEC 79HMOV A,79HCJNE A,#0FFH,KEYOUTMOV 79H,#3BHSJMP KEYOUTKSCAN21:DEC 7AH ;如果功能键是按下第二次则对分进行减一CJNE A,#0FFH,KEYOUTMOV 7AH,#17HSJMP KEYOUTEND6、软件编译环境:Keil uVision2确保生成 ". Hex"文件五、系统硬件电路的设计系统的硬件主要包括单片机芯片,数码管显示,按键开关电路,它的硬件电路如下图所示,单片机采用广泛使用的AT89C52,系统时钟采用12MHz的晶振,八个数码管显示,小时与分钟与秒钟间用短横线,采用共阳极七段式数码管,P0口为段选码输出端,P2口为位选码输出端。

硬件电路如图所示:六、芯片介绍AT89C52是51系列单片机的一个型号,它是ATMEL公司生产的。

AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RA M),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准M CS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。

AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。

其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。

兼容MCS51指令系统· 8k可反复擦写(>1000次)Flash ROM · 32个双向I/O口· 256x8bit内部RAM· 3个16位可编程定时/计数器中断·时钟频率0-24MHz· 2个串行中断·可编程UART串行通道· 2个外部中断源·共6个中断源· 2个读写中断口线· 3级加密位·低功耗空闲和掉电模式·软件设置睡眠和唤醒功能AT89C52P为40 脚双列直插封装的8 位通用微处理器,采用工业标准的C5 1内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。

功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号I R的接收解码及与主板CPU通信等。

主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。

RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。

VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端。

相关文档
最新文档