当前位置:首页 » 编程软件 » 数字钟编程

数字钟编程

发布时间: 2022-06-12 19:52:20

‘壹’ 怎么用C语言编程数字时钟

1、以下例程实现时钟的实时显示基本要求: 1) 自行设计界面,模拟表盘式时钟。要求界面美观,清晰。2)数字同步显示时间信息。


2、例程:

#include<graphics.h>
#include<math.h>
#include<dos.h>
#definePI3.1415926
//屏幕中心的坐标(640X480模式下)
#definemid_x320
#definemid_y240
intmain()
{intgraphdriver=DETECT,graphmode;
intend_x,end_y;
structtimecurtime;
floatth_hour,th_min,th_sec;
initgraph(&graphdriver,&graphmode,"C:\TC2");//初始化VGA屏幕模式
setbkcolor(BLACK);//使用黑色的背景色
while(!kbhit(0))//若有键盘输入,则跳出,即是结束程序
{setcolor(GREEN);//把画笔设为绿色
circle(mid_x,mid_y,180);//钟的外圆
circle(mid_x,mid_y,150);//钟的内圆
circle(mid_x,mid_y,1);//画出钟的圆心
gettime(&curtime);//取得系统当前时间
th_sec=(float)curtime.ti_sec*0.1047197551;//把秒针的角度化为弧度,为以后绘制时方便,下同
th_min=(float)curtime.ti_min*0.1047197551+th_sec/60.0;//分针的弧度
th_hour=(float)curtime.ti_hour*0.5235987755+th_min/12.0;//时度的弧度,注意整时是12等分的,所时乘的是3.14/180*5
//计算出时针的尾的坐标(时针长70)
end_x=mid_x+70*sin(th_hour);
end_y=mid_y-70*cos(th_hour);
setcolor(RED);
line(mid_x,mid_y,end_x,end_y);//用红色线画出时针
//计算出分针坐标(分针长110)
end_x=mid_x+110*sin(th_min);
end_y=mid_y-110*cos(th_min);
setcolor(RED);
line(mid_x,mid_y,end_x,end_y);//用红色画出分针
end_x=mid_x+140*sin(th_sec);
end_y=mid_y-140*cos(th_sec);
setcolor(RED);
line(mid_x,mid_y,end_x,end_y);//同上,画出秒针,长为140
//画出钟盘上的刻度,刻度长20
line(140,240,160,240);//9点对应的大刻度
line(320,60,320,80);//12点对应的大刻度
line(500,240,480,240);//3点的刻度
line(320,420,320,400);//6点的刻度
line(410,395.7,400,378.4);//5点
line(475.7,330,458.4,320);//4点
line(475.7,150,458.4,160);//2点
line(410,84.3,400,101.6);//1点
line(230,84.3,240,101.6);//11点
line(164.3,150,181.6,160);//10点
line(164.3,330,181.6,320);//8点
line(230,395.7,240,378.4);//7点
sleep(BLUE);//这里应该是打错,停止一秒,应为sleep(1000)
cleardevice();//清除屏幕上的显示
}
closegraph();//关闭VGA屏幕,即返回文本方式
return0;
}

‘贰’ VB程序设计怎么做数字时钟

1、添加一个“label控件”命名为label
2、添加一个“timer控件”命名为timer1
3、设置“timer1”的“Interval属性”为1000
使用到的代码:

DimHourAsInteger'小时
DimMinAsInteger'分钟
DimSecAsInteger'秒
PrivateSubForm_Load()
Hour=0
Min=0
Sec=0
Label1.Caption="00:00:00"
EndSub

PrivateSubTimer1_Timer()
DimstrHourAsString
DimstrMinAsString
DimstrSecAsString
Sec=Sec+1
IfSec>=60Then
Sec=0
Min=Min+1
IfMin>=60Then
Min=0
Hour=Hour+1
IfHour>=24Then
Hour=0
EndIf
EndIf
EndIf
IfHour<10Then
strHour="0"&Hour
Else
strHour=Hour
EndIf
IfMin<10Then
strMin="0"&Min
Else
strMin=Min
EndIf
IfSec<10Then
strSec="0"&Sec
Else
strSec=Sec
EndIf
Label1.Caption=strHour&":"&strMin&":"&strSec
EndSub

‘叁’ 用C语言做数字时钟每走一秒响一次,求大神告诉源代码

“响一次”需要牵涉到图形编程中的音乐播放问题,需要自己下载图形编程相关库文件,具体实现请自己在TODO里添加播放音乐的代码

数字时钟的实现很简单,运用time.h相关函数即可

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
time_toldt=-1;
structtm*p;
boolPrintdate()
{
time_tt=time(NULL);
if(t!=oldt)
{
oldt=t;
p=localtime(&t);
system("cls");
printf("%d/%d/%d周",1900+p->tm_year,1+p->tm_mon,p->tm_mday,p->tm_hour,p->tm_min,p->tm_sec);
switch(p->tm_wday)
{
case1:printf("一");break;
case2:printf("二");break;
case3:printf("三");break;
case4:printf("四");break;
case5:printf("五");break;
case6:printf("六");break;
case7:printf("日");break;
}
printf("%d:%02d:%02d",p->tm_hour,p->tm_min,p->tm_sec);
return1;
}
return0;
}
main()
{
while(1)
if(Printdate())
{
/*************TODO*************/
/**Forexample:printf("a");**/
}
return0;
}

‘肆’ 单片机控制的LCD1602数字钟的C语言编程

#include <reg51.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit LCD_RS=P2^0;
sbit LCD_RW=P2^1;
sbit LCD_EN=P2^2;
sbit SPK=P3^0;
sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
sbit key4=P1^3;
uchar Display_Buffer[16]=" ";
uchar Count,hour=12,min=12,sec=12;
bit flag,H_or_M;
uchar display[]="This is colck";
void _delay_ms(uint x)
{
uchar i;
while(x--)
{
for(i=0;i<120;i++);
}
}
/**********************************************************************
*函数名称:LCD_Write_Command
*输 入:uchar cmd
*输 出:无
*功 能:向LCD1602写指令
**********************************************************************/
void LCD_Write_Command(uchar cmd)
{
LCD_RS=0;//根据规定,RS和R/W同时为低电平时,可以写入指令
LCD_RW=0;
LCD_EN=0;//EN置低电平
P0=cmd;//将数据送入P2口,即写入指令或地址
LCD_EN=1;//EN置高电平
_delay_ms(1);//稍延时,给硬件反应时间
LCD_EN=0;//当EN由高电平跳变成低电平时,液晶模块开始执行命令
}
/**********************************************************************
*函数名称:LCD_Write_Data
*输 入:uchar dat
*输 出:无
*功 能:向LCD1602写数据
**********************************************************************/
void LCD_Write_Data(uchar dat)
{
LCD_RS=1;//RS为高电平,RW为低电平时,可以写入数据
LCD_RW=0;
LCD_EN=0;//EN置低电平
P0=dat;//将数据送入P0口,即将数据写入液晶模块
LCD_EN=1;//EN置高电平
_delay_ms(1);//稍延时,给硬件反应时间
LCD_EN=0;//当EN由高电平跳变成低电平时,液晶模块开始执行命令
}
/**********************************************************************
*函数名称:Init_LCD
*输 入:无
*输 出:无
*功 能:初始化LCD1602
**********************************************************************/
void Init_LCD(void)
{
LCD_Write_Command(0x38);//显示模式设置:16×2显示,5×7点阵,8位数据接口
_delay_ms(1);
LCD_Write_Command(0x06);//显示模式设置:光标右移,字符不移
_delay_ms(1);
LCD_Write_Command(0x0c);//显示模式设置:显示开,无光标,光标不闪烁
_delay_ms(1);
LCD_Write_Command(0x01);//清屏幕指令,将以前的显示内容清除
_delay_ms(1);
}
/**********************************************************************
*函数名称:LCD_POS
*输 入:uchar pos
*输 出:无
*功 能:字符显示位置
**********************************************************************/
void LCD_POS(uchar pos)
{
LCD_Write_Command(0x80|pos);//显示位置的确定方法规定为"80H+地址码x"
}
/**********************************************************************
*函数名称:Show_String
*输 入:uchar *str
*输 出:无
*功 能:LCD1602显示字符串处理函数
**********************************************************************/
void Show_String(uchar *str)
{
while(*str!='\0')//只要没有写到结束标志,就继续写
LCD_Write_Data(*str++);//将字符常量写入LCD,并指向下一个字符
}
void song(void)
{
uchar i,j,k;
for(i=0;i<200;i++)
{
SPK=~SPK;
for(k=0;k<50;k++);
for(j=0;j<50;j++);
}
}
/////lcd1602液晶显示//////
void Display_Time(uchar Hour,uchar Min,uchar Sec)
{
Display_Buffer[0]=Hour/10+'0';//小时十位
Display_Buffer[1]=Hour%10+'0';//小时个位
Display_Buffer[2]=':';//显示:号
Display_Buffer[3]=Min/10+'0';//显示分钟十位
Display_Buffer[4]=Min%10+'0';//显示分钟个位
Display_Buffer[5]=':';//显示:号
Display_Buffer[6]=Sec/10+'0';//显示秒十位
Display_Buffer[7]=Sec%10+'0';//显示秒个位
LCD_POS(0x40);//显示在液晶第1行第0列
Show_String(Display_Buffer);
}
/////按键处理//////
void Set_time(void)
{
flag=0;
if(key1==0||key2==0||key3==0)//若key1,key2,key3其中有键按下,则为真
{
TR0=0;//定时器0停止
flag=1;//按键标志位为真
}
while(flag)//判断那一个按键按下
{
if(key1==0)//判断key1是否按下
{
while(!key1);//等待释放
H_or_M=!H_or_M;//选择是修改时还是分钟
}
else if(key2==0)//判断key2是否被按下
{
while(!key2);//等待释放
if(H_or_M)//若H_OR_M为真,则修改小时
{
if(++hour==24)//若小时=24,则小时=0
hour=0;//小时加1
}
else//否则修改分钟
{
if(++min==60)//若分钟等于60,则分钟等于0
min=0;//分钟加1
}
}
else if(key3==0)//判断key3是否被按下
{
while(!key3);//等待释放
if(H_or_M)//若H_OR_M为真,则修改小时
{
if(--hour==0xff) //小时减1,若小时等于-1,则小时等于23
hour=23;
}
else//否则修改分钟
{
if(--min==0xff)//分钟减1,若分钟等于-1,则分钟等于59
min=59;
}
}
else if(key4==0)//判断key4是否被按下
{
while(!key4);//等待释放
flag=0;//按键标志清零
TR0=1;//定时器0启动
}
Display_Time(hour,min,sec);//传H,M,S值显示到液晶
}
}
void timer0_init(void)//定时器0初始化
{
TMOD=0x01;//定时器0,方式1
ET0=1;//
EA=1;//总中断允许
TR0=1;//启动定时器0
TH0=(65535-50000)/256;//装高8位初值
TL0=(65535-50000)%256;//装低8位初值
}
void main(void)//主函数
{
//P0=0xff;
P1=0xff;//端口初始化
P3=0xff;
Init_LCD();//液晶初始化
timer0_init();//定时器0初始化
LCD_POS(0);//显示在液晶第1行第0列
Show_String(display);
while(1)//无限循环
{
Display_Time(hour,min,sec);//液晶显示时间
//_delay_ms(500);//延时
Set_time();//时间调整
}
}
void timer0() interrupt 1//定时器0中断
{
TH0=(65535-50000)/256;//重装定时器0高8位
TL0=(65535-50000)%256;//重装定时器0低8位
Count++;//计数加1
if(Count==20)//如果COUNT等于20
{
Count=0;//计数清零
sec++;//秒加1
if(sec==60)//判断秒是否等于60
{
sec=0;//秒清零
min++;//分钟加1
if(min==60)//判断分钟是否等于60
{
min=0;//若等于60,则清零分钟
hour++;//小时加1
if(hour==24)//判断小时是否等于24
{
hour=0;//若小时等于24,则清零小时,分钟,秒
min=0;
sec=0;
}
song();
}
}
}
}
这个仿真通过可以用的噢!

‘伍’ 单片机C语言编程简易数字电子时钟

#include <AT89X52.h>
unsigned char X=10,sec,flag;
unsigned char key[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};// 数码管显示数字表
unsigned char key2[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
unsigned char key1[]={0,0,0,0};//key1[0]=9 key1[1]=1 key1[2]=2 key1[3]=3
void delay02s(void);
void dislplay(void);
void dislplay1(void);
void tim1(void);
void main()
{

tim1();
while(1)
{
if(flag==0) dislplay();
else dislplay1();
}
}

void time1(void) interrupt 3
{
TR1=0;
X=X-1;
if(X==0)
{
flag=flag+1;
if(flag==2)
{
flag=0;
sec=sec+1;

if(sec==60)
{
sec=0;
key1[3]=key1[3]+1;
if(key1[3]==10);
{
key1[3]=0;
key1[2]=key1[2]+1;
if(key1[2]==6)
{
key1[2]=0;
key1[1]=key1[1]+1;
if(key[0]!=2)
{
if(key1[1]==10)
{
key1[1]=0;
key1[0]=key1[0]+1;
}
}
if(key[0]==2)
{
if(key[1]==4)
{
key1[1]=0;
key1[0]=0;
}
}
}
}
}
}
X=10;
}

TL1=0xb0;
TH1=0x3c;
TF1=0;
TR1=1;
}

void tim1(void)
{
TMOD =0X10;
TL1=0xb0;
TH1=0x3c;
EA=1;
ET1=1;
TR1=1;
}

void dislplay(void)
{
P2=0xfe;
P0=key[key1[0]];
delay02s();
P2=0xfd;
P0=key[key1[1]];
delay02s();
P2=0xfb;
P0=key[key1[2]];
delay02s();
P2=0xf7;
P0=key[key1[3]];
delay02s();
}
void dislplay1(void)
{
P2=0xfe;
P0=key[key1[0]];
delay02s();
P2=0xfd;
P0=key2[key1[1]];
delay02s();
P2=0xfb;
P0=key[key1[2]];
delay02s();
P2=0xf7;
P0=key[key1[3]];
delay02s();
}
void delay02s(void)
{
unsigned char i,j,k;
for(i=2;i>0;i--)
{
for(j=15;j>0;j--) //198
{
for(k=25;k>0;k--)//248
{
;
}
}

}
}
我空间还有其他的 http://user.qzone.qq.com/615543707/infocenter?ptlang=2052&ADUIN=615543707&ADSESSION=1276219802&ADTAG=CLIENT.QQ.2653_Mysrv.0

‘陆’ 要做一个用C语言编程的数字钟有闹钟和计时功能,求大神讲解一下它的工作原理

一楼的说法有误,C、C++都不支持多线程,
我之前写过C#的,在csdn 搜 solief ,
C最好的方式像一楼说的,获取时间和设置睡眠 可以实现闹钟功能,不过不能暂停或者取消
如果要实现计时,开始和结束获取时间做差即可,与睡眠有冲突

或者你采用一直获取系统时间,再和目标时间比较的方法,就不会有上面的缺点,不过效率差,系统消耗大

C入门不错,但如果真想发展,学 python 、C++、C# 这类的吧

‘柒’ 【求助】关于C语言编程--数字时钟~!

#include <AT89X52.h>
unsigned char X=10,sec,flag;
unsigned char key[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};// 数码管显示数字表
unsigned char key2[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
unsigned char key1[]={0,0,0,0};//key1[0]=9 key1[1]=1 key1[2]=2 key1[3]=3
void delay02s(void);
void dislplay(void);
void dislplay1(void);
void tim1(void);
void main()
{

tim1();
while(1)
{
if(flag==0) dislplay();
else dislplay1();
}
}

void time1(void) interrupt 3
{
TR1=0;
X=X-1;
if(X==0)
{
flag=flag+1;
if(flag==2)
{
flag=0;
sec=sec+1;

if(sec==60)
{
sec=0;
key1[3]=key1[3]+1;
if(key1[3]==10);
{
key1[3]=0;
key1[2]=key1[2]+1;
if(key1[2]==6)
{
key1[2]=0;
key1[1]=key1[1]+1;
if(key[0]!=2)
{
if(key1[1]==10)
{
key1[1]=0;
key1[0]=key1[0]+1;
}
}
if(key[0]==2)
{
if(key[1]==4)
{
key1[1]=0;
key1[0]=0;
}
}
}
}
}
}
X=10;
}

TL1=0xb0;
TH1=0x3c;
TF1=0;
TR1=1;
}

void tim1(void)
{
TMOD =0X10;
TL1=0xb0;
TH1=0x3c;
EA=1;
ET1=1;
TR1=1;
}

void dislplay(void)
{
P2=0xfe;
P0=key[key1[0]];
delay02s();
P2=0xfd;
P0=key[key1[1]];
delay02s();
P2=0xfb;
P0=key[key1[2]];
delay02s();
P2=0xf7;
P0=key[key1[3]];
delay02s();
}
void dislplay1(void)
{
P2=0xfe;
P0=key[key1[0]];
delay02s();
P2=0xfd;
P0=key2[key1[1]];
delay02s();
P2=0xfb;
P0=key[key1[2]];
delay02s();
P2=0xf7;
P0=key[key1[3]];
delay02s();
}
void delay02s(void)
{
unsigned char i,j,k;
for(i=2;i>0;i--)
{
for(j=15;j>0;j--) //198
{
for(k=25;k>0;k--)//248
{
;
}
}

}
}

‘捌’ 求老师们指教:如何用51单片机的串行口和74HC164编程实现简单数字时钟

164是串入并出,做电子时钟可以不用用到,内部定时器计数就能实现数字时钟功能

‘玖’ 数字钟 (1)Linux shell脚本编程实现

#!/bin/bash
update_display()
{
clear
printf "%02d:%02d:%02d\n" $1 $2 $3
}
hour=0
min=0
sec=0
while true
do
update_display $hour $min $sec
sleep 1
let sec+=1
if [ $sec -eq 60 ]; then
sec=0
let min+=1
if [ $min -eq 60 ]; then
min=0
let hour+=1
[ $hour -eq 24 ] && hour=0
fi
fi
done
#=========================================
# 试试这个 ^_^
# ctrl+c退出

热点内容
内置存储卡可以拆吗 发布:2025-05-18 04:16:35 浏览:335
编译原理课时设置 发布:2025-05-18 04:13:28 浏览:378
linux中进入ip地址服务器 发布:2025-05-18 04:11:21 浏览:612
java用什么软件写 发布:2025-05-18 03:56:19 浏览:31
linux配置vim编译c 发布:2025-05-18 03:55:07 浏览:107
砸百鬼脚本 发布:2025-05-18 03:53:34 浏览:942
安卓手机如何拍视频和苹果一样 发布:2025-05-18 03:40:47 浏览:739
为什么安卓手机连不上苹果7热点 发布:2025-05-18 03:40:13 浏览:802
网卡访问 发布:2025-05-18 03:35:04 浏览:510
接收和发送服务器地址 发布:2025-05-18 03:33:48 浏览:371