单片机 模拟电子闹钟 c语言,单片机可调数字钟闹钟整点报时功能(带Proteus仿真电路图+源码)...

这篇博客介绍了一个使用单片机和C语言实现的模拟电子闹钟项目,包括时间显示、整点报时功能,并提供了Proteus仿真电路图和源码。通过按键操作可以调整时间,且设有3个可调闹钟。文章还详细解释了代码逻辑和关键函数,如加1、减1子函数,以及时间更新和键盘扫描子函数。
摘要由CSDN通过智能技术生成

#include

#include

//****************************宏定义********************************

typedef unsigned char uchar;

typedef unsigned int  uint;

//****************************位声明********************************

sbit key1=P1^0;

sbit key2=P1^1;

sbit key3=P1^2;

sbit key4=P1^3;

sbit beep=P3^0;

//************************数码管显示的数值**************************

uchar code table[]=        {

0x3f,0x06,0x5b,0x4f,0x66,0x6d,

0x7d,0x07,0x7f,0x6f,0x40,0x00

};

//****************************函数声明******************************

void jia();

void jian();

//********************数组定义,数组内含有8个数值******************

uchar table1[8],table2[8],table3[8],table4[8];

//**************************时间显示初始值**************************

uchar shi=12,fen=0,miao=0;

//**************************定义全局变量****************************

uchar shi1,fen1,miao1,shi2,fen2,miao2,shi3,fen3,miao3;

uchar shi4,fen4,miao4;

uchar flag, flag1, wss, cnt, cnt1, alm1, alm2, alm3;

//    1秒   等时  位闪 次数 校时   闹1  闹2   闹3

uint flag2;

//   蜂鸣

//*********************延时函数,用于动态扫描数码管*****************

void delay(uchar i)

{

uchar x,y;

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

for(y=120;y>0;y--);

}

//*******************************初始化函数*************************

void init()

{

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

TH0=0x3c;          //定时时间为:50ms        (65536-50000)/256

TL0=0x0b0;         //(65536-50000)%256

EA=1;              //开总中断

ET0=1;             //打开定时器

TR0=1;             //启动定时器

beep=0;

}

//********************显示子函数,用于显示时间数值*****************

void display()

{

uchar i,j;

if(cnt!=10||wss==0)

{

table1[0]=miao%10;        //分离秒的个位与十位

table1[1]=miao/10;

}

else

table1[0]=table1[1]=11;

if(cnt!=11||wss==0)

{

table1[3]=fen%10;         //分离分的个位与十位

table1[4]=fen/10;

}

else

table1[3]=table1[4]=11;

if(cnt!=12||wss==0)

{

table1[6]=shi%10;         //分离时的个位与十位

table1[7]=shi/10;

}

else

table1[6]=table1[7]=11;

table1[2]=table1[5]=10;

j=0xfb;

for(i=0;i<=7;i++)          //从秒到时的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值