久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
單片機數字時鐘Proteus仿真設計,可調時
[打印本頁]
作者:
ligeyu
時間:
2019-6-24 17:48
標題:
單片機數字時鐘Proteus仿真設計,可調時
這是單片機數字鐘課程設計,用了一個星期的時間,附件里面包含數字鐘的單片機源代碼,proteus仿真工程文件都是自己原創的,請大家多多指教。
會切換顯示年月日,星期鬧鐘顯示
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png
(18.3 KB, 下載次數: 47)
下載附件
2019-6-25 03:55 上傳
單片機源程序如下:
#include <reg52.h>
#include <intrins.h>
unsigned char code dis_tab[16]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //共陽極0-916進制編碼
unsigned char data dis_data1,dis_data2,bit_data1,bit_data2,a1,a2,a11,a22,b1,b2,b11,b22,nian=16,yue=2,ri=27,miao=5,fen=0,shi=0,xq=0;
unsigned char int_cnt=0;
unsigned char num;
unsigned char a;
unsigned char b;sbit K0=P0^0;
sbit K1=P0^1;
sbit K2=P0^2;
sbit K3=P0^3;
void mDelay(unsigned int Delay) //延時函數
{ unsigned int i;
for(;Delay>0;Delay--)
{ for(i=0;i<114;i++) {;}}}
void T0_int() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
int_cnt++;
if(int_cnt==16)
{num++;int_cnt=0;
}
if(num==60)
{num=0;int_cnt=0;
a++; }
if(a==60)
{a=0;b++; b<=24;
if(b==24)
b=0; if(b==0)
{ri++;}
}
if(ri==7)
{xq++;}
if(yue==1||yue==3||yue==5||yue==7||yue==8||yue==10||yue==12)
{ri<=31;
if(ri==32){ri=1; yue++;}
}
if (yue==4||yue==6||yue==9||yue==11)
{ri<=31;
if(ri==31){ri=1;yue++;
} }
if(yue==2&&((nian+2000)%4==0&&(nian+2000)%100!=0)||(nian+2000)%400==0)
{ri<=30;if(ri==30){ri=1;yue++;}}
else if (yue==2)
{ri<=29;if(ri==29){ri=1;yue++;}}
if(yue==13)
{yue=1;if(yue==1)
{nian++;}}
if(K1==1) //K0按鍵是否按下
{ mDelay(5); //延時消抖
if(K1==1)
{P2=0x00;
mDelay(10);
a++;
mDelay(2);}}
if(K0==1&&K1==1)
{mDelay(5);
if(K0==1&&K1==1)
{ P2=0x00;
mDelay(10);
ri++;
a--;
mDelay(2);
}}
if(K0==1&&K2==1) //K0按鍵是否按下
{ mDelay(5); //延時消抖
if(K0==1&&K2==1)
{P2=0x00;
mDelay(10);
yue++;
mDelay(2);}}
if(K0==1&&K3==1) //K0按鍵是否按下
{ mDelay(5); //延時消抖
if(K0==1&&K3==1)
{P2=0x00;
mDelay(10);
nian++;
b--;
mDelay(2);}}
if(K3==1)
{mDelay(5);
{if(K3==1);
b++;
}
}
if(K2==1)
{mDelay(5);
if(K2==1)
{ mDelay(5);
bit_data1=0x01;
bit_data2=0x02;
P2 = 0x00;
dis_data2=miao/10;
dis_data1=miao%10;
P1= dis_tab[dis_data1]; //將顯示的個位的段碼送段碼口
P2 = bit_data1; //將位選碼送位選碼口
mDelay(5);
P2 = 0x00; //熄滅數碼管
P1 = dis_tab[dis_data2]; //將顯示的十位的段碼送段碼口
P2 =bit_data2;
mDelay(10);
a1=0x04;
a2=0x08;
P2 = 0x00;
a22=fen/10;
a11=fen%10;
P1= dis_tab[a11]; //將顯示的個位的段碼送段碼口
P2 = a1;
mDelay(5 );
P2 = 0x00; //熄滅數碼管
P1 = dis_tab[a22]; //將顯示的十位的段碼送段碼口
P2 =a2;
mDelay(10);
b1=0x10;
b2=0x20;
P2 = 0x00;
b22=shi/10;
b11=shi%10;
P1= dis_tab[b11]; //將顯示的個位的段碼送段碼口
P2 =b1; //將位選碼送位選碼口
mDelay(5 );
P2 = 0x00; //熄滅數碼管
P1 = dis_tab[b22]; //將顯示的十位的段碼送段碼口
P2 =b2;
mDelay(10); }
while(K2==0){break;}
}
if(K2==1&&K3==1)
{ mDelay(5);
if(K2==1&&K3==1)
{
mDelay(10);
fen++;
b--;
}}
if(K2==1&&K1==1)
{mDelay(5);
if(K2==1&&K1==1)
{
mDelay(10);
a--;
mDelay(5) ;
shi++;
}
}
if(num==miao&&a==fen&&b==shi)
{
P3=0x00;
mDelay(27);
}
if(K0==1&&K1==1&&K2==1)
{ shi--;
yue--;
bit_data1=0x01;
bit_data2=0x02;
P2 = 0x00;
dis_data2=xq/10;
dis_data1=xq%10;
P1= dis_tab[dis_data1]; //將顯示的個位的段碼送段碼口
P2 = bit_data1; //將位選碼送位選碼口
mDelay(5);
P2 = 0x00; //熄滅數碼管
P1 = dis_tab[dis_data2]; //將顯示的十位的段碼送段碼口
P2 =bit_data2;
mDelay(10);
}
}
void display()
{
if(K0==0){
bit_data1=0x01;
bit_data2=0x02;
P2 = 0x00;
dis_data2=num/10;
dis_data1=num%10;
P1= dis_tab[dis_data1]; //將顯示的個位的段碼送段碼口
P2 = bit_data1; //將位選碼送位選碼口
mDelay(5);
P2 = 0x00; //熄滅數碼管
P1 = dis_tab[dis_data2]; //將顯示的十位的段碼送段碼口
P2 =bit_data2;
mDelay(10);
a1=0x04;
a2=0x08;
P2 = 0x00;
a22=a/10;
a11=a%10;
P1= dis_tab[a11]; //將顯示的個位的段碼送段碼口
P2 = a1;
mDelay(5 );
P2 = 0x00; //熄滅數碼管
P1 = dis_tab[a22]; //將顯示的十位的段碼送段碼口
P2 =a2;
mDelay(10);
b1=0x10;
b2=0x20;
P2 = 0x00;
b22=b/10;
b11=b%10;
P1= dis_tab[b11]; //將顯示的個位的段碼送段碼口
P2 =b1; //將位選碼送位選碼口
mDelay(5 );
P2 = 0x00; //熄滅數碼管
P1 = dis_tab[b22]; //將顯示的十位的段碼送段碼口
P2 =b2;
mDelay(10);
}
else
{
bit_data1=0x01;
bit_data2=0x02;
P2=0x00;
dis_data2=ri/10;
dis_data1=ri%10;
P1= dis_tab[dis_data1]; //將顯示的個位的段碼送段碼口
P2 = bit_data1; //將位選碼送位選碼口
mDelay(5 );
P2 = 0x00; //熄滅數碼管
P1 = dis_tab[dis_data2]; //將顯示的十位的段碼送段碼口
P2 =bit_data2;
mDelay(10);
a1=0x04;
a2=0x08;
P2 = 0x00;
a22=yue/10;
a11=yue%10;
P1= dis_tab[a11]; //將顯示的個位的段碼送段碼口
P2 = a1;
mDelay(5 );
P2 = 0x00; //熄滅數碼管
P1 = dis_tab[a22]; //將顯示的十位的段碼送段碼口
P2 =a2;
mDelay(10);
b1=0x10;
b2=0x20;
P2 = 0x00;
b22=nian/10;
b11=nian%10;
P1= dis_tab[b11]; //將顯示的個位的段碼送段碼口
P2 =b1; //將位選碼送位選碼口
mDelay(5 );
P2 = 0x00; //熄滅數碼管
P1 = dis_tab[b22]; //將顯示的十位的段碼送段碼口
P2 =b2;
mDelay(10);
while(!K0){break;} //等待K0按鍵釋放
}
}
void main()
{
TMOD=0X01; /*中斷初始化*/
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1; //中斷總開關
ET0=1; //請求中斷
TR0=1; //允許中斷
int_cnt=0;
while(1)
{ //關閉其他位
display(); //調用函數
}
}
復制代碼
所有資料51hei提供下載:
數字鐘.zip
(91.31 KB, 下載次數: 44)
2019-6-24 17:53 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
91成人免费看
|
久久久男人的天堂
|
国产精品精品3d动漫
|
亚洲精久久
|
成人在线一区二区
|
久久国产精品-国产精品
|
黄色一级特级片
|
国产99久久精品一区二区永久免费
|
一级黄色片在线免费观看
|
91成人午夜性a一级毛片
|
国产一区二区精品在线观看
|
精品国产乱码久久久久久闺蜜
|
午夜精品一区二区三区在线视频
|
日韩一区二区三区在线视频
|
国产一级片精品
|
欧州一区二区
|
久久久五月天
|
一区二区三区四区在线视频
|
日韩欧美一区二区三区免费看
|
亚洲高清在线
|
国产精品美女久久久久久久久久久
|
亚洲成人一区二区三区
|
亚洲精品456
|
久久人人网
|
欧美精品一区二区三区四区 在线
|
日韩成年人视频在线
|
国产成人av在线播放
|
国产91在线观看
|
久久久精品影院
|
国产成人精品一区二区三区网站观看
|
黄色一级电影免费观看
|
国产精品国产精品国产专区不卡
|
久久精品在线播放
|
天堂网中文字幕在线观看
|
欧美一级视频免费看
|
国产羞羞视频在线观看
|
国产亚洲黄色片
|
依人成人
|
亚洲美女一区二区三区
|
国产一区久久久
|
久久在视频
|