c语言 提示时间 程序(带声音提示时间、就是闹铃)要在DOS在运行的。做好了加50分

c语言 提示时间 程序(带声音提示时间、就是闹铃)要在DOS在运行的。做好了加50分,第1张

#include <at89x52h>

#include <DS1302h>

//定义共阳极字型码0123456789-

unsigned char code dispcode[]=;

unsigned char time[]=;//用来储存时间

unsigned char date[]=;//用来储存日期

unsigned char year[]=;//用来储存年份

unsigned char week[]=;//用来储存星期

SYSTEMTIME time1; //在ds1302h文件中已经定义了一个名字为SYSTEMTIME的结构体,在这里我们定义一个变量名

//为time的SYSTEMTIME结构体

void delay(unsigned char i) //延时子程序

{

unsigned char j;

while((i--)!=0)

{

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

}

}

unsigned char button_time(n,x,y) //时钟调整子程序

unsigned char n,x,y;

{

if(P1_7==0)

{

delay(50);

if(P1_7==0)

{

n++;

if(n==x)

n=0;

while(P1_7==0); //等待按键释放

}

}

if(P1_5==0)

{

delay(50);

if(P1_5==0)

{

if(n==0)

n=y;

else

n--;

while(P1_5==0);

}

}

return n;

}

unsigned char button_date(n,x,y) //日期调整子程序

unsigned char n,x,y;

{

if(P1_7==0)

{

delay(50);

if(P1_7==0)

{

n++;

if(n==x)

n=1;

while(P1_7==0);

}

}

if(P1_5==0)

{

delay(50);

if(P1_5==0)

{

if(n==1)

n=y;

else

n--;

while(P1_5==0);

}

}

return n;

}

unsigned char button_year(n,x,y) //年份调整子程序

unsigned char n,x,y;

{

if(P1_7==0)

{

delay(50);

if(P1_7==0)

{

n++;

if(n==x)

n=2;

while(P1_7==0);

}

}

if(P1_5==0)

{

delay(50);

if(P1_5==0)

{

if(n==2)

n=y;

else

n--;

while(P1_5==0);

}

}

return n;

}

void display(minute10,minute1,hour10,hour1) //显示子程序

unsigned char minute10,minute1,hour10,hour1;

{

P2=0xfe;

P0=dispcode[minute10];//显示分的十位

delay(1);

P2=0xfd;

P0=dispcode[minute1]; //显示分的个位

delay(1);

P2=0xfb;

P0=dispcode[hour10]; //显示时的十位

delay(1);

P2=0xf7;

P0=dispcode[hour1]; //显示时的个位

delay(1);

}

void display1(week1)

unsigned char week1;

{

P2=0xef;

P0=dispcode[week1];

delay(1);

}

void main()

{

unsigned char flag,aa=2,bb=0;

Initial_DS1302(); //初始化DS1302这个时钟芯片,

while(1)

{

DS1302_GetTime(&time1); //读取时间参数

time[3]=(time1Minute)%10; //把分的个位数据存入time[3]

time[2]=(time1Minute)/10; //把分的十位数据存入time[2]

time[1]=(time1Hour)%10; //把时的个位数据存入time[1]

time[0]=(time1Hour)/10; //把时的十位数据存入time[0]

date[3]=(time1Day)%10;

date[2]=(time1Day)/10;

date[1]=(time1Month)%10;

date[0]=(time1Month)/10;

year[1]=(time1Year)%10;

year[0]=(time1Year)/10;

week[0]=(time1Week);

display1(week[0]); //显示星期

if(P1_4==0) //如果按下Time Start键一下,时钟开始正常显示时间,再按一下,显示日期,再按一下,显示年份

{

delay(50);

if(P1_4==0)

{

flag++;

if(flag>2)

{

flag=0;

}

}

while(P1_4==0);

}

if(P1_6==0) //如果按下Time Set键一下,开始显示日期,再按一下开始显示年份,再按一下,进入年份,日期,星期和时间的调节模式

{

delay(50);

if(P1_6==0)

{

flag++;

if(flag>8)

{

flag=0;

}

}

while(P1_6==0);

}

switch(flag)

{

case 0:display(time[0],time[1],time[2],time[3]); //调用子函数display,把存入数组time的数据给显示出来

break;

case 1:display(date[0],date[1],date[2],date[3]); //调用子函数display,把存入数组date的数据给显示出来

break;

case 2:display(aa,bb,year[0],year[1]); //调用子函数display,把存入数组year的数据给显示出来

break;

case 3:time1Year=button_year(time1Year,2099,2098); //调整年

DS1302_SetTime(0x8c,time1Year);

display(aa,bb,year[0],year[1]);

break;

case 4:time1Month=button_date(time1Month,13,12); //调整月

DS1302_SetTime(0x88,time1Month);

display(date[0],date[1],10,10);

break;

case 5:time1Day=button_date(time1Day,32,31); //调整日

DS1302_SetTime(0x86,time1Day);

display(10,10,date[2],date[3]);

break;

case 6:time1Week=button_date(time1Week,8,7); //调整星期

DS1302_SetTime(0x8a,time1Week);

display1(week[0]);

break;

case 7:time1Hour=button_time(time1Hour,24,23); //调整时

DS1302_SetTime(0x84,time1Hour);

display(time[0],time[1],10,10);

break;

case 8:time1Minute=button_time(time1Minute,60,59); //调整分

DS1302_SetTime(0x82,time1Minute);

display(10,10,time[2],time[3]);

break;

}

}

}

程序员联合开发网上有:>

#include<reg52h>

#include<absacch>

#include<intrinsh>

#define unit unsigned int

#define uchar unsigned char

//#define HZ 12

sbit key0=P0^0; // 分钟调整

sbit key1=P0^1; // 小时调整

sbit P2_0=P2^7; //秒 指示灯

sbit MN_RXD=P3^6;

sbit MN_TXD=P3^7;

uchar data CLOCK[4]={0,0,0,12};//存放时钟时间(百分秒,秒,分,和时位)

//数码管显示表0-f 灭

uchar code TABLE[]={0xBE,0x06,0xEA,0x6E,0x56,0x7C,0xFC,0x0E,0xFE,0x7E,0x00};

//

//模拟串口发送一个字节数据 函数

//

void SendData(unsigned char senddata)

{

unsigned char i;

for(i=0;i<8;i++)

{

if((senddata&0x01)==0)

MN_RXD=0;

else

MN_RXD=1;

_nop_();

MN_TXD=0;

_nop_();

MN_TXD=1;

senddata=senddata>>1;

}

}

//

//显示程序函数

//

void display(void)

{

// unsigned int n;

uchar temp;

temp=CLOCK[1]; temp=temp%10; SendData(TABLE[temp]);

temp=CLOCK[1]; temp=temp/10; SendData(TABLE[temp]);

temp=CLOCK[2]; temp=temp%10; SendData(TABLE[temp]);

temp=CLOCK[2]; temp=temp/10; SendData(TABLE[temp]);

temp=CLOCK[3]; temp=temp%10; SendData(TABLE[temp]);

temp=CLOCK[3]; temp=temp/10; SendData(TABLE[temp]);

/

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

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

{

SendData(TABLE[10]);

}

/

}

//

//按键控制函数

//

void keycan()

{

unsigned int n;

EA=0;

if(key0==0) // 分钟调整

{

for(n=0;n<10000;n++); //延时去抖动

while(key0==0);

CLOCK[2]=CLOCK[2]+1;

if(CLOCK[2]==60) //到一时

{

CLOCK[2]=0;

}

display();

}

if(key1==0) // 小时调整

{

for(n=0;n<10000;n++); //延时去抖动

while(key1==0);

CLOCK[3]=CLOCK[3]+1;

if(CLOCK[3]==24)

{

CLOCK[3]=0;

}

display();

}

EA=1;

}

//

//T0中断服务函数

//

void time0() interrupt 1 //using 1

{

TH0=0xD8; TL0=0xF0; //重置初值

// TH0=0xB1; TL0=0xE0;

//时钟处理

CLOCK[0]=CLOCK[0]+1;

}

//

//主函数

//

void main()

{

EA=1;

ET0=1;

TMOD=0x01; //T0方式1定时

TH0=0xD8; TL0=0xF0; //D8F0 定时10ms

// TH0=0xB1; TL0=0xE0; //定时 20ms

TR0=1;

for(;;)

{

if(CLOCK[0]==100) //到一秒 10ms100

{

CLOCK[0]=0;

P2_0=~P2_0;

CLOCK[1]=CLOCK[1]+1;

if(CLOCK[1]==60) //到一分

{

CLOCK[1]=0;

CLOCK[2]=CLOCK[2]+1;

if(CLOCK[2]==60) //到一时

{

CLOCK[2]=0;

CLOCK[3]=CLOCK[3]+1;

if(CLOCK[3]==24)

{

CLOCK[3]=0;

}

}

}

display();

}

keycan();

}

}

我来发一个C语言51单片机时钟程序,希望能帮到你

/ 程序功能:带定时闹铃时钟                                      /

/---------------------------------------------------------------/

#include <AT89X51H>    /包含器件配置文件/

#define uchar unsigned char

#define uint unsigned int

char DATA_7SEG[10]={0xC0,0xF9,0xA4,0xB0,0x99,

0x92,0x82,0xF8,0x80,0x90,};/0~9的数码管段码/

uchar hour=0,min=0,sec=0;   /时、分、秒单元清零/

uchar deda=0;        /5mS计数单元清零/

bit d_05s=0;               /05秒标志/

uchar set=0;      /模式设定标志/

uchar m=0;

uchar flag=0;      /RAM掉电标志/

void delay(uint k);     /延时函数/

void conv();         /走时单元转换/

void disp();      /走时时间显示函数/

/------------------------走时函数部分 ----------------------/

/定时器T0  5mS初始化/

void init_timer()

{

TMOD=0x01;

TH0=-(4800/256);

TL0=-(4800%256);

IE=0x82;

TR0=1;

}

/---------------------------------/

/5mS定时中断服务函数/

void T0_srv(void) interrupt 1

{

TH0=-(4800/256);

TL0=-(4800%256);

deda++;

}

/----------------------------------/

/时、分、秒单元及走时单元转换/

void conv()

{

if(deda<=100)d_05s=0;

else d_05s=1;

if(deda>=200){sec++;deda=0;}

if(sec==60){min++;sec=0;}

if(min==60){hour++;min=0;}

if(hour==24){hour=0;}

}

/------------------------ 显示函数部分 ----------------------/

/走时时间显示函数/

void disp()

{

P0=DATA_7SEG[hour/10];P2=0xf7;delay(1);

P0=DATA_7SEG[hour%10];P2=0xfb;delay(1);

if(d_05s==1){if(P2_2==0)P0_7=0;else P0_7=1;}

delay(1);

P0=DATA_7SEG[min/10];P2=0xfd;delay(1);

P0=DATA_7SEG[min%10];P2=0xfe;delay(1);

}

/---------------------- 调整时间函数部分 -------------------/

/调整走时时间/

void set_time()

{uchar m;

if(P2_5==0)delay(1);

if(P2_5==0)hour++;

if(hour==24)hour=0;

for(m=0;m<30;m++)

{

disp();

if(P2_2==0)P0_7=0;

else P0_7=1;

delay(1);

}

if(P2_6==0)delay(1);

if(P2_6==0)min++;

if(min==60)min=0;

for(m=0;m<30;m++)

{

disp();

if(P2_2==0)P0_7=0;

else P0_7=1;

delay(1);

}

}

/------------------ 按键扫描、延时等函数部分-------------------/

/走时时间程序函数/

void time()

{

conv();    / 走时单元转换函数  /

disp();    / 走时时间显示函数  /

}

/------------------------------------/

/扫描按键函数/

void scan_key()

{

delay(1);

if(P2_4==0)set++;

if(set>=2)set=0;

if(set==1)flag=0x55;

F0:if(P2_4==0)goto F0; /按键未释放,在此等候/

}

/------------------------------/

/延时函数/

void delay(uint k)

{

uint i,j;

for(i=0;i<k;i++){

for(j=0;j<121;j++)

{;}}

}

/----------------------- 主函数 ------------------------- /

/主函数/

void main()

{

init_timer();             /定时器T0初始化/

while(1)     /无限循环/

{

if(P2_4==0)scan_key();   /有按键,调用按键扫描函数/

switch(set)      /根据set键值散转/

{

case 0:time();  break;    /走时时间程序/

case 1:set_time();break;       /走时时间调整/

default:break;     /其它退出/

}

if(flag!=0x55)          /判断掉电标志/

{

P0=0xc0; P2=0xc0; delay(100);

P2=0xff; delay(400);

}

}

}

以上就是关于c语言 提示时间 程序(带声音提示时间、就是闹铃)要在DOS在运行的。做好了加50分全部的内容,包括:c语言 提示时间 程序(带声音提示时间、就是闹铃)要在DOS在运行的。做好了加50分、C语言编闹钟程序、求一个关于用C语言编写的电子时钟的程序,内容要有闹钟,可以调整时间等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存