
#include "1602yejing.h"
sbit key1=P3^2 //选择调整位置按钮
sbit key2=P3^3 //加一按钮
sbit key3=P3^4 //减一按钮
sbit key4=P3^5 //定时按钮
char shi,fen,miao,T_shi,T_fen,T_miao
uchar count,keynum,flag
uchar code table1[]=" 2011-12-26 1"
uchar code table2[]="10:30:30"
uchar code table3[]="input the timing"
uchar code table4[]="00:00:00"
void write_sfm(uchar add,uchar date)
{
uchar shi,ge
shi=date/10
ge=date%10
write_com(0xc0+add)
write_date(shi+'0')
write_date(ge+'0')
}
void init()
{
uchar num
shi=10
fen=30
miao=30
P1=0xfe
write_com(0x38)//显示模式
write_com(0x0c)//不显示光标,光标不闪烁
write_com(0x06)//地址指针加一,光标加一
write_com(0x01)//清屏
write_com(0x80)
for(num=0num<16num++)
{
write_date(table1[num])
delay(5)
}
write_com(0xc0)
for(num=0num<12num++)
{
write_date(table2[num])
delay(5)
}
TMOD=0x01
TH0=(65536-50000)/256
TL0=(65536-50000)%256
EA=1
ET0=1
TR0=1
}
void keyscan()
{
uchar i
if(key4==0)
{
delay(5)
if(key4==0)
{
while(!key4)
flag=1
write_com(0x80)
for(i=0i<16i++)
{
write_date(table3[i])
delay(5)
}
write_com(0xc0)
for(i=0i<12i++)
{
write_date(table4[i])
delay(5)
}
}
}
if(key1==0)
{
delay(5)
if(key1==0)
{
while(!key1)
keynum++
if(keynum==1)
{
if(flag==0) TR0=0
write_com(0xc0+11)
write_com(0x0f)
}
if(keynum==2)
{
write_com(0xc0+8)
write_com(0x0f)
}
if(keynum==3)
{
write_com(0xc0+5)
write_com(0x0f)
}
if(keynum==4)
{
write_com(0x0c)
TR0=1
if(flag==0)
{
keynum=0
}
if(flag==1)
{
flag=0
write_com(0x80)
for(i=0i<16i++)
{
write_date(table1[i])
delay(5)
}
write_sfm(4,shi)
write_sfm(7,fen)
write_sfm(10,miao)
}
}
}
}
if(keynum!=0)
{
if(key2==0)
{
delay(5)
if(key2==0)
{
// while(!key2)
if(keynum==1)
{
if(flag==0)
{
miao++
if(miao==60) miao=0
write_sfm(10,miao)
write_com(0xc0+10)
delay(300)
}
if(flag==1)
{
T_miao++
if(T_miao==60) T_miao=0
write_sfm(10,T_miao)
write_com(0xc0+10)
delay(300)
}
}
if(keynum==2)
{
if(flag==0)
{
fen++
if(fen==60) fen=0
write_sfm(7,fen)
write_com(0xc0+7)
delay(300)
}
if(flag==1)
{
T_fen++
if(T_fen==60) T_fen=0
write_sfm(7,T_fen)
write_com(0xc0+7)
delay(300)
}
}
if(keynum==3)
{
if(flag==0)
{
shi++
if(shi==24) shi=0
write_sfm(4,shi)
write_com(0xc0+4)
delay(300)
}
if(flag==1)
{
T_shi++
if(T_shi==24) T_shi=0
write_sfm(4,T_shi)
write_com(0xc0+4)
delay(300)
}
}
}
}
if(key3==0)
{
delay(5)
if(key3==0)
{
// while(!key3)
if(keynum==1)
{
if(flag==0)
{
miao--
if(miao==-1) miao=59
write_sfm(10,miao)
write_com(0xc0+10)
delay(300)
}
if(flag==1)
{
T_miao--
if(T_miao==-1) T_miao=59
write_sfm(10,T_miao)
write_com(0xc0+10)
delay(300)
}
}
if(keynum==2)
{
if(flag==0)
{
fen--
if(fen==-1) fen=59
write_sfm(7,fen)
write_com(0xc0+7)
delay(300)
}
if(flag==1)
{
T_fen--
if(T_fen==-1) T_fen=59
write_sfm(7,T_fen)
write_com(0xc0+7)
delay(300)
}
}
if(keynum==3)
{
if(flag==0)
{
shi--
if(shi==-1) shi=23
write_sfm(4,shi)
write_com(0xc0+4)
delay(300)
}
if(flag==1)
{
T_shi--
if(T_shi==-1) T_shi=23
write_sfm(4,T_shi)
write_com(0xc0+4)
delay(300)
}
}
}
}
}
}
void main()
{
init()
while(1)
{
keyscan()
if(miao==T_miao&&fen==T_fen&&shi==T_shi)
{
P1=0xff
}
}
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256
TL0=(65536-50000)%256
count++
if(count==16)
{
count=0
P1=0xfe
miao++
if(miao==60)
{
miao=0
fen++
if(fen==60)
{
fen=0
shi++
if(shi==24)
{
shi=0
}
if(flag==0) write_sfm(4,shi)
}
if(flag==0) write_sfm(7,fen)
}
if(flag==0) write_sfm(10,miao)
}
}
头文件
#ifndef _1602yejing_H_
#define _1602yejing_H_
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit E=P2^7
sbit RW=P2^6
sbit RS=P2^5
void delay(uint z)
{
uint x,y
for(x=zx>0x--)
for(y=148y>0y--)
}
void write_com(uchar com)//写命令函数
{
P0=com
RS=0
RW=0
E=0
delay(5)
E=1
delay(5)
}
void write_date(uchar date)//写数据函数
{
P0=date
RS=1
RW=0
E=0
delay(5)
E=1
delay(5)
}
#endif
用C语言实现的闹钟程序#include
#include
#include
#include
#include
void
main()
{
int
gd=DETECT,gm
int
x=320,y=240,r=200,i,h,m,s,thetamin,thetasec
struct
time
t
char
n[12][3]={"3","2","1","12","11","10","9","8","7","6","5","4"}
initgraph(&gd,&gm,"g:\\物亩tc\\bgi")//图形驱动器路径,根据自己的系统更换。
circle(x,y,210)
setcolor(4)
settextstyle(4,0,5)
for(i=0i<12i++)
{
if(i!=3)
outtextxy(x+(r-14)*cos(M_PI/6*i)-10,y-(r-14)*sin(M_PI/6*i)-26,n[i])
else
outtextxy(x+(r-14)*cos(M_PI/6*i)-20,y-(r-14)*sin(M_PI/6*i)-26,n[i])
}
gettime(&t)
printf("The
current
time
is:
%2d:%02d:%02d.%02d\n",t.ti_hour,
t.ti_min,
t.ti_sec,
t.ti_hund)
while(!kbhit())
{
setcolor(5)
setfillstyle(1,5)
circle(x,y,10)
floodfill(x,y,5)
gettime(&t)
if(t.ti_min!=m)
{
setcolor(0)
line(x,y,x+(r-60)*cos(thetamin*(M_PI/180)),y-(r-60)*sin(thetamin*(M_PI/180
)))
circle(x+(r-80)*cos(thetamin*(M_PI/180)),y-(r-80)*sin(thetamin*(M_PI/180))
,10)
line(x,y,x+(r-110)*cos(M_PI/6*h-((m/2)*(M_PI/180))),y-(r-110)*sin(M_PI/6*h
-((m/2)*(M_PI/180))))
circle(x+(r-130)*cos(M_PI/6*h-((m/2)*(M_PI/180))),y-(r-130)*sin(M_PI/6*h-(
(m/2)*(M_PI/180))),10)
}
if(t.ti_hour>12)
t.ti_hour=t.ti_hour-12
if(t.ti_hour<核腔4)
h=abs(t.ti_hour-3)
else&n
bsp
h=15-t.ti_hour
m=t.ti_min
if(t.ti_min<=15)
thetamin=(15-t.ti_min)*6
else
thetamin=450-t.ti_min*6
if(t.ti_sec<=15)
thetasec=(15-t.ti_sec)*6
else
thetasec=450-t.ti_sec*6
setcolor(4)
line(x,y,x+(r-110)*cos(M_PI/6*h-((m/2)*(M_PI/180))),y-(r-110)*sin(M_PI/6*h
-((m/2)*(M_PI/罩氏森180))))
circle(x+(r-130)*cos(M_PI/6*h-((m/2)*(M_PI/180))),y-(r-130)*sin(M_PI/6*h-(
(m/2)*(M_PI/180))),10)
line(x,y,x+(r-60)*cos(thetamin*(M_PI/180)),y-(r-60)*sin(thetamin*(M_PI/180
)))
circle(x+(r-80)*cos(thetamin*(M_PI/180)),y-(r-80)*sin(thetamin*(M_PI/180))
,10)
setcolor(15)
line(x,y,x+(r-70)*cos(thetasec*(M_PI/180)),y-(r-70)*sin(thetasec*(M_PI/180
)))
delay(1000)
setcolor(0)
line(x,y,x+(r-70)*cos(thetasec*(M_PI/180)),y-(r-70)*sin(thetasec*(M_PI/180
)))
}
}
该程序已在Turbo
C++3.0中通过编译.
呵呵,写了一个玩玩:#include <stdio.h> 枣棚
#include <windows.h>
#include <winbase.h>
int main(int argc, char *argv[])
{
SYSTEMTIME time
SYSTEMTIME clock
GetLocalTime(&time)
printf("当前时间为:%2d:%2d:%2d\n",time.wHour,time.wMinute,time.wSecond)
printf("请设定闹钟时间:\n")
printf("时:")
scanf("%2d"梁巧,&clock.wHour)
printf("分:橡岩键")
scanf("%2d",&clock.wMinute)
while(1)
{
Sleep(1000)
GetLocalTime(&time)
if((time.wHour==clock.wHour)&&(time.wMinute==clock.wMinute))
{
printf("\a\a\a时间到!!!")
break
}
}
return 0
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)