#include<stdio.h>
#include<reg51.h>
void cal();
void view();
#define uchar unsigned char
sbit L1=P1^0;
sbit L2=P1^1;
sbit L3=P1^2;
sbit L4=P1^3;
sbit L5=P3^0;
sbit L6=P3^2;
sbit L7=P1^4;
int a,b,c,miao1,miao2,fen1,fen2,shi1,shi2,count,n;
uchar code LED[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int time=2;
void delay(int z)
{
int x,y;
for(x=110;x>0;x--)
for(y=z;y>0;y--);
}
void control()
{
if(12 <= a <= 13)
{
L5=0;
L6=1;
}
else
{
L5=1;
L6=0;
}
}
void key()
{
if(L3==0)
{
delay(10);
if(L3==0)
{
b++;
if(b==60)
{
b=0;
c++;
}
}
}
if(L1==0)
{
delay(10);
if(L1==0)
{
c++;
if(c==24)
{
c=0;
}
}
}
if(L4==0)
{
delay(10);
if(L4==0)
{
b--;
if(b<=0)
{
b=59;
c--;
}
}
}
if(L2==0)
{
delay(10);
if(L2==0)
{
c--;
if(c<=0)
{
c=23;
}
}
}
view();
}
void main()
{
TMOD=0x01;
TH0=0x3c;
TL0=0xb0;
EA=1;
TR0=1;
ET0=1;
a=b=c=0;
while(1)
{
key();
control();
}
}
void cal()
{
if(count==10)
{
count=0;
a++;
if(a==60)
{
a=0;
b++;
if(b==60)
{
b=0;
c++;
if(c==24)
{
c=0;
}
}
}
}
}
void view()
{
cal();
miao1=a/10;
miao2=a%10;
fen1=b/10;
fen2=b%10;
shi1=c/10;
shi2=c%10;
P2=0x7f;
P0=LED[miao2];
delay(time);
P2=0xbf;
P0=LED[miao1];
delay(time);
P2=0xcf;
P0=0x40;
delay(time);
P2=0xef;
P0=LED[fen2];
delay(time);
P2=0xf7;
P0=LED[fen1];
delay(time);
P2=0xfb;
P0=0x40;
delay(time);
P2=0xfc;
P0=LED[shi2];
delay(time);
P2=0xfe;
P0=LED[shi1];
delay(time);
}
void time0() interrupt 1 using 0
{
TH0=0x3c;
TL0=0xb0;
count++;
}
我自己写的一个单片机时钟程序,但是我在调节时间的时候,运行着的时钟...
几种方式处理:1、刷新显示放在定时中断中,分割成多个部分,每次中断执行1小部分,就如动态扫描原理 2、延时程序使用刷显示的子程序代替 3、键盘检测程序优化,不要用死等待的程序结构,将键盘处理分成几个部分,主程序 每次扫描只执行其中1部分 ...
c51单片机数字时钟LCD显示时有时候切换到设置时间,屏幕卡住不显示是怎...
很可能程序编写的地方出现乱序或死循环,应该好好检查一下切换设置时间的子程序那一段。
我用单片机做一个日历时钟,但是时钟走个一两分钟就会慢了20来秒钟!请问...
显然你定时太不准了,把定时值调整下,可以把误差缩小些。最好还是用时钟芯片吧。也不贵
基于单片机的电子时钟,怎样在调整闹铃的时候不影响时间的计时?
这就涉及到程序的架构。推荐看一下单片机裸奔的框架,利用定时器生成时间轴,通过设定不同的标志就可以实现任务的有序分配。通俗的说就是你程序设计思路问题!
单片机控制程序 问 设置时钟程序 因代码太多 以至于数码管用延时函数无...
1、如果时间显示到秒,应在100ms左右读一次RTC。2、为了保证显示不删,应在20ms以内完成一次显示刷新,假设你用了20个数码管显示日期和时间。3、按键是随机的,需要检测,一般按键按下的时间不小于50ms,可以考虑在10ms检测一次按键。程序可以定义一个1ms的定时器,设置几个变量对定时器进行计数。每个...
单片机的c语言 时钟函数带有闹钟功能,当我们调好闹钟以后,想设置响铃的...
这个可以用中断实现 设置初始最小中断时间 比如 1分钟 在添加一个按钮中断 调节中断时间
单片机做闹钟程序中,如何用定时器中断计时一个时间,闹钟时间到时就响...
uchar TC_3600s;1小时计数 uchar TF_200ms;20毫秒到时标记 uchar TF_100ms;100毫秒到时标记 uchar TF_1s;1秒到时标记 uchar TF_60s;60秒到时标记 uchar TF_3600s;1小时到时标记 用定时器定时产生20ms定时 void init() interrupt 1 \/\/定时常数=65535-(晶体频率\/分频数*定时周期)-20 ...
单片机时钟程序:通过键设计当前时间,设定闹钟,时间一到,报警
这是我以前写的一段程序,希望对你能有帮助 我的程序,首先有一点,肯定是调试通过的,不像我以前找的一些网络程序,貌似可以,就是不能执行结果。\/*DS1302时钟芯片显示设置 功能:显示 时间 日期 星期 引脚说明:DS1302三引脚 CLK = P1^5; IO=P1^6; RST=P1^7;设计整理:创达科技 陈仲库 技术...
我做的电子时钟,用51单片机可以显示,但是仿真时显示屏不刷新时间是怎么...
实际电路与仿真有些区别,一是电路图可能不一致,二是在延时时间上可能要求不尽相同。
求救:为什么用单片机做的数字时钟,秒走的不均匀,时快时慢。仿真的时候...
ds1302时钟芯片是不断地读取内部数据送到外部显示的,仿真的时候用的是系统时间,如果出现时快时慢,要么是CPU负载100%卡了,要么就是你的显示程序不合理,显示程序没有实时地反应秒的状态。我以前做的都没这情况。显示刷新专门放在一个定时器里定时刷新 ...