欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機萬年歷仿真與源碼
[打印本頁]
作者:
532914572
時間:
2018-4-22 18:23
標題:
單片機萬年歷仿真與源碼
萬年歷單片機電路及程序
0.jpg
(30.68 KB, 下載次數: 78)
下載附件
2018-4-23 04:15 上傳
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png
(17.44 KB, 下載次數: 71)
下載附件
2018-4-23 04:16 上傳
單片機源程序如下:
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code digit[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char data year,month,day,hour,min,sec,sec100,n;//年、月、日、時、分、秒、百分之一秒
sbit TS = P2^4; //調整鍵調時
sbit SS = P2^5; //調整鍵上升
sbit XJ = P2^6; //調整鍵下降
sbit TW = P2^7; //調整鍵調位
void delay1ms( uint x); //延時程序
void pro_timedate();//時間和日期處理程序
bit leap_year();//閏年的計算
void display_Year(year); //顯示年
void display_Month(month);//顯示月
void display_Day(day);//顯示日
void display_Hour(hour);//顯示時
void display_Min(min);//顯示分
void display_Sec(sec);//顯示秒
void dispaly_time();//時間顯示
void TSkeypros(); //調時按鍵掃描
void pro_key(); // 設置按鍵處理程序
void year_adjust(); // 年調整程序
void month_adjust(); // 月調整程序
void day_adjust(); // 日調整程序
void hour_adjust(); // 時調整程序
void min_adjust(); // 分調整程序
// 延時程序
void delay1ms( uint x)
{
uchar i,j;
for(i=x;i>0;i--)
for(j=124;j>0;j--);
}
//Timer0中斷處理程序,秒的產生
void timer0() interrupt 1
{
TH0=0xdc; //Timer0置10ms定時初值dc00H(2^16=65536D,dc00H=56320D)
TL0=0x00; //定時時間=(65536-56320)*(1/11.0592)*12=10ms (f0=11.0592Mhz)
sec100++;
n++;
if(n>=2) //1秒時間 (100*10ms=1000ms=1s)
{n = 0;
dispaly_time();//調用時間顯示程序
}
if(sec100 >= 100) //1秒時間 (100*10ms=1000ms=1s)
{sec100 = 0;
pro_timedate();//調用時間和日期處理程序
}
}
//時間和日期處理程序
void pro_timedate()
{
sec++;
if(sec > 59)
{sec = 0;
min++;
if(min>59)
{min=0;
hour++;
if(hour>23)
{hour=0;
day++;
if (month==1||month==3||month==5||month==7||month==8||month==10||month==12)
if (day>31) {day=1;month++;} //大月31天
if (month==4||month==6||month==9||month==11)
if (day>30) {day=1;month++;} //小月30天
if (month==2)
{if( leap_year()) //閏年的條件
{if (day>29) {day=1;month++;}} //閏年2月為29天
else
{if (day>28) {day=1;month++;}} //平年2月為28天
}
if (month>12) {month=1;year++;}
if (year>99) year=0;
}
}
}
}
//閏年的計算
bit leap_year()
{
bit leap;
if((year%4==0&&year%100!=0)||year%400==0)//閏年的條件
leap=1;
else
leap=0;
return leap;
}
//主程序,初始化及初值設定
void main()
{
P0=0;
P1=0;
hour=10;min=30;sec=0; //開機時的時,分,秒顯示
year=11; month=5;day=9; //開機時的年,月,日,星期顯示
IE = 0x8f; //CPU開中斷,INT0,INT1,Timer0,Timer1開中斷
IP = 0x04; //設置INT0為中斷最高優先級
IT0=0;IT1=0; //外部INT0,INT1設置為電平觸發方式(注意,觸發不要選邊沿方式,易誤動)
TMOD = 0x11; //Timer0,Timer1工作于模式1, 16位定時方式
TH0 = 0xdc;TL0 = 0x00; //Timer0置10ms定時初值
TH1 = 0xff;TL1 = 0x00; //Timer1置初值
TR0 = 1; //Timer0啟動
TR1 = 0;
while(1)
{
TSkeypros();
}
}
void display_Year(year) //顯示年
{
uchar i,j;
i=year/10;
j=year%10;
P0=digit[2];
P1=0;
delay1ms(4);
P0=0;
P0=digit[0];
P1=1;
delay1ms(4);
P0=0;
P0=digit[i];
P1=2;
delay1ms(4);
P0=0;
P0=digit[j];
P1=3;
delay1ms(4);
P0=0;
}
void display_Month(month) //顯示月
{
uchar i,j;
i=month/10;
j=month%10;
P0=digit[i];
P1=4;
delay1ms(4);
P0=0;
P0=digit[j];
P1=5;
delay1ms(4);
P0=0;
}
void display_Day(day) //顯示日
{
uchar i,j;
i=day/10;
j=day%10;
P0=digit[i];
P1=6;
delay1ms(4);
P0=0;
P0=digit[j];
P1=7;
delay1ms(4);
P0=0;
}
void display_Hour(hour) //顯示時
{
uchar i,j;
i=hour/10;
j=hour%10;
P0=digit[i];
P1=8;
delay1ms(4);
P0=0;
P0=digit[j];
P1=9;
delay1ms(4);
P0=0;
}
void display_Min(min) //顯示分
{
uchar i,j;
i=min/10;
j=min%10;
P0=digit[i];
P1=10;
delay1ms(4);
P0=0;
P0=digit[j];
P1=11;
delay1ms(4);
P0=0;
}
void display_Sec(sec) //顯示秒
{
uchar i,j;
i=sec/10;
j=sec%10;
P0=digit[i];
P1=12;
delay1ms(4);
P0=0;
P0=digit[j];
P1=13;
delay1ms(4);
P0=0;
}
void dispaly_time()//時間顯示
{
display_Year(year);
display_Month(month);
display_Day(day);
display_Hour(hour);
display_Min(min);
display_Sec(sec);
P0=0;
}
void TSkeypros() //調時按鍵掃描
{
if(TS==0) //檢測按鍵TS是否按下
{
delay1ms(10); //消除抖動10ms
if(TS==0) //再次判斷按鍵是否按下
{
while(!TS); //檢測按鍵是否松開
}
pro_key(); // 調用設置按鍵處理程序
}
}
void pro_key() // 設置按鍵處理程序
{
year_adjust();
}
void year_adjust() // 年調整程序
{
if (SS==0)
{
delay1ms(10); //消除抖動10ms
if(SS==0) //再次判斷按鍵是否按下
{
while(!SS); //檢測按鍵是否松開
}
year++;
if (year> 99) year= 0;
}
else
{if (XJ==0)
{
delay1ms(10); //消除抖動10ms
if(XJ==0) //再次判斷按鍵是否按下
{
while(!XJ); //檢測按鍵是否松開
}
year--;
if (year>100) year= 99;
}
}
if (TW==0)
{
delay1ms(10); //消除抖動10ms
if(TW==0) //再次判斷按鍵是否按下
{
while(!TW); //檢測按鍵是否松開
}
month_adjust();
}
year_adjust();
}
void month_adjust() // 月調整程序
{
if (SS==0)
{
delay1ms(10); //消除抖動10ms
if(SS==0) //再次判斷按鍵是否按下
{
while(!SS); //檢測按鍵是否松開
}
month++;
if (month> 12) month= 1;
}
else
{if (XJ==0)
{
delay1ms(10); //消除抖動10ms
if(XJ==0) //再次判斷按鍵是否按下
{
while(!XJ); //檢測按鍵是否松開
}
month--;
if (month<1) month= 12;
}
}
if (TW==0)
{
delay1ms(10); //消除抖動10ms
if(TW==0) //再次判斷按鍵是否按下
{
while(!TW); //檢測按鍵是否松開
}
day_adjust();
}
month_adjust();
}
void day_adjust() // 日調整程序
{
if (SS==0)
{
delay1ms(10); //消除抖動10ms
if(SS==0) //再次判斷按鍵是否按下
{
while(!SS); //檢測按鍵是否松開
}
day++;
if (month==1||month==3||month==5||month==7||month==8||month==10||month==12)
if (day>31) day=1; //大月31
if (month==4||month==6||month==9||month==11)
if (day>30) day=1; //小月30
if (month==2)
{
if(leap_year()) // 閏年條件
{
if (day>29) day=1; // 閏年29
}
else
{
if (day>28) day=1; //平年28
}
}
}
else
{if (XJ==0)
{
delay1ms(10); //消除抖動10ms
if(XJ==0) //再次判斷按鍵是否按下
{
while(!XJ); //檢測按鍵是否松開
}
day--;
if (month==1||month==3||month==5||month==7||month==8||month==10||month==12)
if (day<1) day=31; //大月31
if (month==4||month==6||month==9||month==11)
if (day<1) day=30; //小月30
if (month==2)
{
if(leap_year()) // 閏年條件
{
if (day<1) day=29; // 閏年29
}
else
{
if (day<1) day=28; //平年28
}
}
}
}
if (TW==0)
{
delay1ms(10); //消除抖動10ms
if(TW==0) //再次判斷按鍵是否按下
{
while(!TW); //檢測按鍵是否松開
}
hour_adjust();
}
day_adjust();
}
void hour_adjust() // 時調整程序
{
if (SS==0)
{
delay1ms(10); //消除抖動10ms
if(SS==0) //再次判斷按鍵是否按下
{
while(!SS); //檢測按鍵是否松開
}
hour++;
if (hour> 23) hour= 0;
}
else
{if (XJ==0)
{
delay1ms(10); //消除抖動10ms
if(XJ==0) //再次判斷按鍵是否按下
{
while(!XJ); //檢測按鍵是否松開
}
hour--;
if (hour>100) hour= 23;
}
}
if (TW==0)
{
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
wnl.rar
(147.53 KB, 下載次數: 49)
2018-4-22 18:22 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
一粒米
時間:
2018-5-14 08:28
感謝分享
作者:
bgswqy
時間:
2018-6-28 05:58
無法解壓,浪費黑幣!
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1