LED数码管时钟程序 电路时间可调.docx

上传人:b****3 文档编号:2917631 上传时间:2022-11-16 格式:DOCX 页数:5 大小:53.04KB
下载 相关 举报
LED数码管时钟程序 电路时间可调.docx_第1页
第1页 / 共5页
LED数码管时钟程序 电路时间可调.docx_第2页
第2页 / 共5页
LED数码管时钟程序 电路时间可调.docx_第3页
第3页 / 共5页
LED数码管时钟程序 电路时间可调.docx_第4页
第4页 / 共5页
LED数码管时钟程序 电路时间可调.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

LED数码管时钟程序 电路时间可调.docx

《LED数码管时钟程序 电路时间可调.docx》由会员分享,可在线阅读,更多相关《LED数码管时钟程序 电路时间可调.docx(5页珍藏版)》请在冰豆网上搜索。

LED数码管时钟程序 电路时间可调.docx

LED数码管时钟程序电路时间可调

LED数码管时钟程序+电路-时间可调

自上次数码管时钟为完善版本(玩了几天后,懒啊不想动,汗)终于解决了不能进入调试的BUG

不来废话上程序:

/***************************************************************

*程序名称:

51单片机数码管电子钟+定时闹钟晶振:

12.00

*实验对象:

51hei单片机学习开发板

*单片机:

AT89S52或STC89C52闹钟时间:

7:

10分(程序自定义)

*使用定时器方式,数码管显示24小时“00-00-00”(增加中断进入对时功能

P1为按键,P2为段选,P0为位选,

****************************************************************/

/***使用定时器方式,数码管显示24小时“00-00-00”(增加进入对时功能)

P1为按键,P2为段选,P0为位选,{闹钟暂时不可调待完善})***/

#include;

#defineucharunsignedchar/*宏定义*/

#defineuintunsignedint/*宏定义*/

ucharhour,hour_h,hour_l;/*定义小时,小时的高位,小时的低位*/

ucharmin,min_h,min_l;/*分*/

ucharsec,sec_h,sec_l;/*秒*/

ucharint_num;/*定时溢出作用标号*/

sbitkey_secadd=P1^1;/*定义了p1.1为秒增1键,用在调时中断里*/

sbitkey_minadd=P1^2;/*定义了p1.2为分增1键,用在调时中断里*/

sbitkey_houradd=P1^3;/*定义了p1.3为时增1键,用在调时中断里*/

sbitkey_intime=P1^0;//按P1.0进入调时

sbitkey_quit=P1^5;//P1.5退出调时

sbitbell=P1^5;//小喇叭

voiddelay(uchartime);/*延时子函数声明*/

voiddisplay();/*显示子函数声明*/

voidinter_init();/*定时器初始化子函数声明*/

voidtime24();

/****专用数码管显示表***/

ucharcodeduma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};/*0x40显示“一”符号*/

ucharcodewema[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0x00};

/*小时hour分min秒sec*/

//---------------------延时子函数--------------------------------

voiddelay(uchartime)/*延时子函数*/

{

uchartime_1;

for(;time>;0;time--)

for(time_1=100;time_1>;0;time_1--);

}

//---------------------初始化T0函数--------------------------

voidtime0(void)interrupt1/*定时器T0服务子程序*/

{

TH0=(65535-50000)/256;

TL0=(65535-50000)%256;

int_num++;

}

//---------------------定时器函数--------------------------

voidinter_init()/*定时器初始化子函数*/

{

EA=1;/*开总中断*/

EX0=1;/*开外部中断0*/

ET0=1;/*打开定时器T0*/

TMOD=0x01;/*工作方式1*/

TCON=0x00;/*触发方式*/

IP=0x01;/*中断优先级别,T0优先*/

TH0=(65535-50000)/256;/*置初值,大约50ms一个中断*/

TL0=(65535-50000)%256;

TR0=1;/*置位TR0,启动定时器0*/

}

//---------------------24小时时间自加--------------------------

voidtime24()/*时间递增*/

{

if(int_num==20)/*值满20,大约就是一秒的时间。

*/

{/*其值设为2,则定时时间快10倍,可做毫秒计时*/

int_num=0;

sec++;/*秒值加1*/

if(sec==60)/*如果秒值满60,就归0*/

{

sec=0;

min++;/*分值加1*/

if(min==60)

{

min=0;

hour++;/*分值归0,时值加1*/

if(hour==24)

{

hour=0;/*时值满24归0*/

}

}

}

}

}

//-----------按键调整子函数-------------------------------------

voidkey(void)//按键调整子函数

{

if(key_intime==0)

{EA=0;//关中断

sec=0;//秒归零

while(100)//正确

{display();

if(key_quit==0)

{

EA=1;

break;

}

if(key_secadd==0)

{

delay

(1);

if(key_secadd==0)

{

sec++;

while(!

key_secadd);

if(sec==60)

{

sec=0;

}

}

}

if(key_minadd==0)

{

delay(80);

if(key_minadd==0)

{

min++;

while(!

key_minadd);

if(min==60)

{

min=0;

}

}

}

if(key_houradd==0)

{

delay(80);

if(key_houradd==0)

{

hour++;

while(!

key_houradd);

if(hour==24)

{

hour=0;

}

}

}

}}

}

//---------------------数码管显示子函数-------------------------------------

voiddisplay()/*数码管显示子函数*/

{

sec_h=sec/10;/*求出秒高位需要显示的字符*/

sec_l=sec%10;/*求出秒低位需要显示的字符*/

min_h=min/10;

min_l=min%10;

hour_h=hour/10;

hour_l=hour%10;

P2=duma[sec_h];/*显示秒高位*/

P0=wema[6];

delay(10);

P2=duma[sec_l];/*显示秒低位*/

P0=wema[7];

delay(10);

P2=duma[10];/*“一”符号的显示*/

P0=wema[5];

delay(10);

P2=duma[min_h];/*分*/

P0=wema[3];

delay(10);

P2=duma[min_l];

P0=wema[4];

delay(10);

P2=duma[10];/*“一”符号的显示*/

P0=wema[2];

delay(10);

P2=duma[hour_h];/*时*/

P0=wema[0];

delay(10);

P2=duma[hour_l];

P0=wema[1];

delay(10);

}

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

/*voidalarm_clock()//闹钟子函数-变频发声

{

uinti,j,y,m;

if(hour==00)//时到了00点?

{

if(min>;=01){m=0;}//分大于或等于01就把m清零,若不成立向下执行

if(min==00)//到了00分?

{

if(m

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1