c语言实现电子时钟_课程设计

c语言实现电子时钟_课程设计

题目: c语言实现电子时钟

1

课程设计的任务和具体要求

1( 掌握利用c语言相关函数开发电子时钟的基本原理,为进一步开发高质量的程序打

下坚实的基础。提高运用c语言解决实际问题的能力。

2( 了解计算机图形学的相关算法。

3( 了解计算机图形学的相关函数的使用。

指导教师签字: 日期: 指导教师评语

成绩: 指导教师签字: 日期:

2

课程设计所需软件、硬件等

Windows xp win-TC

课程设计进度计划

起至日期工作内容备注 2010年12月1日-2010收集资料

年12月20日

2010年12月20日-2010编写程序

年12月26日

参考文献、资料索引

序号文献、资料名称编著者出版单位

a. 姜灵芝等.c语言课程设计案例精编.北京:清华大学出版社.2008

b. 胡景春等。大学生计算机课程实践优秀作品选编.南京:东南大学出版社.2010

3

摘要:

我们日常生活中有各种各样的时钟,随着计算机的普及和计算机科学的飞速发展,人们开始越来越多的利用计算机解决实际问题。开发一个易于查看的时钟有较大的现实意义。该时钟只实现简单的界面,程序与生活紧密结合,体直观开发简单。利用c语言编辑源程序,再进行编译连接生成可执行文件,运行时可看见漂亮的外观。

一 .设计课题:电子时钟课程设计

二.设计目的:

本程序中涉及时间结构体,数组、绘图等方面的知识,通过本程序的训练,使我们有一个更深刻的了解,掌握利用c语言相关函数开发电子时钟的基本原理,为进一步开发高质量的程序打下坚实的基础。提高运用c语言解决实际问题的能力。

三.设计内容:

(1) 欢迎界面,以一个笑脸开始

(2)主界面,包括数字时钟和电子时钟和按键提示。

(3)设计者介绍和功能提示。

四.总体设计:

电子时钟是针对人们判断时间的落后和不准确性,通过利用计算机来实行对时间的系统计算,增加了准确性。在软件的总体设计中采用自上而下,逐步细化,模块化设计,结构化编码方式进行。

系统结构图

电子时钟

界按钟数

面键动字

显控画时

示制处钟

模模理模

块块模块块

1

五.详细设计:

(1)电子时钟执行主流程

首先,程序调用initgraph()函数,使系统进入图像模式,然后通过使用

line(),arc(),outtextxy(),

和circle()等函数来绘制主窗口及电子时钟界面,然后调用clockhandle()函数来处理时钟的运转及数字时钟的显示。在clcockhandle()函数中,使用bioskeu()函数来获取用户的按键值,当用户按键为Esc时,程序会从clockhandle()函数中返回,从而退出程序。

(2)电子时钟显示

电子时钟界面的难度主要在于模拟时钟运转的动画时钟的时间刻度是用大小不同的圆来表示的,3根长度不同的但有一端在相同坐标位置的直线分别表示时、分、秒针。 (3)时钟按键控制模块

在按键控制模块中,使用bioskey()函数来读取按键的键值,然后调用keyhandle()函数对键盘按键值进行判断,执行相应的操作,具体操作如下:

a. Tab键是用来清除上一个光标,然后再新位置处绘制一个光标。

b. 光标上移键是用来增加相应的时、分、秒值。

c. 光标下移键是用来减少相应的时、分、秒值。

d. Esc键是用来结束程序的。

(4)时钟动画处理模块

12

k

ra

rcosa

orsina

先通过坐标点的计算

再做好时钟动画处理流程,最后退出程序。

(5)数字时钟处理模块

在数字时钟处理模块中,会每隔一秒调用gettime()函数,获取系统时间,再调用digitclock函数再相应的位置显示时、分、秒值。数字的修改有当前光标的位置和上、下移键共同决定的。

2

(6)汉字处理模块

运用点阵法,调用drawmat()函数实现。

六.调试分析:

在此次课程设计中,遇到了一些问题,通过老师的指导和组员之间的协作,最后都解决了问题。

a. 要减少调试时间首先要害死程序写出来的语法错误少,那就哟啊养成良好的习惯,

比如写主函数main()后写了左花括号“{”马上补右括号“}”等等。

b. 另一个重要的方面就是数据的类型一定要对应,还有格式也非常重要,在写程序

时一定要注意。

七(课程设计总结和心得体会:

1. 通过这次课程设计,加强了我们动手、思考和解决问题的能力。而且在设计过程中,经常会遇到这样那样的情况,就是心里想老着这样的接法可以行得通,经过老师一点拨就放弃了这种想法。

2. 我沉得做课程设计同时也是对课本知识的巩固和加强,由于课本上的知识太多,平时课间的学习并不能很好的理解和运用各个函数的功能,而且考试内容有限,所以在这次课程设计过程中,我们了解了很多函数的功能,并且对于其在程序中的使用有了更多的认识。

3.平时看课本时,有时问题老是弄不懂,做完课程设计,那些问题就迎刃而解了。而且还可以记住很多东西。比如一些程序功能的实现,平时看课本,这次看了,下次就忘了,通过动手实践让我们对各个函数印象深刻。认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。所以这两个星期的课程设计对我们的作用是非常大的。经过两个星期的学习,过程曲折可谓一语难尽。在此期间我们也失落过,也曾一度热情高涨。从开始时满富盛激情到最后汗水背后的复杂心情,点点滴滴无不令我回味无长。此次课程设计,学到了很多课内学不到的东西,比如独立思考解决问题,出现差错的随机应变,和与人合作共同提高,都受益非浅,今后的制作应该更轻松,自己也都能扛的起并高质量的完成项目。、在此,感谢于老师的细心指导,也同样谢谢其他各组同学的无私帮助~

八(参考文献:

c. 姜灵芝等.c语言课程设计案例精编.北京:清华大学出版社.2008

d. 胡景春等。大学生计算机课程实践优秀作品选编.南京:东南大学出版社.2010 附录(源代码):

#include

#include

3

#include

#include

#define PI 3.1415926 /*定义常量*/

#define UP 0x4800 /*上移?键:修改时间*/ #define DOWN 0x5000 /*下移?键:修改时间*/

退出系统*/ #define ESC 0x11b /*ESC键 :

#define TAB 0xf09 /*TAB键 : 移动光标*/ /*函数声明*/

int keyhandle(int,int); /*键盘按键判断,并调用相关函数处理*/ int timeupchange(int); /*处理上移按键*/

int timedownchange(int); /*处理下移按键*/

int digithour(double); /*将double型的小时数转换成int型*/ int digitmin(double); /*将double型的分钟数转换成int型*/ int

digitsec(double); /*将double型的秒钟数转换成int型*/ void

digitclock(int,int,int ); /*在指定位置显示时钟或分钟或秒钟数*/ void drawcursor(int); /*绘制一个光标*/

void clearcursor(int);/*消除前一个光标*/

void clockhandle(); /*时钟处理*/

double h,m,s; /*全局变量:小时,分,秒*/

double x,x1,x2,y,y1,y2; /*全局变量:坐标值*/

struct time t[1];/*定义一个time结构类型的数组*/ main()

{

int driver, mode=0,i,j;

driver=DETECT; /*自动检测显示设备*/

initgraph(&driver, &mode, "");/*初始化图形系统*/

setlinestyle(0,0,3); /*设置当前画线宽度和类型:设置三点宽实线*/ setbkcolor(0);/*用调色板设置当前背景颜色*/

setcolor(9); /*设置当前画线颜色*/

line(82,430,558,430);

line(70,62,70,418);

line(82,50,558,50);

line(570,62,570,418);

line(70,62,570,62);

line(76,56,297,56);

line(340,56,564,56); /*画主体框架的边直线*/

/*arc(int x, int y, int stangle, int endangle, int radius)*/ arc(82,62,90,180,12);

arc(558,62,0,90,12);

setlinestyle(0,0,3);

arc(82,418,180,279,12);

setlinestyle(0,0,3);

arc(558,418,270,360,12); /*画主体框架的边角弧线*/

4

setcolor(15);

outtextxy(300,53,"CLOCK"); /*显示标题*/

setcolor(7);

rectangle(342,72,560,360); /*画一个矩形,作为时钟的框架*/

setwritemode(0); /*规定画线的方式。mode=0, 则表示画线时将所画位置的原来信息覆盖*/

setcolor(15);

outtextxy(433,75,"CLOCK");/*时钟的标题*/

setcolor(7);

line(392,310,510,310);

line(392,330,510,330);

arc(392,320,90,270,10);

arc(510,320,270,90,10); /*绘制电子动画时钟下的数字时钟的边框架*/ /*绘制数字时钟的时分秒的分隔符*/

setcolor(5);

for(i=431;i<=470;i+=39)

for(j=317;j<=324;j+=7){

setlinestyle(0,0,3);

circle(i,j,1); /*以(i, y)为圆心,1为半径画圆*/

}

setcolor(15);

line(424,315,424,325); /*在运行电子时钟前先画一个光标*/

/*绘制表示小时的圆点*/

for(i=0,m=0,h=0;i<=11;i++,h++){

x=100*sin((h*60+m)/360*PI)+451;

y=200-100*cos((h*60+m)/360*PI);

setlinestyle(0,0,3);

circle(x,y,1);

}

/*绘制表示分钟或秒钟的圆点*/

for(i=0,m=0;i<=59;m++,i++){

x=100*sin(m/30*PI)+451;

y=200-100*cos(m/30*PI);

setlinestyle(0,0,1);

circle(x,y,1);

}

/*在电子表的左边打印帮助提示信息*/

setcolor(4);

outtextxy(184,125,"HELP");

setcolor(15);

outtextxy(182,125,"HELP");

setcolor(5);

outtextxy(140,185,"TAB : Cursor move");

outtextxy(140,225,"UP : Time ++");

5

outtextxy(140,265,"DOWN: Time --");

outtextxy(140,305,"ESC : Quit system!");

outtextxy(140,345,"Version : 2.0");

setcolor(12);

outtextxy(150,400,"Nothing is more important than time!"); clockhandle();/*开始调用时钟处理程序*/

closegraph(); /*关闭图形系统*/

*/ return 0; /*表示程序正常结束,向操作系统返回一个0值

}

void clockhandle()

{

int k=0,count;

setcolor(15);

gettime(t);/*取得系统时间,保存在time结构类型的数组变量中*/

h=t[0].ti_hour;

m=t[0].ti_min;

x=50*sin((h*60+m)/360*PI)+451; /*时针的x坐标值*/

y=200-50*cos((h*60+m)/360*PI); /*时针的y坐标值*/

line(451,200,x,y);/*在电子表中绘制时针*/

x1=80*sin(m/30*PI)+451; /*分针的x坐标值*/

y1=200-80*cos(m/30*PI); /*分针的y坐标值*/

line(451,200,x1,y1); /*在电子表中绘制分针*/

digitclock(408,318,digithour(h)); /*在数字时钟中,显示当前的小时值*/ digitclock(446,318,digitmin(m)); /*在数字时钟中,显示当前的分钟值*/ setwritemode(1);

/*规定画线的方式,如果mode=1,则表示画线时用现在特性的线与所画之处原

有的线进行异或(XOR)操作,实际上画出的线是原有线与现在规定的线进行异或后的结果。因此, 当线的特性不变, 进行两次画线操作相当于没有画线,即在当前位置处清除了原来的画线*/

for(count=2;k!=ESC;){ /*开始循环,直至用户按下ESC键结束循环*/

setcolor(12);/*淡红色*/

sound(500);/*以指定频率打开PC扬声器,这里频率为500Hz*/ delay(700);/*发一个频率为500Hz的音调,维持700毫秒*/ sound(200);/*以指定频率打开PC扬声器,这里频率为200Hz*/ delay(300);

/*以上两种不同频率的音调,可仿真钟表转动时的嘀哒声*/ nosound(); /*关闭PC扬声器*/

s=t[0].ti_sec;

m=t[0].ti_min;

h=t[0].ti_hour;

6

x2=98*sin(s/30*PI)+451; /*秒针的x坐标值*/

y2=200-98*cos(s/30*PI); /*秒针的y坐标值*/

line(451,200,x2,y2);

/*绘制秒针*/

/*利用此循环,延时一秒*/

while(t[0].ti_sec==s&&t[0].ti_min==m&&t[0].ti_hour==h) { gettime(t);/*取得系统时间*/

if(bioskey(1)!=0){

k=bioskey(0);

count=keyhandle(k,count);

if(count==5) count=1;

}

}

setcolor(15);

digitclock(485,318,digitsec(s)+1);/*数字时钟增加,秒*/

setcolor(12); /*淡红色*/

x2=98*sin(s/30*PI)+451;

y2=200-98*cos(s/30*PI);

line(451,200,x2,y2);

/*用原来的颜色在原来位置处再绘制秒针,以达到清除当前秒针的目的*/ /*分钟处理*/

if(t[0].ti_min!=m){ /*若分钟有变化*/

/*消除当前分针*/

setcolor(15); /*白色*/

x1=80*sin(m/30*PI)+451;

y1=200-80*cos(m/30*PI);

line(451,200,x1,y1);

/*绘制新的分针*/

m=t[0].ti_min;

digitclock(446,318,digitmin(m)); /*在数字时钟中显示新的分钟值*/ x1=80*sin(m/30*PI)+451;

y1=200-80*cos(m/30*PI);

line(451,200,x1,y1);

}

/*小时处理*/

if((t[0].ti_hour*60+t[0].ti_min)!=(h*60+m)){ /*若小时数有变化*/ /*消除当前时针*/

setcolor(15); /*白色*/

x=50*sin((h*60+m)/360*PI)+451;/*50:时钟的长度(单位:像素),451:圆心的x坐

标值*/

7

y=200-50*cos((h*60+m)/360*PI);

line(451,200,x,y);

/*绘制新的时针*/

h=t[0].ti_hour;

digitclock(408,318,digithour(h));

=50*sin((h*60+m)/360*PI)+451; x

y=200-50*cos((h*60+m)/360*PI);

line(451,200,x,y);

}

}

}

int keyhandle(int key,int count) /*键盘控制 */

{ switch(key)

{case UP: timeupchange(count-1); /*因为count的初始值为,,所以此处减,*/

break;

所以此处减,*/ case DOWN:timedownchange(count-1); /*因为count的初始值为,,

break;

case TAB:setcolor(15);

clearcursor(count); /*清除原来的光标*/

drawcursor(count); /*显示一个新的光标*/

count++;

break;

}

return count;

}

int timeupchange(int count) /*处理光标上移的按键*/ {

if(count==1){

t[0].ti_hour++;

if(t[0].ti_hour==24) t[0].ti_hour=0;

settime(t); /*设置新的系统时间*/

}

if(count==2){

t[0].ti_min++;

if(t[0].ti_min==60) t[0].ti_min=0;

settime(t); /*设置新的系统时间*/

}

if(count==3){

t[0].ti_sec++;

8

if(t[0].ti_sec==60) t[0].ti_sec=0;

settime(t); /*设置新的系统时间*/

}

}

int timedownchange(int count) /*处理光标下移的按键*/ {

if(count==1) {

t[0].ti_hour--;

if(t[0].ti_hour==0) t[0].ti_hour=23;

settime(t);/*设置新的系统时间*/

}

if(count==2) {

t[0].ti_min--;

if(t[0].ti_min==0) t[0].ti_min=59;

settime(t);/*设置新的系统时间*/

}

if(count==3) {

t[0].ti_sec--;

if(t[0].ti_sec==0) t[0].ti_sec=59;

settime(t);/*设置新的系统时间*/

}

}

int digithour(double h)/*将double型的小时数转换成int型*/ {int i; for(i=0;i<=23;i++)

{if(h==i) return i;}

}

int digitmin(double m)/*将double型的分钟数转换成int型*/ {int i;

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

{if(m==i) return i;} }

int digitsec(double s) /*将double型的秒钟数转换成int型*/ {int i;

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

{if(s==i) return i;} }

void digitclock(int x,int y,int clock)/*在指定位置显示数字时钟:时\分\秒*/ {char buffer1[10];

9

setfillstyle(0,2);

bar(x,y,x+15,328);

if(clock==60) clock=0;

sprintf(buffer1,"%d",clock);

outtextxy(x,y,buffer1);

}

void drawcursor(int count) /*根据count的值,画一个光标*/

{switch(count)

{

case 1:line(424,315,424,325);break;

case 2:line(465,315,465,325);break;

case 3:line(505,315,505,325);break;

}

}

void clearcursor(int count) /*根据count的值,清除前一个光标*/ {switch(count)

{

case 2:line(424,315,424,325);break;

case 3:line(465,315,465,325);break; case 1:line(505,315,505,325);break;

}

}

10

基于STC89C52的电子时钟设计

目录 1.前言 (1) 2.整体设计方案 (2) 3.硬件设计方案 (2) 3.1复位电路 (2) 3.2晶振电路 (3) 3.3LED显示电路 (3) 3.4按键输入电路 (4) 3.5蜂鸣器电路 (5) 4.软件设计方案 (6) 4.1软件设计方法 (6) 4.2系统软件设计思想 (6) 4.3系统主程序 (6) 4.4中断子程序 (7) 4.4.1定时器T0的中断程序设计 (7) 4.4.2定时器T1的中断程序设计 (8) 4.5按键扫描子程序 (9) 4.6调时、分、秒子程序 (10) 4.7调节闹钟子程序 (11) 5.调试与功能说明 (12) 5.1硬盘调试 (12) 5.2系统性能测试与功能说明 (13) 5.3系统时钟误差分析 (13) 5.4软件调试问题及解决 (13) 6.设计总结 (13) 参考文献 (14)

四川师范大学成都学院电子工程学院课程设计报告 附录1:多功能电子时钟原理图 (15) 附录2:C语言源程序 (16)

1.前言 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。 目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。下面是单片机的主要发展趋势。单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。 单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。 数字钟是采用数字电路实现对.时,分,秒.数字显示的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。 数字钟已成为人们日常生活中:必不可少的必需品,广泛用于个人家庭以及车站、码头、剧场、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。

基于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. 数码管显示模块数码管显示模块主要用于显示当前时间,需要用到7位共阴数码管,通过原理图连接数码管和单片机端口,根据单片机输出的信号来控制数码管的选通和数值显示。数码管显示时间的格式可以有24小时制和12小时制两种,24小时制显示格式为“时:分:秒”,12小时制显示格式为“AM/P M 时:分:秒”。 2. 时钟控制模块时钟控制模块主要用于设置并控制时钟 的运行和显示,包括时钟的开关、时间的设置和修改、时间的显示等功能。时钟开关的控制可以通过单片机IO口控制,时 钟的时间设置和修改需要由用户输入时钟的时间信息,并对单片机中的寄存器进行相应的存储操作,时间的显示也需要通过单片机读取寄存器的信息,并将其转换为数码管的显示信号。

3. 闹钟提醒模块闹钟提醒模块主要通过蜂鸣器的声音提 示来提醒用户已到设置时间。闹钟的设置需要由用户输入提醒时间,单片机负责将提醒时间和当前时间进行比较,并在提醒时间之后发出蜂鸣器的声音信号。 三、硬件设计硬件设计包括原理图设计和PCB布局设计两个部分。原理图设计需要根据电子时钟的功能模块,绘制出各个模块的连接关系图,确定各个元器件和单片机的引脚连接方式。PCB布局设计需要根据原理图的设计,在PCB板上布置各个元器件,并连接各个元器件和单片机的引脚。硬件设计需要注意尽量缩小电路板面积,优化PCB 布局,避免线路交叉和 信号干扰等问题。 四、软件设计软件设计主要包括单片机的程序设计和调试。程序设计需要采用 C 语言编写,实现各个模块的功能。程序 的调试需要通过单片机仿真软件或单片机下载设备进行,对程序进行断点调试和单步调试,检查程序的正确性,并调试出硬件和软件的问题。 五、实验结果电子时钟是一款简单而实用的单片机应用设计,完成之后可以实现按键设置时间、24小时和12小时制显 示切换、时间的正常流动和修正、长响蜂鸣器提醒用户等功能。通过设计电子时钟,可以更深入地了解单片机的编程原理和应用技巧,掌握实际电路设计和调试技能,为今后的应用开发提供更加扎实的基础。

单片机电子时钟课程设计实验报告(1)

单片机电子时钟课程设计实验报告(1)单片机电子时钟课程设计实验报告 一、实验内容 本次实验的主要内容是使用单片机设计一个电子时钟,通过编程控制单片机,实现时钟的显示、报时、闹钟等功能。 二、实验步骤 1.硬件设计 根据实验要求,搭建电子时钟的硬件电路,包括单片机、时钟模块、显示模块、按键模块等。 2.软件设计 通过C语言编写单片机程序,用于实现时钟功能。 3.程序实现 (1)时钟显示功能 通过读取时钟模块的时间信息,在显示模块上显示当前时间。 (2)报时功能 设置定时器,在每个整点时,通过发出对应的蜂鸣声,提示时间到达整点。 (3)闹钟功能 设置闹钟时间和闹铃时间,在闹钟时间到达时,发出提示蜂鸣,并在屏幕上显示“闹钟时间到了”。 (4)时间设置功能

通过按键模块实现时间的设置,包括设置小时数、分钟数、秒数等。 (5)年月日设置功能 通过按键模块实现年月日的设置,包括设置年份、月份、日期等。 三、实验结果 经过调试,电子时钟的各项功能都能够正常实现。在运行过程中,时钟能够准确、稳定地显示当前时间,并在整点时提示时间到达整点。在设定的闹铃时间到达时,能够发出提示蜂鸣,并在屏幕上显示“闹钟时间到了”。同时,在需要设置时间和年月日信息时,也能够通过按键进行相应的设置操作。 四、实验感悟 通过本次实验,我深刻体会到了单片机在电子设备中的广泛应用以及C 语言在程序设计中的重要性。通过实验,我不仅掌握了单片机的硬件设计与编程技术,还学会了在设计电子设备时,应重视系统的稳定性与可靠性,并善于寻找调试过程中的问题并解决。在今后的学习和工作中,我将继续加强对单片机及其应用的学习与掌握,努力提升自己的实践能力,为未来的科研与工作做好充分准备。

单片机数字钟课程设计

单片机数字钟课程设计 单片机数字钟课程设计 1. 硬件设计: - 使用单片机控制数字钟的显示和时间的设置功能,在电路板上连接LED数码管用于显示时间。 - 使用实时时钟芯片或者外部晶振作为时钟源,确保时间的准确性。 - 设置按键用于调整时间,包括小时、分钟和秒钟。 2. 功能设计: - 初始化功能:启动时将时间设置为00:00:00。 - 显示功能:将当前时间显示在LED数码管上,包括小时、分钟和秒钟。 - 调整时间功能:按下相应的按键,可以调整小时、分钟和秒钟,同时更新LED数码管上的显示。 - 闹钟功能:设置一个闹钟时间,并在闹钟时间到达时发出声音或者闪烁LED灯提示。 3. 软件设计: - 使用C语言编写单片机的程序,通过编程控制数码管的显示和按键的响应。 - 在程序中使用定时器中断来更新时间的显示,确保时间的准确性。 - 使用按键中断来响应按键的操作,包括调整时间和设置闹钟功

能。 4. 测试与调试: - 在编写完程序后,进行测试和调试,确保各项功能的正常运行。 - 使用示波器等工具来监测时钟信号和按键信号的波形,确保硬件连接的正确性。 - 运行程序并观察LED数码管的显示,以及按键的响应情况,进行功能的验证。 5. 效果展示: - 在完成测试和调试后,将数字钟的效果展示给他人,包括时间的显示和调整、闹钟的设置和响应等功能。 - 可以将数字钟制作成实物展示,方便他人观看和操作,也可以进行演示和讲解,介绍数字钟的工作原理和设计思路。 整个单片机数字钟的课程设计过程包括硬件设计、功能设计、软件设计、测试与调试以及效果展示。通过这个设计项目,可以锻炼学生的硬件和软件设计能力,提高他们对单片机原理和应用的理解和掌握程度。

C语言编写的电子钟程序

#include #include #define uint unsigned int #define uchar unsigned char sbit beep=P2^3; sbit dula=P2^6; sbit wela=P2^7; sbit key1=P3^4; sbit key2=P3^5; sbit key3=P3^6; sbit key4=P3^7; uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; uchar tt,shi,fen,miao,shi1,shi2,fen1,fen2,miao1,miao2,naoshi,naofen,naomiao; void delay(uchar z); void initial(); void display(uchar shi1,uchar shi2,uchar fen1,uchar fen2,uchar miao1,uchar miao2); void main() { initial(); while(1) { display(shi1,shi2,fen1,fen2,miao1,miao2); } } void delay(uchar z) { uchar x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void initial() { naoshi=6;//设置闹铃时钟 naofen=0;//设置闹铃分钟 naomiao=2;//设置闹铃秒钟 shi=5;//设置时钟初值 fen=59;//设置分钟初值 miao=50;//设置秒钟初值 P3=0xff;

电子时钟计时器的设计(c语言版_调试完美通过_可直接使用)(附原理图源程序以及完整的文档)汇总

湖南人文科技学院 课程设计报告 课程名称:单片机原理及应用课程设计 设计题目:电子时钟的设计 系别:通信与控制工程系 专业:通信工程 班级:09级通信二班 学生姓名: 袁琦黄文付 学号: 09416230 09416227 起止日期:2011年12月20日~2011年12月30日 指导教师:王善伟姚毅谢四莲 教研室主任:刘建闽

指导教师评语: 指导教师签名:年月日 成绩评定 项目权重 成绩 袁琦黄文付 1、设计过程中出勤、学习态度等方面0.2 2、课程设计质量与答辩0.5 3、设计报告书写及图纸规范程度0.3 总成绩 教研室审核意见: 教研室主任签字:年月日教学系审核意见: 主任签字:年月日

摘要 时钟是人类日常生活必不可少的工具,本设计从日常生活中常见的事物入手,通过对电子时钟的设计,让我们认识到单片机已经深入到我们生活的每个领域,该设计不仅可以锻炼我们的动手能力,而且可以加深我们对单片机的认识和激发我们对未知科学领域的探索。 本文利用单片机实现数字时钟计时功能的主要内容。它体积小,成本低、功能强、使用方便、可靠性高等一系列优点,广泛应用于智能产业和工业自动化上。本次设计采用独立式按键进行时间调整,其中STC89C52是核心元件,同时采用数码管LED动态显示“时”,“分”,“秒”的现代计时装置。与传统机械表相比,它具有走时精确,显示直观等特点。它的计时周期为24小时,显满刻度为“23时59分59秒”,另外利用DS1302具有校时功能,断电后有记忆功能,恢复供电时可实现计时同步等特点。该系统同时具有硬件设计简单、工作稳定性高、价格低廉等优点。 关键词:STC89C52 ;LED数码管;8255芯片;DS1302芯片;

单片机的C语言程序设计——时钟

单片机的C 语言程序设计——时钟 1. 针对图1,用单片机C语言编程实现时钟,并利用Protues 仿真演示。(1秒钟的 定时使用定时器中断方式) (1)硬件原理图 图1 定时电路原理图 (2)软件流程图

(3)程序清单(标注注释) #include static unsigned char code seg[10]= {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F} ; // 字形码void show(); unsigned int num[2]; void main(void) { P2=0x00; P3=0x00; //P2,P3赋初值 TMOD=0x00; TH0=0x10; TL0=0x60; //定时4mS EA=1; ET0=1; TR0=1 ; //开启定时器

while(1); //进入死循环,进入中断判断 } void timeint(void) interrupt 1 using 2 { unsigned int h; //定义变量h h++; if(h==125){ show(); //调用显示程序 h=0; } //循环125次,达到定时一秒后,让h重新计数 TH0=0x10; TL0=0x60; //重新赋给定时器初值 } void show() //显示程序 { unsigned char s; num[0]=s%10; //取个位的数 num[1]=s/10; //取十位的数 P3=seg[num[0]]; //根据字形码显示个位的数 P2=seg[num[1]]; //根据字形码显示十位的数 s++; //显示的数加一 if(s==60) s=0; //计数到60的时候,重新让它等于0.如此循环,成为秒表2.针对图2,用单片机C语言编程按键按下,显示数据增加1,并用Protues仿真运行

单片机电子钟c语言程序

单片机电子钟程序设计实习报告 单片机LCD1602电子钟毕业论文 这次嵌入式系统综合实习已经结束了,哎..... 在网络发现很多计算机专业的毕业生都是以电子钟为题的毕业论文,个人感觉做一个电子钟程序设计的技术含量,技术水平都不高。呵呵个人还是比较偏向于软件开发的,比较喜欢vc++开发。 一、引言 1.1课题的背景及目的 随着计算机科学与技术的飞速发展,计算机的应用已经渗透到国民经济与人们生活的各个角落,正在日益改变着传统的人类工作方式和生活方式,而单片机技术又作为计算机技术中的一个独立分支,有着性价比高,集成度高,体积小,可靠性高,控制功能强大,低功耗,低电压,便于生产,便于携带等特点,所以得到越来越广泛的应用,特别是在工业控制和仪表仪器智能化中起极其重要的作用.本文利用单片机强大的控制功能和内部定时器重要部件,设计了一款自行对时间进行调整以及把时、分、秒用LCD显示的电子钟。 电子钟从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。因此,我们此次设计与制做数字钟就是为了了解数字钟的原理,从而学会制作数字钟.而且通过数字钟的制作进一步的了解各种在制作中用到的中小规模集成电路的作用及实用方法.且由于数字钟包括组合逻辑电路和时叙电路.通过它可以进一步学习与掌

握各种组合逻辑电路与时序电路的原理与使用方法 1.2课题的内容要求及研究方法 ①时间以24小时为一个周期; ②显示时、分、秒; ③具有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间; 本文先按照设计的一般步骤,先选定用单片机实现的方案,了解设计要求,再分别从硬件系统设计和软件系统设计两个宏观方面着手.然后大量阅读相关资料,硬件方面,熟练单片机工作基本原理,查出相关元器件的参数,八个八段数码管,继电器等性能.然后画出系统框图和单元电路原理图,再对系统工作原理按照单元电路作简单的说明。软件方面,熟悉编程语言,查找相关子程序.熟悉使用Keil uVision2开发软件及STC-ISP下载软件.把原器件按电路原理图安装.最后再对硬件和软件系统进行调试和仿真。课题的内容是要求设计一款电子钟,而且要求计时准确,显示直观,清晰,时能够精确到秒。最后设计出来的产品,要求电路简洁,稳定性好。 二、课题设计 1、基本原理 本设计基于单片机技术原理,以单片机芯片A T89C52作为核心控制器,通过硬件电路的制作以及软件程序的编制,设计制作出一个多功能数字时钟系统。单片机扩展的LCD显示器用来显示秒、分、时计数单元中的值。整个设计包括两大部分: 硬件部分和软件部分,

电子钟c程序

验收标准: 1可按键调整当前时间(年月日时分秒) 2设定闹钟时间闹钟时间到led闪烁时间不超过10秒可以按键停止闹钟3具有秒表功能,可暂停,开始,及复位秒表。 4通过按键实现不同的界面的切换 5其他 #include #define uint unsigned int #define uchar unsigned char uchar code table1[]={ 0x40,0xe79,0x24,0xb0,0x19,0x12,0x02,0x78,0x00,0x18}; uchar code table[]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //sbit beep=P2^3; //蜂鸣器 sbit key1=P3^4; sbit key2=P3^5; sbit key3=P3^6; sbit key4=P3^7; sbit led0=P1^0; uchar tt,num0,nn,num,miao; uint nian=2012,yue=8,ri=19,fen1=0,shi1=0,shi=16,fen=25; void dlay(uint xms); uchar leee(); void yue0(); void d1(); void keyscan() { if(key1==0) { dlay(10); if(key1==0) { num++; if(num==6) { num=0; } while(!key1); } } if(key2==0) { dlay(10); if(key2==0)

c51课程设计报告电子钟

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

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

C语言模拟时钟转动课设报告-附代码

模拟时针转动程序 姓名: 完成日期:2021年12月

设计目的 能模拟机械钟表行走;要准确地利用数字显示时间;在屏幕上显示一个活动时钟;程序界面设计合理,色彩得体大方,显示正确;各指针运动规律正确;数字式时钟的时间显示与指针式时钟显示一致。 总体设计 电子时钟的功能描述 电子时钟流程图 模块描述 动画处理模块

转时针动处理模块指针式的时钟表盘为椭圆形并且圆周上有分布均匀的12个刻度刻度显示清楚钟面上有长度不相同的指针即时针、分针、秒针指针的运动具有规律性为顺时针。 数字时钟处理模块数字钟显示时间的格式是年月日时分秒小时为24进制,分钟和秒是60进制,指针式的时钟和数字式的时钟显示的时间同步且两个时钟所显示的时间与计算机的系统时间一致。 详细设计 time结构体 strume time { usigned char ti_min; usigned char ti_hour; usigned char ti_hud; usigned char ti_sec; }; 全局变量 double h,m,s;这三个变量分别保存小时,分钟,秒。 double x,y,x1,y1,x2,y2;保存数字时钟中小时分钟秒在屏幕中显示的位置。 struct time t[1];定义一个time结构类型的数组。

1.def〔〕 : void def〔〕 def 2. abc〔〕 : void abc〔〕 3 .digitclock〔〕 :void digitclock〔〕 4. clockhandle〔〕:void clockhandle〔〕 5 . main〔〕 : void main〔〕

八位数显示时钟的设计方案与制作

毕业设计<论文)题目:八位数显示时钟的设计与制作 2018年8月28日

毕业设计任务书 1.毕业设计题目:八位数显时钟 题目类型实验研究题目来源教师科研题 毕业设计内容要求: <一)设计任务: 1、用单片机设计8位数显电子时钟; 2、走时,误差精度控制在1s/天; 3、调时,小时、分钟加减调整及闪烁显示; 4、闹铃,可以设置三组闹铃,默认闹铃时间为1分钟,可按任意键推出闹铃。 <二)涉及要求: 1、总体方案设计及框图; 2、设计原理电路图及分析; 3、独立编写程序; 4、完成protues仿真设计; 5、使用protel设计pcb并制作、调试电路。 2.主要参考资料 [1]电子工业出版社[51单片机典型系统开发实例精讲]白延敏; [2]复旦大学出版社[单片微型机原理、应用和实验] 张友德; [3]海纳电子资讯网https://www.360docs.net/doc/bc19141344.html,[IC中文资料];

摘要 时间是现代社会中不可缺少的一项参数,无论是平时生活还是社会生产都需要对时间进行控制,有的场合对其精确性还有很高的要求.采用单片机进行计时,对于社会生产有着十分重要的作用。 本文首先介绍了电子时钟的特点和功能,然后对单片机和LCD 显示做了详细的介绍,提出了系统总体设计方案,并设计了各部分硬件模块和软件流程,再用Protues软件进行了仿真和调试,结果证明了该设计系统的可行性。 由于AT89S52系列单片机的控制器运算能力强,处理速度快, 可以精确计时,很好地解决了实际生产生活中对计时高精确度的要求,因此该设计在现代社会中具有广泛的适用性。 关键字:单片机;LCD1602液晶显示器;C程序设计

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显示数值等主要功能。相关的调整是靠对功能键的判断来实现的。

数字钟的proteus仿真电路及C语言程序设计

河南理工大学万方科技学院 单片机大作业 题目:数字钟的proteus仿真电路及C语言程序设计 院系名称:电气与自动化工程系 专业班级:网络工程一班 学生姓名:王一帆学号: 0926305007 指导教师:李泉溪教师职称:教授 2011 年月日

一:概述 1.1数字钟的简介 数字钟是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟相比,它具有走时准确、显示直观、无机械传动装置等优点,因而得到广泛应用。随着人们生活环境的不断改善和美化,在许多场合都用到电子时钟。 数字钟的设计方法有许多种,例如可用中小规模集成电路组成电子钟,也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟,还可以利用单片机来实现电子钟等等。这些方法都各有其特点,其中利用单片机实现的电子钟具有编程灵活,以便于功能的扩展。 这里要求实现一个具有实时时钟显示和闹钟控制功能的数字钟。 通过数字钟的设计与制作,将前面所学的单片机内部定时资源、I/O端口、键盘和显示接口等知识融会贯通,锻炼独立设计、制作和调试应用系统的能力,深入领会单片机应用系统的硬件设计、模块化程序设计及软硬件调试方法等,并掌握单片机应用系统的开发过程。 1.2数字钟设计要求 设计并制作具有如下功能的数字钟: (1)自动计时,由6位LED先四起显示时、分、秒。 (2)具备校准功能,可以设置当前时间。 (3)具备定时启动功能,可以设置闹钟时间。 1.3数字钟设计方案 (1)采用实时时钟芯片。针对应用系统对实时功能的普遍需求,各大芯片生产厂家陆续推出了一系列实时时钟集成电路,如DS1287、DS12887、DS1302、PCF8563、S35190等。这些实时时钟芯片具备年、月、日、时、分、秒、计时功能和多点定时功能,计时数据每秒自动更新一次,不需程序干预。 单片机可通过中断或查询方式读取计时数据。实时时钟芯片的计时功能无须占用CPU时间,功能完善,精度高,软件程序设计相对简单,在实时工业测

嵌入式电子闹钟时钟课程设计之欧阳美创编

#include //头文件 #include #define uchar unsigned char //宏定义 #define uint unsigned int //位定义 sbitrs=P2^5; //液晶位定义 sbitlcden=P2^7; sbit s1=P2^0; //时间功能切换按键 sbit s2=P2^1; //按键加 sbit s3=P2^3; //按键减 sbit s4=P2^4; //闹钟功能切换键 sbitrst=P1^5; //ds1302引脚定义 sbitio=P1^6; sbitsclk=P1^7; sbit beep=P3^0; //蜂鸣器 uchar num,count,shi,fen,miao,s1num,s2num, year,month,day,week,flag,flag1,year1,month1, day1,week1,shi1,fen1,miao1,year2,month2, day2,week2,shi2,fen2,miao2,year5,month5, day5,week5,shi5,fen5,miao5,wk,ashi,afen; //参数定义uchar code table[]="20 - - "; //液晶固定显示uchar code table1[]=" : : 00:00"; /* uchartime_dat[7]={12,1,6,6,12,59,59}; //年周月日时分秒ucharwrite_add[7]={0x8c,0x8a,0x88,0x86,0x84,0x82,0x80}; ucharread_add[7]={0x8d,0x8b,0x89,0x87,0x85,0x83,0x81}; */ void write_com(uchar com); //液晶写指令函数 void write_data(uchar date); //液晶写数据函数

单片机秒表课程设计(C语言)

单 片 机 秒 表 设 计 实 训 报 告 姓名: 班级: 学号: 日期:1. 课程设计的目的和任务

单片机秒表课程设计的概述 一、课程设计题目 秒表系统设计——用STC89C52RC设计一个3位LED数码显示“秒表”,显示时间为 00.0~59.9秒,每毫秒自动加一,每十毫秒自动加一秒。 二、增加功能 增加一个“”按键(即清零),一个“暂停”和“开始”按键,一个“”按键(用来60秒倒计时),一个倒计时“逐渐自减”按键。 三,课程设计的难点 单片机电子秒表需要解决三个主要问题,一是有关单片机定时器(一个控制顺序计时,一个控制倒计时)的使用;二是如何实现LED的动态扫描显示;三是如何对键盘输入进行编程。 四、课程设计内容提要 本课程利用单片机的定时器/计数器定时和记数的原理,结合集成电路芯片8051、LED 数码管以及课程箱上的按键来设计计时器。将软、硬件有机地结合起来,使得系统能够正确地进行计时,数码管能够正确地显示时间。其中本课程设计有三个开关按键:其中key2按键按下去时开始计时,即秒表开始键(同时也用作暂停键),key1按键按下去时数码管清零,复位为“”,key3按键按下去时数码管复位为“”(用于倒计时)。 课程设计的意义 1)通过本次课程设计加深对单片机课程的全面认识复习和掌握,对单片机课程的应用进一 步的了解。 2)掌握定时器、外部中断的设置和编程原理。 3)通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。 4)该课程通过单片机的定时器/计数器定时和计数原理,设计简单的计时器系统,拥有正 确的计时、暂停、清零,并同时可以用数码管显示,在现实生活中应用广泛,具有现实意义 课程设计仪器 集成电路芯片8051,七段数码管,TX-1C单片机开发板, MCS-51系列单片机微机仿真课程系统中的软件(Keil uvision2)。 课程设计思路及描述 该课程设计要求进行计时并在数码管上显示时间,则可利用MCS-51系列单片机的芯片AT89C52的;定时器T0作为每秒减一的定时器;定时器T1作为的定时器。其中“开始”按

c语言单片机定时闹钟课程设计

课程设计报告 课程名称:单片机课程设计 报告题目:定时闹钟 学生姓名: 所在学院: 专业班级: 学生学号: 指导教师:

2013年12 月25 日课程设计任务书

摘要 单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。随着生活水平的提高,人们越来越追求人性化的事物。传统的时钟已不能满足人们的需求。而现代的时钟不仅需要模拟电路技术和数字电路技术而且更需要单片机技术,增加数字钟的功能。利用软件编程尽量做到硬件电路简单稳定,减小电磁干扰和其他环境干扰,减小因元器件精度不够引起的误差。 本系统利用单片机实现具有计时、校时等功能的数字时钟,是以单片机 AT89C51为核心元件同时采用LED数码管显示器动态显示“时”、“分”的现代计时装置。另外具有校时功能和定时器功能,利用单片机实现的数字时钟具有编程灵活,便于功能的扩充等优点。 关键词:单片机,定时器,中断,闹钟,LED

目录 一、概述 (1)

1.51电子闹钟发展趋势 (1) 2.本课题研究的主要内容 (1) 3.51电子闹钟简介 (1) 3.1开发的目的和意义 (2) 3.2 51电子闹钟的优点 (2) 3.3 51电子闹钟的特点 (2) 二、方案选择和与论证 (2) 1.单片机型号的选择 (2) 2.按键的选择 (3) 3.显示器的选择 (3) 4.发音部分的设计 (3) 5.显示器驱动电路 (3) 6.电源的选择 (3) 三、单元电路设计与分析 (4) 1.系统原理图 (4) 2.主程序部分的设计 (4) 3.中断定时器的设置 (4) 4.按键电路设计 (5) 5.蜂鸣器驱动电路 (5) 6.数码管显示电路 (6) 四、实验结果 (7) 五、课程设计的心得 (13) 六、参考文献 (14)

电子时钟课程设计报告

目录 第一章前言 (1) 第二章题目要求与方案论证 (2) 2.1 题目要求 (2) 2.2设计目的 (2) 2.3方案论证 (2) 2.3.1 思路 (2) 2.3.2程序设计原理 (3) 2.3.3 用到的DOS系统功能 (3) 2.3.4 用到的BIOS系统功能 (4) 第三章方案设计 ................................................... 错误!未定义书签。 3.1 流程图 (6) 3.2程序代码设计 (8) 3.2.1主程序模块的设计 (8) 3.2.2 日期显示子程序模块 (9) 3.2.3 时间显示子程序模块 (12) 3.2.4 界面显示模块 (13) 第四章结果与分析 ............................................. 错误!未定义书签。 4.1调试过程 (16) 4.2 结果 (16) 4.3分析 (18) 第五章总结与体会 (19) 参考文献 (20) 附录 (21)

第一章前言 作为最基本的编程语言之一,汇编语言的重要性勿庸置疑,因为它能够完成许多其它语言所无法完成的功能。尤其在和硬件关系非常密切的程序或要提高运算速度的程序,即使是 C 语言也会有些力不从心,而汇编语言则能够很好扬长避短,最大限度地发挥硬件的性能。最重要的是微机原理和接口技术是一门实践性强的学科,不但要求有较高的理论水平,而且还要求有实际的动手能力,其中很多的原量、规则、现象等仅仅靠学习教科书是无法完全掌握的,必须通过实践才能比较直观和深刻的理解。 本课程设计的主要目的是提高实践能力,包括提高汇编等语言的编程能力及对接口等硬件的理解分析能力和设计接口电路的能力,在进行课程设计的过程中,可以让学生体验分析问题、提出解决方案、通过编程等手段实现解决方案、不断调试最终达到设计要求的全过程,从而帮助学生系统地掌握微机原理的接口技术的相关知识,达到将知识融会贯通的目的。 本次课程设计我们组做的是数字显示电子钟,要求和系统时钟一致。由于水平有限,该设计还存在了很多的不足,希望各位读者的够指出改正。

相关文档
最新文档