找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1970|回复: 0
打印 上一主题 下一主题
收起左侧

数码管clock源程序(C程序打造)

[复制链接]
跳转到指定楼层
楼主
ID:127496 发表于 2016-6-21 01:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

效果如图:


源程序:


/***************************************************
作者:T.Z.R.                 
使用简介:写的过于差劲,仅供菜鸟看看玩玩,高人别P我……
主要功能:1.显示时间(……)
    2.二十四小时整点报时,蜂鸣器响1秒.
    3.具有闹钟功能,闹钟响一分钟,中途可以按下Set键停止吵人。
    缺点:由于使用数码管,无时无刻亮着,所以有些耗电……
***************************************************/
#include <at89x52.h>
sbit w4=P3^5;
sbit w3=P3^4;
sbit w2=P3^3;
sbit w1=P3^2;
sbit beep=P3^7;
sbit mode=P3^0;
sbit set=P3^1;
sbit d=P1^7;
/*变量声明部分*/
unsigned char code num [10]={0x7e,0x48,0x3d,0x6d,0x4b,0x67,0x77,0x4c,0x7f,0x6f}; //核心部分,用于显示数码管
unsigned char i;
unsigned char sec;
unsigned char min;
unsigned char hour;
unsigned char mmin;
unsigned char mhour;
unsigned char day;
unsigned char month;
unsigned char v1;
unsigned char v2;
unsigned char v3;
unsigned char v4;
unsigned char k1;
unsigned char k2;
unsigned char k3;
unsigned char k4;
unsigned char mos;
unsigned int ms;
bit sh;
bit alm;
void hp(void){
w1=0;
w2=0;
w3=0;
w4=0;
}
void delay(unsigned int a){
unsigned int i;
while(--a>0){
for(i=0;i<300;i++);
}
}
/*主函数开始*/
void main (void){
alm=1;
hour=11;
min=59;
mhour=12;
mmin=0;
sec=55;
beep=1;                                 
ms=0;
mos=0;
mode=0;
set=0;
while(1){
if(mode==1){
delay(20);
if(mode==1){
mos++;
if(mos==5){
mos=0;
}
while(mode==1);
}
}
if(set==1){
delay(20);
if(set==1){
if(hour==mhour && min==mmin && alm==1){
alm=0;
}
if(mos==1){
hour++;
}
if(mos==2){
min++;
}
if(mos==3){
mhour++;
alm=1;
}
if(mos==4){
mmin++;
alm=1;
}
while(set==1);
}
}
if(mos==0){
ms++;
}
if(ms==14600){
sec++;
ms=0;
beep=0;
if(hour==mhour && min==mmin && alm==1){
beep=0;
}else{
beep=1;
}
sh=~sh;
}
if(sec==60){
min++;
sec=0;
}
if(min==60){
min=0;
hour++;
beep=0;
alm=1;
}
if(hour==24){
hour=0;
}
if(mhour==24){
mhour=0;
}
if(mmin==60){
mmin=0;
}
v1=hour%10;//小时4数 24:10
v2=hour/10;//小时2数
v3=min%10;//分钟0数
v4=min/10;//分钟1数
k1=mhour%10;//小时4数 24:10
k2=mhour/10;//小时2数
k3=mmin%10;//分钟0数
k4=mmin/10;//分钟1数
if(mos!=3 && mos!=4){
if(mos!=2){
hp();
w4=1;
P1=~num[v2];//v4
hp();
w3=1;
P1=~num[v1];//v3
d=sh;
hp();
}
if(mos!=1){
w2=1;
P1=~num[v4];
hp();
w1=1;
P1=~num[v3];
hp();
}
}
if(mos==3){
hp();
w4=1;
P1=~num[k2];//v4
hp();
w3=1;
P1=~num[k1];//v3
d=sh;
hp();
}
if(mos==4){
w2=1;
P1=~num[k4];
hp();
w1=1;
P1=~num[k3];
hp();
}
}
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表