文档库 最新最全的文档下载
当前位置:文档库 › 基于C51单片机的数字时钟课程设计(C语言,带闹钟).

基于C51单片机的数字时钟课程设计(C语言,带闹钟).

单片机技术课程设计

数字电子钟

学院:

班级:

姓名:

学号:

教师:

摘要

电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。所以设计一个简易数字电子钟很有必要。本电子钟采用AT89C52单片机为核心,使用12MHz 晶振与单片机AT89C52 相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。该电子钟设有四个按键KEY1、KEY2、KEY3、KEY4和KEY5键,进行相应的操作就可实现校时、定时、复位功能。具有时间显示、整点报时、校正等功能。走时准确、显示直观、运行稳定等优点。具有极高的推广应用价值。

关键词:

电子钟 AT89C52 硬件设计软件设计

目录

一、数字电子钟设计任务、功能要求说明及方案介绍 (4)

1.1 设计课题设计任务 (4)

1.2 设计课题的功能要求说明 (4)

1.3 设计课的设计总体方案介绍及工作原理说明 (4)

二、设计课题的硬件系统的设计 (5)

2.1硬件系统各模块功能简要介绍 (5)

2.1.1 AT89C52简介 (5)

2.1.2 按键电路 (6)

三、设计课题的软件系统的设计 (6)

3.1 使用单片机资源的情况 (6)

3.2 软件系统个模块功能简要介绍 (7)

3.3 软件系统程序流程框图 (7)

3.4 软件系统程序清单 (7)

四、设计课题的设计结论、仿真结果、误差分析 (9)

4.1 设计结论及使用说明 (9)

4.2 仿真结果 (10)

结束语 (12)

参考文献 (12)

附录 (13)

附录A:程序清单 (13)

一、数字电子钟设计任务、功能要求说明及方案介绍

1.1 设计课题设计任务

设计一个具有特定功能的电子钟。具有时间显示,并有时间设定,时间调整功能。

1.2 设计课题的功能要求说明

设计一个具有特定功能的电子钟。该电子钟上电或按键复位后能自动显示系统提示符“d.1004-22”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从12时59分0秒开始运行,进入时钟运行状态;按电子钟S5键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按S5键再次进入时钟运行状态。

1.3 设计课的设计总体方案介绍及工作原理说明

本电子钟主要由单片机、键盘、显示接口电路和复位电路构成,设计课题的总体方案如图1所示:

图1-1总体设计方案图

本电子钟的所有的软件、参数均存放在AT89C52的Flash ROM和内部RAM 中,减少了芯片的使用数量简化了整体电路也降低了整机的工作电流。键盘采用

动态扫描方式。利用单片机定时器及计数器产生定时效果通过编程形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据,同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。

二、设计课题的硬件系统的设计

2.1硬件系统各模块功能简要介绍

2.1.1 AT89C52简介

(1) 兼容MCS51指令系统;

(2)8kB可反复擦写(大于1000次)Flash ROM;

(3)32个双向I/O口;

(4)256x8bit内部RAM;

(5)3个16位可编程定时/计数器中断;

(6)时钟频率0-24MHz;

(7)2个串行中断,可编程UART串行通道;

(8)2个外部中断源,共8个中断源;

(9)2个读写中断口线,3级加密位;

(10)低功耗空闲和掉电模式,软件设置睡眠和唤醒功能;

(11)有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应不同产品的需求。

它的价格便宜,功能强大,能耗低。很大程度上减少总电路的复杂性,提高了所设计系统的稳定性。其芯片引脚图如图2-1所示。

图2-1 单片机AT89S52引脚图

2.1.2 按键电路

图2—2 按键图

三、设计课题的软件系统的设计

3.1 使用单片机资源的情况

设计课题使用单片机资源的情况如下:

P0口输出数码管段选信号,P2口输出数码管位选信号;晶振12MHz;调整选择键KEY1:P1.0;通过选择键选择调整位,选中位闪烁;增加键KEY2:P1.1;按一次使选中位加1;减少键KEY3:P1.2;按一次使选中位减1;此数字钟可实现基本的走时和显示时间时、分、秒;时间的调整;闹钟的设定和调整;闹钟的开启和关闭功能,具体如下:

(1)实现基本的走时和显示时间的时、分、秒,上电自动显示初始时间12-59-00,且控制闹钟状态的的红色led灯为亮的状态;

(2)当第一次按下第一个弹性按键时进入时间的调节状态,此时实现对显示时间的小时调节,按下第二个按键时实现小时的加一调节,按下第三个按键时实现小时的减一调节;

(3)当第二次按下第一个弹性按键时进入显示时间的分钟调节状态,按下第二个按键时实现分钟的加一调节,按下第三个按键时实现分钟的减一调节;(4)当第三次按下第一个弹性按键时进入闹钟的小时调节状态,按下第二个按键时实现闹钟小时的加一调节,按下第三个按键时实现闹钟小时的减一调节;(5)当第四次按下第一个弹性按键时进入闹钟的分钟调节状态,按下第二个按键时实现闹钟分钟的加一调节,按下第三个按键时实现闹钟分钟的减一调节;(6)当第五次按下第一个弹性按键时返回正常的显示时间走时状态;

(7)当同时按下第二和第三个弹性按键时,关闭闹钟,且此时蓝色led灯为

灭,及定时时间到蜂鸣器并不响,若再次同时按下第二和第三个弹性按键,则开启闹钟,且此时红色led灯为亮,定时时间到蜂鸣器发出滴滴的闹铃声,同时按下第二和第三个弹性按键即可关闭闹铃。闹铃状态默认为开启。

3.2 软件系统个模块功能简要介绍

本设计的软件系统主要采用以下基本模块来实现,主程序、中断服务程序、键盘输入程序模块、数码管及其驱动模块和延时模块。

主程序:主要是用于对输入信号的处理、输出信号的控制和对各个功能程序模块的运用及其控制。

中断服务程序:主要是用于电子钟的准确运行、数据输入过程中的闪烁。

键盘输入程序模块:主要是用于确定按键并得到特定的键码值。

数码管及其驱动模块:主要是用于驱动数码管及利用数码管显示时间。

延时模块:程序中有两种延时子程序,一种是短延时用于判键按下等,一种是长延时。

3.3 软件系统程序流程框图

系统软件采用汇编语言按模块化方式进行设计,然后通过Keil软件开发平台将程序转变成十六进制程序语言,接着使用Proteous 进行仿真,读出显示数据。

3.4 软件系统程序清单

本电子钟实现24小时制,8位数码管显示时分秒,显示式:12-59-00。

通过4只按键来调整时间:

KEY1(P1.0):调整选择键,选中位闪烁;

KEY2(P1.1):增加键,按一次使选中位加1;

KEY3(P1.2):减少键,按一次使选中位减1;

Bear(P3.1):到了整点和闹钟就会响;

Led (P1.2):闪烁;

P0口输出数码管段选信号,P2口输出数码管位选信号;

晶振12MHz。

图3-1主程序流程框图

图3-2显示时钟数组子程序 图3-3中断服务程序程序

四、设计课题的设计结论、仿真结果、误差分析

4.1 设计结论及使用说明 本设计为基于单片机的电子钟的设计。刚开始,我们很多地方理不清头绪,

无从下手,但通过认真研究设计课题,找书上网查资料,确定基本设计方案,对所用芯片功能进行查找、调试,然后画电路图等,积累了很多宝贵的经验。

本设计用2个四位一体的共阳数码管做为显示器,它显示时间值;设计中有三个按键,其中KEY1为启动键,KEY2为加控制键 KEY3为减控制键。

图4—1 结果图

4.2 仿真结果

在Proteus ISIS的Debug菜单中选择Execute,运行程序,系统仿真结果如图所示。

实现功能:

可调整运行的电子钟具有三种工作状态:“d.1004-22”状态、运行状态、调整状态。

图4-2“d.1004-22”上电初始化运行状态仿真结果

图4-3时钟正常运行状态仿真结果

图4-4闹钟定时调整状态仿真结果

图4-5小时调整状态仿真结果

图4-6分钟调整状态仿真结果

结束语

单片机课程设计是一门很实用,很复杂的设计。这个设计用到了单片机,电路等方面的知识,通过这次课程设计,使我对单片机及其附属电路有了一定的了解,对课本上的知识有了近一步的掌握,也深刻明白了自己的不足。

完成本次课程设计的过程,是一个从无到有的过程,经历了兴奋、所悟、完成几个过程。刚做做课程设计时,仔细阅读设计的题目和要求,以为没什么困难的,所用的知识书上都有。可是当我动手开始做的时候,才发现其中的算法,设计是那么繁琐。经过一天的努力,再到图书馆和网上查找资料,在经过借鉴很多类似的资料,文献后,总算是有点眉目了。埋头苦干的过程是痛苦的,在思考算法和程序框架时,迷茫,烦躁,也参考别人的思路,不断循环中,终于最后完善了程序。其中的煎熬是很痛苦的,深刻明白攻克自己“未知领域”的困难。但当课程设计完成时,那感觉是甜蜜的,没有耕耘,哪来得收获的喜悦,就在这样的痛与快乐的交换中,我学到了知识。

通过这短短一周的实践,我感觉到自己从课本上学到的理论知识和实践仍有很大的差距。知道了很多元器件有什么功效,在仿真仪器中是什么代码。有的知识,自己感觉已经掌握得差不多了,但是实际操作起来就有问题出现了。我遇到了不少问题,花费了很多的时间。这让我重新反思我们的学习,深刻领悟到我们这个专业动手,实践的重要性。理论不经过实践考验,是没法实施的,就像我们编的程序,很多方面考虑的都不够,几乎没有涉及到实际应用时的防范方法措施。这次的课程设计,让我学到了很多书本上学不到的东西,学到了实际应用时。最大的收获是:对键盘,显示器,C51语言的应用有了深刻的了解。

参考文献

[1] 百度文库,基于C51单片机的程序设计.

[2] 百度百科,AT89C52简介

附录

附录A 程序清单

#include

#include

#include

#define uint unsigned int

#define uchar unsigned char

sbit KEY1=P1^1; //切换键

sbit KEY2=P1^2; //minute ,hour调整加1定义

sbit KEY3=P1^7; //minute ,hour调整减1定义

sbit bear=P3^1; //闹铃

sbit led=P1^2; //闹钟,整时灯闪烁

code unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,

0x80,0x90,0xbf,0xc8,0x8e,0xff,0x21}; //段码控制char code weikong_code[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

uchar ms[8]={2,2,10,4,0,0,1,14};

uchar StrTab[8];

uchar minute=59,hour=12,second=0; //正常时钟秒,分,时定义uchar minute1=00,hour1=00; second1=00; //闹钟时钟秒,分,时定义uchar flag=0, flag1=0; //切换标志

uchar num=0;

uint count=0; //定时器计数,定时50ms,count满20,秒加1

/***********子函数声明*******************************************/ void xianshishuzu(); //显示数组子程序

void alarm(); //闹钟子程序

/********************** 延时子程序*****************************/ void delay(uint z)

{

uint x,y;

for(x=0;x

for(y=0;y<110;y++);

}

/**********************显示时钟子函数***************************/ void dispaly(uchar w[8])

{

unsigned int i,j,aa;

aa=0xfe; //位选初值1111 1110

for(i=0;i<8;i++) //依次将数组w中八个数取出,并显示

{

P2=aa; //位选

j=w[i]; //取出要显示的数码

P0=tab[j]; //取出段选编码

aa=_crol_(aa,1); //位选信号循环右移

delay(1); //显示延时

P0=0xff; //消影

}

}

/***********************显示时钟数组子程序***********************/

void xianshishuzu()

{

StrTab[1]=second/10; //秒个位

StrTab[0]=second%10; //秒十位

StrTab[2]=10; //间隔符-

StrTab[4]=minute/10; //分个位

StrTab[3]=minute%10; //分十位

StrTab[5]=10; //间隔符-

StrTab[7]=hour/10; //时个位

StrTab[6]=hour%10; //时十位

}

/**********************键盘扫描子程序*************************/

void keycan()

{

if(KEY1==0) //按一次,正常显示,按第二次,时调整,按第三次,分调这整,{

delay(10); //按键1去抖以及动作

if(KEY1==0) //确认按键是否按下

{

flag++; //切换标志

}

while(!KEY1); //释放按键

}

if(flag==1)

{

if(KEY2==0)

{

delay(10);

if(KEY2==0)

{

hour++; //正常时间小时加1

if(hour==24)hour=0;

}

while(!KEY2) //释放按键

{

dispaly(StrTab);

}

}

if(KEY3==0)

{

delay(10);

if(KEY3==0)

{

hour--; //正常时间小时减1

if(hour==0)hour=23;

dispaly(StrTab);

}

while(!KEY3)

{

dispaly(StrTab);

}

}

}

if(flag==2)

{

if(KEY2==0) //按键去抖以及动作{

delay(10);

if(KEY2==0)

{

minute++; //分加1

if(minute==60)minute=0;

}

while(!KEY2)

{

dispaly(StrTab);

}

}

if(flag==3) //秒表的加1 {

if(KEY3==0)

{

delay(10);

if(KEY3==0)

{

second++; //秒加1

if(second==0)second=59;

}

while(!KEY3)

{

dispaly(StrTab);

}

}

}

}

if(flag==3) //闹钟对时{

if(KEY2==0)

{

delay(10);

if(KEY2==0)

{

hour1++;

if(hour1==24)hour1=0; //闹钟时间小时加1 }

while(!KEY2)

{

alarm();

}

}

if(KEY3==0)

{

delay(10);

if(KEY3==0)

{

hour1--;

if(hour1==0)hour1=23; //闹钟时间小时减}

while(!KEY3)

{

alarm();

}

}

}

if(flag==4)

{

if(KEY2==0) //按键去抖以及动作

{

delay(10);

if(KEY2==0)

minute1++;

if(minute1==60)minute1=0; //闹钟分加1

}

while(!KEY2)

{

alarm();

}

}

if(KEY3==0) //按键去抖以及动作

{

delay(10);

if(KEY3==0)

{

minute1--;

if(minute1==0)minute1=59; //闹钟分减1

}

}

while(!KEY3)

{

alarm();

}

}

}

/*******************蜂鸣器子程序****************************/ void beng()

{

bear=1;

P3=0xfd;

delay(100);

bear=0;

P3=0XFf;

delay(100);

}

/*****************整点报警子程序***************************/ void zhengdian (void)

{

uchar i=0;

if((second==0)&(minute==0)) //整点报时

{

for(i=0;i<10;i++)

{

TR0=1; beng();dispaly(ms);

}

}

/********************************定时闹钟*******************************/

void alarm()

{

uint i;

if((hour==hour1&&second1==minute1&&(second>=second1&&second

for(i=0;i<3;i++)

{ beng();}

StrTab[1]=second1/10; //闹钟秒个位

StrTab[0]=second1%10; //秒十位

StrTab[2]=10; //间隔符-

StrTab[4]=minute1/10; //分个位

StrTab[3]=minute1%10; //分十位

StrTab[5]=10; //间隔符-

StrTab[7]=hour1/10; //时个位

StrTab[6]=hour1%10; //时十位

TR0=0;

dispaly(StrTab);

xianshishuzu();

}

/**************************中断子程序*********************************/

void time_() interrupt 1 //中断程序

{

count++;

TH0=(65536-50000)/256; //0.5ms重新送初值

TL0=(65536-50000)%256;

if(count==20) //定时器计数,定时50ms,count满20,秒加1

{

second++; count=0;

if(second==60) //秒值等于60,秒清零,分加1

{

second=0;minute++;

if(minute==60) //分值等于60,分清零,时加1

{

minute=0; hour++;

if(hour==24) //时值等于24,时清零,返回,全部归零

{

hour=0;

}

}

}

xianshishuzu();

}

/***********************数字电子钟主函数***************************/

void main()

{

P1=0XFF;

TMOD = 0x11; //time0为定时器,方式1

TH0=(65536-50000)/256; //预置计数初值,50ms

TL0=(65536-50000)%256;

EA=1; //总中断开

ET0=1; //允许定时器0中断

TR0=1; //开启定时器0

while(1) //主循环

{

if(flag==0)

{

TR0=0; dispaly(ms); //上电初始化就显示bad.1004-22

}

if(P1!=0XFF)

{

keycan(); //按键提前扫描

}

if(flag>0)

{

if(flag==1||flag==2) { TR0=1; dispaly(StrTab); zhengdian ();}

//KEY1按第二次或第二次定时器开始,电子钟和整点报时正常显示if(flag==3||flag==4) { TR0=0;alarm(); }

//按KEY1第三或第四次闹钟开始显示,分时的调整if(flag==5) { dispaly(StrTab); }

//按KEY1第五次返回电子钟正常显示

if(flag==6) { TR0=0; flag=0; dispaly(ms); }

//按KEY1第六次定时器关闭,切换标志请零,显示d.1004-22 }

}

}

基于C51单片机的数字时钟课程设计(C语言带闹钟)

单片机技术课程设计 数字电子钟 学院: 班级: 姓名: 学号: 教师:

摘要 电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。所以设计一个简易数字电子钟很有必要。本电子钟采用AT89C52单片机为核心,使用12MHz 晶振与单片机AT89C52 相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。该电子钟设有四个按键KEY1、KEY2、KEY3、KEY4和KEY5键,进行相应的操作就可实现校时、定时、复位功能。具有时间显示、整点报时、校正等功能。走时准确、显示直观、运行稳定等优点。具有极高的推广应用价值。 关键词: 电子钟 AT89C52 硬件设计软件设计

目录 NO TABLE OF CONTENTS ENTRIES FOUND. 一、数字电子钟设计任务、功能要求说明及方案介绍 1.1 设计课题设计任务 设计一个具有特定功能的电子钟。具有时间显示,并有时间设定,时间调整功能。 1.2 设计课题的功能要求说明 设计一个具有特定功能的电子钟。该电子钟上电或按键复位后能自动显示系统提示符“d.1004-22”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从12时59分0秒开始运行,进入时钟运行状态;按电子钟S5键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按S5键再次进入时钟运行状态。 1.3 设计课的设计总体方案介绍及工作原理说明 本电子钟主要由单片机、键盘、显示接口电路和复位电路构成,设计课题的总体方案如图1所示:

51单片机电子时钟课程设计报告实验报告

《单片机原理与应用》课程设计 总结报告 题目:单片机电子时钟(带秒表)的设计 设计人员:张保江江润洲 学号:********** ********** 班级:自动化1211 指导老师:***

目录 1.题目与主要功能要求 (2) 2.整体设计框图及整机概述 (3) 3.各硬件单元电路的设计、参数分析及原理说明 (3) 4.软件流程图和流程说明 (4) 5.总结设计及调试的体会 (10) 附录 1.图一:系统电路原理图 (11) 2.图二:系统电路PCB (12) 3.表一:元器件清单 (13) 4.时钟程序源码 (14)

题目:单片机电子时钟的设计与实现 课程设计的目的和意义 课程设计的目的与意义在于让我们将理论与实践相结合。培养我们综合运用电子课程中的理论知识解决实际性问题的能力。让我们对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立完成某些单片机应用系统的开发和设计打下一个坚实的基础。 课程设计的基本任务 利用89C51单片机最小系统,综合应用单片机定时器、中断、数码显示、键盘输入等知识,设计一款单片机和简单外设控制的电子时钟。 主要功能要求 最基本要求 1)使用MCS-51单片机设计一个时钟。要求具有6位LED显示、3个按键输入。 2)完成硬件实物制作或使用Pruteus仿真(注意位驱动应能提供足够的电流)。3)6位LED数码管从左到右分别显示时、分、秒(各占用2位),采用24小时标准计时制。开始计时时为000000,到235959后又变成000000。 4)使用3个键分别作为小时、分、秒的调校键。每按一次键,对应的显示值便加1。分、秒加到59后再按键即变为00;小时加到23后再按键即变为00。在调校时均不向上一单位进位(例如分加到59后变为00,但小时不发生改变)。 5) 软件设计必须使用MCS-51片内定时器,采用定时中断结构,不得使用软件延时法,也不得使用其他时钟芯片。 6)设计八段数码管显示电路并编写驱动程序,输入并调试拆字程序和数码显示程序。 7)掌握硬件和软件联合调试的方法。 8)完成系统硬件电路的设计和制作。 9)完成系统程序的设计。 10)完成整个系统的设计、调试和制作。 11)完成课程设计报告。 基本要求 1)实现最基本要求的1~10部分。 2)键盘输入可以控制电子时钟的走时/调试。 3)设计键盘输入电路和程序并调试。 4)掌握键盘和显示配合使用的方法和技巧。 提高发挥部分 1)另设三个键,分别作小时、分、秒的减1调校。

51单片机电子时钟设计

51单片机电子时钟设计 电子时钟是一种非常实用的电子设备,它可以准确地显示时间,并拥 有一系列的功能,如闹钟、日历等。使用51单片机设计电子时钟,可以 实现这些功能,同时还能够进行功能扩展,更好地满足用户需求。 首先,我们需要硬件上的准备工作。51单片机需要与时钟(晶振) 和显示器(LCD模块)进行连接。晶振是提供单片机时钟脉冲的源头, LCD模块用于显示时间和各种功能。同时,在电路中还需要进行一些扩展,如实时时钟模块(RTC模块)、按键模块等。 在软件设计方面,主要需要考虑以下几个方面: 1.时钟脉冲:通过配置晶振的频率,可以生成单片机所需的时钟脉冲。这个脉冲控制了单片机的运行速度,从而影响到时钟的准确性。需要根据 晶振频率进行相关配置。 2.时间的获取和计算:通过RTC模块可以获取当前的时钟数据(包括年、月、日、时、分、秒)。在程序中,需要通过相应的接口获取这些数据,并进行计算。比如,在显示时钟的时候,可以通过获取秒数、分钟数 和小时数,并将其转换为相应的字符串进行显示。 3.菜单和按键功能:为了实现更多的功能,我们可以通过按键来实现 菜单切换和功能选择。在程序中,需要对按键进行扫描,判断按键的状态,然后进行相应的操作。比如,按下菜单键可以进入菜单界面,通过上下键 选择不同的功能,再通过确定键进行确认。 4.闹钟功能:闹钟功能是电子时钟中常见的功能之一、通过设置闹钟 时间,并进行闹钟的开启或关闭,可以在指定的时间点触发相应的报警动

作。在程序中,需要编写逻辑判断闹钟是否到达指定的时间,然后触发报警。 5.日历功能:除了显示时间,电子时钟还可以显示当前的日期,包括年、月、日。在程序中,需要编写相关的逻辑来获取日期数据,并进行显示。 通过以上的步骤,我们可以基本实现一个简单的电子时钟功能。当然,根据用户的需求,还可以进行更多的功能扩展,比如添加温湿度监测、自 动调光等功能。 总结起来,51单片机电子时钟的设计主要包括硬件和软件两个方面。在硬件上,需要连接晶振和LCD模块,并对其他扩展模块进行连接。在软 件上,需要编写相应的程序,包括时钟脉冲、时间的获取和计算、菜单和 按键功能、闹钟功能以及日历功能等。这样就可以实现一个功能完善的电 子时钟。

51单片机电子时钟课程设计

一、设计要求 1、准确计时,以数字形式显示时、分、秒地时间. 2、小时以24小时计时形式,分秒计时为60进位. 3、校正时间功能,即能随意设定走时时间. 4、闹钟功能,一旦走时到该时间,能以声或光地形式告警提示. 5、设计5V直流电源,系统时钟电路、复位电路. 6、能指示秒节奏,即秒提示. 7、可采用交直流供电电源,且能自动切换. 二、设计方案和论证 本次设计时钟电路,使用了ATC89C51单片机芯片控制电路,单片机控制电路简单且省去了很多复杂地线路,使得电路简明易懂,使用键盘键上地按键来调整时钟地时、分、秒,用一扬声器来进行定时提醒,同时使用汇编语言程序来控制整个时钟显示,使得编程变得更容易,这样通过四个模块:键盘、芯片、扬声器、LED显示即可满足设计要求. 2.1、总设计原理框图 如下图所示: 2.2、设计方案地选择 1.计时方案 方案1:采用实时时钟芯片 现在市场上有很多实时时钟集成电路,如DS1287、DS12887、DS1302等.这些实时时钟芯片具备年、月、日、时、分、秒计时功能和多点定时功能,计时数据地更新

每秒自动进行一次,不需要程序干预.因此,在工业实时测控系统中多采用这一类专用芯片来实现实时时钟功能. 方案2:使用单片机内部地可编程定时器. 利用单片机内部地定时计数器进行中端定时,配合软件延时实现时、分、秒地计时.该方案节省硬件成本,但程序设计较为复杂. 2.显示方案 对于实时时钟而言,显示显然是另一个重要地环节.通常LED显示有两种方式:动态显示和静态显示. 静态显示地优点是程序简单、显示亮度有保证、单片机CPU地开销小,节约CPU地工作时间.但占有I/O口线多,每一个LED都要占有一个I/O口,硬件开销大,电路复杂.需要几个LED就必须占有几个并行口,比较适用于LED数量较少地场合.当然当LED数量较多地时候,可以使用单片机地串行口通过移位寄存器地方式加以解决,但程序编写比较麻烦. LED动态显示硬件连接简单,但动态扫描地显示方式需要占有CPU较多地时间,在单片机没有太多实时测控任务地情况下可以采用. 本系统需要采用6位LED数码管来分别显示时、分、秒,因数码管个数较多,故本系统选择动态显示方式. 2.3硬件部分 1、STC89C51单片机介绍 STC89C51单片机是由深圳宏晶公司代理销售地一款MCU,是由美国设计生产地一种低电压、高性能CMOS 8位单片机,片内含8kbytes地可反复写地FlashROM和128bytes地RAM,2个16位定时计数器[5]. STC89C51单片机内部主要包括累加器ACC(有时也简称为A)、程序状态字PSW、地址指示器DPTR、只读存储器ROM、随机存取存储器RAM、寄存器、并行I/O接口P0~P3、定时器/计数器、串行I/O接口以及定时控制逻辑电路等.这些部件通过内部总线联接起来,构成一个完整地微型计算机.其管脚图如图所示.

51单片机数字钟设计程序

51单片机数字钟设计程序 51单片机是一种常用的单片机芯片,它具有体积小、功耗低、性能稳定等特点,被广泛应用于各种电子设备中。本文将以51单片机数字钟设计程序为主题,介绍如何使用51单片机设计并实现一个简单的数字钟。 我们需要了解一下数字钟的基本原理。数字钟主要由时钟芯片、数码管、按键等组成。时钟芯片负责计时和控制,数码管用于显示时间,按键则用于设置和调整时间。 在设计数字钟的程序时,我们需要考虑以下几个方面: 1. 时钟设置:首先,我们需要设置时钟芯片的工作模式。一般来说,时钟芯片有两种工作模式,分别是24小时制和12小时制。我们可以通过按键来选择工作模式,并将选择结果保存到相应的寄存器中。 2. 时间显示:接下来,我们需要将时钟芯片中的时间数据通过数码管显示出来。数码管通常由7段LED组成,每段LED对应一个数字或字符。我们可以通过控制数码管的引脚状态来实现不同数字的显示。同时,为了使时间显示更加清晰,我们可以在数码管之间加入冒号等分隔符。 3. 时间调整:为了保证时间的准确性,我们需要提供时间调整的功能。可以通过按键来实现时间的增加和减少,从而调整时钟芯片中的时间数据。当按键按下时,我们可以检测到相应的信号,并将其

转换为时间调整的命令。 4. 闹钟功能:除了显示时间,数字钟还可以具备闹钟功能。我们可以设置一个闹钟时间,并在达到闹钟时间时触发相应的报警信号。一般来说,闹钟功能可以通过按键设置,并将设置结果保存在相应的寄存器中。当时钟芯片中的时间与闹钟时间一致时,我们可以通过控制蜂鸣器等外设来发出报警信号。 通过以上的设计,我们可以实现一个简单的数字钟。当然,如果我们希望数字钟具备更多的功能,比如温湿度显示、定时器等,我们还可以在程序中添加相应的代码来实现。 总结一下,本文以51单片机数字钟设计程序为主题,介绍了数字钟的基本原理以及设计过程。通过对时钟芯片、数码管、按键等的控制,我们可以实现时间的显示、调整和闹钟功能。希望本文对读者理解数字钟的设计有所帮助,同时也能够激发读者对单片机程序设计的兴趣。

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

基于51单片机电子时钟设计 51单片机是一种非常常见的单片机,被广泛应用于各种电子设备中。在本文中,我将基于51单片机设计一个电子时钟。 首先,我们需要收集各种元器件,包括51单片机、数码管显示模块、电容、电阻、晶体振荡器等。接下来,我们将进行硬件连接。 首先,将数码管显示模块连接到单片机的相应引脚上。数码管显示模 块通常由多个七段数码管组成,每个七段数码管有共阴极和共阳极两种类型,根据具体的数码管型号选择适当的连接方式。 接下来,连接晶体振荡器到单片机上。晶体振荡器通常用于提供时钟 信号,给单片机提供准确的时钟频率。选择适当的晶体振荡器频率,将其 连接到单片机的相应引脚上。 同时,还需要连接其他的元件,如电容和电阻。电容用于稳定电压, 在电路中通常用作滤波器。选择合适的电容,将其连接到电源引脚上。电 阻用于限制电流和调整电压,根据需要选择合适的电阻值,并将其连接到 相应的引脚上。 接下来,我们将进行软件编程。 首先,我们需要在编程环境中选择适当的编程语言,比如C语言。然后,我们需要编写代码来实现时钟的各种功能。 首先,我们需要初始化单片机的引脚。这可以通过设置相应的寄存器 来实现,以确保单片机正常工作。 接下来,我们需要编写代码来实现时钟的显示功能。我们可以使用循 环来不断刷新数码管显示,以确保显示的时钟数值实时更新。可以通过读

取单片机内部的计时器或使用外部的定时模块来获取当前的时间,并将其转换为数码管可以显示的格式。 除了显示功能之外,还可以添加其他功能,比如闹钟、定时器等。闹钟功能可以通过检测当前时间和设置的闹钟时间来触发相应的提醒。定时器功能可以用来设置特定的时间间隔,并在到达设定时间时触发相应的操作。 总结起来,基于51单片机设计一个电子时钟需要进行硬件连接和软件编程。通过合理的硬件连接和编写精确的代码,我们可以实现一个功能齐全的电子时钟,满足各种需求。

基于C51的电子钟设计

基于AT89C51单片机的电子钟设计 1 系统电路设计 1.1 系统总体设计思路 此设计原理框图如下所示,电路包括四个局部:单片机,键盘,锁存及显示电路,掉电保护电路。 图1.1 单片机实现数码管显示电子钟总框图 对于各局部: (1)单片机发送的信号经过锁存电路最终在数码管上显示出来。 (2)单片机通过输出各种电脉冲信号来驱动控制各局部正常工作。 (3)掉电保护电路保证系统掉电时时钟不会停顿。 (4)为使时钟走时与标准时间一致,校时电路是必不可少的,键盘用来校正数码管上显示的时间。 1.2 工作原理 设计的电路主要由四大模块构成:掉电保护电路,单片机控制电路,显示电路以及校正电路。 本设计采用C语言程序设计,使单片机控制数码管显示年、月、日、时、分、秒,当秒计数计满60时就向分进位,分计数器计满60后向时计数器进位,小时计数器按“23翻0〞规律计数。时、分、秒的计数结果经过数据处理可直接送显示器显示。当计时发生误差的时候可以用校时电路进展校正。时计数器计满24小时后自动向日计数器进一,日计数器需判断平年、闰年和大月、小月,当日计数器计满时,向月计数器进位,月计数器计满12月向年计数器进位。设计采用的是年、月、日、时、分、秒显示,单片机对数据进展处理同时在数码管上显示。 2 单元电路设计 2.1 单片机电路设计 本设计采用AT89C52单片机进展设计,它是一种低功耗,高性能的CMOS8位微处理器,内部有8K字节的程序存储器和256字节的数据存储单元,32个I/O 端口,3个16位定时/计数器,8个中断源。 时钟电路是单片机系统的心脏,它控制着单片机的工作节奏。本设计采用内部时钟方式,12MHz的石英晶体振荡器。电路图如下

51单片机电子时钟(C语言)

#include #include #define uchar unsigned char //宏定义 #define uint unsigned int uchar sec,min,hour,sec50,jishu,dtp2; //sec、min、hour、为显示单元,sec50为60秒计数单元,jishu为扫描数码管计数单元 uchar sec1,min1,hour1; //时间中介单元 uchar nzmin,nzhour,nzjishu=0,dispjishu=0; //闹钟分、时定义 uchar data nzbit=0; //闹钟标志位,闹钟默认为开启 uchar data dispbit=0; //显示标志位,默认显示当前时间 uchar data disp[8]; //秒、分、时个位与十位存放数组及‘—’ uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //数字0-9 sbit KEYmin=P3^2; //分加1按钮 sbit KEYhour=P3^3; //时加1按钮 sbit LABA=P1^0; //闹钟输出I/O口

sbit NZdisplay=P3^4; //闹钟显示按钮,按住不放显示闹钟时间,放开则显示当前时间sbit KEYnzmin=P3^5; //闹钟分加1按钮 sbit KEYnzhour=P3^6; //闹钟时加1按钮 sbit KEYoff=P3^7; //关闭闹钟按钮,按第一次为关闭,第二次为开启 void display(); //显示函数声明 void keyscan(); //按键扫描函数声明 void naozhong(); //闹钟判别函数声明 void keynz(); //闹钟按键函数声明 void main() { sec=0; //时间初始化为00—00—00 min=0; hour=0; sec1=0; //显示单元初始化为00—00—00 min1=0; hour1=0; nzmin=01; //闹钟初始时间为01:01 nzhour=01; jishu=0; dtp2=0xfe; P0=0xff; TMOD=0x11; //设T0、T1为模式1 IE=0x8a; TH0=0xb8; //T0定时20ms TL0=0x0; TH1=0xfc; //T1定时1ms TL1=0x66; TR0=1; TR1=1; while(1) { display(); //调用显示子程序 keyscan(); //调用按键子程序 keynz(); //调用闹钟按键子程序 } } void t0int() interrupt 1 //T0定时中断程序 { TH0=0xb8; TL0=0x0; sec50++; if(sec50==50) //对20ms计数50次即1s { sec50=0; //清秒计数器,为下次做准备

51单片机时钟代码(带秒表闹钟功能)

51单片机时钟代码(带秒表闹钟功能)#include #include #defineucharunignedchar#defineuintunignedint bitbeep=P1^5;//蜂鸣器bitLED1=P1"6;//LED灯bitep=P2"7;//1602使能端bitr=P2八6;//1602bitrw=P2八5;//1602 bit0二P3八4;//停止闹铃和小灯bit1二P3八5;//功能键bit2二P3飞;//增 大键bit3二P3X;//减小键bit4二P3「;//bit5=P3^2;bit6二P3八3; bit7=P3^0; uchar1num,4num,count,count1,judge=0; charec,min,hour,miao,fen,hi,ec1,min1,diwei;voiddelay(uintz){ uint某,y; for(某二z;某〉0;某--)for(y=100;y〉0;y—);}voiddi(){ beep=0;delay(50);beep=1; } bitlcd_bz()//测试LCD忙碌状态{ bitreult; r=0;rw=1;ep=1;_nop_();_nop_();_nop_();_nop_(); reult=(bit)(P0&0某80);ep=0;

returnreult; } _nop_();_nop_(); _nop_();ep=1;_nop_();_nop_();_nop_();_nop_();ep=0; } voidwrite_data(uchardat)//写入字符显示数据到LCD{ while(lcd_bz());//等待LCD空闲 r=1;rw=0;ep=0;P0=dat;_nop_();_nop_();_nop_();_nop_();ep=1;_nop_( );_nop_(); _nop_();_nop_(); ep=0; } ucharhi,ge; hi=dat/10;ge=dat; write_data(0某30+hi); write_data(0某30+ge);} voidwrite_alarm(ucharadd,uchardat){ ucharhi1,ge1;hi1=dat/10; ge1=dat;

【单片机】c51数字时钟(带年月日显示)

【单片机】c51数字时钟(带年月日显示)显示当前时间:9点58分34秒(第一个零表示闹钟未开启)

当前日期:10年4月六日 摘要:本设计以单片机为核心,LED数码管动态扫描显示。采用矩阵式键盘输入能任意修改当前时间日期和设定闹钟时间。具有显示年月日(区分闰年和二月),闹钟报警和整点报时功能 说明 系统的功能选择由7个按键完成。 其中P3.0,P3.1分别对应调整当前时间的时和分, P3.2为外部中断0,控制闹钟功能的开启/关闭(开启时数码管第一位显示字母’c’)

P3.3用作外部中断1,当前时间的显示与闹铃时间显示切换,闹钟显示时按 P3.0,P3.1可进行闹钟时分的设定,此时,led1灯灭。闹铃时间到切闹钟开关开启时,闹铃响一分钟。 P3.5\P3.6\P3.7对年月日进行调整(第一次按P3.5,就进入了年月日的显示,现在就可对日期进行调整)。按P3.1回到当前时间的显示状态。 整点到时:报警对应小时的次数。 程序如下: #include #include #include #define uchar unsigned char #define uint unsigned int uchar data keyvalue; //查到的键值 uchar data keys; //转换出的数字 uchar dis[8]; uchar code seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,0x40,0x00,0x 39,0xf7}; // 0 1 2 3 4 5 6 7 8 9 - 灭灯 c n sbit led_duan=P2^6; //段选通 sbit led_wei=P2^7; //位选通 sbit speaker=P2^3; //蜂鸣器 sbit minitek=P3^0; //分校正按键 sbit hourk=P3^1; //小时校正按键 sbit p3_4=P3^4; // sbit yeark=P3^5; //年 sbit monthk=P3^6; //月 sbit dayk=P3^7; //日 uchar data wei,i; bit leap_year; //闰年标志位 bit dis_nyr; bit cal_year=1; bit calculate=1; //显示年月日与当前时间切换标志 uchar data c_min; //闹钟‘分寄存单元 uchar data c_hou; //闹钟、小时寄存单元

基于51单片机的简易电子钟设计

基于51单片机的简易电子钟设计 一、设计目的 现代社会对于时间的要求越来越精确,电子钟成为家庭和办公场所不 可缺少的设备之一、本设计基于51单片机,旨在实现一个简易的电子钟,可以显示当前的时间,并且能够通过按键进行时间的调整和设置闹钟。 二、设计原理 本设计主要涉及到51单片机的IO口、定时器、中断、LCD显示技术 等方面知识。 1.时钟模块 时钟模块采用定时器0的中断进行时间的累加和更新。以1秒为一个 时间单位,每当定时器0中断发生,就将时间加1,并判断是否需要更新 小时、分钟和秒的显示。同时,根据用户按键的操作,可以调整时间的设定。 2.显示模块 显示模块采用16x2字符LCD显示屏,通过51单片机的IO口与LCD 连接。可以显示当前时间和设置的闹钟时间。初次上电或者重置后,LCD 显示时间为00:00:00,通过定时器中断和键盘操作,实现时间的更新和 设定闹钟功能。 3.键盘模块 键盘模块采用矩阵键盘连接到51单片机的IO口上,用于用户进行时 间的调整和设置闹钟。通过查询键盘的按键状态,根据按键的不同操作, 实现时间的调整和闹钟设定功能。

4.中断模块 中断模块采用定时器0的中断,用于1秒的定时更新时间。同时可以添加外部中断用于响应用户按键操作。 三、主要功能和实现步骤 1.系统初始化。 2.设置定时器,每1秒产生一次中断。 3.初始化LCD显示屏,显示初始时间00:00:00。 4.查询键盘状态,判断是否有按键按下。 5.如果按键被按下,根据不同按键的功能进行相应的操作: -功能键:设置、调整、确认。 -数字键:根据键入的数字进行时间的调整和闹钟设定。 6.根据定时器的中断,更新时间的显示。 7.判断当前时间是否与闹钟设定时间相同,如果相同,则触发闹钟,进行提示。 8.循环执行步骤4-7,实现连续的时间显示和按键操作。 四、系统总结和改进 使用51单片机设计的简易电子钟可以显示当前时间,并且实现时间的调整和闹钟设定功能。但是由于硬件资源有限,只能实现基本的功能,不能进行其他高级功能的扩展,例如闹铃的音乐播放、温度、湿度的显示

51单片机电子时钟课程设计报告

第一部分设计任务和要求 1.1单片机课程设计内容 (2) 1.2单片机课程设计要求 (2) 1.3系统运行流程 (2) 第二部分设计方案 2.1总体设计方案说明 (2) 2.2系统方框图 (3) 2.3系统流程图 (3) 第三部分主要器材及基本简介 3.1主要器材 (4) 3.2主要器材简介 (4) 第四部分系统硬件设计 4.1最小系统 (6) 4.2LCD显示电路 (6) 4.3键盘输入电路 (7) 4.4蜂鸣器和LED灯电路 (7) 第五部分仿真电路图与仿真结果 (8) 第六部分课程设计总结 (8)

第七部分参考文献 (9) 附录A 实物图 附录B 系统源程序 第一部分设计任务和要求 1.1单片机课程设计内容 利用STC89C51单片机和LCD1602电子显示屏实现电子时钟,可由按键进行调时和12/24小时切换。 1.2单片机课程设计要求 1.能实现年、月、日、星期、时、分、秒的显示; 2.能实现调时功能; 3.能实现12/24小时制切换; 4.能实现8 : 00—22 : 00整点报时功能。 1.3系统运行流程 程序首先进行初始化,在主程序的循环程序中首先调用数据处理程序,然后调用显示程序,在判断是否有按键按下。若有按键按下则转到相应的功能程序执行,没有按键按下则调用时间程序。若没到则循环执行。计时中断服务程序完成秒的计时及向分钟、小时的进位和星期、年、月、日的进位。调时闪烁中断服务程序用于被调单元的闪烁显示。调时程序用于调整分钟、小时、星期、日、月、年,主要由主函

数组成通过对相关子程序的调用,如图所示。实现了对时间的设置和修改、LCD显示数值等主要功能。相关的调整是靠对功能键的判断来实现的。

c51课程设计报告电子钟

基于单片机的电子钟的设计 学院: 班级: 姓名:学号: 小组成员: 姓名:学号: 指导教师: 第一章绪论 1.1数字电子钟的背景 20世纪末,电子技术获得了飞速的开展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的开展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。时间对人们来说总是则珍贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。 目前,单片机正朝着高性能和多品种方向开展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面开展。下面是单片机的主要开展趋势。单片机应用的重要意义还在于,它从根本上改变

了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大局部功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。 单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。 1.2数字电子钟的意义 数字钟是采用数字电路实现对.时,分,秒.数字显示的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的开展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时播送、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为根底的。因此,研究数字钟及扩大其应用,有着非常现实的意义。 1.3数字电子钟的应用 数字钟已成为人们日常生活中:必不可少的必需品,广泛用于个人家庭以及车站、码头、剧场、办公室等公共场所,给人们的生活、学习、工作、娱乐带来

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

单片微型计算机课程设计报告多功能电子数字钟姓名 学号 班级 指导教师许伟敏4 电气二班 林卫2009-06-25

目录 一:概述 (1) 二:设计基本原理简介 (2) 三:设计要求及说明 (3) 四:整体设计方案 (4) 系统硬件电路设计4 系统软件总流程设计模块划分及分析5 6 五:单模块流程设计 (8) 各模块设计概述、流程图模块源程序集合及注释8 13 六:单模块软件测试 (23) 七:系统检测调试 (24) 硬件电路调试 软件部分烧写调试 八:系统优化及拓展 (26) 九:心得体会 (28)

单片微型计算机课程设计 一、概述 基于汇编语言的电子数字钟 概述 课程设计题目:电子数字钟 使用知识简介: ● 51 单片机 单片机又称单片微控制器,它不是完成某一个逻辑功能 的芯片,而是把一个计算机系统集成到一个芯片上。作为嵌 入式系统控制核心的单片机具有其体积小、功能全、性价比 高等诸多优点。51 系列单片机是国内目前使用最广泛的单 片机之一,随着嵌入式系统、片上系统等概念的提出和普遍 接受及使用,51 系列单片机的发展又进入了一个新的阶段。 在今后很长一段时间内 51 系列单片机仍将占据嵌入式系统 产品的中低端市场。 ● 汇编语言 汇编语言是一种面向机器的计算机低级编程语言,通常 是为特定的计算机或系列计算机专门设计的。汇编语言保持 了机器语言的优点,具有直接和简捷的特点,其代码具有效 率高实时性强等优点。但是对于复杂的运算或大型程序,用 汇编语言编写将非常耗时。汇编语言可以和高级语言配合使 用,使用十分广泛。 ● ISP ISP ( In-System Programming )在系统可编程, 是当今流行的单片机编程模式,指电路板上的空白元器 件可以编程写入最终用户代码,而不需要从电路板上取 下元器件。已经编程的器件也可以用 ISP 方式擦除或再 编程。本次课程设计便使用 ISP 方式,直接将编写好的 程序下载到连接好的单片机中进行调试。 选题 系统功能分析 硬件电路设计 整体流程设计 及模块划分 模块流程设计 模块编 码测试 下载调试(含硬 件电路调试及软件烧写调试)完成总结报告 课程设计流程图 ↑ 选题目的及设计思想简介: 课程设计是一次难得的对所学的知识进行实践的机会,我希望通过课程设计独立设计一个简 单的系统从而达到强化课本知识并灵活运用的目的。电子数字钟是日常生活钟随处可见的简单系 统。对电子数字钟的设计比较容易联系实际并进行拓展, 在设计中我将力求尽可能跳出课本的样 板,从现实生活中寻找设计原型和设计思路,争取有所突破。 如图所示便是我本次课程设计流程图,设计的整个过程运用自顶向下分析、自底向上实现的 办法进行设计,借鉴在软件工程中学习到的软件设计流程和规范来完成系统设计并在设计过程中 体会软件设计的流程。 06 电气工程及其自动化 2 班 许伟敏 24 1

单片机数字时钟带闹钟

单片机数字时钟带闹钟 Edited on July 1, 2023 at 11am

计算机硬件综合课程 设计报告 课目: 学院: 班级: 姓名: 指导教师: 目录 1.1 功能需求 1.2 设计要求 2.1 总体描述 2.2 系统总体框图 2.3 Proteus仿真电路图 3 软件设计流程及描述 3.1 程序流程图 3.2 函数模块及功能 4 心得体会 附:源程序

1 1.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 程序流程图

基于c51功能最全的电子钟程序(lcd1602)

功能最全的电子钟 【单片机】c51数字时钟(带年月日显示) 摘要:本设计以单片机为核心,lcd1602显示。采用独立键盘输入能任意修改当前时间日期和设定闹钟时间。具有显示年月日(区分闰年和二月),闹钟报警和整点报时功能 主程序: /****************************************************************************** ******************** ******************************************************************************* ******************** ********************** lcd1602电子钟*************************************************** ******************************************************************************* ******************** ******************************************************************************* ********************/ # include # include "lcd16024.h" sbit key1 = P2^0; //调整 sbit key2 = P2^1; //加1 sbit key3 = P2^2; //减1

51单片机课程设计--闹钟程序设计

沈阳航空航天大学 课程设计报告 课程设计名称:微机系统综合课程设计 课程设计题目:闹钟程序设计 院(系):计算机学院 专业: 计算机科学与技术 班级: 学号: 姓名: 指导教师: 说明:结论(优秀、良好、中等、及格、不及格)作为相关教环节考核必要依据;格式不符合要求;数据不实,不予通过。报告和电子数据必须作为实验现象重复的关键依据。

学术诚信声明 本人声明:所呈交的报告(含电子版及数据文件)是我个人在导师指导下独立进行设计工作及取得的研究结果。尽我所知,除了文中特别加以标注或致谢中所罗列的内容以外,报告中不包含其他人己经发表或撰写过的研究结果,也不包含其它教育机构使用过的材料。与我一同工作的同学对本研究所做的任何贡献均己在报告中做了明确的说明并表示了谢意。报告资料及实验数据若有不实之处,本人愿意接受本教学环节“不及格”和“重修或重做”的评分结论并承担相关一切后果。 本人签名: 日期:年月日

沈阳航空航天大学课程设计任务书

目录 学术诚信声明 ................................................................................................................... I 1 总体设计方案 (1) 1.1课程设计的内容和要求 (1) 1.2课程设计原理 (1) 1.3课程设计思路 (1) 2 详细设计方案 (2) 2.1实现方法 (2) 2.2模块设计 (2) 2.2.1 主程序流程图 (2) 2.2.2中断程序流程图 (3) 2.2.2.1基本显示模块设计 (3) 2.2.2.2时间设定模块设计 (3) 2.2.2.3闹铃功能的实现 (4) 3 调试及结果分析 (5) 3.1调试步骤及方法 (5) 3.2实验结果 (5) 参考文献 (6) 附录(源程序) (7)

定时闹钟_C51单片机课程设计

题目:定时闹钟 目录 一、概述 (1) 1.1设计目的及意义 (1) 1.2设计任务 (1) 1.3设计系统的主要功能 (1) 二、系统总体方案及硬件设计 (1) 2.1系统总体方案 (1) 2.2系统设计总框图 (2) 2.3硬件设计 (2) 2.3.1单片机最小系统设计 (2) 2.3.2报警模块设计 (6) 2.3.3显示模块设计 (7) 2.3.4调时模块设计 (9) 三、软件设计 (10) 3.1主程序流程图 (10) 3.2定时中断子程序流程图 (11) 3.3程序设计 (11) 四、系统的仿真与调试 (14) 4.1 proteus软件仿真 (12) 4.2系统的调试 (13) 五、设计总结与体会 (15) 参考文献 (15)

附录1:源程序代码 (17) 附录2:系统原理图 (24)

一、概述 1.1设计目的及意义 学习和巩固单片机技术、电子技术、传感器技术及智能仪器等知识,使对已学过的基础知识能有更深入的理解,并融会贯通。学会独立思考、独立工作,培养一定的自学能力和独立分析问题能力,以及增强系统地运用已学理论知识去解决实际问题的能力,同时培养成良好的科学态度和严谨的设计习惯。 1.2设计任务 完成所选题目的分析与设计,达到技术性能要求。提交正式课程设计总结报告一份。 本文设计的定时闹钟的核心模块采用AT89C51芯片,时、分、秒用6位LED数码管显示。在电路中通过四个按键S1、S2、S3和S4来进行定时、调时和复位,定时时间到通过蜂鸣器发出报警声。 1.3设计系统的主要功能 (1) 能显示时时-分分-秒秒。 (2) 能够设置定时时间、修改定时时间。 (3) 定时时间到能发出报警声。 二、系统总体方案及硬件设计 2.1系统总体方案 (1) 由于LED显示器相对于其它显示器(如LCD显示器)来说其价格要便宜许多,而且亮度更高,耐温范围较广,所以采用6位数码管来显示“时时-分分-秒秒”。 (2) 时间的定时用单片机内部时钟电路,在一定的时间内能使其误差较小,如经过一年其误差才仅有数秒。修改时间和定时用手动按键控制,报警声通过蜂鸣器发出。这样可以使得硬件电路设计较为简单,且软件设计也易于实现,并能够降低成本。

相关文档
相关文档 最新文档