时钟动画C程源代码
- 格式:doc
- 大小:31.00 KB
- 文档页数:4
using System;using;using ;using ;using ;using时º¡À钟¨®{public partial class Form1 : Form{//指针坐Á标À¨ºprivate static float hour_x = 0, hour_y = 0;private static float minute_x = 0, minute_y = 0;private static float second_x = 0, second_y = 0;private float radii = 200;//将角度¨¨转Áa 成¨¦弧度¨¨ 2 * / 360 =const float radian = ;public Form1(){ InitializeComponent();//指定¡§当Ì¡À窗ä¡ã口¨²大䨮小改变À时º¡À重绘整个窗ä¡ã口¨², true);}private void Form1_Load(object sender, EventArgs e){//创ä¡ä建¡§定¡§时º¡À器¡Â对象¨®Timer timer = new Timer();//启动¡¥定¡§时º¡À器¡Â();//设¦¨¨定¡§定¡§时º¡À器¡Â事º件t的Ì触䣤发¤¡é函¡¥数ºy+= new EventHandler(TickEvent);//设¦¨¨定¡§定¡§时º¡À器¡Â的Ì间隔时º¡À间为a 1000 毫¨¢秒= 1000;}protected override void OnPaint(PaintEventArgs e){(e);//创ä¡ä建¡§画-刷¡é,ê并¡é设¦¨¨定¡§画-刷¡é的Ì颜色¦SolidBrush brush = new SolidBrush(255, 0, 255));Pen pen = new Pen;//得Ì到Ì窗ä¡ã口¨²长¡è宽¨ª两¢边À最Á短¨¬的Ì一°边À,作Á¡Â为a圆2的Ì外ªa切D矩形的Ì边À长¡èradii = < :radii -= 10;//把ã窗ä¡ã口¨²的Ì原-点Ì移°到Ì新坐Á标À¨º/ 2 - radii / 2,/ 2 - radii / 2);//画-圆20, 0, radii, radii);//时º¡À钟¨®刻¨¬度¨¨坐Á标À¨ºfloat x = , y = ;//画-出时º¡À钟¨®的Ì刻¨¬度¨¨for (float i = ;i < 360; i +={x = (float)(radii / 2-6) * (float)(i * radian);y = (float)(radii / 2-6) * (float)(i * radian);if ((int)i % 30 == 0)x + radii / 2 - 4, y + radii / 2 - 4, 8, 8);elsex + radii / 2 - 2, y + radii / 2 - 2,4, 4);}// 画-实º¦Ì心圆2形,ênew SolidBrush 是º创ä¡ä建¡§画-刷¡éSolidBrush, radii / 2 - 5, radii / 2 - 5, 10, 10);}public void TickEvent(objectsender,EventArgs e){//创ä¡ä建¡§画-板ã对象¨®Graphics g = ();//指定¡§新原-点Ì/ 2,/ 2);//创ä¡ä建¡§画-笔À¨º,并¡é设¦¨¨定¡§颜色¦Pen pen =new Pen(0,255,0));float radii2 = radii / 2 - 6;//利¤用®背À3景¡ã色¦擦¨¢除y原-来¤¡ä的Ì指针= (255, 255, 255);(pen, 0, 0, hour_x, -hour_y);(pen, 0, 0, minute_x, -minute_y);(pen, 0, 0, second_x, -second_y);//画-出时º¡À针int hour = > 12 - 12 : hour_x = (float)(radii2 - 70) * (float)((hour * 30 + * (30f / 60f)) * radian);hour_y = (float)(radii2 - 70) * (float)((hour * 30 + * (30f/ 60f)) * radian);= (0, 255, 0);(pen, 0, 0, hour_x, -hour_y);//画-出分¤针minute_x = (float)(radii2-30) * (float) * 6 * radian);minute_y = (float)(radii2-30) * (float) *6 * radian);= (0, 0, 255);(pen, 0, 0, minute_x, -minute_y);//画-出秒针second_x = (float)(radii2-8) * (float) * 6 * radian);second_y = (float)(radii2-8) * (float) * 6 * radian);= (0, 255, 255);(pen, 0, 0, second_x, -second_y);();}}}到下面的网站去看也可以看到c#小程序代码。
//c语言钟表程序源码#include<graphics.h>#include<conio.h>#include<math.h>#include<time.h>#include<stdio.h>#include<stdlib.h>#include<windows.h>#pragma comment(lib, "winmm.lib")#define pi 3.14159typedef struct{double x;double y;} Line;void InitL(Line *L, double x, double y){L->x=x;L->y=y;}void DrawL(Line L){setcolor(BLUE);line(L.x, L.y, 240, 240);}void ClearL(Line L){setcolor(RGB(255, 240, 245));line(L.x, L.y, 240, 240);}void MoveL(Line *L, double m, double n){L->x=240+190*m;L->y=240-190*n;}void main(){PlaySound (TEXT("FilePath"), NULL, SND_ASYNC | SND_NODEFAULT | SND_LOOP);system("mode con cols=45 lines=15");system("color 79");initgraph(480, 480);loadimage(NULL, _T("IMAGE"), _T("BackGroud"));fillcircle(240,240,240);//画表盘setfillcolor(BLACK);fillrectangle(232, 35, 235, 84);fillrectangle(243, 35, 258, 38);fillrectangle(255, 39, 258, 57);fillrectangle(243, 58, 258, 61);fillrectangle(243, 62, 246, 80);fillrectangle(243, 81, 258, 84);//画12fillrectangle(40, 215, 60, 218);fillrectangle(40, 219, 43, 237);fillrectangle(57, 219, 60, 237);fillrectangle(40, 238, 60, 241);fillrectangle(57, 242, 60, 260);fillrectangle(40, 261, 60, 264);//画9fillrectangle(420, 215, 440, 218);fillrectangle(438, 219, 441, 237);fillrectangle(420, 238, 440, 241);fillrectangle(438, 242, 441, 260);fillrectangle(420, 261, 440, 264);//画3fillrectangle(230, 390, 250, 393);fillrectangle(230, 394, 233, 412);fillrectangle(230, 413, 250, 416);fillrectangle(230, 417, 233, 435);fillrectangle(247, 417, 250, 435);fillrectangle(230, 436, 250, 439);//画6int i;for(i=5; i<=60; i+=5){setcolor(RED);line(240+240*sin(pi/30*i), 240-240*cos(pi/30*i), 240+210*sin(pi/30*i),240-210*cos(pi/30*i));} //画出四个长的时刻针for(i=1; i<=60; i++){if(i%5==0) continue;setcolor(RED);line(240+240*sin(pi/30*i), 240-240*cos(pi/30*i), 240+225*sin(pi/30*i), 240-225*cos(pi/30*i));}Line L, M;time_t t=time(0);int h, m, s, a;char hour[3], min[3], sec[3];strftime( hour, sizeof(hour), "%I",localtime(&t));strftime( min, sizeof(min), "%M",localtime(&t));strftime( sec, sizeof(sec), "%S",localtime(&t));h=atoi(hour);m=atoi(min);s=atoi(sec);//画出其他时刻针InitL(&L, 240+190*sin(pi/30*(s+1)), 240-190*cos(pi/30*(s+1)));for(a=1; a; a++){DrawL(L);setcolor(GREEN);line(240, 240, 240+150*sin((pi/1800*(a+s))+(pi/30*m)), 240-150*cos(pi/1800*(a+s)+(pi/30*m)));setcolor(BLACK);line(240, 240, 240+130*sin(pi/108000*a+(pi/6*h)+(pi/360*m)), 240-130*cos(pi/108000*a+(pi/6*h)+(pi/360*m)));Sleep(1000);ClearL(L);MoveL(&L, sin(pi/30*a+(pi/30*s)), cos(pi/30*a+(pi/30*s))); //秒针的移动setcolor(RGB(255, 240, 245));line(240, 240, 240+150*sin(pi/1800*(a+s)+(pi/30*m)), 240-150*cos(pi/1800*(a+s)+(pi/30*m)));setcolor(RGB(255, 240, 245));line(240, 240, 240+130*sin(pi/108000*a+(pi/6*h)+(pi/360*m)), 240-130*cos(pi/108000*a+(pi/6*h)+(pi/360*m)));} //表针的移动getch();closegraph(); }。
#include "stdio.h"#include "string.h"#include "conio.h"#include "graphics.h"#include "time.h"#include "math.h"#include "dos.h"#define pi 3.1415926struct{ int h;int m;int s;int y;int month;int day;}te;int s=1;char tim[10];void intgr(){int driver=DETECT,mode; initgraph(&driver,&mode,""); }void draw(){ int c,n,x,y,q,w;setfillstyle(1,0);fillellipse(320,200,150,150);setfillstyle(1,4);fillellipse(320,200,145,145);setfillstyle(1,15);fillellipse(180,50,55,55);setfillstyle(1,15);fillellipse(460,50,55,55);line(450,200,470,200);outtextxy(440,200,"3");line(320,50,320,70);outtextxy(313,80,"12");line(170,200,190,200);outtextxy(200,200,"9");line(320,330,320,350);outtextxy(315,330,"6");for(c=0;c<60;c++){ if(c%5==0)n=13;elsen=3;x=(320+(150-n)*cos(c*pi/30));q=(320+150*cos(c*pi/30));y=(200-(150-n)*sin(c*pi/30));w=(200-150*sin(c*pi/30));line(x,y,q,w);}}void outputtime(){char a[20];int i,n,j,k,se;if((s%2)==1)se=0;elsese=15;setcolor(0);setfillstyle(1,se);fillellipse(180,50,50,50);setfillstyle(1,se);fillellipse(460,50,50,50);s++;setfillstyle(1,4);bar(250,300,400,310);for(j=0,n=te.h+1995,k=1000;j<4;k/=10,j++) {a[j]='0'+n/k;n=n%k;}a[j]=' ';for(j=5,n=te.month,k=10;j<7;k/=10,j++) {a[j]='0'+n/k;n=n%k;}a[j]=' ';for(j=8,n=te.day,k=10;j<10;k/=10,j++) {a[j]='0'+n/k;n=n%k;}a[j]=' ';for(j=11,n=te.h,k=10;j<13;k/=10,j++){a[j]='0'+n/k;n=n%k;}a[j]=' ';for(j=14,n=te.m,k=10;j<16;k/=10,j++){a[j]='0'+n/k;n=n%k;}a[j]=' ';for(j=17,n=te.s,k=10;j<19;k/=10,j++){a[j]='0'+n/k;n=n%k;}a[j]='\0';setcolor(0);outtextxy(250,300,a);strcpy(tim,a);}void showtime(){int a,b,c,d,e,f;time_t t;struct tm *tn;t=time(NULL);tn=localtime(&t);te.y=tn->tm_year;te.month=tn->tm_mon;te.day=tn->tm_mday;setcolor(1);circle(320,200,2);a=320+60*cos(-2*pi*(te.h%12)/12+pi/2);b=200-60*sin(pi/2-2*pi*(te.h%12)/12);te.h=tn->tm_hour;if((320+60*cos(-2*pi*(te.h%12)/12+pi/2)!=a))/*时*/{setcolor(4);line(320,200,a,b);setcolor(1);line(320,200,320+60*cos(-2*pi*(te.h%12)/12+pi/2),200-60*sin(pi/2-2*pi*(te.h%12)/12)); }c=320+90*cos(-2*pi*te.m/60+pi/2);d=200-90*sin(pi/2-2*pi*te.m/60);te.m=tn->tm_min;if((320+90*cos(-2*pi*te.m/60+pi/2))!=c){setcolor(4);line(320,200,c,d);setcolor(3);line(320,200,320+90*cos(-2*pi*te.m/60+pi/2),200-90*sin(pi/2-2*pi*te.m/60)); }e=320+110*cos(-2*pi*te.s/60+pi/2);f=200-110*sin(-2*pi*te.s/60+pi/2);te.s=tn->tm_sec;if((320+110*cos(-2*pi*te.s/60+pi/2))!=e)/*秒*/{setcolor(4);line(320,200,e,f);setcolor(11);line(320,200,320+110*cos(-2*pi*te.s/60+pi/2),200-110*sin(-2*pi*te.s/60+pi/2)); }outputtime();}main(){intgr();setbkcolor(0);draw();for(;!kbhit();){showtime();sleep(1);}getch();closegraph();}。
电子时钟源代码及注释#include "reg52.h"#define TIMER0_COUNT 0xEC78/*10000h-(12,000,000/(12*200))*/#define uchar unsigned char#define uint unsigned intucharled_mod[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0};//共阳数码管0~9uchar led_ctl[]={0xfe,0xfd,0xfb,0xf7}; //位选码uchar buffer[]={0,0,0,0}; //码管数值char i=0;sbit mode=P1^4; //选择模式引脚sbit add=P1^5; //加sbit dec=P1^6; //减sbit alarm=P3^2; //闹钟sbit sec_led=P1^1; //秒驱动LED闪烁sbit alarm_warn=P1^0;//闹钟提醒引脚int time=0;char status=0; //模式值sbit sTime=P1^2; //设置时间提示sbit sClock=P3^3; //设置闹钟提示uint hour=19,min=5,sec=0; //初始时分秒uint alarmhour=19,alarmmin=0,flag=1; //初始闹钟时分bit ringoff=1;//闹铃停止unsigned char msecond=0; //毫秒计数变量unsigned char second2; //秒计数变量uchar code freqh[]={0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC, //低音1~7 第一个八度0xFC,0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,//中音 1~7 第二个八度0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF};//高音 1~7 第三个八度uchar code freql[]={0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B, //低音12345670x8F,0xEE,0x44,0x6B,0xB4,0xF4,0x2D, //中音 12345670x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16}; //高音 1234567uchar codesong[]={5,3,2,3,3,1,4,3,1,5,3,2,3,3,1,4,3,1,5,3,1,5,2,1,6,2 ,1,7,2,1,1,3,1,2,3,1,3,3,1,4,3,1,3,3,2,1,3,1,2,3,1,3,3,2,3,2,1,4,2,1,5,2,1,6,2,1,5,2,1,4,2,1,5,2,1,3,2,1,4,2,1,5,2,1 ,4,2,2,6,2,1,5,2,1,4,2,2,3,2,1,2,2,1,3,2,1,2,2,1,1,2,1,2,2, 1,3,2,1,4,2,1,5,2,1,6,2,1,4,2,2,6,2,1,5,2,1,6,2,2,7,2,1,1,3,1 ,5,2,1,6,2,1,7,2,1,1,3,1,2,3,1,3,3,1,4,3,1,5,3,1,3,3,2,1,3, 1,2,3,1,3,3,2,2,3,1,1,3,1,2,3,1,7,2,1,1,3,1,2,3,1,3,3,1,2,3,1,1,3,1 ,7,2,1,1,3,2,6,2,1,7,2,1,1,3,2,1,2,1,2,2,1,3,2,1,4,2,1,3,2,1,2,2,1,3,2,1,1,3,1,7,2,1,1,3,1,6,2,2,1,3,2 ,7,2,1,6,2,2,5,2,1,4,2,1,5,2,1,4,2,1,3,2,1,4,2,1,5,2,1,6,2, 1,7,2,1,1,2,1,6,2,2,1,3,1,7,2,1,1,3,2,7,2,1,6,2,1,7,2,1,1,3,1,2,3,1,1,3,1 ,7,2,1,1,3,1,6,2,1,7,2,1,0,0,0}; //卡农//一个音符有三个数字。
用PCF8563做实时时钟的C源程序#include<reg51.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit pcf8563_scl=P0^4;sbit pcf8563_sda=P0^3;ucharnum[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0 x37,0x38,0x39}; //数字表sbit clk=P2^0;sbit dio=P2^1;sbit cfd=P2^2; //充放电开关,sbit en=P2^3;sbit rw=P2^4;sbit rs=P2^5;sbit deng=P2^6; //测试灯sbit adcs=P2^7;bit busy=0;uchar sg;uchar sd;uchar fg;uchar fd;uchar mg;uchar md;uchar hou=0;uchar min=0;uchar sec=0;uchar subadd;uchar dat;uchar number;void start_pcf8563();void send_pcf8563_byte();void LcdIni(void);void WrOp(uchar dat);void WrDat(uchar dat);void ChkBusy(void);void display0(void);void display1(void);void stop_pcf8563();void receive_pcf8563_byte();void spit_time();void LcdIni()//初始化LCD{WrOp(0x01);WrOp(0x38);WrOp(0x0c);WrOp(0x06);} void WrOp(uchar dat)//写LCD显示地址{P1 =dat;rs=0;rw=0;en=0;ChkBusy();en=1;}void WrDat(uchar dat)//写LCD显示数据{P1=dat;rs=1;rw=0;en=0;ChkBusy();en=1;}void ChkBusy() //检查LCD是否忙{P1=0xff;rs=0;rw=1;en=0;_nop_();en=1;while(P1&0x80);}void display0() //显示必要的背景{WrOp(0x80);WrDat('T');WrOp(0x81);WrDat(':');WrOp(0x84);WrDat(':');WrOp(0x87);WrDat(':');}void spit_time(){sg=(int)hou/10;sd=(int)hou%10;fg=(int)min/10;fd=(int)min%10;mg=(int)sec/10;md=(int)sec%10;}void display1()//显示时间六位{uchar temp6;uchar temp5;uchar temp4;uchar teMP3;uchar temp2;uchar temp1;WrOp(0x82);temp6=num[sg];WrDat(temp6);WrOp(0x83);temp5=num[sd];WrDat(temp5);WrOp(0x85);temp4=num[fg];WrDat(temp4);WrOp(0x86);teMP3=num[fd];WrDat(teMP3);WrOp(0x88);temp2=num[mg];WrDat(temp2);WrOp(0x89);temp1=num[md];WrDat(temp1);}void Send_pcf8563_byte(uchar bb) //向PCF8563发送一个字节{uchar aa;pcf8563_scl=0;for(aa=0;aa<8;aa++){if((bb&0x80)==0x80){pcf8563_sda=1;}else{pcf8563_sda=0;}pcf8563_scl=1;pcf8563_scl=0;bb=bb<<1;}_nop_();_nop_();pcf8563_sda=1;pcf8563_scl=1;busy=0;if(pcf8563_sda){busy=1;}else{_nop_();_nop_();pcf8563_scl=0;busy=0;}}void write_pcf8563(uchar subadd,uchar dat)// 向PCF8563对应地址写数据{start_pcf8563();Send_pcf8563_byte(0xa2);if(!busy){Send_pcf8563_byte(subadd);if(!busy){Send_pcf8563_byte(dat);}}stop_pcf8563();}void read_pcf8563() //读当时的时,分,钞{start_pcf8563();Send_pcf8563_byte(0xa2);if(!busy){Send_pcf8563_byte(0x02);if(!busy){start_pcf8563();Send_pcf8563_byte(0xa3);receive_pcf8563_byte();sec=number&0x7f;start_pcf8563();Send_pcf8563_byte(0xa3);receive_pcf8563_byte();min=number&0x7f;start_pcf8563();Send_pcf8563_byte(0xa3);receive_pcf8563_byte();hou=number&0x3f;}}stop_pcf8563();}void receive_pcf8563_byte() //从PCF8563接受一个字节{uchar CC;pcf8563_sda=1;number=0;for(CC=0;cc<8;cc++){number<<=1;pcf8563_scl=0;pcf8563_scl=1;_nop_();_nop_();number= number|pcf8563_sda;}pcf8563_scl=0;_nop_();_nop_();}void start_pcf8563() //开启PCF8563IIC {pcf8563_sda=1;pcf8563_scl=1;pcf8563_sda=0;//SCL为低,SDA执行一个上跳pcf8563_scl=0;//SCL为低,嵌住数据线}void stop_pcf8563() //关闭PCF8563IIC {pcf8563_sda=0;pcf8563_scl=1;pcf8563_sda=1;//SCL为高,SDA执行一个上跳pcf8563_scl=0;//SCL为低,嵌住数据线}void main(void){LcdIni(); //初始化屏display0(); //显示必要的背影write_pcf8563(0x02,sec); //写钞write_pcf8563(0x03,min); //写分write_pcf8563(0x04,hou); //写时while(1){read_pcf8563();//读当前时间spit_time(); //切害时间,为显示做准备display1(); //显示当前时间}}。
单片机时钟1234滚动程序代码单片机时钟1234滚动程序代码在单片机中,可以使用数字显示器来显示时钟。
而对于时钟的滚动显示,可以通过不断改变数字的显示值来实现。
以下是一个使用C 语言编写的单片机时钟1234滚动程序的代码示例:```c#include <reg52.h> // 引入单片机的头文件sbit D1 = P2^0; // 数字位选择引脚1sbit D2 = P2^1; // 数字位选择引脚2sbit D3 = P2^2; // 数字位选择引脚3sbit D4 = P2^3; // 数字位选择引脚4unsigned char code LED_Disp[] = { // 数码管显示0-9的编码值 0x3F, // 00x06, // 10x5B, // 20x4F, // 30x66, // 40x6D, // 50x7D, // 60x07, // 70x7F, // 80x6F // 9};void delay(unsigned int t) { // 延时函数unsigned int i, j;for (i = t; i > 0; i--)for (j = 110; j > 0; j--);}void main() {unsigned char i = 0;while (1) {D1 = 1; // 选择第一个数码管P0 = LED_Disp[i % 10]; // 显示个位数字delay(5); // 延时D1 = 0; // 关闭选择D2 = 1; // 选择第二个数码管P0 = LED_Disp[i / 10 % 10]; // 显示十位数字delay(5); // 延时D2 = 0; // 关闭选择D3 = 1; // 选择第三个数码管P0 = LED_Disp[i / 100 % 10]; // 显示百位数字delay(5); // 延时D3 = 0; // 关闭选择D4 = 1; // 选择第四个数码管P0 = LED_Disp[i / 1000 % 10]; // 显示千位数字delay(5); // 延时D4 = 0; // 关闭选择i++; // 数字递增if (i >= 10000)i = 0; // 重新计数}}```这段代码中,我们通过控制四个数码管的选择引脚,以及通过改变P0口的输出值来实现数字的显示。
#include <stdio.h>struct clock{int hour;int minute;int second;};typedef struct clock CLOCK;void Update(void);void Display(void);void Delay(void);int hour, minute, second; /*全局变量定义*/int main(void){long i;hour = minute = second = 0; /*hour,minute,second赋初值0*/for (i=0; i<100000; i++) /*利用循环结构,控制时钟运行的时间*/{Update(); /*时钟更新*/Display(); /*时间显示*/Delay(); /*模拟延时1秒*/}return 0;}/*函数功能:时、分、秒时间的更新函数参数:无函数返回值:无*/void Update(void){second++;if (second == 60)/*若second值为60,表示已过1分钟,则minute值加1*/ {second = 0;minute++;}if (minute == 60)/*若minute值为60,表示已过1小时,则hour值加1*/ {minute = 0;hour++;}if (hour == 24) /*若hour值为24,则hour的值从0开始计时*/{hour = 0;}}/*函数功能:时、分、秒时间的显示函数参数:无函数返回值:无*/void Display(void) /*用回车符'\r'不换行,控制时、分、秒显示的位置*/ {printf("%2d:%2d:%2d\r", hour, minute, second);}/*函数功能:模拟延迟1秒的时间函数参数:无函数返回值:无*/void Delay(void){long t;for (t=0; t<500000000; t++) {/*循环体为空语句的循环,起延时作用*/;}}。
一·功能1、计时功能,数码管显示数值从00:00:00--23:59:59循环替换,且周期时间与实际时间吻合。
2、定时闹钟功能,按下“定时”键后,可以设定所需要的任意时间,定时完成后,当到达设定时间后,蜂鸣器发声。
3、调整时间功能,根据此项功能可将时钟调至正确的时间。
4、查看定时功能,当设定完成后可以查看上次定时的时间,且能在此基础上进行重新定时。
二·按键说明设定键:按一次开始设定时间,并将设定过程显示在数码管上。
若未按此键,则其他按键无效。
设定过程中,再按一次此键,定时结束,数码管显示返回时钟。
当第一次按下设定键时,显示值为00:00:00,在此基础上调节定时时间。
第一次设定完成后,以后再按设定键,显示初值则为上次定时的时间。
确定键:在定时过程中按下此键,则保留当前设定的时间为定时时间。
若定时过程未按此键,定时无效。
向上键:按下此键,使得当前设定值在现有数值上加一,当加至满位时,当前值变为零。
向下键:按下此键,使得当前设定值在现有数值上减一,当减至零时,当前值变为满位减一。
向左键:按下此键,使得设定值移向左边一位,若已经在最左边,则移至最右边。
向右键:按下此键,使得设定值移向右边一位,若已经在最右边,则移至最左边。
三·具体操作演示(一)·定时及查看定时演示1.仿真开始。
如图:2、按键如图:3、按下设定键,开始设定时间,如图:4、如图所示,当前设定时位。
按向上键,使数值加一。
5、按下向右键,设定位移至分位。
6、按下向下键,使数字减一。
7、按确定键,确定当前设定的时间。
再按设定键,退出定时,开始时钟显示。
8、设定完成后按设定键,显示前次设定值,可在此基础上重新设定,也可直接再按设定键推出。
9、当时钟运行到设定时间时,蜂鸣器发声。
(二)·调整时间演示1、计时开始。
2、按照定时的方法开始设定时间,使其显示20:10:09。
3、调整到正确时间后,按下确定键不放,同时再按一下设定键,将目前设定值送入时钟,使其开始从设定值计时。
钟表源程序代码钟表源程序代码采用了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.wDa yOfWeek ,time.wSecond ,time. wMinute,time.wHour);//画指针draw_biaozhen(x,y,time.wSecond ,time.wMinute ,time.wHou r );Sleep(1000);//擦表针draw_biaozhen(x,y,time.wSecond ,time.wMinute ,time.wHou r );//实现随机色文字setcolor(RGB(rand()%255,rand()%255,rand()%255));outtextxy(285,320," 笨蛋");setfont(80,0,"宋体");outtextxy(40,80,"开");outtextxy(40,330,"心");outtextxy(520,80,"快");outtextxy(520,330,"乐");setfont(0,0,"宋体");}closegraph();}//画表针函数void draw_biaozhen(int x,int y,int second,int minute,int hour) {double a_sec,a_min,a_hour; //定义秒分时表针的弧度int x_sec,y_sec,x_min,y_min,x_hour,y_hour; //定义秒分时表针末端位置//计算表针弧度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)(x+120*sin(a_sec));y_sec=(int)(y-120*cos(a_sec));x_min=(int)(x+80*sin(a_min));y_min=(int)(y-80*cos(a_min));x_hour=(int)(x+60*sin(a_hour));y_hour=(int)(y-60*cos(a_hour));//画秒针setlinestyle(PS_SOLID,NULL,1);setcolor(YELLOW);line(x,y,x_sec,y_sec);//画分针setlinestyle(PS_SOLID,NULL,3);setcolor(LIGHTGRAY);line(x,y,x_min,y_min);//画分针setlinestyle(PS_SOLID,NULL,5);setcolor(BLUE);line(x,y,x_hour,y_hour);}//显示数字时间函数void numbertime(int year,int month,int day,char week,int second,int minute,int hour){char str[50];//用来存储时间字符sprintf(str,"当前时间:%d年%d月%d日星期%d %d :%d :%d ",year,month,day,week,hour,minute,second);setcolor(BLUE);outtextxy(20,20,str);outtextxy(20,40,"按任意键退出程序..."); }// 画表盘函数void draw_biaopan(int x,int y){int x1,y1,x2,y2,x3,y3,x4,y4,r=150; setcolor(RED);circle(x,y,38);circle(x,y,2);setlinestyle(PS_SOLID,NULL,2); circle(x,y,150);for(int i=0;i<6;i++) //12个刻度{setcolor(YELLOW);x1=x+(int)(r*cos(2*PI*i/12));y1=y-(int)(r*sin(2*PI*i/12));x2=x+(int)(0.94*r*cos(2*PI*i/12));y2=y-(int)(0.94*r*sin(2*PI*i/12));x3=x+(int)(r*cos(2*PI*i/12+PI));y3=y-(int)(r*sin(2*PI*i/12+PI));x4=x+(int)(0.94*r*cos(2*PI*i/12+PI)); y4=y-(int)(0.94*r*sin(2*PI*i/12+PI)); line(x1,y1,x2,y2);line(x3,y3,x4,y4);}for(i=0;i<30;i++) //其他的小刻度{setcolor(RED);x1=x+(int)(r*cos(2*PI*i/60));y1=y-(int)(r*sin(2*PI*i/60));x2=x+(int)(0.97*r*cos(2*PI*i/60));y2=y-(int)(0.97*r*sin(2*PI*i/60));x3=x+(int)(r*cos(2*PI*i/60+PI));y3=y-(int)(r*sin(2*PI*i/60+PI));x4=x+(int)(0.97*r*cos(2*PI*i/60+PI));y4=y-(int)(0.97*r*sin(2*PI*i/60+PI));line(x1,y1,x2,y2);line(x3,y3,x4,y4);}setcolor(LIGHTRED);outtextxy(316,368,"6");outtextxy(312,98,"12");outtextxy(185,232,"9");outtextxy(450,232,"3");}//画心型线函数void huaxian(){double x1, y1, r1;while(!MouseHit()){for(int k=0;k<=3;k++){setcolor(RGB(rand()%255, rand()%255, rand()%255)); for(int i=0; i<90; i++) {for (int j=0; j<90; j++) {r1 = PI/45 * i * (1 - sin(PI/45 * j)) * 18;x1 = r1 * cos(PI/45 * j) * sin(PI/45 * i) + 320;y1 = -r1 * sin(PI/45 * j) + 120;// 画圆fillcircle((int) x1, (int) y1, 1);}Sleep(30);}// 画完后暂停1秒Sleep(1000);}} }。
#include "stdio.h"
#include "string.h"
#include "conio.h"
#include "graphics.h"
#include "time.h"
#include "math.h"
#include "dos.h"
#define pi 3.1415926
struct
{ int h;
int m;
int s;
int y;
int month;
int day;
}te;
int s=1;
char tim[10];
void intgr()
{
int driver=DETECT,mode; initgraph(&driver,&mode,""); }
void draw()
{ int c,n,x,y,q,w;
setfillstyle(1,0);
fillellipse(320,200,150,150);
setfillstyle(1,4);
fillellipse(320,200,145,145);
setfillstyle(1,15);
fillellipse(180,50,55,55);
setfillstyle(1,15);
fillellipse(460,50,55,55);
line(450,200,470,200);
outtextxy(440,200,"3");
line(320,50,320,70);
outtextxy(313,80,"12");
line(170,200,190,200);
outtextxy(200,200,"9");
line(320,330,320,350);
outtextxy(315,330,"6");
for(c=0;c<60;c++)
{ if(c%5==0)
n=13;
else
n=3;
x=(320+(150-n)*cos(c*pi/30));
q=(320+150*cos(c*pi/30));
y=(200-(150-n)*sin(c*pi/30));
w=(200-150*sin(c*pi/30));
line(x,y,q,w);
}
}
void outputtime()
{
char a[20];
int i,n,j,k,se;
if((s%2)==1)
se=0;
else
se=15;
setcolor(0);
setfillstyle(1,se);
fillellipse(180,50,50,50);
setfillstyle(1,se);
fillellipse(460,50,50,50);
s++;
setfillstyle(1,4);
bar(250,300,400,310);
for(j=0,n=te.h+1995,k=1000;j<4;k/=10,j++) {
a[j]='0'+n/k;
n=n%k;
}
a[j]=' ';
for(j=5,n=te.month,k=10;j<7;k/=10,j++) {
a[j]='0'+n/k;
n=n%k;
}
a[j]=' ';
for(j=8,n=te.day,k=10;j<10;k/=10,j++) {
a[j]='0'+n/k;
n=n%k;
}
a[j]=' ';
for(j=11,n=te.h,k=10;j<13;k/=10,j++)
{
a[j]='0'+n/k;
n=n%k;
}
a[j]=' ';
for(j=14,n=te.m,k=10;j<16;k/=10,j++)
{
a[j]='0'+n/k;
n=n%k;
}
a[j]=' ';
for(j=17,n=te.s,k=10;j<19;k/=10,j++)
{
a[j]='0'+n/k;
n=n%k;
}
a[j]='\0';
setcolor(0);
outtextxy(250,300,a);
strcpy(tim,a);
}
void showtime()
{
int a,b,c,d,e,f;
time_t t;
struct tm *tn;
t=time(NULL);
tn=localtime(&t);
te.y=tn->tm_year;
te.month=tn->tm_mon;
te.day=tn->tm_mday;
setcolor(1);
circle(320,200,2);
a=320+60*cos(-2*pi*(te.h%12)/12+pi/2);
b=200-60*sin(pi/2-2*pi*(te.h%12)/12);
te.h=tn->tm_hour;
if((320+60*cos(-2*pi*(te.h%12)/12+pi/2)!=a))/*时*/
{
setcolor(4);
line(320,200,a,b);
setcolor(1);
line(320,200,320+60*cos(-2*pi*(te.h%12)/12+pi/2),200-60*sin(pi/2-2*pi*(te.h%12)/12)); }
c=320+90*cos(-2*pi*te.m/60+pi/2);
d=200-90*sin(pi/2-2*pi*te.m/60);
te.m=tn->tm_min;
if((320+90*cos(-2*pi*te.m/60+pi/2))!=c)
{
setcolor(4);
line(320,200,c,d);
setcolor(3);
line(320,200,320+90*cos(-2*pi*te.m/60+pi/2),200-90*sin(pi/2-2*pi*te.m/60)); }
e=320+110*cos(-2*pi*te.s/60+pi/2);
f=200-110*sin(-2*pi*te.s/60+pi/2);
te.s=tn->tm_sec;
if((320+110*cos(-2*pi*te.s/60+pi/2))!=e)/*秒*/
{
setcolor(4);
line(320,200,e,f);
setcolor(11);
line(320,200,320+110*cos(-2*pi*te.s/60+pi/2),200-110*sin(-2*pi*te.s/60+pi/2)); }
outputtime();
}
main()
{
intgr();
setbkcolor(0);
draw();
for(;!kbhit();)
{
showtime();
sleep(1);
}
getch();
closegraph();
}。