51单片机带闹钟c语言程序,51单片机定时闹钟程序(带按键)

电路图很简单,数码管是用2片573 接到p2口,通过p0.0 和P0.1锁存控制,详见单片机开发板上面的电路:http://www.51hei.com/f/51hei-5.pdf  , 大家可以按里面的图接,只需要端口要改为本程序中的即可.可通过按键实现设置定时的时间.小时分秒设置等等.

//包含头文件及宏定义//

#include

#include

#define uchar unsigned char

#define uint  unsigned int

/

继电器响应动作指示灯//

sbit light=P1^0;

sbit int0_ok=P3^2;

sbit int1_ok=P3^3;

/数码管的段位锁存

sbit duan=P0^0;

sbit wei=P0^1;

uchar bit1,bit2,bit3,bit4,bit5,bit6;///小时 分钟 秒钟显示码

uchar fen=0;// 分钟缓存

uchar miao=0;//秒缓存

uchar shi=0;//小时缓存

uchar key_temp;/按键暂存

//uchar key_old;

uchar key_count;//按键计数

uchar key_back;/按键备份

uchar key_data;//按键数值

uchar key_con;

uchar key_ok;

uchar int0_function=0;///功能0,做调节始终

uchar int1_function=0;///功能1,做运行停止用

uchar time;定时常数

uchar t2time;

#define KEYDELAY 25    /*首键延迟次数*/

#define KEYLOOP 10    /*连续键间隔次数,需小于KEYDELAY*/

void shanshuo(uchar aa,uchar ii);

void init();

void sign(uchar i);

毫秒级的延时

void delayms(uint i)   //误差 0us

{

uint c;

unsigned char a,b;

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

for(b=142;b>0;b--)

for(a=2;a>0;a--);

}

/数码管的段位码///

uchar code tableduan[]={    //共阳极数码管段码

0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8, 0x80,0x90,//0-9

//0x88,0x83,0xc6,0xa1,0x86,0x8E//A-F

0xbf//-

};

uchar code tablewei[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};//位码

uchar code welcom[]={0xbf,0xbf,0xc0,0x8c,0x86,0xc8,0xbf,0xbf};//--OPEN-- 1

uchar code on[]={0xbf,0xbf,0xbf,0xc0,0xc8,0xbf,0xbf,0xbf};//---on---       2

uchar code off[]={0xbf,0xbf,0xc0,0x8e,0x8e,0xbf,0xbf,0xbf};//--off---      3

uchar code closed[]={0xbf,0xc6,0xc7,0xc0,0x92,0x86,0xf8,0xbf};//-closed-   4

/数码管显示程序///

void display(uchar duan1,uchar wei1)

{

P2=0xff;

duan=0;

wei=0;

P2=tableduan[duan1];

duan=1;

duan=0;

P2=tablewei[wei1];

wei=1;

wei=0;

delayms(1);

}

/数码管显示程序///

//数码管显示位计算/

void jisuan()

{

bit1=shi/10;

bit2=shi%10;

bit3=fen/10;

bit4=fen%10;

bit5=miao/10;

bit6=miao%10;

/*

display(bit1,0);

display(bit2,1);

display(10,2);

display(bit3,3);

display(bit4,4);

displ

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值