钟表源程序代码

合集下载

模拟时钟源代码

模拟时钟源代码

void CTest13_4Doc::m_TickAdd(){this->m_sec ++;if(this->m_sec == 60){this->m_min ++;this->m_sec = 0;}if(this->m_min == 60){this->m_hour ++;this->m_min = 0;}if(this->m_hour>= 12){this->m_hour -= 12;}}void CTest13_4Doc::M_MoveClockHands(){intpx, py;double degree;//设置秒针的终点坐标degree = this->m_sec * 6 - 90;px = cos((degree/180.0)*PI)* sLen + 250;py = sin((degree/180)*PI)* sLen + 250;this->m_secEndPoint.x = px;this->m_secEndPoint.y= py;//设置分针的终点坐标degree = this->m_min * 6 - 90;px = cos((degree/180.0)*PI) * mLen + 250;py = sin((degree/180)*PI) * mLen + 250;this->m_minEndPoint.x = px;this->m_minEndPoint.y = py;//设置时针的终点坐标degree = this->m_hour * 30 - 90;px = cos((degree/180.0)*PI) * hLen + 250;py = sin((degree/180.0)*PI) * hLen + 250;this->m_hourEndPoint.x = px;this->m_hourEndPoint.y = py;}BOOL CTest13_4Doc::OnNewDocument(){if (!CDocument::OnNewDocument())return FALSE;// TODO: add reinitialization code herethis->m_Rect = CRect(100,100,400,400);this->m_org = this->m_Rect.CenterPoint();this->m_centerRect = CRect(m_Rect.TopLeft().x+140, m_Rect.TopLeft().y+140,m_Rect.BottomRight().x-140, m_Rect.BottomRight().y-140);CTime time = CTime::GetCurrentTime();this->m_hour = time.GetHour();this->m_min = time.GetMinute();this->m_sec = time.GetSecond();//设置时钟指针的终点位置// this->M_MoveClockHands();//设置指针的长度hLen = 80;mLen = 100;sLen = 120;// (SDI documents will reuse this document)return TRUE;}void CTest13_4View::OnDraw(CDC* pDC){CTest13_4Doc* pDoc = GetDocument();ASSERT_VALID(pDoc);SetTimer(0, 1000, NULL);CPen *oldPen, *cPen;CBrush *oldBrush, *cBrush;//画出大的圆cPen = new CPen(PS_SOLID, 3, RGB(255,132,123));cBrush = new CBrush(RGB(123,132,123));oldPen = pDC->SelectObject(cPen);oldBrush = pDC->SelectObject(cBrush);pDC->Ellipse(pDoc->m_Rect);pDC->SelectObject(oldPen);pDC->SelectObject(oldBrush);//画出中心的一个圆cBrush = new CBrush(RGB(255,132,123));pDC->SelectObject(cBrush);pDC->Ellipse(pDoc->m_centerRect);pDC->SelectObject(oldBrush);//得到矩形的另个点,画出四个分线cPen = new CPen(PS_SOLID, 2, RGB(255,222,123));oldPen = pDC->SelectObject(cPen);CPointtl = pDoc->m_Rect.TopLeft();CPointbr = pDoc->m_Rect.BottomRight();pDC->MoveTo((br.x+tl.x)/2, tl.y);pDC->LineTo((br.x+tl.x)/2, tl.y+20);pDC->MoveTo((br.x+tl.x)/2, br.y);pDC->LineTo((br.x+tl.x)/2, br.y-20);pDC->MoveTo(tl.x, (br.y+tl.y)/2);pDC->LineTo(tl.x+20, (br.y+tl.y)/2);pDC->MoveTo(br.x, (br.y+tl.y)/2);pDC->LineTo(br.x-20, (br.y+tl.y)/2);pDC->SelectObject(oldPen);//画出刻度pDC->MoveTo(326,122);pDC->LineTo(320,134);pDC->MoveTo(377,175);pDC->LineTo(365,183);////pDC->MoveTo(377,323);pDC->LineTo(365,317);pDC->MoveTo(326,378);pDC->LineTo(320,365);////pDC->MoveTo(175,377);pDC->LineTo(183,365);pDC->MoveTo(122,326);pDC->LineTo(134,320);////pDC->MoveTo(122,177);pDC->LineTo(134,183);pDC->MoveTo(177,122);pDC->LineTo(183,134);//画出三个时针、分针、秒针//hourpDC->MoveTo(pDoc->m_org);pDC->LineTo(pDoc->m_hourEndPoint);//minutinpDC->MoveTo(pDoc->m_org);pDC->LineTo(pDoc->m_minEndPoint);//secondpDC->MoveTo(pDoc->m_org);pDC->LineTo(pDoc->m_secEndPoint);// TODO: add draw code for native data here}void CTest13_4View::OnTimer(UINT nIDEvent){// TODO: Add your message handler code here and/or call default CTest13_4Doc* pDoc = GetDocument();ASSERT_VALID(pDoc);pDoc->m_TickAdd();pDoc->M_MoveClockHands();this->InvalidateRect(CRect(130,130,370,370));CView::OnTimer(nIDEvent);}void CTest13_4View::OnLButtonDblClk(UINT nFlags, CPoint point) {// TODO: Add your message handler code here and/or call default CTest13_4Doc* pDoc = GetDocument();ASSERT_VALID(pDoc);changeTimectime;if(ctime.DoModal() == IDOK){pDoc->m_hour = ctime.m_Hour;pDoc->m_min = ctime.m_Min;pDoc->m_sec = ctime.m_Sec;//改变系统时间if(ctime.m_ChangeSysTime){CTime time = CTime::GetCurrentTime();SYSTEMTIME tm;tm.wYear = time.GetYear();tm.wDay = time.GetDay();tm.wMonth =time.GetMonth();tm.wHour = ctime.m_Hour;tm.wMinute = ctime.m_Min;tm.wSecond = ctime.m_Sec;tm.wMilliseconds = 0;SetLocalTime(&tm);}pDoc->M_MoveClockHands();}CView::OnLButtonDblClk(nFlags, point);}大体上就用到了上面几个函数,用到的变量自己看着加吧!。

钟表(电子摆钟)代码

钟表(电子摆钟)代码
////程序名称:电子摆表
////作者:莫智豪
//#include<iostream>
//#include <graphics.h>
//#include <conio.h>
//#include <math.h>
//
//#definePI3.14159ace std;
//
////画出时针
//setlinestyle(PS_SOLID, NULL, 10);
//setcolor(WHITE);
//line(320 + x_hour, 240 - y_hour, 320 - x_hour / 7, 240 + y_hour / 7);
//
////画出分针
//setlinestyle(PS_SOLID, NULL, 6);
//void DrawHand(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;//时、分、秒针的末端位置的横、纵坐标
//
//DrawDial();//绘制表盘
//
//setwritemode(R2_XORPEN);//设置XOR绘图模式
//
////绘制表针
//SYSTEMTIME ti;//定义变量保存当前时间
//while(!kbhit())//按任意键退出钟表程序
//{
//
//GetLocalTime(&ti);//获取当前时间

flashas3.0时钟源代码

flashas3.0时钟源代码

flashas3.0时钟源代码// 文件 1.DTimer.aspackage{import flash.display.Shape;import flash.display.Sprite;import flash.display.StageAlign;import flash.display.StageScaleMode; import flash.text.StaticText;import flash.events.*;import flash.text.T extField;import flash.text.T extFormat;public class DTimer extends Sprite{// 设置时钟宽度public var w:uint=200;// 设置时钟高度public var h:uint=200;// 设置时钟半径public var radius:uint;// 设置时钟中心位置public var centerX:int;public var centerY:int;// 定义三个形状表示时钟指针public var hourHand:Shape;public var minuteHand:Shape;public var secondHand:Shape;// 定义时钟样式public var bgColor:uint=0xeeeeff;public var hourHandColor:uint=0x003366;public var minuteHandColor:uint=0x000099; public var secondHandColor:uint=0xcc0033; public var x0:uint;public var y0:uint;public var x1:uint;public var y1:uint;public var txt:TextField;// 定义时间public var currentTime:Date;public function init():void{// 绘制表盘drawBorder();// 绘制表盘显示文字drawLabels();// 绘制指针createHands();Drawlss();// 显示文本CreateTxt();}public function DTimer(w:uint){this.w=w;this.h=w; // 是圆盘所以取一样this.radius=Math.round(this.w/2);this.centerX=this.radius;this.centerY=this.radius;}public function drawBorder(){graphics.lineStyle(0.5,0x999999);graphics.beginFill(bgColor);graphics.drawCircle(centerX,centerY,radius); graphics.endFill();}public function drawLabels(){for(var i:Number=1;i<=12;i++){var label:TextField=new TextField();label.text=i.toString();// 小时位置var angleInRadians:Number=i*30*(Math.PI/180);/* 度*π弧度==---------180弧度*180度==------------π即:π弧度等于180度*/label.x=centerX+(0.9*radius*Math.sin(angleInRadians))-5; label.y=centerY-(0.9*radius*Math.cos(angleInRadians))-9;trace(Math.sin(angleInRadians));// 格式化文本内容var tf:TextFormat=new TextFormat();tf.font="Arial";tf.bold="true";tf.size=12;label.setTextFormat(tf);addChild(label);}}// 绘制分钟对应位置public function Drawlss(){for(var i:Number=0;i<=60;i++){var lshape:Shape=new Shape();Drawls(lshape,i*6,0x000000,1);addChild(lshape);}}// 绘制分针方法public function Drawls(hand:Shape,rot:uint,color:uint,thickness:Number):void{ var angleInRadius:Number=rot*(Math.PI/180);x1=centerX+(radius*Math.sin(angleInRadius));y1=centerY-(radius*Math.cos(angleInRadius));if(rot%30==0){x0=centerX+(0.95*radius*Math.sin(angleInRadius));y0=centerY-(0.95*radius*Math.cos(angleInRadius));}else{x0=centerX+(0.97*radius*Math.sin(angleInRadius));y0=centerY-(0.97*radius*Math.cos(angleInRadius));}hand.graphics.lineStyle(thickness,color);hand.graphics.moveTo(x0,y0);hand.graphics.lineTo(x1,y1);}public function createHands():void{var hourHandShape:Shape=new Shape();drawHand(hourHandShape,Math.round(radius*0.5),hourHa ndColor,3.0);this.hourHand=Shape(addChild(hourHandShape));this.hourHand.x=centerX;this.hourHand.y=centerY;// 绘制分针var minuteHandShape:Shape=new Shape();drawHand(minuteHandShape,Math.round(radius*0.8),minut eHandColor,2.0);this.minuteHand=Shape(addChild(minuteHandShape));this.minuteHand.x=centerX;this.minuteHand.y=centerY;// 绘制秒针var secondHandShape:Shape=new Shape();drawHand(secondHandShape,Math.round(radius*0.9),secon dHandColor,0.5);this.secondHand=Shape(addChild(secondHandShape));this.secondHand.x=centerX;this.secondHand.y=centerY;}public function drawHand(hand:Shape,distance:uint,color:uint,thickness:Numbe r):void{hand.graphics.lineStyle(thickness,color);hand.graphics.moveTo(0,distance);hand.graphics.lineTo(0,0);}public function draw():void{currentTime=new Date();showTime(currentTime);showT(currentTime);}public function CreateTxt():void{txt=new TextField();txt.width=300;txt.x=centerX-radius;txt.y=centerY-radius-20;addChild(txt);}public function showT(time:Date){var seconds:uint=time.getSeconds();var minutes:uint=time.getMinutes();var hours:uint=time.getHours();var year:uint=time.getFullYear();var month:uint=time.getMonth()+1;var date:uint=time.getDate();this.txt.text="现在时间是"+year+"年"+month+"月"+date+"日"+hours+"时"+minutes+"分"+seconds+"秒";}public function showTime(time:Date):void{var seconds:uint=time.getSeconds();var minutes:uint=time.getMinutes();var hours:uint=time.getHours();this.secondHand.rotation=180+(seconds*6);this.minuteHand.rotation=180+(minutes*6);this.hourHand.rotation=180+(hours*30)+(minutes*0.5);}}}//文件2. SimpleClock.aspackage{import flash.display.Sprite;import DTimer;import flash.events.TimerEvent;import flash.utils.Timer;public class SimpleClock extends Sprite{public var face:DTimer;public var ticker:Timer;public static const millisecondsPerMinute:int=1000*60;public static const millisecondsPerHour:int=1000*60*60;public static const millisecondsPerDay:int=1000*60*60*24;public function initClock(faceSize:Number=200){var invoiceDate:Date=new Date();var millisecondsPerDay:int=1000*60*60*24;var dueDate:Date =new Date(invoiceDate.getTime()+(30*millisecondsPerDay));var oneHourFromNow:Date=new Date();oneHourFromNow.setTime(oneHourFromNow.getTime()+m illisecondsPerHour);// 创建表盘,初始化参数face=new DTimer(Math.max(20,faceSize));face.init();addChild(face);face.draw();// 创建Timer对象ticker=new Timer(1000);ticker.addEventListener(TimerEvent.TIMER,onTick);ticker.start();}public function onTick(event:TimerEvent){face.draw();}}}// 文件3.DateTimer.aspackage{import flash.display.Sprite;import DTimer;import SimpleClock;public class DateTimer extends Sprite{ public function DateTimer(){var sc:SimpleClock=new SimpleClock(); sc.x=165;sc.y=100;addChild(sc);sc.initClock();}}}。

电子时钟源代码

电子时钟源代码
/*以上两种不同频率的音调,可仿真钟表转动时的嘀哒声*/ nosound(); /*关闭 PC 扬声器*/ s=t[0].ti_sec; m=t[0].ti_min; h=[0].ti_hour;
x2=98*sin(s/30*PI)+451; /*秒针的 x 坐标值*/ y2=200-98*cos(s/30*PI); /*秒针的 y 坐标值*/ line(451,200,x2,y2);
/*开始循环,直至用户按下 ESC 键结束循环*/ setcolor(12);/*淡红色*/ sound(500);/*以指定频率打开 PC 扬声器,这里频率为 500Hz*/ delay(700);/*发一个频率为 500Hz 的音调,维持 700 毫秒*/ sound(200);/*以指定频率打开 PC 扬声器,这里频率为 200Hz*/ delay(300);
/*绘制新的分针*/ 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)) {
count=1; } }
setcolor(15); digitclock(485,318,digitsec(s)+1);/*数字时钟增加1秒*/
setcolor(12); /*淡红色*/ x2=98*sin(s/30*PI)+451; y2=200-98*cos(s/30*PI); line(451,200,x2,y2);

电子时钟源程序

电子时钟源程序

附录程序清单:#include<reg51.h>#include<absacc.h>#define uchar unsigned char#define uint unsigned int/*七段共阴管显示定义*/uchar codedispcode[ ]={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){if(seconde==60) //秒钟设为60进制{ seconde=0;minite++;if( minite==60) //分钟设为60进制{ minite=0;hour++;if(hour==24) //时钟设为24进制{hour=0; }}}}/*****************************//* 显示子程序*//*****************************/void display(void){P2=0xfe;P0=dispcode[hour/10]; //显示小时的十位delay(4);P2=0xfd;P0=(dispcode[(hour%10)])|0X80; //显示小时的个位 delay(4);P2=0xfb;P0=dispcode[minite/10]; //显示分的十位delay(4);P2=0xf7;P0=(dispcode[minite%10])|0X80; //显示分的个位 delay(4);P2=0xef;P0=dispcode[seconde/10]; //显示秒的十位delay(4);P2=0xdf;P0=dispcode[seconde%10]; //显示秒的个位delay(4);}/*******************************/ /*键盘扫描子程序*//*******************************/ void keyscan (void){if(P1_0==0) //按键1秒的调整{delay(30);if(P1_0==0){seconde++;if(seconde==60){seconde=0; }}}if(P1_1==0) //按键2分的调整 {delay(30);if(P1_1==0){minite++;if(minite==60){minite=0;}}}if(P1_2==0) //按键3小时的调整 {delay(30);if(P1_2==0){hour++;if(hour==24){hour=0; }}}}void timer0(void) interrupt 1 using 0 //定时器0方式1,50ms中断一次 {TH0=0x3c;TMOD = 0x11;mstcnt++;if(mstcnt==20){seconde++;mstcnt=0; //对计数单元的清零}}/**************************//*主函数*//**************************/void main(void){ P1=0xff; //初始化p1口,全设为1TMOD = 0x11; //time0为定时器,方式1TH0=0x3c; //预置计数初值TL0=0xb0;EA=1;ET0=1;TR0=1;while (1){keyscan( ); //按键扫描time_pro( ); //时间处理display( ); //显示时间}}。

C语言钟表程序源码

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(); }。

嵌入式时钟源代码

嵌入式时钟源代码

例题18-5程序代码(1)选项字设置程序onchip.asm(可参阅附录E)OPT CSEG AT 0080H ; 地址定位在0080H单元OPTION: DB 00H ; 0080H定义为00H,不使用看门狗定时器,可由软件停止内部低速振荡器DB 00H ; 0081H定义为00H,选择1.59 V POC模式DB 00H ; 0082H为保留区域DB 00H ; 0083H为保留区域DB 03H ; 0084H定义为03H,允许片上调试,END(2)C语言程序#pragma sfr //使用特殊功能寄存器#pragma access //使用绝对地址指令#pragma EI //使用开中断和关中断功能#pragma DI#pragma interrupt INTKR inter RB1 //定义按键中断inter#pragma interrupt INTRTC half_sec_INTERRUPT//使用INTRTC中断功能,命名中断为half_sec_INTERRUPTvoid freshddisplaybuffer(); //显示缓冲区刷新函数void play4bit(); //显示函数void d_c_inter(); //切换函数void set_inter(); //调时函数void set_hour(); //闹钟时显示函数void set_minute(); //闹钟分显示函数void hour_inter(); //闹钟调时函数void minute_inter(); //闹钟调分函数void delay(); //延时函数void noise(); //闹钟响铃函数unsigned int half_second=0,second=0; //初始化使0.5秒单元=0,秒单元=0unsigned int minute=0,hour=0; //初始化使分单元=0,小时单元=0unsigned int day=1,month=1; //初始化使日单元=1,月单元=1unsigned int year=2001; //初始化使年单元=2001unsigned int hour1=0; //初始化闹钟时单元=0unsigned int minute1=0; //初始化闹钟分单元=0unsigned int temp; //临时变量unsigned intnumbercode[10]={0x070d,0x0600,0x030e,0x070a,0x0603,0x050b,0x050f,0x0700,0x070f,0x070b};//数字"0"~"9"的显示码unsigned char i=0;/*显示转换标志,i=0显示年,i=1显示月,i=2显示月和日,i=3显示时,i=4显示时和分,i=5显示分和秒*/unsigned char j=0; //定义INTRTC中断标志变量junsigned char KEY=0; //定义全局变量KEYunsigned int buffyear[4]; //年的数码显示缓存区unsigned int buffm[4]; //月的数码显示缓存区unsigned int buffmd[4]; //月和日的数码显示缓存区unsigned int buffh[4]; //时的数码显示缓存区unsigned int buffhm[4]; //时和分的数码显示缓存区unsigned int buffms[4]; //分和秒的数码显示缓存区unsigned int buffhm1[4]; //闹钟的时和分数码显示缓冲区//--------------------------------------------------------------------计算当前月中天数的函数unsigned int m_days(unsigned int mmonth){unsigned int days;if ( (mmonth==4)||(mmonth==6)||(mmonth==9)||(mmonth==11))days=30; //4,6,9,11月为30天else if (mmonth==2){if ((year%4==0 && year %100!=0)||(year%400==0))days=29; //闰年2月为29天elsedays=28; //平年2月为28天}elsedays=31; //1,3,5,7,8,10,12月为31天return (days);}//-------------------------------------------------------------------显示函数void play4bit(){unsigned int dp=0; // dp为显示位数计数unsigned int b[4]; //显示输出缓存区unsigned int LCD_addr; //定义LCD地址LCD_addr=0xFA46; //初始化LCD地址为0xFA46while(dp<4) //4个LED显示器依次显示一遍{switch(i){case 0:b[dp]=buffyear[dp];break; //若显示转换标志为0,显示年case 1:b[dp]=buffm[dp];break; //若显示转换标志为1,显示月case 2:b[dp]=buffmd[dp];break; //若显示转换标志为2,显示月和日case 3:b[dp]=buffh[dp];break; //若显示转换标志为3,显示时case 4:b[dp]=buffhm[dp];break; //若显示转换标志为4,显示时和分case 5:b[dp]=buffms[dp];break; //若显示转换标志为5,显示分和秒 }pokew (LCD_addr,b[dp]); //显示器位控制码送位控制存储单元delay(); //延时函数pokew(LCD_addr,0x0000); //关闭显示LCD_addr=LCD_addr-2;dp++; //显示位计数加1}}//--------------------------------------------------------------------闹钟时显示函数void set_hour(){unsigned int dp=2;unsigned int a[4];unsigned int LCD_addr;LCD_addr=0xFA42;buffhm1[3]=numbercode[hour1/10]; //时的显示码放入时和分的数码显示缓存buffhm1[2]=numbercode[hour1%10];buffhm1[2] |= 0x0800; //在时的个位后显示一个点“•”while(dp<4) //4个LED显示器依次显示一遍{a[dp]=buffhm1[dp];pokew (LCD_addr,a[dp]); //显示器位控制码送位控制存储单元delay(); //延时函数pokew(LCD_addr,0x0000);LCD_addr=LCD_addr-2;dp++; //显示计数器加1}}//--------------------------------------------------------------------闹钟秒显示函数void set_minute (){unsigned int dp=0;unsigned int b[4];unsigned int LCD_addr;LCD_addr=0xFA46;buffhm1[1]=numbercode[minute1/10]; //时的显示码放入时和分的数码显示缓存buffhm1[0]=numbercode[minute1%10];while(dp<2) //4个LED显示器依次显示一遍{b[dp]=buffhm1[dp];pokew (LCD_addr,b[dp]); //显示器位控制码送位控制存储单元delay(); //延时函数pokew(LCD_addr,0x0000);LCD_addr=LCD_addr-2;dp++; //显示计数器加1}}//--------------------------------------------------------------------闹钟调时函数void hour_inter(){if(hour1<23)hour1++;else hour1=0;}//---------------------------------------------------------------------闹钟调分函数void minute_inter(){if(minute1<59)minute1++;else minute1=0;}//--------------------------------------------------------------------时间函数void time(){if (j != 0) //0.5秒标志到了吗?{j = 0;half_second++;if (half_second%2==0) //判断到了1秒吗?{second++;if (second>=60) //秒大于60时,分加1{second=0;minute++;if (minute>=60) //分大于60时,时加1{minute=0;hour++;if (hour>=24) //时大于24时,天加1 {hour=0;day++;temp=m_days(month); //判断该月是多少天if (day>=temp) //该月最后一天到时,月加1 {day=1;month++;if (month>=13) //月大于12后年加1{month=1; year++;}}}}}}}}//------------------------------------------------------------------------按键中断处理函数void inter(){DI(); //关中断switch(P4 & 0x3F) //判断那个按键按下{case 0x3e:KEY=1; //按键key1按下break;case 0x3d:KEY=2; //按键key2按下break;case 0x3b:KEY=3; //按键key3按下break;case 0x37:KEY=4; //按键key4按下break;case 0x2f:KEY=5; //按键key5按下break;case 0x1f:KEY=6; //按键key6按下break;default:break;}EI(); //开中断}//----------------------------------------------------------------------切换时间函数void d_c_inter(){DI(); //关中断if(i<5){i++;} //显示切换标志i小于5,i加1else{i=0;} //显示切换标志i等于5,i清“0”EI(); //开中断}//------------------------------------------------------------------------调整时间函数void set_inter(){unsigned int x,y;DI(); //关中断x=year%1000; //取年的个位数到变量x中y=year%1000; //取年的个位数到变量y中switch(i){case 0:{if(x<9) x++; //如果年的个位数小于9,年加1else x=0; //如果年的个位数等于9,年的个位清“0”year=(year-y)+x; break;}case 1:{if(month<12) month++; //月计数值小于12,月值加1else month=1; break; //月计数值等于12,月值清“0”}case 2:{temp=m_days(month); //判断该月是多少天if(day>=temp) day=1; //日计数值是该月最后一天时,day=1 else day++; //日计数值不是该月最后一天时,daybreak;}case 3:{if(hour<23) hour++; //时计数值小于23,时值加1else hour=0; //时计数值等于23,时值清“0”break;}case 4:{if(minute<59) minute++; //分计数值小于59,分值加1else minute=0; //分计数值等于59,分值清“0”break;}case 5:{if(second<59) second++; //秒计数值小于59,秒值加1else second=0; //秒计数值等于59,秒值清“0”break;}}EI(); //开中断}//---------------------------------------------------------------------闹钟响铃函数void noise(){if(hour1==hour&&minute1==minute&&P3.4==1){CKS=0X80; //打开蜂鸣器输出,输出频率为7.81kHz的音频delay(); //延时BZOE=0; //关闭蜂鸣器}}//-------------------------------------------------------------------延时函数void delay(){int i;for(i=0;i<=100;i++);}//---------------------------------------------------------------主函数void main(){PCC =0x00; // CPU的时钟选择(5.0MHz)PFALL=0x0F; //所有接LCD引脚指定为LCD引脚LCDC0=0x45; //确定LCD的显示频率LCDMD=0x10; // LCD电源设置为1/5VDDLCDM=0xC0; //LCD显示开IPM4 = 0x3F; //P4的6个端口设置输入模式PU4 = 0x3F; //接通上拉电阻KRM = 0x3F; //允许6个按键中断KRMK = 0;P3.4 = 0; //LED灯初始化为灭PM3.4=0; //P3.3和P3.4端口设置为输出模式P3.3 = 0;PM3.3=0;RTCMK=0; //允许产生中断OSCSELS = 1; //启动副系统时钟RTCCL = 0; //实时计数器的输入时钟为副系统时钟RTCC0 = 0x09; //停止计数器操作,禁止RTC1HZ 引脚输出,//RTCCL 引脚输出,选择24小时系统,选择//0.5秒一次固定周期中断RTCE = 1; //启动计数器工作EI(); //开中断while(1){switch(KEY){case 0: //如果没有按键{time(); //调用时间函数noise(); //调用闹钟响铃函数freshddisplaybuffer(); //调用显示缓冲区刷新函数play4bit(); //调用显示函数break;}case 1: //按键key1被按下{time(); //调用时间函数d_c_inter(); //调用切换时间函数freshddisplaybuffer(); //调用显示缓冲区刷新函数play4bit(); //调用显示函数KEY=0;break;}case 2:{time();set_hour(); //调用闹钟时显示函数set_minute(); //调用闹钟分显示函数KEY=7;break;}case 3: //按键key3被按下{time(); //调用时间函数set_inter(); //调用时间调整函数freshddisplaybuffer(); //调用显示缓冲区刷新函数play4bit(); //调用显示函数KEY=0;break;}case 4:{time(); //调用时间函数P3.4=~P3.4; //切换LED灯亮灭情况KEY=0;break;}case 5:{time();//调用时间函数hour_inter(); //调用闹钟调时函数set_hour(); //调用闹钟显示函数KEY=7;break;}case 6:{time(); //调用时间函数minute_inter(); //调用闹钟调分函数set_minute(); //调用闹钟显示函数KEY=7;break;}case 7:{time(); //调用时间函数noise(); //调用闹钟响铃函数set_hour(); //调用闹钟时显示函数set_minute(); //调用闹钟分显示函数break;}}}}//-------------------------------------------------------------------实时计数器(0.5s)中断处理函数void half_sec_INTERRUPT(){DI();j=1; //每隔0.5s j的值赋值1EI();}//---------------------------------------------------------------------显示缓冲区刷新函数void freshddisplaybuffer(void){buffyear[3]=numbercode[(year/100)/10]; //年的显示码放入年的数码显示缓存区buffyear[2]=numbercode[(year/100)%10];buffyear[1]=numbercode[(year%100)/10];buffyear[0]=numbercode[(year%100)%10];buffm[3]=0x070d; //月的显示码放入年的数码显示缓存区buffm[2]=0x070d;buffm[1]=numbercode[month/10];buffm[0]=numbercode[month%10];buffmd[3]=numbercode[month/10]; //月和日的显示码放入年的数码显示缓存区buffmd[2]=numbercode[month%10];buffmd[2] |= 0x0800; //在月的个位后显示一个点“•”buffmd[1]=numbercode[day/10]; //日的显示码放入月和日的数码显示缓存buffmd[0]=numbercode[day%10];buffh[3]=0x070d; //时的显示码放入月和日的数码显示缓存buffh[2]=0x070d;buffh[1]=numbercode[hour/10];buffh[0]=numbercode[hour%10];buffhm[3]=numbercode[hour/10]; //时的显示码放入时的数码显示缓存区buffhm[2]=numbercode[hour%10];buffhm[2] |= 0x0800; //时的显示码放入时和分的数码显示缓存buffhm[1]=numbercode[minute/10]; //在时的个位后显示一个点“•”buffhm[0]=numbercode[minute%10];buffms[3]=numbercode[minute/10]; //分的显示码放入时和分的数码显示缓存区buffms[2]=numbercode[minute%10];buffms[2] |= 0x0800; //在时的个位后显示一个点“•”buffms[1]=numbercode[second/10]; //秒的显示码放入分和秒的数码显示缓存区buffms[0]=numbercode[second%10];}。

时分秒数字钟程序代码

时分秒数字钟程序代码

2.源程序ORG 0000HLJMP STARTORG 000BHLJMP TIME;********初始化*********START: MOV SP, #50HMOV 20H,#00H ;定义秒MOV 21H,#00H ;定义分MOV 22H,#00H ;定义时MOV 23H,#01H ;定义闹钟分钟MOV 24H,#01H ;定义闹钟小时MOV 25H,#00HMOV 26H,#01HMOV 30H,#00H ;定义秒BCDMOV 31H,#00HMOV 32H,#00H ;定义分BCDMOV 33H,#00HMOV 34H,#00H ;定义小时BCDMOV 35H,#00HMOV 36H,#01HMOV 37H,#00HMOV 38H,#01HMOV 39H,#00HMOV 50H,#00H ;按键次数MOV TMOD,#01H ;16位计数器MOV TH0, #03CH ;赋初值MOV TL0, #0B0HMOV IE, #87H ;中断允许SETB TR0 ;启动T0MOV R2,#14HMOV P2,#0FFH;*********主程序**********MAIN: JB P1.4,GBLCALL TIMEPRO ;调用闹钟判断GB: LCALL DISPLAY1 ;调用时间显示JB P1.3,M1 ;P1.3=1时转移 S4没有按下 LCALL SETTIME ;调用SETTIME调时子程序LJMP MAINM1: JB P1.2,M2 ;P1 g.2=1时转移S3LCALL SETATIME ;调用SETATIME子程序LJMP MAINM2: JB P1.0,M4 ;P1.0=1时转移 S1LCALL LOOKATIME ;调用LOOKATIME显示闹钟子程序M4: LJMP MAIN;*********延时子程序********DELAY: MOV R4,#030HDL00: MOV R5,#0FFHDL11: MOV R6,#9HDL12: DJNZ R6,DL12DJNZ R5,DL11DJNZ R4,DL00RET;***********时间调整*******SETTIME: ;设置时间L0: LCALL DISPLAY1MM1: JB P1.3,L1 ;P1.3=1时转移MOV C,P1.3JC MM1LCALL DELAY1 ;延时JC MM1MSTOP1: MOV C,P1.3 ;P1.3为0时转移JNC MSTOP1LCALL DELAY1 ;延时MOV A,50HINC 50HCJNE A,#00H,HJ1LJMP L0HJ1: MOV C,P1.3JNC MSTOP1INC 22H ;小时自加一MOV A,22HCJNE A,#18H,GO12 ;小时计数循环MOV 22H,#00H ;复位MOV 34H,#00HMOV 35H,#00HLJMP L0L1: JB P1.1,L2 ;P1.1=1时转移MOV C,P1.1JC L1LCALL DELAY1 ;延时JC L1MSTOP2: MOV C,P1.1 ;P1.1=0时转移JNC MSTOP2LCALL DELAY1 ;延时MOV C,P1.1JNC MSTOP2INC 21H ;分钟加一MOV A,21HCJNE A,#3CH,GO11 ;分钟计数循环MOV 21H,#00H ; 复位MOV 32H,#00HMOV 33H,#00HLJMP L0GO11: MOV B,#0AHDIV ABMOV 32H,B ; 将A的低4位存入32单元 MOV 33H,A ; 将A的高4位存入33单元 LJMP L0GO12: MOV B,#0AHDIV ABMOV 34H,B ;将A的低4位存入34单元MOV 35H,A ; 将A的高4位存入35单元 LJMP L0L2: JB P1.0,L0 ; P1.0=1时转移MOV C,P1.0JC L2LCALL DELAY1 ;延时MOV C,P1.0JC L2STOP1: MOV C,P1.0 ; P1.0=0时转移JNC STOP1LCALL DELAY1 ;延时MOV C,P1.0JNC STOP1MOV 50H,#00HLJMP MAIN;*******设置闹钟*******SETATIME:LCALL DISPLAY2 ; 调用DISPLAY2显示闹钟N0: LCALL DISPLAY2MM2: JB P1.2,N1 ;P1.2=1时转移MOV C,P1.2JC MM2LCALL DELAY1 ; 延时JC MM2MSTOP3: MOV C,P1.2 ; P1.2=0时转移JNC MSTOP3LCALL DELAY1 ; 延时MOV A,50HINC 50HCJNE A,#00H,HJ2HJ2: MOV C,P1.2JNC MSTOP3INC 24H ;小时加一MOV A,24HCJNE A,#24,GO22 ;小时计数循环MOV 24H,#00H ;复位MOV 38H,#00HMOV 39H,#00HLJMP N0N1: JB P1.1,N2 ;P1.1=1时转移MOV C,P1.1JC N1LCALL DELAY1 ;延时JC N1MSTOP4: MOV C,P1.1 ;P1.1=0时转移JNC MSTOP4LCALL DELAY1 ;延时MOV C,P1.1JNC MSTOP4INC 23H ;分钟加一MOV A,23HCJNE A,#60,GO21 ;分钟计数循环MOV 23H,#00H ;复位MOV 36H,#00HMOV 37H,#00HLJMP N0GO21: MOV B,#0AHDIV ABMOV 36H,B ;将A的低4位存入36单元 MOV 37H,A ;将A的高4位存入37单元 LJMP N0GO22: MOV B,#0AHDIV ABMOV 38H,B ;将A的低4位存入38单元 MOV 39H,A ;将A的高4位存入39单元 LJMP N0N2: JB P1.0 ,N0 ;P1.0=1时转移MOV C,P1.0JC N2LCALL DELAY1 ;延时MOV C,P1.0JC N2STOP2: MOV C,P1.0LCALL DELAY1MOV C,P1.0JNC STOP2MOV 50H,#00HLJMP MAIN;*******闹钟判断*****************TIMEPRO: MOV A,21HMOV B,23HCJNE A,B,BK ;判断定时闹钟的分钟 MOV A,22HMOV B,24HCJNE A,B,BK ;判断定时闹钟的小时 SETB 25H.0MOV C,25H.0LCALL TIMEOUT ;调用TIMEOUTBK:RET;**************喇叭报警***************** TIMEOUT:X1: LCALL BZ ;调用喇叭响应程序CLR 25H.0 ;调用喇叭响应程序结束 LCALL DELAY ;延时CLR 25H.0LJMP DISPLAY1BZ:MOV C,25H.1MOV P1.6,CCLR P1.7MOV R7,#0FFH ;喇叭响应时间T2: MOV R6,#0FFHT3: DJNZ R6,T3DJNZ R7,T2SETB P1.7RET;*************显示闹钟时间************ LOOKATIME:LCALL DISPLAY2MM: JNB P1.0,LOOKATIMELCALL DELAY1LJMP MAINDELAY1: MOV R4,#14H ;时间延时DL001: MOV R5,#0FFHDL111: DJNZ R5,DL111DJNZ R4,DL001RET;***********定时**************TIME: PUSH ACC ;保护现场PUSH PSWMOV TH0,#03CH ;初值MOV TL0,#0B0HDJNZ R2,RET0MOV R2,#14HMOV A,20HCPL 25H.1CLR CINC A ;秒自加一CJNE A,#3CH,GO1 ;秒计数循环MOV 20H,#0 ;复位MOV 30H,#0MOV 31H,#0MOV A,21HINC A ;分钟自加一CJNE A,#3CH,GO2 ;分钟计数循环MOV 21H,#0H ;复位MOV 32H,#0MOV 33H,#0MOV A,22HINC A ;小时自加一CJNE A,#18H,GO3 ;小时计数循环MOV 22H,#00H ;复位MOV 34H,#0MOV 35H,#0AJMP RET0GO1: MOV 20H,AMOV B,#0AHDIV ABMOV 31H,A ;将A的低4位存入31单元 MOV 30H,B ;将A的高4位存入30单元 AJMP RET0GO2: MOV 21H,AMOV B,#0AHDIV ABMOV 33H,A ;将A的低4位存入33单元 MOV 32H,B ;将A的高4位存入32单元AJMP RET0GO3: MOV 22H,AMOV B,#0AHDIV ABMOV 35H,A ;将A的低4位存入35单元 MOV 34H,B ;将A的高4位存入34单元AJMP RET0RET0: POP PSW ;恢复现场POP ACCRETI;********显示子程序**********DISPLAY1: MOV R0,#30HMOV R3,#0FEHMOV A,R3PLAY1: MOV P2,AMOV A,@R0 ;取要显示的数据MOV DPTR,#DSEG1 ;指向字形段码首地址 MOVC A,@A+DPTRCJNE R0,#34H,PAORL A,#80HPA:CJNE R0,#32H,PBORL A,#80HPB:CPL A ;查表取字形段码MOV P0,A ;指向P0口LCALL DL1MOV P2,#0FFHMOV A,R3 ;判断是否显示到最低位 RL A ;左移一位JNB ACC.6,LD1INC R0 ;缓冲器地址加一MOV R3,ALJMP PLAY1LD1: RETDISPLAY2: PUSH ACC ;保护现场PUSH PSWMOV R0,#36HMOV R3,#0FBHMOV A,R3PLAY2: MOV P2,AMOV A,@R0 ;取要显示的数据MOV DPTR,#DSEG1 ;指向字形段码首地址MOVC A,@A+DPTRCJNE R0,#38H,PPORL A,#80HPP:CPL A ;查表取字形段码MOV P0,A ;指向P0口LCALL DL1 ;调用DL1MOV P2,#0FFHMOV A,R3 ;判断是否显示到最低位RL A ;左移一位JNB ACC.6,LD2INC R0 ;缓冲器地址加一 MOV R3,ALJMP PLAY2 ;调用PLAY2 LD2: POP PSWPOP ACC ;恢复现场RET;******DELAY*******DL1: MOV R7,#20HDL: MOV R6,#20HDL6: DJNZ R6,$DJNZ R7,DLRETDSEG1: DB 3FH,06H,5BH,4FH,66H ;七段码表DB 6DH,7DH,07H,7FH,6FH。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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);
for(int ห้องสมุดไป่ตู้=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));
}
setcolor(LIGHTRED);
outtextxy(316,368,"6");
outtextxy(312,98,"12");
outtextxy(185,232,"9");
outtextxy(450,232,"3");
}
//画心型线函数
void huaxian()
{
double x1, y1, r1;
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);
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(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];//用来存储时间字符
void main()
{
initgraph(640,480);
srand((unsigned)time(NULL));
int x=320,y=240; //设定表盘圆心位置
SYSTEMTIME time; //定义变量保存当前时间
//画心形线
outtextxy(20,40,"稍后进入钟表界面...");
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);
钟表源程序代码
采用了easyx图形库
作者:转角梦覃飞絮
#include<graphics.h>
#include<conio.h>
#include<math.h>
#include<stdio.h>
#include<time.h>
#define PI 3.1415926
//自定义函数声明
void draw_biaozhen(int x,int y,int second,int minute,int 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));
}
}
}
}
//画表盘函数
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);
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);
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);
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(); //画心形线
//画指针
draw_biaozhen(x,y,time.wSecond ,time.wMinute ,time.wHour );
Sleep(1000);
//擦表针
draw_biaozhen(x,y,time.wSecond ,time.wMinute ,time.wHour );
//实现随机色文字
setcolor(RGB(rand()%255,rand()%255,rand()%255));
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; //定义秒分时表针末端位置
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,"按任意键退出程序...");
}
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));
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;
outtextxy(285,320,"笨蛋");
setfont(80,0,"宋体");
outtextxy(40,80,"开");
outtextxy(40,330,"心");
outtextxy(520,80,"快");
outtextxy(520,330,"乐");
setfont(0,0,"宋体");
}
相关文档
最新文档