导航:首页 > 操作系统 > 单片机的万年历

单片机的万年历

发布时间:2023-08-20 18:09:03

A. 基于单片机的万年历难吗

不难。
单片机应用技术飞速发展,纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC卡、电子宠物等,这些都离不开单片机。单片机是集CPU、RAM、ROM、定时、计数和多种接口于一体的微控制器。
它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。电子万年历是一种非常广泛日常计时工具,对现代社会越来越流行。它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周、时、分、秒和温度等信息,还具有时间校准等功能。该电路采用AT89S52单片机作为核心,功耗小,能在3V的低压工作,电压可选用3~5V电压供电。

B. 单片机做万年历用数码管的优缺点

优点,定时精准,缺点,电路复杂成本高。
数码管万年历的设计原理是利用AT89C5单片机内部定时/计数器TO的模式2(8位自动重装初值)产生一个时间为250us的信号,再计数4000次产生1S的时间后发出中断,再由单片机进行数据处理后,送人数码管(共阴极数码管)显示(动态显示)。

C. 52单片机的万年历语言,八位LED共阴数码管动态显示年月日 时分秒

你描述的不对
有些地方不很完善
什么叫
万年历
语言,或许你想表达,编写单片机的语言,一般用c语言啊
8个
数码管
你要显示“年月日时分秒”,这样是显示不够的,比如年月日如:“13-06-21”,时分秒如:“11-28-05”,是这样吗
一般显示用
lcd1602
的比较多
为什么你要用8个按键呢,是调整日期吗?其实三个就够了啊,一个选择要调整的对象,一个增加,一个减少
你说全部与p30连接,是什么与他连接呢
可以交流
myID

D. 谁能告诉我单片机制作电子万年历的目的和意义

一、熟悉数码管的驱动
二、熟悉按键的应用
......把做万年历所需要的器件列出来,大致就是这个格式

E. 基于51单片机制作万年历,用数码管,定时器,不用时钟芯片,不用液晶,怎么做求大神解,原理图和C程序

基于51单片机制作万年历,用两个8位一体的共阴数码管,显示日期和时间。数码管位选用两片74HC138,便于动态扫描显示,又节省引脚。用3个按键调时,K1为选择调时状态,K2为加1键,K3为减1键。

仿真图如下:

F. 设计一个基于单片机的万年历程序

#include<reg51.h>
#include"lcd.h"
#include"ds1302.h"

sbitK1=P3^1;
sbitK2=P3^0;
sbitK3=P3^2;
sbitK4=P3^3; //管脚接线
unsignedcharcharacter0[24]={0x08,0x0f,0x12,0x0f,0x0a,0x1f,0x02,0x02 ,
0x0F,0x09,0x0F,0x09,0x0F,0x09,0x13,0x00,//"月"代码0x01
0x0F,0x09,0x09,0x0F,0x09,0x09,0x0F,0x00,//"日"代码0x02
};//年
voidInt0Configuration();
voidLcdDisplay();
unsignedcharSetState,SetPlace;
voidDelay10ms(void);//误差0us
/*******************************************************************************
*函数名:main
*函数功能 :主函数
*输入:无
*输出 :无
*******************************************************************************/

voidmain()
{
unsignedchari,h;
Int0Configuration();
LcdInit();
LcdWriteCom(0x40);
for(h=0;h<24;h++)
{
LcdWriteData(character0[h]);
}
LcdWriteCom(0x80);

// Ds1302Init();
while(1)
{
if(SetState==0)
{
Ds1302ReadTime();
}
else
{
if(K1==0) //检测按键K1是否按下
{
Delay10ms(); //消除抖动
if(K1==0)
{
SetPlace++;
if(SetPlace>=7)
SetPlace=0;
}

while((i<50)&&(K1==0)) //检测按键是否松开
{
Delay10ms();
i++;
}
i=0;
}
if(K2==0) //检测按键K2是否按下
{
Delay10ms(); //消除抖动
if(K2==0)
{
TIME[SetPlace]++;
if((TIME[SetPlace]&0x0f)>9) //换成BCD码。
{
TIME[SetPlace]=TIME[SetPlace]+6;
}
if((TIME[SetPlace]>=0x60)&&(SetPlace<2)) //分秒只能到59
{
TIME[SetPlace]=0;
}
if((TIME[SetPlace]>=0x24)&&(SetPlace==2)) //小时只能到23
{
TIME[SetPlace]=0;
}
if((TIME[SetPlace]>=0x32)&&(SetPlace==3)) //日只能到31
{
TIME[SetPlace]=0;
}
if((TIME[SetPlace]>=0x13)&&(SetPlace==4)) //月只能到12
{
TIME[SetPlace]=0;
}
if((TIME[SetPlace]>=0x7)&&(SetPlace==5)) //周只能到7
{
TIME[SetPlace]=1;
}
// if(SetPlace==5) //月只能到12
// {
// TIME[SetPlace]=;
// }
}

while((i<50)&&(K2==0)) //检测按键是否松开
{
Delay10ms();
i++;
}
i=0;

}
}
LcdDisplay();


}

}
/*******************************************************************************
*函数名:LcdDisplay()
*函数功能 :显示函数
*输入:无
*输出 :无
*******************************************************************************/

voidLcdDisplay()
{
LcdWriteCom(0x80+0X40);

LcdWriteCom(0x0f);
LcdWriteCom(0xc0|(2-0x40));
LcdWriteCom(0x0c);
Delay10ms();
LcdWriteData('0'+TIME[2]/16); //时
LcdWriteData('0'+(TIME[2]&0x0f));
LcdWriteData(':');
LcdWriteData('0'+TIME[1]/16); //分
LcdWriteData('0'+(TIME[1]&0x0f));
LcdWriteData(':');
LcdWriteData('0'+TIME[0]/16); //秒
LcdWriteData('0'+(TIME[0]&0x0f));

LcdWriteCom(0x80);
LcdWriteData('2');
LcdWriteData('0');
LcdWriteData('0'+TIME[6]/16); //年
LcdWriteData('0'+(TIME[6]&0x0f));
LcdWriteData(0x00);
LcdWriteData('0'+TIME[4]/16); //月
LcdWriteData('0'+(TIME[4]&0x0f));
LcdWriteData(0x01);
LcdWriteData('0'+TIME[3]/16); //日
LcdWriteData('0'+(TIME[3]&0x0f));
LcdWriteData(0x02);
LcdWriteCom(0x8D);
LcdWriteData('0'+(TIME[5]&0x07)-1); //星期
}
/*******************************************************************************
*函数名:Int0Configuration()
*函数功能 :配置外部中断0
*输入:无
*输出 :无
*******************************************************************************/

voidInt0Configuration()
{
//设置INT0
IT0=1;//跳变沿出发方式(下降沿)
EX0=1;//打开INT0的中断允许。
EA=1;//打开总中断
}
/*******************************************************************************
*函数名:Int0()
*函数功能 :外部中断0中断函数
*输入:无
*输出 :无
*******************************************************************************/

voidInt0()interrupt0
{
Delay10ms();
if(K3==0)
{
SetState=~SetState;
SetPlace=0;
Ds1302Init();
}
}
/*******************************************************************************
*函数名:Delay10ms
*函数功能 :延时函数,延时10ms
*输入:无
*输出 :无
*******************************************************************************/
voidDelay10ms(void)//误差0us
{
unsignedchara,b,c;
for(c=1;c>0;c--)
for(b=38;b>0;b--)
for(a=130;a>0;a--);
}

阅读全文

与单片机的万年历相关的资料

热点内容
裘锡圭pdf 浏览:720
android模拟器调试 浏览:129
sap命令大全 浏览:290
mysql导出数据命令 浏览:949
文件夹隐藏了出不来 浏览:562
电信网上大学源码 浏览:204
rr轮转调度算法 浏览:253
我的世界无法登入服务器怎么办 浏览:148
文件加密授权特定隐藏访问控制 浏览:801
程序员剑灵官网 浏览:516
php调用static方法 浏览:934
天正命令版 浏览:86
聚合支付加密币 浏览:313
蜜源app是什么时候创立的 浏览:706
计算机专业学51单片机 浏览:211
程序员不接受反驳 浏览:299
微软自带的压缩软件 浏览:289
中国玩家在日本服务器做什么 浏览:51
12864和单片机 浏览:899
25匹空调压缩机 浏览:649