求单片机日历时钟C语言源程序

用Keil uVision4编写日历时钟的C程序,只要最基础的
要用数码管显示

第1个回答  2012-08-29
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code DSY_CODE[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0xff};
uchar DSY_BUFFER[]={0,0,0xBF,0,0,0xBF,0,0};
uchar Scan_BIT;
uchar DSY_IDX;
uchar Key_State;
uchar h,m,s,s100;
void DelayMS(uchar x)
{
uchar i;
while(x--) for(i=0;i<120;i++);
}
void Increase_Hour()
{
if(++h>23)h=0;
DSY_BUFFER[0]=DSY_CODE[h/10];
DSY_BUFFER[1]=DSY_CODE[h%10];
}
void Increase_Minute()
{
if(++m>59)
{
m=0;Increase_Hour();
}
DSY_BUFFER[3]=DSY_CODE[m/10];
DSY_BUFFER[4]=DSY_CODE[m%10];
}
void Increase_Second()
{
if(++s>59)
{
s=0;Increase_Minute();
}
DSY_BUFFER[6]=DSY_CODE[s/10];
DSY_BUFFER[7]=DSY_CODE[s%10];
}
void T0_INT()interrupt 1
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
P3=Scan_BIT;
P0=~DSY_BUFFER[DSY_IDX];
Scan_BIT=_crol_(Scan_BIT,1);
DSY_IDX=(DSY_IDX+1)%8;
}
void T1_INT()interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
if(++s100==20)
{
s100=0;Increase_Second();
}
}
void main()
{
P0=P3=0xFF;
TMOD=0x11;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
TH1=0xDC;
TL1=0;
TCON=0x01;
EA=1;
ET0=1;
ET1=1;
h=12;m=s=s100=0;
DSY_BUFFER[0]=DSY_CODE[h/10];
DSY_BUFFER[1]=DSY_CODE[h%10];
DSY_BUFFER[3]=DSY_CODE[m/10];
DSY_BUFFER[4]=DSY_CODE[m%10];
DSY_BUFFER[6]=DSY_CODE[s/10];
DSY_BUFFER[7]=DSY_CODE[s%10];
Scan_BIT=0xFE;
DSY_IDX=0;
TR0=TR1=1;
Key_State=0xFF;
while(1)
{
if(P1^Key_State)
{
DelayMS(10);
if(P1^Key_State)
{
Key_State=P1;EA=0;
if((Key_State&0x01)==0)Increase_Hour();
else if((Key_State&0x02)==0)
{
m=(m+1)%60;
DSY_BUFFER[3]=DSY_CODE[m/10];
DSY_BUFFER[4]=DSY_CODE[m%10];
}
EA=1;
}
}
}
}

分给我吧,我不知道您要的是液晶时钟还是数码管的,但是我给你的是时钟,日历很好加,自己根据理解家上吧。希望对你有帮助。追问

没法显示,下载之后数码管不亮

追答

不可能啊,你的数码管是共阴还是公阳啊?

本回答被提问者采纳
第2个回答  2012-08-29
,这个简单,,以前做过,带proteus仿真,,qq 号,
第3个回答  2012-08-29
我做了一个,可用,有一天一秒误差,程序是会根据你选择的电路而定的,发邮箱给我.

单片机控制多位数码管的电子时钟程序
用单片机控制多位数码管的电子时钟,用独立按键进行控制,可显示时间,日期,有闹钟功能,独立按键进行时间日历,闹钟设置 软件编程: keil工程C语言代码:\/*** 项目名称:数码管电子时钟 实现功能:数码管显示时间、日期,时间、日 期可调,可设置闹钟,闹铃响一分钟。 ***\/ #include reg52.h #define...

跪求51单片机+12864液晶+1302时钟制成的万年历c程序?
(三)头文件2 时钟模块 DS1302.H#ifndef _REAL_TIMER_DS1302_2009_5_20_#define _REAL_TIMER_DS1302_2003_5_20_sbit DS1302_CLK = P2^6; \/\/实时时钟时钟线引脚 sbit DS1302_IO = P2^7; \/\/实时时钟数据线引脚 sbit DS1302_RST = P2^5; \/\/实时时钟复位线引脚sbit ACC0 = ACC^0;sbit ACC7 =...

pcf8563程序范例
以下C语言源程序使用8051单片机的普通I\/O口,如P0.0\/P0.4,模拟实现PCF8563的I2C时钟\/日历芯片操作。程序包含字节写和读两种状态,读取地址为0A3H,写入地址为0A2H。发送的数据字节共9个,初始数据位于rom_sed[9]中,包含了当前时间设置:控制\/状态寄存器1为0,控制\/状态寄存器2为0,秒寄存器为0,...

51单片机 制作 日历时钟 用汇编语言 要详细的代码和硬件图示
你好这是基于DS1302日历时钟的单片机汇编程序 51单片机 ORG 0000H MOV SP,#30H LOAD EQU P2.0 CLR LOAD MOV R0,#0FH MOV R1,#0AH ;亮度 ACALL TRT MOV R0,#02H MOV R1,#0BH ;扫描位数 ACALL TRT MOV R0,#0FFH MOV R1,#09H ;译码 ACALL TRT MOV R0,#01H MOV R1...

求单片机时钟设计!!要求:时钟可调 日历可调 闹钟可调 带温度检测 LCD160...
这个程序比较好用,用的是12864,比较有用希望对你有帮助 include <reg51.h> include <intrins.h> include <stdlib.h> define uchar unsigned char define uint unsigned int include<intrins.h> define uchar unsigned char define uint unsigned int uchar shijian[6]={0x1,0x1,0x0,0x2,0x5,...

50分!!!急!!!求基于at89c52,用lcd1602显示的日历时钟,具有闹钟功能,不...
以STC89C52芯片来设计电子时钟,采用C语言进行编程,可以实现以下一些功能:年、月、日、小时、分、秒的显示、定时报警功能。本次设计的电子时钟系统由时钟电路,LCD显示电路,定时报警电路,按键调整电路四部分组成。51单片机通过软件编程,在LCD1602液晶屏上实现年、月、日、小时、分、秒的显示;通过三个...

pcf8563的程序示例
以下的C语言源程序是用8051单片机的普通I\/O口(如P0.0\/P0.4)模拟实现PCF8563的I2C时钟\/日历芯片的操作,有字节写\/读两种状态。程序中从地址的读地址为0A3H,写地址为0A2H.所发送的数据字节为9个,发送的初始数据在rom_sed[9]中,rom_sed[9]定义了寄存器中当前发送的值:控制\/状态寄存器1为0...

51单片机时钟程序,C语言,汇编都行
Set_RTC(); \/\/写入时钟值,如果使用备用电池时候,不需要没每次上电写入,此程序应该屏蔽 while(1){ if(ReadRTC_Flag){ ReadRTC_Flag=0;Read_RTC();l_tmpdisplay[0]=l_tmpdate[2]\/16; \/\/数据的转换,因我们采用数码管0~9的显示,将数据分开 l_tmpdisplay[1]=l_tmpdate[2]&0x...

单片机,利用MCS-51集成开发环境编程:
3、Franklin C-51手册 4、一个C51讨论组的压缩包1 5、FrankLin For Windows使用经验谈 6、AT89C 系列单片机解密原理 7、一个C51讨论组的压缩包 8、微型打印机的C语言源程序 9、6B595或74HC595的C语言源程序 10、24C02串行EEPROM的C语言源程序 11、日历时钟DS12887或146818的C语言源程序 12、串行...

基于单片机的数字日历时钟
本设计基于单片机技术原理,以单片机芯片AT89C51作为核心控制器,通过硬件电路的制作以及软件程序的编制,设计制作出一个多功能数字时钟系统。该时钟系统主要由时钟模块、闹钟模块、环境温度检测模块、液晶显示模块、键盘控制模块以及信号提示模块组成。系统具有简单清晰的操作界面,能在4V~7V直流电源下正常工作。

相似回答