文档库 最新最全的文档下载
当前位置:文档库 › C语言_时钟代码+报告

C语言_时钟代码+报告

淮阴工学院

C语言程序设计课程设计报告

选题名称:钟

系(院):

专业:

班级:

姓名学号::

指导教师:

:2007~20081

学年学期学年第学期

2008年1月12日

摘要:

我们日常生活中有各种各样的时钟。随着计算机的普及和计算机科学的飞速发展,人们开始越来越多的利用计算机解决实际问题。开发一个易于查看的时钟有较大的现实意义。同时,该时钟会听到时钟的喀哒声,程序与生活紧密结合,具体直观,开发应用简单。利用C语言编辑源程序,再进行编译链接生成可执行文件,运行时可以查看时间,听到喀哒声,具体直观,方便了生活。

:Turbo C

关键词计算机;时钟;;函数

目录

4 6 程序调试……………………………………………………………………………

总结 (8)

致谢 (9)

参考文献 (10)

1程序概述

程序设计是一种技术,也是一项工程。程序设计语言是程序设计的工具。一种程序设计语言凝聚了具有时代特征的程序设计理念和方法。本程序利用C语言中的图形处理函数完成时间的模拟显示。

1.1课题来源

这个C语言时钟的课程设计,可以初步理解C语言编程的方法,对C语言小程序有较深刻的理解。利用C语言中的图形处理函数完成时间的模拟显示。了解图形处理函数的基本功能,掌握C语言中的时间函数等。

1.2课题意义

基于算法思维方法的训练是现代信息素养的重要内容。程序设计是引导学习者利用计算机进行解题的能力培养过程。为了有效地进行程序设计,正确地应用程序设计语言表达算法,必须准确地运用程序设计语言,掌握其语法设计。用C语言编程,设计一个时钟,掌握声音函数sound()、系统时间函数gettime()、绘制多边形函数DrawPoly()的用法。

1.3预期目标

本程序利用C语言中的图形处理函数完成时间的模拟显示。在C环境中编辑源程序,设置表盘刻度,模拟时针、分针、秒针的运动,声音,生成可执行文件之后并运行在屏幕上会显示一个时钟,便于查看系统的时间,并且会听到秒针运动时的喀哒声。

2 程序分析

2.1基础知识

程序设计是一种技术,也是一项工程。程序设计语言是程序设计的工具。一种程序

C

设计语言凝聚了具有时代特征的程序设计理念和方法。语言结构化程度高、代码见解易读,它具有强大的功能。它把高级语言的基本结构和语句与低级语言的使用性结合

1

起来,可以像汇编语言一样对位、字节和地址进行操作,而这三种操作是计算机最基本的功能。C是结构式语言,结构式语言的显著特点是代码及数据的分隔化,即

程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可以使程序清晰,便于使用、维护以及调试。C语言是一函数形式提供给用户的,用户可方便的调用这写函数,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。

2.2需求分析

(1)技术可行性分析。时钟程序的软硬件要求都是能够达到的。

(2)需求预测分析。一般的时钟应包含有时间的查看,报时等功能,需要通过这个程序实现这些功能,另外还要实现修改时间等辅助功能。

(3)需求确认分析。将需求预测中分析到的需求反馈给用户,让用户提出一些新的要求。这个工作是系统分析中应该持续进行的工作,以确保在系统设计时掌握确实、详尽的用户需求。

3 程序设计及代码编写与注释

#include"graphics.h"

#include"math.h"

#include"dos.h"

#define pi 3.1415926

#define X(a,b,c) x=a*cos(b*c*pi/180-pi/2)+300

#define Y(a,b,c) y=a*sin(b*c*pi/180-pi/2)+240

#define d(a,b,c) X(a,b,c);Y(a,b,c);line(300,240,x,y)

void init()/*划时钟边框函数*/

{

int i,l,x1,x2,y1,y2;

setbkcolor(1);

circle(300,240,200);

circle(300,240,205);

circle(300,240,5);

for(i=0;i<60;i++)/*划钟点上的短线*/

2

{

if(i%5==0)

l=15;

else

l=5;

x1=200*sin(i*6*pi/180)+300;

y1=200*cos(i*6*pi/180)+240;

x2=(200-l)*sin(i*6*pi/180)+300;

y2=(200-l)*cos(i*6*pi/180)+240;

line(x1,y1,x2,y2);

}

}

main()

{

int x,y,i,k=1;

int gdriver=9,gmode=2;

unsigned char h,m,s;

int o,p,q;

float n;

struct time t[1];

struct date d[1];

initgraph(&gdriver,&gmode,"c:\\tc");

initgraph(&gdriver,&gmode,"c:\\tc");

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

{

settextstyle(TRIPLEX_FONT,HORIZ_DIR,i); /*控制输出字符的字体,方向,大小*/ cleardevice();

settextjustif y(1,1);/*在指定坐标上输出字符串*/

outtextxy(300,80,"12") ;

outtextxy(300,390,"6");

outtextxy(140,230,"9");

outtextxy(460,230,"3");

outtextxy(380,100,"1");

outtextxy(220,100,"11");

outtextxy(430,160,"2");

outtextxy(430,310,"4");

outtextxy(380,370,"5");

outtextxy(220,370,"7");

outtextxy(160,160,"10");

outtextxy(160,310,"8");

}

init();

setwritemode(1);/*设置画线的输出模式*/

if(k!=0)

{

getdate(d);/*获得系统日期函数*/

o=d[0].da_year;

p=d[0].da_mon;

q=d[0].da_day;

gettime(t);/*获得系统时间函数*/

h=t[0].ti_hour;

m=t[0].ti_min;

s=t[0].ti_sec;

}

setcolor(7);/*设置时针颜色*/

n=(float)h+(float)m/60;

d(150,n,30);/*画出时针*/

setcolor(14);/*设置分针颜色*/

d(170,m,6);/*画出分针*/

setcolor(4);/*设置秒针颜色*/

d(190,s,6);/*画出秒针*/

while(!kbhit())/*控制程序按下任意键退出*/

{

while(t[0].ti_sec==s)

gettime(t);

gotoxy(44,18);/*使光标移动到指定坐标*/

printf("\b\b\b\b\b\b\b\b\b");/*退格,使表示时间的字符串不断变化*/ sound(400);/*按给定的频率打开PC扬声器*/

delay(70);/*中断程序的执行,时间为70毫秒*/

sound(200);

delay(30);

nosound();/*按给定的频率关闭PC扬声器*/

setcolor(4);

d(190,s,6);

s=t[0].ti_sec;

d(190,s,6);

if(t[0].ti_min!=m)

{

setcolor(14);

d(170,m,6);

m=t[0].ti_min;

d(170,m,6);

}

if(t[0].ti_hour!=h)

{

setcolor(7);

d(150,h,30);

h=t[0].ti_hour;

d(150,h,30);

sound(1000);

delay(240);

nosound();

delay(140);

sound(2000);

delay(240);

nosound();

}

if(s<10)/*用字符的形式输出时间*/

{ if(m<10)

printf("%u:0%u:0%u",h,m,s);

else

printf("%u:%u:0%u",h,m,s);

}

else

{ if(m<10)

printf("%u:0%u:%u",h,m,s);

else

printf("%u:%u:%u",h,m,s);

}

gotoxy(34,19);/*在指定坐标上输出日期*/

printf("%d年%d月%d日",o,p,q);

printf("\b\b\b\b\b\b\b\b\b");

}

getch();

closegraph();

}

4程序调试

第一步,用编辑程序把编制的源程序按照一定的书写格式送到计算机中,编辑程

序会根据使用人员的意图对源程序进行修改。

第二步,把送入的源程序翻译成机器语言,即用编译程序对源程序进行语法检查并将符合语法规则的源程序语句翻译成计算机能识别的“语言”。如果经编译程序检查,发现有语法错误,那就必须用编辑程序来修改源程序中的语法错误,然后再编译,直至没有语法错误为止。

第三步,使用计算机中的连接程序,把翻译好的计算机语言程序连接起来,并扶植成一个计算机能真正运行的程序。在连接过程中,一般不会出现连接错误,如果出现了连接错误,说明源程序中存在子程序的调用混乱或参数传递错误等问题。这时又要用编辑程序对源程序进行修改,再进行编译和连接,如此反复进行,直至没有连接错误为止。

第四步,将修改后的程序运行。

10

基于单片机的电子钟C语言程序

基于 5 1 单片机的电子钟 C 语言程序 #include #include #defineucharunsignedchar #defineuintunsignedint /* 七段共阴管显示定义*/ ucharcodedispcode[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F, 0xBF,0x86,0xCB,0xCF,0xEF,0xED,0xFD,0x87,0xFF,0xDF}; /* 定义并初始化变量*/ ucharseconde=0; ucharminite=0; ucharhour=12; ucharmstcnt=0; sbitP1_0=PM0;//seco nd 调整定义 sbitP1_ 仁P1A1;//mi nite 调整定义 sbitP1_2=P1A2;//hour 调整定义 /* 函数声明*/ voiddelay(uintk);// 延时子程序 voiddelay1(ucharh); voidtime_pro();// 时间处理子程序 voiddisplay();// 显示子程序 voidkeyscan();// 键盘扫描子程序 /*****************************/ /* 延时子程序*/ voiddelay1(ucharh) { ucharj; while((h--)!=0) { for(j=0;j<125;j++) {;} } } voiddelay(uintk) { uinta,b,c; for(c=k;c>0;c--) for(b=38;b>0;b--) for(a=130;a>0;a--); } /************************* /* 时间处理子程序*/ */ voidtime_pro(void) { if(seconde==60)// 秒钟设为60 进制 {seconde=0; minite++; if(minite==60)// 分钟设为60 进制 {minite=0; hour++;

51 数字时钟 89C52 单片机C语言程序

数字时钟89C52 单片机C语言程序 STC89C52| /************** 【数字时钟】****************/ /****【功能】1、时间显示2、秒表3、闹钟4、日期显示都可以设置****/ #include /*包含器件配置文件*/ #define uchar unsigned char /*宏定义字符型数据整型数据*/ #define uint unsigned int uchar code H[] = {0x0f, 0x07, 0x0b, 0x0d, 0x0e}; /*按键【P3】端口断码用于按键*/ char Code[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f}; /*显示【0 1 2 3 4 5 6 7 8 9】数字的数码管的段码*/ uchar code C[] = {0x0, 0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F}; /*列扫描控制LED1位2位3位4位5位6位7位8位*/ uchar MON[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; uchar A; uchar BIN=0; /* 【BIN】作为倒计时开始的标志*/ uchar hour = 0; /* 定义[时][分][秒] */ uchar min = 0; uchar sec = 0; uint shi=12; uint fen=30; uchar Mmin=0; uchar Msec=30; uchar M0=0; uchar m=0; uchar year=9; uchar month=7; uchar month2; uchar day=19; uchar set1 = 1; /* set1=1 是调节时分秒set1=2时时调节年月日set=3时事调节闹钟*/ uchar set2 = 1; /* set2=1时是调节【时】位set2=2时事调节【分】位*/ uint x = 0; /* x 每【0.01s】自加一*/ void Delay(uint k);

模拟电子时钟c语言程序

算法:将当前时间显示到屏幕,当时间发生变化时,清屏,显示新的时间(当有键盘操作时退出程序)。 显示时间格式:小时:分钟:秒 /* DEV C++ Win XP*/ #include #include #include #include typedef struct { int x; int y; }Point; time_t now; struct tm *pt,t1,t2; int printpoint(Point p) { Point p1; p1.x=p.x+2; p1.y=p.y+4; gotoxy(p1.x,p1.y); printf("%c%c",2,2); gotoxy(p1.x, p1.y+1); printf("%c%c",2,2); p1.y+=4; gotoxy(p1.x,p1.y); printf("%c%c",2,2); gotoxy(p1.x,p1.y+1); printf("%c%c",2,2); return 0; } int print0(Point p) { int i=0; for(;i<13;i++) { gotoxy(p.x+1, p.y+i); if(i==0||i==12) printf("%c%c%c%c%c%c",2,2,2,2,2,2); else printf("%c%4s%c",2," ",2); } return 0; }

int print1(Point p) { int i=0; for(;i<13;i++) { gotoxy(p.x+1, p.y+i); printf("%5s%c"," ",2); } return 0; } int print2(Point p) { int i=0; for(;i<13;i++) { gotoxy(p.x+1, p.y+i); if(i==0||i==6||i==12) printf("%c%c%c%c%c%c",2,2,2,2,2,2); else if(i>0&&i<6) printf("%5s%c"," ",2); else printf("%c",2); } return 0; } int print3(Point p) { int i=0; for(;i<13;i++) { gotoxy(p.x+1, p.y+i); if(i==0||i==6||i==12) printf("%c%c%c%c%c%c",2,2,2,2,2,2); else printf("%5s%c"," ",2); } return 0; } int print4(Point p) {

基于c语言单片机电子时钟课程设计报告书

课程设计报告 课程名称:单片机程序设计 报告题目:电子时钟 学生: 所在学院:信息科学与工程学院专业班级: 学生学号: 指导教师:

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

摘要 单片计算机即单片微型计算机。由RAM、ROM、CPU构成。定时,计数和多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。而51系列单片机是各单片机中最为典型和最有代表性的一种。这次课程设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。 本设计主要设计了一个基于AT89C51单片机的电子时钟。并在数码管上显示相应的时间。并通过一个控制键用来实现时间的调节和是否进入省电模式的转换。应用Proteus的ISIS软件实现了单片机电子时钟系统的设计与仿真。该方法仿真效果真实、准确,节省了硬件资源。 关键词:单片机;子时钟;键控制

目录 一、概述 (5) 1.1电子时钟简介 (5) 1.2电子时钟的基本特点 (5) 1.3电子时钟的原理 (5) 二、方案设计选择 (5) 2.1计时方案 (5) 2.2显示方案 (5) 三、硬件设计 (6) 3.1单片机型号选择 (6) 3.2数码管显示工作原理 (6) 3.3键盘电路设计 (7) 3.4电路原理图 (7) 四、软件设计 (7) 五、结论与心得 (15) 六、参考文献 (16)

一、概述 1.1 电子时钟简介 1957年,Ventura发明了世界上第一个电子表,从而奠定了电子时钟的基础,电子时钟开始迅速发展起来。现代的电子时钟是基于单片机的一种计时工具,采用延时程序产生一定的时间中断用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小时进一,满二十四小时小时清零。从而达到计时的功能,是人民日常生活补课缺少的工具。 1.2 电子时钟的基本特点 现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED

数字万年历简易C语言程序源代码

#include"reg52.h" #define uchar unsigned char #define uint unsigned int sbit rs=P2^0; // lcd 控制端 sbit en=P2^2; // lcd 控制端 sbit all=P2^1; // lcd 控制端 sbit s0=P1^5; //时间调节 sbit s1=P1^6; sbit s2=P1^7; sbit voice=P2^7; int nt; sbit DQ=P2^6; sbit DS1302_CLK = P2^3; //实时时钟时钟线引脚sbit DS1302_IO = P2^4; //实时时钟数据线引脚sbit DS1302_RST = P2^5; //实时时钟复位线引脚sbit ACC0 = ACC^0; sbit ACC7 = ACC^7; unsigned char time; #define ads_y 0 #define ads_mo 3 #define ads_d 6 #define ads_w 9 #define ads_h 65 #define ads_m 68 #define ads_s 71 #define DS1302_SECOND 0x80 //写入ds地址宏定义 #define DS1302_MINUTE 0x82 #define DS1302_HOUR 0x84 #define DS1302_WEEK 0x8A #define DS1302_DAY0x86 #define DS1302_MONTH 0x88 #define DS1302_YEAR 0x8C

电子钟显示时分秒c语言程序

/*电子钟显示时分秒*/ #include sbit INCH=P3^2; //小时加1 sbit INCM=P3^3; //分钟加1 #define LCDP P0 // 定义LCM 接至P0 sbit RS = P2^7; // 暂存器选择位元(0:指令,1:资料) sbit RW = P2^6; // 设定读写位元(0:写入,1:读取) sbit E = P2^5; // 致能位元(0:禁能,1:致能) sbit BF = P0^7; // 忙碌检查位元(0:不忙,1:忙碌) char count=20; // 中断次数计数,20次*50ms=1秒 char time0[]="CLOCK"; // 显示时间阵列(第1行) char time[11]; // 显示时间阵列(第2行) bit ampm=1; // 0:上午(am),1:下午(pm),初值下午 char hour=11; // 声明时,初值为11点 char minute=59; // 声明分,初值为59分 char second=50; // 声明秒,初值为50秒 void transfer(void); // 转换时分秒至time阵列中 void write_inst(char); // 写入指令函数 void write_char(char); // 写入字元函数 void write_pat(void); // 写入自建字型函数 void check_BF(void); // 检查忙碌函数 void init_LCM(void); // 声明LCM初始设定函数 void delay(int); //去抖函数 main() { char i; init_LCM(); // 初始设定 IE=0X87; // T0、INT0、INT1中断使能TMOD=0x01; // T0设为MODE1 TH0=(56636-50000) / 256; // 填入计时量之高位元组 TL0=(56636-50000) % 256; // 填入计时量之低位元组 TR0=1; // 启动Timer 0 write_inst(0x85); // 指定第1列位置 for (i=0;i<5;i++) write_char(time0[i]); //显示CLOCK while(1) { transfer(); // 转换时分秒至time阵列中write_inst(0xC0); // 指定第2列位置 for (i=0;i<11;i++) write_char(time[i]);// 显示时间 } } //转换函数 void transfer(void)

数字时钟c语言代码

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY SECOND1 IS PORT(CLKS,CLR:IN STD_LOGIC; SECS,SESG:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUT1:OUT STD_LOGIC); END SECOND1; ARCHITECTURE S OF SECOND1 IS BEGIN PROCESS(CLKS,CLR) V ARIABLE SS,SG:STD_LOGIC_VECTOR(3 DOWNTO 0); V ARIABLE CO:STD_LOGIC; BEGIN IF CLR='1' THEN SS:="0000";SG:="0000"; ELSIF CLKS'EVENT AND CLKS='1' THEN IF (SS="0101") AND (SG="1001") THEN SS:="0000";SG:="0000";CO:='1'; ELSIF SG<"1001" THEN SG:=SG+1;CO:='0'; ELSIF SG="1001" THEN SG:="0000";SS:=SS+1;CO:='0'; END IF; END IF;COUT1<=CO; SECS<=SS; SESG<=SG; END PROCESS; END S; LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY MIN1 IS PORT(CLKM,CLR:IN STD_LOGIC; MINS,MING:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0); ENMIN,ALARM:OUT STD_LOGIC); END MIN1; ARCHITECTURE M OF MIN1 IS BEGIN PROCESS(CLKM,CLR) V ARIABLE MS,MG:STD_LOGIC_VECTOR(3 DOWNTO 0); V ARIABLE SO,ALM:STD_LOGIC; BEGIN IF CLR='1' THEN MS:="0000";MG:="0000";

模拟时钟行走 C语言程序

模拟时钟行走 课程设计总体要求 采用模块儿化程序设计; 鼓励可视化编程; 源程序中有足够的注释; 学生可自行增加新功能模块儿; 必须上机调试通过; 注重算法运用,优化存储效率与运算效率; 需提交源程序及相关文件; 目录 1 课程任务书 2 系统设计 3 模块设计 3.1 总体结构 3.2 流程图 3.3 使用的主要函数 4 调试及测试 1、调试过程中的问题 2、调试结果 5 设计总结 6 心得体会及致谢 7 答辩记录 8 教师意见

一、课程设计任务书 在屏幕上显示一个活动时钟;能模拟机械钟表行走;准确地利用数字显示日期和时间;按任意键时程序退出。 二、系统设计 总体结构:在绘图窗口中先画出表盘后获取系统的时间,利用得到的系统时间计算表针的位置,并将时间在屏幕上输出。每隔一秒读取一次时间,直到键盘有输入为止。 流程图 开始 初始化绘画窗口 画表盘 否 获取系统时间 结束 使用的主要函数: setlinestyle 设置画线 setcolor 设置颜色

line(int x1,int y1,int x2,int y2)画直线 circle(int x,int y,int r)画圆 outtextxy(int x,int y,char *textstring)在指定位置输出字符 initgraph(int x, int y); 初始化绘图窗口 setwritemode( ); 设置绘图模式 kbhit() 检查是否有键盘输入 GetLocalTime(&ti); 获取当前时间 sleep() 程序暂停若干时间 三、模块设计 主要模块功能、源代码及注释: 1.计算表针的位置并画出表针 void Drawzhizhen(int hour, int minute, int second) { double a_hour, a_min, a_sec; // 时、分、秒针的弧度值 int x_hour, y_hour, x_min, y_min, x_sec, y_sec; // 时、分、秒针的位置 a_sec = second * 2 * PI / 60; // 计算时、分、秒针的弧度值 a_min = minute * 2 * PI / 60 + a_sec / 60; a_hour= hour * 2 * PI / 12 + a_min / 12; x_sec = int(120 * sin(a_sec)); y_sec = int(120 * cos(a_sec)); ///计算时、分、秒针的位置 x_min = int(100 * sin(a_min)); y_min = int(100 * cos(a_min)); x_hour= int(70 * sin(a_hour)); y_hour= int(70 * cos(a_hour)); setlinestyle(PS_SOLID, NULL, 10); // 画时针 setcolor(BLUE); line(300 + x_hour, 240 - y_hour, 300, 240 );

基于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单片机数码管显示时钟(C语言)

//以下程序都是在VC++6.0 上调试运行过的程序,没有错误,没有警告。 //单片机是STC89C52RC,但是在所有的51 52单片机上都是通用的。51只是一个学习的基础平台,你懂得。 //程序在关键的位置添加了注释。 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////以下是主文件main.c 的内容 /****************************************************************************** * * 实验名: 万年历实验 * 使用的IO : * 实验效果:1602显示时钟 * 注意: ******************************************************************************* / #include #include"ds1302.h" //数码管IO #define DIG P0 sbit LSA=P2^2; sbit LSB=P2^3; sbit LSC=P2^4; unsigned char code DIG_CODE[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char Num=0; unsigned int disp[8]={0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f}; void LcdDisplay(); void Timer0Configuration(); /****************************************************************************** * * 函数名: main * 函数功能: 主函数 * 输入: 无 * 输出: 无 ******************************************************************************* / void main() {

电子钟的设计 C语言编程

课程设计说明书 课程设计名称:专业课程设计 课程设计题目:电子钟的设计 学院名称:信息工程学院 专业:电子信息工程班级: XXXXXX 学号: XXXXXXXX 姓名: XXXX 评分:教师: XXXXXX 20 XX 年 X 月 X 日

当今信息科技高速发展,使用方便、低成本电子设备已逐步成为我们日常生活中电子产品的主力军。用软件代替硬件的电子设备能大大地节省成本,且有利于资源的节约,因此,以软代硬的设计必将成为我们现代设计的主流。本设计是利用MCS-51系列单片机内部的定时器/计数器进行中数年定时,配合软件延时实现时、分、秒的计时。该方案节省硬件成本,且能够使设计者在定时/计数器的使用中及程序设计方面得到锻炼和提高,因此本系统将采用软件方法实现计时。 关键词:单片机计数器软件

第一章实验要求及设计思路 (4) 1.1 设计内容及要求 (4) 1.2 设计的目与和意义 (4) 1.3 设计的基本思路与主要内容 (5) 第二章系统组成及工作原理 (6) 2.1 系统组成 (6) 2.2工作原理 (7) 第三章硬件设计与分析 (9) 3.1 硬件设计原理 (9) 3.2 AT89C51单片机介绍 (9) 3.3单片机最小应用系统 (9) 3.4显示电路 (11) 3.5 键盘及其接口 (12) 第四章软件设计 (14) 4.1 主程序设计 (14) 4.2 定时中断程序 (17) 4.3 显示子程序 (17) 第五章调试与运行 (19) 第六章结论与体会 (20) 参考文献 (21) 附录一系统原理图 (22) 附录二元件清单 (23) 附录三程序清单 (24)

钟表源程序代码

钟表源程序代码 采用了easyx图形库 作者:转角梦覃飞絮 #include #include #include #include #include #define PI 3.1415926 //自定义函数声明 void draw_biaozhen(int x,int y,int second,int minute,int hour);//画表针函数 void numbertime(int year,int month,int day,char week,int second,int minute,int hour);//显示数字时间 void draw_biaopan(int x,int y);//画表盘 void huaxian(); //画心形线 void main() { initgraph(640,480); srand((unsigned)time(NULL)); int x=320,y=240; //设定表盘圆心位置 SYSTEMTIME time; //定义变量保存当前时间 //画心形线 outtextxy(20,40,"稍后进入钟表界面..."); huaxian(); cleardevice(); setwritemode(R2_XORPEN); //设置XOR绘图模式 //画表盘 draw_biaopan( x, y); while(!kbhit()){ //有用户键就退出 GetLocalTime(&time); numbertime(time.wYear ,time.wMonth,time.wDay ,time.wDayOfWeek ,time.wSecond ,time. wMinute,time.wHour); //画指针 draw_biaozhen(x,y,time.wSecond ,time.wMinute ,time.wHour ); Sleep(1000); //擦表针

51单片机电子钟C语言程序1

基于51单片机的电子钟C语言程序 #include #include #define uchar unsigned char #define uint unsigned int /*七段共阴管显示定义*/ uchar code dispcode[ ]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F, 0xBF,0x86,0xCB,0xCF,0xEF,0xED,0xFD,0x87,0xFF, 0xDF}; /*定义并初始化变量*/ uchar seconde=0; uchar minite=0; uchar hour=12; uchar mstcnt=0; sbit P1_0=P1^0; // second 调整定义 sbit P1_1=P1^1; //minite调整定义 sbit P1_2=P1^2; //hour调整定义 /*函数声明*/ void delay(uchar k ); //延时子程序 void time_pro( ); //时间处理子程序 void display( ); //显示子程序 void keyscan( ); //键盘扫描子程序 /*****************************/ /*延时子程序*/ /****************************/ void delay (uchar k) { uchar j; while((k--)!=0) { for(j=0;j<125;j++) {;} } } /**************************/ /*时间处理子程序*/ /**************************/ void time_pro( void) {

51单片机秒表计时器课程设计报告(含C语言程序)

XXXXXX学院 51单片机系统设计课程设计报告 题目:秒表系统设计 专业、班级: 学生姓名: 学号: 指导教师: 分数:

[摘要]本设计是一个秒表计时器,采用51单片机实现。电路包括以下几部分: 单片机最小系统部分,数码管显示部分,摁键开关部分部分。电路选用共阴型4位数码管组成时钟显示电路;时钟的增减控制以及清零部分主要由轻触开关构成的摁键系统组成;信号接收和处理部分主要由单片机来执行。接通电源后,秒表计时器处于初始状态,4位数码管显示000.0。当摁下“开始”开关时,秒表开始计时,数码管显示当前状态的时间。当再次摁下开关时,数码管停止计时。摁下“清零”键后,系统重新回到初始状态。 [关键词]单片机最小系统秒表计时摁键控制

1、任务 设计一个秒表计时器,在51单片机的控制作用下,采用4个LED数码管显示时间,计时范围设置为00.0~60.0秒,即精确到0.1秒,用按键控制秒表的“开始”、“暂停”、“复位”,按“开始”按键,开始计时;按“暂停”按键,系统暂停计时;再按“开始”键,系统继续计时;数码管显示当前计时值;按“复位”按键,系统清零。 2、设计要求 (1)开始时显示00.0。每按下S1键一次,数值加1s; (2)每按下S2键一次,数值减1s; (3)每按下S3键一次,数值清零; (4)每按下S4键一次,启动定时器使数值开始自动每秒加1, 再次按下S4键,数值停止自动加1,保持显示原数。 3、发挥部分 (1)开关按键3:“复位 60.0”按键(用来60秒倒计时)。按键按下去时数码管复位为“60.0”(用于倒计时)。 (2)开关按键4:倒计时“逐渐自减”按键。按键按下去则是数码管开始“逐渐自减”倒计时。 (3)开关按键5:倒计时初始值“增加”按键。 (4)开关按键6:倒计时初始值“减小”按键。 4、课程设计的难点 单片机电子秒表需要解决三个主要问题,一是有关单片机定时器(一个控制顺序计时,一个控制倒计时)的使用;二是如何实现 LED 的动态扫描显示;三是如何对键盘输入进行编程。 5、课程设计仪器 集成电路芯片STC89C52,八段数码管,MCS-51系列单片机微机仿真课程系统中的软件(keil uvision2)。

C语言实现电子钟编程

/************************************************************** ********二班第二组电子钟程序 ******** ***********************************************************/ #include #define uchar unsigned char #define uint unsigned int uchar duan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uchar wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; uchar i,j,k,a=0,b=0; uchar s=12,f=0,m=0; //定义时、分、秒变量 sbit LED=P1^3; sbit k1=P3^0; // 控制暂停和启动 sbit k2=P3^1; //功能选择键 sbit k3=P3^2; sbit k4=P3^3; /************************************************************** ********延时函数******** ***********************************************************/ void delay(uint k) { for(i=0;i<60;i++) for(j=0;j

基于单片机C语言电子时钟完整版(闹钟,整点报时)

《单片机技术》课程设计说明书 数字电子钟 系、部:电气与信息工程学院 学生姓名: 指导教师:职称 专业: 班级: 完成时间:2013-06-07

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

ABSTRACT Clock is widely used in life, and a simple digital clock is more welcomed by people. So to design a simple digital electronic clock is necessary.The system use a single chip AT89S52 of ATMEL’s as its core to control The crystal oscillator clock,using of E-12MHZ is connected with the microcontroller AT89S52, through the software programming method to achieve a 24-hour cycle, and eight 7-segment LED digital tube (two four in one digital tube) displays hours, minutes and seconds requirements, and in the time course of a timing function, when the time arrived ahead of scheduled time to buzz a good timekeeping. The clock has four buttons KEY1, KEY2, KEY3,KEY4 and KEY5 key, and make the appropriate action can be achieved when the school, timing, reset. With a time display, alarm clock settings, timer function, corrective action. Accurate travel time, display and intuitive, precision, stability, and so on. With a high application value. Key words Electronic clock;;AT89S52;Hardware Design;Software Design

时钟显示设计c语言

时钟显示设计 1 功能:实现时钟的实时显示与定时 2 基本要求: (1)画出表盘时钟,时、分、秒针填充不同的颜色(自选)。(2)数字同步显示时间信息。 (3)整点报时。 (4)通过键盘输入闹铃时间,实现闹铃功能。 3 相关知识:图形操作、按键操作、时间函数等 4 功能扩充:1)实现秒表功能 2)给出其它国家的时钟同步信息

目录 一、题目介绍: (3) 二、小组成员信息:........................................................................................... 错误!未定义书签。 三、总体设计: (3) 四、模块划分: (3) 五、算法说明: (3) 六、各模块函数功能及流程图: (1) 七、程序测试: (5) 八、结论: (9) 九、体会及建议:............................................................................................... 错误!未定义书签。 十、参考文献:................................................................................................... 错误!未定义书签。附录:源程序清单. (9)

题目介绍: 时钟显示设计可以实现时钟的实时显示与定时,并且具有整点报时与闹铃的功能,具有动态效果,能够激发学生学习c语言的兴趣与热情。在设计过程中会遇到没有学过的知识,这需要自己查阅资料来完成,所以还是有一定难度的。 总体设计: 本程序设计分为三步: 1 是对时钟程序做全面的分析,即对程序要使用的编写方法功能,运行方式进行分析,并做出正确的解决方案。 2 是程序的编写。由于该程序所涉及的信息比较广泛,所以程序的编写也有些复杂。程序编写是一项困难的任务,完成此项目必须运用大量的知识,而且要有清晰的思路和较强的语言组织能力。 3 是对程序的检查和系统的调用。当程序运行时,会显示出一个时钟,并且具有一定的功能。 模块划分: 1 计算时分秒针的弧度值和末端位置, 2 画时针,分针,秒针, 3 绘制表盘,刻度, 4 设定闹钟,整分钟报时功能, 5 画表针,擦表针。 算法说明: 主函数:运用for,if等语句,执行对应的函数。 Void DrawDial 函数:画表盘。 Void DrawHand 函数:画时针,分针,秒针。

简单的时钟程序(C语言)

#include // 头文件 #define uchar unsigned char; #define uint unsigned int; /////**********全局变量声明************************* uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //0-9段码表uchar h,m,s,k=0,j; void delay(); void display() ; //*****************延时1ms************************ void delay() { unsigned char i,j; for(i=0;i<20;i++) for(j=0;j<100;j++); } //*******************函数初始化******************** void int_init() { EA=1; TMOD=0x01;; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; //定时器T0开启 ET0=1; //定时器0允许中断 P0 = 0X00; P2 = 0X00; h=m=s=0; //****时,分,秒,初值 } //******************数码管显示函数*********************** void display() { P0=tab[h/10]; //取小时的十位 P2=0x01; delay(); P2=0X00; //P2口清屏 P0=tab[h%10]; //取小时的个位 P2=0x02; delay(); P2=0X00; P0=tab[m/10]; //取分钟的十位

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

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

设计目的 加深对讲授内容的理解,尤其是一些语法规定。通过课程设计,自然地、熟练地掌握。熟悉所用的计算机系统的操作方法,也就是熟悉语言程序开发的环境。学会上机调试程序。熟悉C语言图形模式下的编程,掌握利用C语言相关函数开发电子时钟的基本原理。 能模拟机械钟表行走;要准确地利用数字显示时间;在屏幕上显示一个活动时钟;程序界面设计合理,色彩得体大方,显示正确;各指针运动规律正确;数字式时钟的时间显示与指针式时钟显示一致。 总体设计 电子时钟的功能描述

电子时钟流程图 模块描述 动画处理模块在屏幕上显示sin和cos型的动态函数图像,显示运动的问候语。 转时针动处理模块指针式的时钟表盘为椭圆形并且圆周上有分布均匀的12个刻度刻度显示清楚钟面上有长度不相同的指针即时针、分针、秒针指针的运动具有规律性为顺时针。 数字时钟处理模块数字钟显示时间的格式是年月日时分秒小时为24进制,分钟和秒是60进制,指针式的时钟和数字式的时钟显示的时间同步且两个时钟所显示的时间与计算机的系统时间一致。 详细设计 time结构体 strume time { usigned char ti_min; usigned char ti_hour; usigned char ti_hud; usigned char ti_sec; }; time 结构体定义在dos.h文件中,可以保存系统的当前时间。

double h,m,s;这三个变量分别保存小时,分钟,秒。 double x,y,x1,y1,x2,y2;保存数字时钟中小时分钟秒在屏幕中显示的位置。 struct time t[1];定义一个time结构类型的数组。 函数功能的描述 1.def() 函数原型: void def() def()函数是用来输出一组彩带的,通过输入位置和颜色的变化来输出sin型的彩带,且在整个函数中保留结果。 2. abc() 函数原型: void abc() abc()函数是用来在退出系统是输出运动的问候语,函数类型单一且比较简单。 3 .digitclock() 函数原型:void digitclock() digitclock函数用于在(x,y)位置显示clock值,clock值为时分秒。 4. clockhandle() 函数原型:void clockhandle() clockhandle()函数用于完成时针转动和数字时钟的显示,包括时针转动角度的运算,还有对声音的输出。

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