如何设计一个时钟演示程序 vb

如何设计一个时钟演示程序 vb,第1张

你的代码有几处问题:

1

Private Sub Form_Load()

Dim nwidth, nheight, nhourlen, nminlen, nseclen '你把nmainlen打错了

Dim Picture1

这些变量是过程变量,不能再其他过程使用,且当Form_Load事件结束时,这些变量就不存在了。所以要把这些变量提前到通用区域,也就是代码的最前面。

2

Dim Picture1

这什么意思呀?我想,你是直接定义一个PictureBox控件变量,然后就能使用它。这是错误的,要么你就老实一点在窗体上添加PictureBox控件,要么你就用动态添加PictureBox控件。算了,你还是老实一点在窗体上添加PictureBox控件吧。

3

nwidth = Picture1Width - 20

nheight = Picture1Height - 10

这有问题。如果PictureBox控件的ScaleMode属性改变时,就会出现意想不到的结果了。改为如下:

nwidth = Picture1ScaleWidth

nheight = Picture1ScaleHeight

4

nminute = Minute(Time()) + nsecond / 60

nhour = (Hour(Time()) Mod 12) + nminute / 60 + nsecond / 3600

因为nminute已经包含了nsecond,所以nhour的计算就不需要再加上nsecond了,改为nhour = (Hour(Time()) Mod 12) + nminute / 60就行了。

5

carc_是什么意思呀?你自定义的函数?但你没有定义呀。

6

Picture1Line里的画线有点问题。

改成如下:

在通用区域Dim Pi As Single

在Form_Load事件Pi=31415926

在Timer1_Timer事件里:

Dim nSecond, nMinute, nHour As Integer

Dim X As Single, Y As Single

Picture1Cls

nSecond = Second(Time())

nMinute = Minute(Time()) + nSecond / 60

nHour = (Hour(Time()) Mod 12) + nMinute / 60

X = nHourlen Sin(nHour 30 / 180 Pi)

Y = nHourlen Cos(nHour 30 / 180 Pi)

Picture1DrawWidth = 3

Picture1ForeColor = RGB(255, 0, 0)

Picture1Line (nWidth / 2 - X / 10, nHeight / 2 + Y / 10)-(nWidth / 2 + X, nHeight / 2 - Y)

X = nMinlen Sin(nMinute 6 / 180 Pi)

Y = nMinlen Cos(nMinute 6 / 180 Pi)

Picture1DrawWidth = 2

Picture1ForeColor = RGB(0, 255, 0)

Picture1Line (nWidth / 2 - X / 10, nHeight / 2 + Y / 10)-(nWidth / 2 + X, nHeight / 2 - Y)

X = nSeclen Sin(nSecond 6 / 180 Pi)

Y = nSeclen Cos(nSecond 6 / 180 Pi)

Picture1DrawWidth = 1

Picture1ForeColor = RGB(0, 0, 255)

Picture1Line (nWidth / 2 - X / 10, nHeight / 2 + Y / 10)-(nWidth / 2 + X, nHeight / 2 - Y)

7

没有刻度盘。在Form_Load事件添加代码如下:

Dim i As Integer

Dim X As Single, Y As Single

Picture1AutoRedraw = True

Picture1DrawWidth = 8

Picture1ForeColor = RGB(255, 255, 0)

For i = 1 To 12

X = (nSeclen + 80) Sin(i 30 / 180 Pi)

Y = (nSeclen + 80) Cos(i 30 / 180 Pi)

Picture1PSet (nWidth / 2 + X, nHeight / 2 - Y)

X = nSeclen 12 Sin(i 30 / 180 Pi) - Picture1TextHeight(CStr(i)) / 2

Y = nSeclen 12 Cos(i 30 / 180 Pi) + Picture1TextHeight(CStr(i)) / 2

Picture1CurrentX = nWidth / 2 + X

Picture1CurrentY = nHeight / 2 - Y

Picture1Print CStr(i)

Next i

Picture1AutoRedraw = False

#include <graphicsh>

#include <conioh>

#include <mathh>

void Draw(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; // 时、分、秒针的末端位置

     int x_hour1,y_hour1,x_min1,y_min1,x_sec1,y_sec1;

     // 计算时、分、秒针的弧度值

     a_sec = second  2  PI / 60;

     a_min = minute  2  PI / 60 ;

     a_hour= hour  2  PI / 12 + a_min / 12;;

     // 计算时、分、秒针的首末端位置

     x_sec = 320 + (int)(120  sin(a_sec));

     y_sec = 240 - (int)(120  cos(a_sec));

     x_min = 320 + (int)(100  sin(a_min));

     y_min = 240 - (int)(100  cos(a_min));

     x_hour= 320 + (int)(70  sin(a_hour));

     y_hour= 240 - (int)(70  cos(a_hour));

     x_sec1= 320 - (int)(15    sin(a_sec));

     y_sec1= 240 + (int)(15    cos(a_sec));

     x_min1= 320 - (int)(10    sin(a_min));

     y_min1= 240 + (int)(10    cos(a_min));

     x_hour1= 320 - (int)(5  sin(a_hour));

     y_hour1= 240 + (int)(5  cos(a_hour));

     // 画时针

     setlinestyle(PS_SOLID, NULL, 7);

     setcolor(WHITE);

     line(x_hour1, y_hour1, x_hour, y_hour);

     // 画分针

     setlinestyle(PS_SOLID, NULL, 4);

     setcolor(LIGHTGRAY);

     line(x_min1, y_min1, x_min, y_min);

     // 画秒针

     setlinestyle(PS_SOLID, NULL, 2);

     setcolor(RED);

     line(x_sec1, y_sec1, x_sec, y_sec);

}

void main()

{

     initgraph(640, 480);    // 初始化 640 x 480 的绘图窗口

     // 绘制一个简单的表盘

     circle(320, 240, 2);

     circle(320, 240, 60);

     circle(320, 240, 160);

     outtextxy(296, 330, "   竹斌");

     int x,y;

     for(int i=0;i<12;i++)

     {

         x=320+(int)(140sin(30i2PI/360));

         y=240-(int)(140cos(30i2PI/360));

switch(i)

         {

         case 0:outtextxy(x-5,y-5,"12");break;

         case 1:outtextxy(x-5,y-5,"1");break;

         case 2:outtextxy(x-5,y-5,"2");break;

         case 3:outtextxy(x-5,y-5,"3");break;

         case 4:outtextxy(x-5,y-5,"4");break;

         case 5:outtextxy(x-5,y-5,"5");break;

         case 6:outtextxy(x-5,y-5,"6");break;

         case 7:outtextxy(x-5,y-5,"7");break;

         case 8:outtextxy(x-5,y-5,"8");break;

         case 9:outtextxy(x-5,y-5,"9");break;

         case 10:outtextxy(x-5,y-5,"10");break;

         case 11:outtextxy(x-5,y-5,"11");break;

         }

     }

     // 设置 XOR 绘图模式

     setwritemode(R2_XORPEN); // 设置 XOR 绘图模式

     //画刻度

     int a,b,a1,b1,n=0;

     for(n=0;n<60;n++)

     {

     a=320+(int)(160  sin(n2PI/60));

     b=240-(int)(160  cos(n2PI/60));

     a1=320+(int)(150  sin(n2PI/60));

     b1=240-(int)(150  cos(n2PI/60));

     if(n%5==0)

         setlinestyle(PS_SOLID,NULL,5);

     else

         setlinestyle(PS_SOLID,NULL,1);

     line(a1,b1,a,b);

     }

     // 绘制表针

     SYSTEMTIME ti;      // 定义变量保存当前时间

     while(!kbhit())      // 按任意键退出钟表程序

     {

          GetLocalTime(&ti);         // 获取当前时间

          Draw(tiwHour, tiwMinute, tiwSecond);    // 画表针

          Sleep(1000);          // 延时 1 秒

          Draw(tiwHour, tiwMinute, tiwSecond);    // 擦表针(擦表针和画表针的过程是一样的)

     }

     closegraph();      // 关闭绘图窗口

}

/开发环境:turbo c 20模拟时钟转动程序代码/

#include"graphicsh"

#include"mathh"

#include"dosh"

#define pi 31415926

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

#define Y(a,b,c) y=asin(bcpi/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++) /划钟点上的短线/

{

if(i%5==0)

l=15;

else

l=5;

x1=200sin(i6pi/180)+300;

y1=200cos(i6pi/180)+240;

x2=(200-l)sin(i6pi/180)+300;

y2=(200-l)cos(i6pi/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();

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

}

图11

程序如下:

library IEEE;

use IEEESTD_LOGIC_1164ALL;

use IEEESTD_LOGIC_ARITHALL;

use IEEESTD_LOGIC_UNSIGNEDALL;

entity xuan21 is

Port ( alarm,a,b: in std_logic;

y:out std_logic);

end xuan21 ;

architecture one of xuan21 is

begin

process(alarm,a,b)

begin

if alarm='0' then y<=a;else y<=b;

end if;

end process;

end one;

仿真波形如下图12:

图12

(2)三位二选一:

模块图如图13。用以进行正常计时时间与闹铃时间显示的选择,alarm输入为按键。当alarm按键未曾按下时二选一选择器会选择输出显示正常的计时结果,否则当alarm按键按下时选择器将选择输出显示闹铃时间显示。

图13

程序如下:

library IEEE;

use IEEESTD_LOGIC_1164ALL;

use IEEESTD_LOGIC_ARITHALL;

use IEEESTD_LOGIC_UNSIGNEDALL;

entity x213 is

Port ( alarm : in std_logic;

y:out std_logic_vector(3 downto 0);

a,b: in std_logic_vector(3 downto 0));

end x213;

architecture one of x213 is

begin

process(alarm,a,b)

begin

if alarm='0' then y<=a;else y<=b;

end if;

end process;

end one;

仿真结果如下图14:

图14

8、整点报时及闹时:

模块图如图15。在59分51秒、53秒、55秒、57秒给扬声器赋以低音512Hz信号,在59分59秒给扬声器赋以高音1024Hz信号,音响持续1秒钟,在1024Hz音响结束时刻为整点。当系统时间与闹铃时间相同时给扬声器赋以高音1024Hz信号。闹时时间为一分钟。

图15

程序如下:

library IEEE;

use IEEESTD_LOGIC_1164ALL;

use IEEESTD_LOGIC_ARITHALL;

use IEEESTD_LOGIC_UNSIGNEDALL;

entity voice is

Port ( hou1,huo0,min1,min0,sec1,sec0,hh,hl,mh,ml: std_logic_vector(3 downto 0);

in_1000,in_500:in std_logic;

q : out std_logic);

end voice;

architecture one of voice is

begin

process(min1,min0,sec1,sec0)

begin

if min1="0101" and min0="1001" and sec1="0101" then

if sec0="0001" or sec0="0011" or sec0="0101" or sec0="0111"

then q<=in_500;

elsif sec1="0101" and sec0="1001" then q<=in_1000;

else q<='0';

end if;

else q<='0';

end if;

if min1=mh and min0=ml and hou1=hh and huo0=hl then

q<=in_1000;

end if;

end process;

end one;

仿真波形如下图16

图16

9、顶层原理图:

三、感想

通过这次设计,既复习了以前所学的知识,也进一步加深了对EDA的了解,让我对它有了更加浓厚的兴趣。特别是当每一个子模块编写调试成功时,心里特别的开心。但是在画顶层原理图时,遇到了不少问题,最大的问题就是根本没有把各个模块的VHD文件以及生成的器件都全部放在顶层文件的文件夹内,还有就是程序设计的时候考虑的不够全面,没有联系着各个模式以及实验板的情况来编写程序,以至于多考虑编写了译码电路而浪费了很多时间。在波形仿真时,也遇到了一点困难,想要的结果不能在波形上得到正确的显示

:在分频模块中,设定输入的时钟信号后,却只有二分频的结果,其余三个分频始终没反应。后来,在数十次的调试之后,才发现是因为规定的信号量范围太大且信号的初始值随机,从而不能得到所要的结果。还有的仿真图根本就不出波形,怎么调节都不管用,后来才知道原来是路径不正确,路径中不可以有汉字。真是细节决定成败啊!总的来说,这次设计的数字钟还是比较成功的,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心。

四、

参考资料:

1、潘松,王国栋,VHDL实用教程〔M〕成都:电子科技大学出版社,2000(1)

2、崔建明主编,电工电子EDA仿真技术北京:高等教育出版社,2004

3、李衍编著,EDA技术入门与提高王行西安:西安电子科技大学出版社,2005

4、侯继红,李向东主编,EDA实用技术教程北京:中国电力出版社,2004

5、沈明山编著,EDA技术及可编程器件应用实训北京:科学出版社,2004

6、侯伯亨等,VHDL硬件描述语言与数字逻辑电路设计西安: 西安电子科技大学出版社,1997

7、辛春艳编著,VHDL硬件描述语言北京:国防工业出版社,2002 就这些

你好这是我用mfc编写的一个时钟程序我不用你存话费你采纳就ok了别不采纳我可是花了很长时间来弄的源程序//这是关键代码voidCClockView::OnDraw(CDCpDC){ CClockDocpDoc=GetDocument(); ASSERT_VALID(pDoc); //TODO:adddrawcodefornativedatahere CBitmapbg; bgLoadBitmap(IDB_BITMAP1); CDCdc; dcCreateCompatibleDC(pDC); dcSelectObject(bg); pDC->BitBlt(0,0,400,400,&dc,0,0,SRCCOPY); CTimetm; tm=CTime::GetCurrentTime();//得到系统的时分秒inti=tmGetMinute()-1;//60 intj=tmGetHour();//24 intn=tmGetSecond();//60/ CStringstr; strFormat("%d:%d",j,i); MessageBox(str);/ //2460 floatmin=(float)(i-14)/60231415; floathour=(float)(j-3)/12231415;//角度 floatsec=(float)(n-14)/60231415; //原点位置intorg_x=200; intorg_y=200; //时针 inthour_ar=90;//长度 inth_x=hour_arcos(hour)+200; inth_y=hour_arsin(hour)+200; //分针 intmin_ar=140;//长度 intm_x=min_arcos(min)+200; intm_y=min_arsin(min)+200; //秒针 intsec_ar=170;//长度 ints_x=sec_arcos(sec)+200; ints_y=sec_arsin(sec)+200;CPenp1(PS_SOLID,4,RGB(100,100,100)); CPenpenOld=(CPen)pDC->SelectObject(p1); pDC->MoveTo(org_x,org_y); pDC->LineTo(m_x,m_y); CPenp2(PS_SOLID,3,RGB(200,100,100)); pDC->SelectObject(p2); pDC->MoveTo(org_x,org_y); pDC->LineTo(h_x,h_y);CPenp3(PS_SOLID,2,RGB(150,100,100)); pDC->SelectObject(p3); pDC->MoveTo(org_x,org_y); pDC->LineTo(s_x,s_y); SetTimer(1,1000,NULL);}voidCClockView::OnTimer(UINTnIDEvent){ //TODO:Addyourmessagehandlercodehereand/orcalldefault this->RedrawWindow(); CView::OnTimer(nIDEvent);}

3D钟表模型:使用SolidWorks2014 绘制;

绘制过程:

1、在前视基准面上绘制草图

2、旋转凸台生成实体;

3、在表盘的平面上绘制草图 中心矩形:1X15;矩形中心与原点竖直;

4、拉伸凸台生成表盘标线:给定深度1;勾选合并结果;

5、圆周阵列:阵列轴选择圆柱面;数量12;要阵列的特征选择拉伸凸台特征;

6、在表盘平面上绘制草图 中心线+草图数字:①绘制一段长度1mm的中心线并标注尺寸;②绘制两条中心线,两中心线夹角30°,其中一条竖直并穿过原点,两中心线的交点与原点距离10;③绘制一条中心线,中心线中点与30°中心线的上端点重合,与30°中心线的夹角120°;

7、鼠标左键点选尺寸1,在左侧属性管理器中选择主要值中的尺寸名称字符,按键盘Ctrl+C复制;

8、插入草图文字:曲线选择与30度中心线端点重合的中心线;点击文本框,按键盘Ctl+V粘贴复制的字符;给字符加英文格式的双引号;位置选择居中;取消使用文档字体;设定位置高度20;

9、拉伸凸台:给定深度1;勾选合并结果;

10、圆周阵列:阵列轴选择角度尺寸30°;角度30°;数量12个;要阵列的特征选择拉伸凸台特征;勾选变化的实例;选择尺寸1,设定增量1;选择尺寸120°,设定增量30°;

11、在前视基准面上绘制草图:中间的竖直直线与原点重合;

12、旋转凸台生成钟表指针的转轴;

13、在由下至上的第一个台阶面上绘制草图 时针轮廓;

14、拉伸凸台生成时针:给定深度05;

15、在由下至上的第二个台阶面上绘制草图 分针轮廓;

16、拉伸凸台生成分针:给定深度05;

17、在由下至上的第三个台阶面上绘制草图 秒针轮廓;

18、拉伸凸台生成秒针:给定深度05;

19、在顶面上绘制草图 圆(使用转换实体引用绘制);

20、拉伸凸台生成玻璃:开始条件,反向,等距4;结束条件,给定深度2;

21、完成。

以下是四位数码管可调时带秒闪烁的c51单片机电子钟程序(c语言)。

/ 本程序中,晶振为12MHz, /

/ 时间控制采用定时中断控制方式。 /

/ 模式和时间调整采用查询方式。 /

#include<reg52h>

sbit P20=P2^0; //分个位控制端

sbit P21=P2^1; //分十位控制端

sbit P22=P2^2; //时个位控制端

sbit P23=P2^3; //时十位控制端

sbit led=P2^7; //second display led

sbit key0=P3^0; //模式设置

sbit key1=P3^1; //加

sbit key2=P3^2; //减

unsigned char hour,min,sec,T50ms;

unsigned char modstate; //模式状态

unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//段码

void init(); //初始化子程序声明

void delay500us(unsigned char X); //延时子程序声明

void display(); //显示子程序声明

void display001(); //显示子程序声明

void display002(); //显示子程序声明

void keyscan(); //按键识别子程序声明

void main()

{

init();

while(1)

{

keyscan();

}

}

void init() //初始化子程序

{

TMOD=0x01;

TH0=(65536-49990)/256;

TL0=(65536-49990)%256;

ET0=1;

EA=1;

TR0=1;

}

void delay500us(unsigned char X)

{

unsigned char i,j;

for(i=X;i>0;i--)

for(j=248;j>0;j--);

}

void timer0() interrupt 1 //timer0中断服务子程序,定时时间为50ms,本程序加了10us的时间修正量

{

TMOD=0x01;

TH0=(65536-49990)/256;

TL0=(65536-49990)%256;

T50ms++;

if(T50ms>=20)

{

T50ms=0;

sec++;

if(sec>=60)

{

sec=0;

min++;

if(min>=60)

{

min=0;

hour++;

if(hour>=24)hour=0;

}

}

}

}

void display()

{

P20=1;

P21=1;

P22=1;

P23=1;

P0=table[hour/10];

P23=0;

delay500us(5);

P20=1;

P21=1;

P22=1;

P23=1;

P0=table[hour%10];

P22=0;

delay500us(5);

P20=1;

P21=1;

P22=1;

P23=1;

P0=table[min/10];

P21=0;

delay500us(5);

P20=1;

P21=1;

P22=1;

P23=1;

P0=table[min%10];

P20=0;

delay500us(5);

if(T50ms<=10)led=0;

if(T50ms>10)led=1;

}

void display001()

{

P20=1;

P21=1;

P22=1;

P23=1;

P0=table[hour/10];

P23=0;

delay500us(10);

P20=1;

P21=1;

P22=1;

P23=1;

P0=table[hour%10];

P22=0;

delay500us(10);

}

void display002()

{

P20=1;

P21=1;

P22=1;

P23=1;

P0=table[min/10];

P21=0;

delay500us(10);

P20=1;

P21=1;

P22=1;

P23=1;

P0=table[min%10];

P20=0;

delay500us(10);

}

void keyscan() //按键识别钟程序

{

while(modstate==0)

{

display();

if(key0==0)

{

display();

if(key0==0)modstate++; //这两句加在一起为延时10ms软件防抖设计。

while(key0==0)display001(); //等待按键释放。

}

}

////

while(modstate==1)

{

display001();

if(key0==0)

{

display001();

if(key0==0)modstate++; //这两句加在一起为延时10ms软件防抖设计。

while(key0==0)display002(); //等待按键释放。

}

if(key1==0)

{

display001();

if(key1==0)

{

hour++;

if(hour>=24)hour=0;

while(key1==0)display001();

}

}

if(key2==0)

{

display001();

if(key2==0)

{

hour--;

if(hour>=24)hour=0;

while(key2==0)display001();

}

}

}

////

while(modstate==2)

{

display002();

if(key0==0)

{

display002();

if(key0==0)modstate=0; //这两句加在一起为延时10ms软件防抖设计。

while(key0==0)display(); //等待按键释放。

}

if(key1==0)

{

display002();

if(key1==0)

{

min++;

if(min>=60)min=0;

while(key1==0)display002();

}

}

if(key2==0)

{

display002();

if(key2==0)

{

min--;

if(min>=60)min=0;

while(key2==0)display002();

}

}

}

}

下面是一个时钟程序代码,你可以参考一下。

Const

PI

=

314159265

Dim

H,

W,

R

As

Integer

'窗体高、宽、圆半径

Private

Sub

BiaoKe()

Dim

I

As

Integer

'外盘

Circle

(W

\

2,

H

\

2),

R,

vbBlue

'中心

Circle

(W

\

2,

H

\

2),

1,

vbWhite

'盘面各点

For

I

=

0

To

59

If

I

Mod

5

=

0

Then

Circle

(W

\

2

+

R

Cos(I

PI

/

30),

H

\

2

+

R

Sin(I

PI

/

30)),

2,

vbGreen

Else

Circle

(W

\

2

+

R

Cos(I

PI

/

30),

H

\

2

+

R

Sin(I

PI

/

30)),

1,

vbWhite

End

If

Next

I

End

Sub

Private

Sub

Form_Load()

MeShow

MeCls

H

=

frmTimeScaleHeight

W

=

frmTimeScaleWidth

R

=

W

\

4

lbTimeLeft

=

(frmTimeScaleWidth

-

lbTimeWidth)

\

2

lbTimeTop

=

frmTimeScaleHeight

-

R

\

4

End

Sub

Private

Sub

Form_Resize()

Call

Form_Load

End

Sub

Private

Sub

Timer1_Timer()

Dim

T1,

T2,

T3

As

Integer

Dim

I,

J,

K

As

Integer

MeCls

T1

=

Hour(Time):

T2

=

Minute(Time):

T3

=

Second(Time)

I

=

T1

-

15

J

=

T2

-

15

K

=

T3

-

15

'钟表外壳

Call

BiaoKe

'画时针

Line

(W

\

2,

H

\

2)-(W

\

2

+

05

(R

Cos((I

+

J

/

60)

PI

/

6)),

H

\

2

+

05

(R

Sin((I

+

J

/

60)

PI

/

6))),

vbGreen

'画分针

Line

(W

\

2,

H

\

2)-(W

\

2

+

07

(R

Cos((J

+

K

/

60)

PI

/

30)),

H

\

2

+

07

(R

Sin((J

+

K

/

60)

PI

/

30))),

vbYellow

'画秒针

Line

(W

\

2,

H

\

2)-(W

\

2

+

09

(R

Cos(K

PI

/

30)),

H

\

2

+

09

(R

Sin(K

PI

/

30))),

vbRed

K

=

K

+

1

If

K

>

360

Then

K

=

K

Mod

360

lbTimeCaption

=

Time

End

Sub

以上就是关于如何设计一个时钟演示程序 vb全部的内容,包括:如何设计一个时钟演示程序 vb、图形时钟用C语言怎么编、C语言程序设计题:模拟时钟转动的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10133234.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存