當前位置:首頁 » 課程大全 » 萬年歷單片機課程設計

萬年歷單片機課程設計

發布時間: 2020-11-29 15:41:30

Ⅰ 單片機課程設計萬年歷用C語言編寫的keil程序以及proteus的模擬

額,這個你都問題是什麼,這個可以做的!也可以實現,實現的方法一般有兩種1、純軟體回 採用軟體答計時;2 、採用硬體 使用硬體時鍾晶元,單片機讀取數據即可;

有不懂的 ,我們可以交流交流!
滿意的話記得贊一個,呵呵

Ⅱ 用單片機製作電子萬年歷

STC89C52+LCD12864+DS1302+DS18B20

Ⅲ 基於51單片機的萬年歷課程設計

你好:

這是我用定時器的方式寫出來的萬年歷程序,LCD1602顯示,51單片機控制,能顯示日期和時間,並可通過按鍵調整時間。

參考參考吧,希望我的回答能幫助到你。

Ⅳ 基於單片機的電子萬年歷設計,能夠顯示日期,時間,溫度。

已發,[email protected]
電路圖我是protues畫的,管腳和程序有點不對應,你如果需要就追問。只要修改一下前面的define就可以了。追加點分吧,1000多行都是我自己寫的
我的蜂鳴器是鬧鍾,兩個鬧鍾,可以調時間,有背光延時

解壓密碼321123

Ⅳ 怎樣製作萬年歷單片機

今天碰到了N個白痴問題。
萬年歷是能夠顯示年月日、二十四節氣、農歷之類的東西,單片機是一塊晶元。萬年歷可以用單片機來做,但是我真不知道「萬年歷單片機」怎麼做。我想你應該想問的是怎麼用單片機來做萬年歷,我提供思路。
1、單片機最小系統一塊。可以用STC89C52晶元+外圍電路。可以燒入用戶編寫的程序,實現萬年歷所需的邏輯。
2、實時時鍾電路一塊,可以用DS1302晶元。提供年月日、時分秒數據給單片機。
3、顯示器電路一塊。用來顯示這些數據。
4、一些必要的按鍵,用來調整數據。

Ⅵ 設計一個基於單片機的萬年歷程序

#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--);
}

Ⅶ 用單片機做個萬年歷

如果你用液晶的話,加個1602,再加上4個按鍵就可以了。
如果你用數碼管的話,還要買一片154.
最好加上蜂鳴器,和幾個LED做指示燈

硬體很容易做出來,軟體就麻煩點了,需要看一下1602的用法(用數碼管就可略此步了)1302的用法。

之後,做電路板估計要廠家做,自己設計到廠家做好至少2周吧,硬體焊接加測試幾天完活,軟體設計很漫長,如果只用業余時間做,至少2周。

祝你成功

熱點內容
武漢大學學生會輔導員寄語 發布:2021-03-16 21:44:16 瀏覽:612
七年級學生作文輔導學案 發布:2021-03-16 21:42:09 瀏覽:1
不屑弟高考成績 發布:2021-03-16 21:40:59 瀏覽:754
大學畢業證會有成績單 發布:2021-03-16 21:40:07 瀏覽:756
2017信陽學院輔導員招聘名單 發布:2021-03-16 21:40:02 瀏覽:800
查詢重慶2018中考成績查詢 發布:2021-03-16 21:39:58 瀏覽:21
結業考試成績怎麼查詢 發布:2021-03-16 21:28:40 瀏覽:679
14中醫醫師資格筆試考試成績查分 發布:2021-03-16 21:28:39 瀏覽:655
名著賞析課程標准 發布:2021-03-16 21:27:57 瀏覽:881
北京大學商業領袖高端培訓課程 發布:2021-03-16 21:27:41 瀏覽:919