数字钟C语言源程序

数字钟C语言源程序
数字钟C语言源程序

数字钟C语言源程序

********************************************************************** #include

#include

#define uchar unsigned char

#define wei XBYTE[0x0FF20] //将82255PA口映射为数码管的位选,与硬件连接相对应

#define duan XBYTE[0x0FF21] //将8255PB口映射为数码管的段选,与硬件连接相对应

#define control XBYTE[0xff23]//将8255控制寄存器地址定义为control,与硬件连接相对应

#define int8 unsigned char

#define int16 unsigned int

sbit key1=P3^0; //设置键

sbit key2=P3^1; //加键

sbit key3=P3^2; //减键

Unsigned char dis[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//要显示的段码

uchar a=0,counter,hour=12,minute=0,second=0;

void delay(uchar x) //延时函数,约x us

{

while(x--);

}

void display(int8 hour,int8 minute,int8 second) //动态扫描程序

{

int8 hs,hg,ms,mg,ss,sg;

int8 counter;

hs=hour/10;//定义小时显示的十位

hg=hour%10;//定义小时显示的个位

ms=minute/10;//定义分钟显示的十位

mg=minute%10;//定义分钟显示的个位

ss=second/10;//定义秒钟显示的十位

sg=second%10;//定义秒钟显示的个位

duan=0xff;//关闭所有数码管显示

duan=dis[sg];

wei=0xfe;

for(counter=0;counter<100;counter++);

duan=0xff; //关闭所有数码管显示,防止上一个数据的干扰

duan=dis[ss];//送秒的十位段位码

wei=0xfd; //打开秒十位的位选,显示秒

for(counter=0;counter<100;counter++); //延时约100us,让数码管有足够

的点亮时间

duan=0xff;

duan=dis[mg];

wei=0xfb;

for(counter=0;counter<100;counter++);

duan=0xff;

duan=dis[ms];

wei=0xf7;

for(counter=0;counter<100;counter++);

duan=0xff;

duan=dis[hg];

wei=0xef;

for(counter=0;counter<100;counter++);

duan=0xff;

duan=dis[hs];

wei=0xdf;

for(counter=0;counter<100;counter++);

}

void time_int() //定时器初始化

{

TMOD=0x01;//设置定时器0为模式1,16位

TH0=0x4c;

TL0=0x00; //装定时器初始值,定时中断一次为50ms时间

EA=1; //开总中断

ET0=1; //开定时器中断

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

}

void key()

{

if(key1==0) //设置键按下

{

delay(5);//消除抖动

while(key1==0)display(hour,minute,second); //当设置键处于按下的状态时一直显示当前时间(松手检测)

a++; //设置键释放后标志位加1

if(a==4)

{

TR0=1;

a=0;

}

if(a>=1)TR0=0;//关断定时器,时间停止

}

if(a==1)

{

if(key2==0)

{

while(key2==0)display(hour,minute,second);

hour++;

if(hour==24)hour=0;

}

if(key3==0)

{

while(key3==0)display(hour,minute,second);

hour--;

if(hour==-1)hour=23;

}

}

if(a==2)

{

if(key2==0)

{

while(key2==0)display(hour,minute,second);

minute++;

if(minute==60)minute=0;

}

if(key3==0)

{

while(key3==0)display(hour,minute,second);

minute--;

if(minute==-1)minute=59;

}

}

if(a==3)

{

if(key2==0)

{

while(key2==0)display(hour,minute,second);

second++;

if( second==60) second=0;

}

if(key3==0)

{

while(key3==0)display(hour,minute,second);

second--;

if( second==-1) second=59;

}

}

}

main()

{ control=0x81;//8255A口和B口为输出

time_int(); //定时器初始化函数

while(1)

{

key(); //调用键盘程序,一旦有键就进入设置

if(a==0||a==1||a==2||a==3||a==4)display(hour,minute,second);//始终显示当前时间

}

}

void time_interrupt() interrupt 1 //定时器0中断溢出处理函数,自动处理,无需主函数调用

{

TH0=0x4c;

TL0=0x00; //重装定时器初始值,定时中断一次为50ms时间

counter++;

if(counter==20) //记20次中断恰好为1s

{

counter=0;

second++;

if(second==60)

{

second=0;

minute++;

if(minute==60)

{

minute=0;

hour++;

if(hour==24)

{

hour=0;

}

}

}

}

}

基于单片机的电子钟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++;

c语言程序代码

1.要求在屏幕上输出下一行信息。 This is a c program. 程序: #include int main() { printf(“this is a c program.\n”); return 0; } 2.求两个整数之和。 程序: #include int main() { int a,b,sum; a=122; b=234; sum=a+b; printf(“sum is %d\n”,sum); return 0; } 3.求两个整数之间的较大者。

#include int main() { int max(int x,int y); int a,b,c; scanf("%d,%d",&a,&b); c=max(a,b); printf("max=%d\n",c); return 0; } int max(int x,int y) { int z; if(x>y)z=x; else z=y; return(z); } 4.有人用温度计测量出华氏发表示的温度(如69°F),今要求把 她转换成以摄氏法表示的温度(如20℃)。 公式:c=5(f-32)/9. 其中f代表华氏温度,c代表摄氏温度。

#include int main() { float f,c; f=64.0; c=(5.0/9)*(f-32); printf("f=%f\nc=%f\n",f,c); return 0; } 5.计算存款利息。有1000元,想存一年。有一下三种方法可选: (1)活期:年利率为r1;(2)一年定期:年利率为r2;(3)存两次半年定期:年利率为r3。分别计算一年后按三种方法所得到的本息和。 程序: #include int main() { float p0=1000,r1=0.0036,r2=0.0225,r3=0.0198,p1,p2,p3; p1=p0*(1+r1); p2=p0*(1+r2);

模拟电子时钟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) {

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);

基于51单片机的数字钟C语言程序设计及protuse仿真

实践教学报告2011-2012 学年第二学期 项目名称基于51单片机的数字钟设计所属课程电子产品开发设计与实践教程 班级电子10A1 姓名赵祥琨 学号1006013145 指导教师张亚 实训时间2012 . 6

电子钟 摘要 本系统以MCS-51单片机为核心,以8位8段数码管显示时间,可以通过键盘设定时间和闹钟时间,并具备整点报时功能。 系统特色:1)使用定时器产生节拍,程序运行采用轮循机制,分时复用CPU 资源,增强系统可靠性。 2)采用采用三个按键设置时钟时间和闹钟时间,使用一个按键关闭闹钟,电路结构简单,使用方便。 关键词:电子钟;C语言;MCS-51;电子 ELECTRONIC CLOCK Abstract: The system takes the MCS-51 single chip as the core,display time on 8X7seg,Through the keyboard to set the time and alarm time, and with the whole point timekeeping function. System characteristics:1)Use timer produces beats, running the round-robin mechanism, time division multiplexing CPU resources, improve the reliability of the system. 2)Using three key clock set time and alarm time, the use of a button to turn off the alarm, the circuit structure is simple, easy to use. Keywords:…electronic ;C language;electronics

C语言程序设计 入门源代码代码集合

#include <> void print_star(void) { printf("*****************\n"); } void print_welcome(void) { printf("C language,welcome!\n"); } void main() { print_star(); print_welcome(); print_star(); getchar(); } 演示2 #include "" int sum(int i,int j) { return(i + j); } void main() { int n1,n2; printf("input 2 numbers:\n"); scanf("%d%d",&n1,&n2); printf("the sum = %d\n",sum(n1,n2)); getchar(); } 演示3 #include "" int maxnum(int,int,int); main() { int a,b,c; printf("Please enter 3 numbers:\n"); scanf("%d,%d,%d",&a,&b,&c); printf("Maxnum is %d\n",maxnum(a,b,c)); return 0;

} int maxnum(int x,int y,int z) { int max=x; if(y>max) max = y; if(z>max) max = z; return max; } 演示4 #include <> int s1(int n) { int j,s; s=0; for(j=1;j<=n;j++) s=s+j; return s; } int sum(int n) { int i,s=0; for(i=1;i<=n;i++) s=s+s1(i); return s; } void main() { int n; printf("n:"); scanf("%d",&n); printf("s=%d\n",sum(n)); } 演示5 #include <>

基于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语言程序设计-入门源代码代码集合

演示1 #include void print_star(void) { printf("*****************\n"); } void print_welcome(void) { printf("C language,welcome!\n"); } void main() { print_star(); print_welcome(); print_star(); getchar(); } 演示2 #include "stdio.h" int sum(int i,int j) { return(i + j); } void main() { int n1,n2; printf("input 2 numbers:\n"); scanf("%d%d",&n1,&n2); printf("the sum = %d\n",sum(n1,n2)); getchar(); } 演示3 #include "stdio.h" int maxnum(int,int,int); main() { int a,b,c; printf("Please enter 3 numbers:\n"); scanf("%d,%d,%d",&a,&b,&c); printf("Maxnum is %d\n",maxnum(a,b,c));

return 0; } int maxnum(int x,int y,int z) { int max=x; if(y>max) max = y; if(z>max) max = z; return max; } 演示4 #include int s1(int n) { int j,s; s=0; for(j=1;j<=n;j++) s=s+j; return s; } int sum(int n) { int i,s=0; for(i=1;i<=n;i++) s=s+s1(i); return s; } void main() { int n; printf("n:"); scanf("%d",&n); printf("s=%d\n",sum(n)); } 演示5

电子钟显示时分秒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语言程序源代码

/**返回的long型的最大值是startLongValue+count-1(产生一个随机数) * param needCount * param count * param startLongValue * return */ public static List randomNoRepeatLongArray(int needCount,int count,long startLongValue){ //这种情况会出现无限循环的 if(needCount>count) return null; Random random = new Random(); int[] ints = new int[count]; for(int i=0;i list = new ArrayList(); while(list.size() #include #include

C语言程序设计(医院信息管理系统)附源代码

专业设计报告 课程名称: C 语言程序设计 课题名称:医院信息管理系统 专业班别: 12本计算机科学与技术二班 姓名: 学号: 指导教师: 设计日期: 2012-5-25

教师评语:

成绩评定: 指导教师签名: 日期: 2012 年月日 课程设计题目医院信息管理程序 作者姓名: 同组成员: 摘要利用结构体存储每个病人的信息和每种药品的信息,并使用链表存储全部病人的信息;能完成对医院内所有病人信息的注册、查询、删除和修改等操作,同时又能对药房内库存的药品进行查询;可以将链表中的病人信息保存在文件中,并且可以对文件中的病人信息进行读取与显示 1.专业设计目的

1、掌握链表的操作,包括链表节点的创建、释放还有链表的遍历 2、掌握对二进制文件的创建、增添等基本操作。 3、熟悉C语言函数的使用方法,学会模块化处理问题以及多个源文件的处理方式 2.设计基本要求( 1、使用结构体来存储病人的信息,结构体中包括病的id号码、姓名、病历以及消费信息,并用链表将所有病人信息整合。 2、用文件来存储链表的信息以便下次再使用该程序时载入病人信息 3、能够实现病人信息的注册、病人信息的查询、病人消费统计、保存链表信息、载入链表信息、查询库存等几项功能。 4、要求用四个源文件、、、 5、系统完成后应实现类似下面所示界面

3、算法分析 1、数据结构 设计链表中的一个节点存储一个病人的信息,使用下面的结构体类型定义:struct patient{ char id[10]; char name[10]; char casehist[200]; int cost[3]; int transfusion;

C语言程序设计医院信息管理系统附源代码样本

专业设计报告 课程名称: C 语言程序设计 课题名称: 医院信息管理系统 专业班别: 12本计算机科学与技术二班姓名: 学号: 指导教师: 设计日期: -5-25

教师评语: 成绩评定: 指导教师签名: 日期: 年月日 课程设计题目医院信息管理程序

作者姓名: 同组成员: 摘要利用结构体存储每个病人的信息和每种药品的信息, 并使用链表存储全部病人的信息; 能完成对医院内所有病人信息的注册、查询、删除和修改等操作, 同时又能对药房内库存的药品进行查询; 能够将链表中的病人信息保存在文件中, 而且能够对文件中的病人信息进行读取与显示1.专业设计目的 1、掌握链表的操作, 包括链表节点的创立、释放还有链表的遍历 2、掌握对二进制文件的创立、增添等基本操作。 3、熟悉C语言函数的使用方法, 学会模块化处理问题以及多个源文件的处理方式 2.设计基本要求( 1、使用结构体来存储病人的信息, 结构体中包括病的id号码、姓名、病历以及消费信息, 并用链表将所有病人信息整合。 2、用文件来存储链表的信息以便下次再使用该程序时载入病人信息 3、能够实现病人信息的注册、病人信息的查询、病人消费统计、保存链表信息、载入链表信息、查询库存等几项功能。 4、要求用四个源文件main.c、link.c、find.c、save_load.c 5、系统完成后应实现类似下面所示界面

3、算法分析 1、数据结构 设计链表中的一个节点存储一个病人的信息, 使用下面的结构体类型定义: struct patient{ char id[10]; char name[10]; char casehist[200]; int cost[3]; int transfusion; int surgery; struct patient *next; };

数字万年历简易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 #include #include #include #define n 2 #define m 1 #define w 1 #define null 0 typedefstruct { intitemnum; int top; int range[5]; int mark[5]; }itemnode; typedefstruct { intschoolnum; int score; intmscore; intwscore; itemnode c[m+w]; }headnode; headnode h[n]; voidinputinformation() { inti,j,k,s; for(i=0;i

scanf("%d",&h[i].c[j].itemnum); printf("*****取前3名or前5名:"); scanf("%d",&h[i].c[j].top); printf("*****获得几个名次:"); scanf("%d",&k); for(s=0;s<5;s++) h[i].c[j].range[s]=0, h[i].c[j].mark[s]=0; for(s=0;s

基于PIC16F887单片机的数字钟完整c程序代码

#include __CONFIG (0x20F1); __CONFIG (0x3FFF); //调试用 #define LCD_E RD6 //LCD E 读写使能控制 #define LCD_RW RD5 //LCD 读(1)/写(0)控制线 #define LCD_RS RD4 //LCD 寄存器选择数据(1)指令(0) //RD4-RD7分别接DB4-DB7,RD7为忙标志 #define COM 0 //在LCD_WRITE()中的第2参数为0表示写命令#define DAT 1 //在LCD_WRITE()中的第2参数为1表示写数据 #define mod RB3//模式选择(时间、闹钟、温度、秒表) #define set RB0//选择按键 #define add RB1//加按键 #define miu RB2//减按键 #define RTR 0b00000000 //TC74的读温度命令 #define TC74_ADD 0b1001101 //TC74的7位地址 #define LINE1 0b10000000 #define LINE2 0b11000000 signed char hourt,mint,sect;//闹钟设置位 int f;//闹钟显示清零判断 char flag=0;//按键标志位 char WW,QW,BW,SW,GW,M; char table[]="Mon Tue Wed Thu Fri Sat Sun ";//星期 signed char year,month,day,week,hour,min,sec,a,T; bank1 char DD[16]; //一行LCD显示数据暂存 char A[7];//DS1307读数 //====LCD程序 void CSH(void); //初始化 void LCD_CSH(void); //LCD初始化 void LCD_BUSY(void); //检测LCD是否忙 char LCD_READ(void); //读LCD,忙检测用 void LCD_WRITE(char,char); //LCD写1字节,命令或数据 void LCD_WRITE_4(char,char); //LCD写半字节 void DISP_C(char); //在指定行中显示字符,字符在数组DD中void DISP_MENU(const char *); //由常数数组显示整屏字符

数字时钟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 );

c语言动画程序源码

C语言动画程序 #include #include #include #include #define pi 3.1415926535 double ca3mm1(double m1,double m2); double ca3fm1(double cosine,double sine); double ca5fm2(double a6m,double a5m,double a4m,double a4f,int shang); double ca6fm2(double a4m ,double a4f,double a5m , double a5f); char inbox(int x,int y,int x1,int y1); char buf(); main() { double m=3.0; double xo=100.0,yo=200.0,a1=30.0,t1=pi; double xc=xo+m*a1,yc=yo; double a2=8.0,a3,a4=25.0,a5=30.0,a6=20.0,a7=35.0; double t2,t3,t4,t5,t6,t7; double xo1=xo+m*150,yo1=yo; double xc1=xo1-m*a1,yc1=yo1; double i,j,k; double l1; double n=116.1,nt; initscreen(); setfillstyle(SOLID_FILL,DARKGRAY); bar(0,0,640,480); mybutton(10,10,"BEGIN",1,0); mybutton(500,10,"EXIT",1,0); line(0,69,640,69); mouseinit(); changemousecross(); setmousexy(320,20); mouseshow(); setmousearea(0,0,640,60); do{ if(inbox(10,10,70,26)&&button()==1) {mousehide(); mybutton(10,10,"BEGIN",0,0); mouseshow(); mousehold(); mousehide(); mybutton(10,10,"BEGIN",1,7); mouseshow(); break; }

电子钟的设计 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)

相关文档
最新文档