久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
基于單片機(jī)的電子時(shí)鐘proteus仿真設(shè)計(jì)
[打印本頁]
作者:
tim2017
時(shí)間:
2017-8-17 16:20
標(biāo)題:
基于單片機(jī)的電子時(shí)鐘proteus仿真設(shè)計(jì)
有proteus的仿真,還有源程序。
有興趣的朋友可以一起學(xué)習(xí)!!
0.png
(23.66 KB, 下載次數(shù): 119)
下載附件
2017-8-17 18:03 上傳
0.png
(55.36 KB, 下載次數(shù): 114)
下載附件
2017-8-17 18:03 上傳
單片機(jī)源程序如下:
#include <reg52.h>
#include "ds1302.h"
#include "key.h"
#define uchar unsigned char
#define uint unsigned int
bit WATCH_TIME=1; //數(shù)碼管顯示時(shí)間標(biāo)志位,默認(rèn)情況下顯示時(shí)間
bit WATCH_DATE=0; //數(shù)碼管顯示日期標(biāo)志位
bit SET_TIME=0; //數(shù)碼管顯示調(diào)時(shí)時(shí)的在調(diào)時(shí)間
bit SET_DATE=0; //數(shù)碼管顯示在調(diào)日期
bit SET_CLOK=0; //數(shù)碼管顯示在調(diào)鬧鐘的數(shù)值
bit CLK; //開鬧鐘標(biāo)志位
sbit led=P2^1;
sbit wela=P2^2;
sbit dula=P2^3;
sbit beef=P2^4;
sbit tom=P2^0;
//uchar tab_date[14]="2012-11-06 TUE";//表示年月日星期
//uchar tab_time[8]="00:00:00";//表示時(shí)分秒
uchar tab_t[6],tab_c[6],tab_d[6],date[6],time[6]; //用來顯示調(diào)節(jié)時(shí)間、鬧鐘、日期時(shí)顯示相應(yīng)數(shù)據(jù)
uchar tiao,second;//調(diào)時(shí)或設(shè)置鬧鐘時(shí),相應(yīng)的時(shí)分秒跳動(dòng)
uchar code tabdu[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};/*共陰極數(shù)*/
uchar code tabwe[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
uchar keyval,tiao=2;
uchar hour,min,sec;
uchar year,month,day;
uchar clkh,clkm,clks;
void delay(uint t)
{
uint x,y;
for(x=0;x<t;x++)
for(y=0;y<40;y++);
}
//------------------------------------------
// 數(shù)據(jù)轉(zhuǎn)換
//------------------------------------------
void trans()
{
date[0]=tab_1302[6]/10; //年十位
date[1]=tab_1302[6]%10; //年個(gè)位
date[2]=tab_1302[4]/10; //月十位
date[3]=tab_1302[4]%10; //月個(gè)位
date[4]=tab_1302[3]/10; //日十位
date[5]=tab_1302[3]%10; //日個(gè)位
time[0]=tab_1302[2]/10; //小時(shí)十位
time[1]=tab_1302[2]%10; //小時(shí)個(gè)位
time[2]=tab_1302[1]/10; //分十位
time[3]=tab_1302[1]%10; //分個(gè)位
time[4]=tab_1302[0]/10; //秒十位
time[5]=tab_1302[0]%10; //秒個(gè)位
}
void Getval(uchar hour1,uchar min1,uchar sec1)
{
tab_t[0]=hour1/10;
tab_t[1]=hour1%10;
tab_t[2]=min1/10;
tab_t[3]=min1%10;
tab_t[4]=sec1/10;
tab_t[5]=sec1%10;
}
void Getdate(uchar year1,uchar month1,uchar day1)
{
tab_d[0]=year1/10;
tab_d[1]=year1%10;
tab_d[2]=month1/10;
tab_d[3]=month1%10;
tab_d[4]=day1/10;
tab_d[5]=day1%10;
}
void clkinit()
{
tab_c[0]=2;
tab_c[1]=4;
tab_c[2]=0;
tab_c[3]=0;
tab_c[4]=0;
tab_c[5]=0;
}
void Getclok()
{
tab_c[0]=clkh/10;
tab_c[1]=clkh%10;
tab_c[2]=clkm/10;
tab_c[3]=clkm%10;
tab_c[4]=clks/10;
tab_c[5]=clks%10;
}
void dsptime() //顯示實(shí)時(shí)時(shí)間
{
uchar i;
led=0;
for(i=0;i<6;i++)
{
P3=tabwe[i];
P0=tabdu[time[i]];
delay(5);
}
}
void dspdate() //顯示日期
{
uchar i;
led=1;
for(i=0;i<6;i++)
{
P3=tabwe[i];
P0=tabdu[date[i]];
delay(5);
}
}
void setdisp(uchar tab_set[]) //數(shù)碼管顯示當(dāng)前設(shè)置相應(yīng)的數(shù)值并跳動(dòng)
{
uchar i;
for(i=0;i<6;i++)
{
switch(tiao)
{
case 0:if(i==0||i==1)
{
if(second<8)
{
P3=tabwe[i];
P0=tabdu[tab_set[i]];
}
}
else
{
P3=tabwe[i];
P0=tabdu[tab_set[i]];
}break;
case 1:if(i==2||i==3)
{
if(second<8)
{
P3=tabwe[i];
P0=tabdu[tab_set[i]];
}
}
else
{
P3=tabwe[i];
P0=tabdu[tab_set[i]];
}break;
case 2:if(i==4||i==5)
{
if(second<8)
{
P3=tabwe[i];
P0=tabdu[tab_set[i]];
}
}
else
{
P3=tabwe[i];
P0=tabdu[tab_set[i]];
}break;
}
delay(5);
}
}
void settime() //設(shè)置時(shí)間
{
SET_TIME=1;
SET_DATE=0;
WATCH_TIME=0;
hour=time[0]*10+time[1];
min=time[2]*10+time[3];
sec=time[4]*10+time[5];
while(1)
{
keyval=Getkey();
switch(keyval)
{
case KEY_MU:tiao++;tiao=tiao%3;break; //調(diào)時(shí)
case KEY_UP:if(tiao==0){hour++;if(hour==24) hour=0;}
if(tiao==1){min++;if(min==60) min=0;}
if(tiao==2){sec++;if(sec==60) sec=0;};
break;
case KEY_DN:if(tiao==0){hour--;if(hour==255) hour=23;}
if(tiao==1){min--;if(min==255) min=59;}
if(tiao==2){sec--;if(sec==255) sec=59;};
break;
case KEY_OK:tab1_1302[2]=hour;tab1_1302[1]=min;tab1_1302[0]=sec;ds1302_init();SET_TIME=0;WATCH_TIME=1;tiao=1;return;break;
case KEY_BK:SET_TIME=0;WATCH_TIME=1;tiao=1;return;
}
}
}
void setdate() //設(shè)置日期
{
uchar keyval;
SET_TIME=0;
SET_DATE=1;
WATCH_DATE=0;
year=date[0]*10+date[1];
month=date[2]*10+date[3];
day=date[4]*10+date[5];
while(1)
{
keyval=Getkey();
switch(keyval)
{
case KEY_MU:tiao++;tiao=tiao%3;break;
case KEY_UP:if(tiao==0){year++;if(year==100) year=0;}
if(tiao==1){month++;if(month==13) month=0;}
if(tiao==2){day++;if(day==32) day=0;};
break;
case KEY_DN:if(tiao==0){year--;if(year==255) year=99;}
if(tiao==1){month--;if(month==0) month=12;}
if(tiao==2){day--;if(day==0) day=31;};
break;
case KEY_OK:tab1_1302[6]=year;tab1_1302[4]=month;tab1_1302[3]=day;
ds1302_init();SET_DATE=0;WATCH_TIME=1;tiao=2;led=0;return;
break;
case KEY_BK:SET_DATE=0;WATCH_TIME=1;tiao=2;led=0;return;
}
}
}
void setclok() //設(shè)置鬧鐘
{
clkh=tab_c[0]*10+tab_c[1];
clkm=tab_c[2]*10+tab_c[3];
clks=tab_c[4]*10+tab_c[5];
SET_CLOK=1;
tiao=0;
while(1)
{
keyval=Getkey();
switch(keyval)
{
case KEY_MU:tiao++;tiao=tiao%2;break;
case KEY_UP:if(tiao==0){clkh++;if(clkh>=24) clkh=0;}
if(tiao==1){clkm++;if(clkm==60) clkm=0;};
break;
case KEY_DN:if(tiao==0){clkh--;if(clkh==255) clkh=23;}
if(tiao==1){clkm--;if(clkm==255) clkm=59;};
break;
case KEY_OK:SET_CLOK=0;WATCH_TIME=1;CLK=1;tiao=1;return;break;
case KEY_BK:clkh=24;clkm=0;clks=0;SET_CLOK=0;CLK=0;WATCH_TIME=1;tiao=1;return;
}
}
}
void smg()
{
if(WATCH_TIME)
dsptime(); //顯示時(shí)間
else if(WATCH_DATE)
dspdate(); //顯示日期
else if(SET_TIME)
{
Getval(hour,min,sec);
setdisp(tab_t); //顯示在調(diào)時(shí)間
}
else if(SET_DATE)
{
Getdate(year,month,day);
setdisp(tab_d); //顯示在調(diào)日期
}
else if(SET_CLOK)
{
Getclok();
setdisp(tab_c); //顯示在調(diào)鬧鐘
}
}
void dealkey(uchar key)
{
switch(key)
{
case KEY_MU:if(WATCH_DATE)
{
led=1;
setdate();
}
else
settime();
break;
case KEY_CK:WATCH_TIME=0;WATCH_DATE=0;setclok();break;
case KEY_TD:WATCH_TIME=~WATCH_TIME;WATCH_DATE=~WATCH_DATE;break;//時(shí)間與日期的切換
}
}
void feng()//鬧鐘
{
if(clkh==tab_1302[2]&&clkm==tab_1302[1])
tom=0;
if(KEY_CK==Getkey())
{
tom=1;
CLK=0;
}
}
void main()
{
uchar num;
TMOD=0X01; //T0工作方式1
TH0=(65536-10000)/256;
TL0=(65536-10000)%256; //10毫秒中斷一次
EA=1;
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
基于單片機(jī)的電子時(shí)鐘仿真.7z
(43.07 KB, 下載次數(shù): 71)
2017-8-17 16:20 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
tao87512
時(shí)間:
2017-8-21 16:01
小白來學(xué)習(xí)一下,謝謝分享
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
中文字幕在线一区二区三区
|
成人欧美一区二区三区在线播放
|
国产精品一区久久久
|
欧美日韩一区在线观看
|
在线观看免费毛片
|
午夜精品一区二区三区在线视
|
久久99精品久久久
|
美女在线一区二区
|
av中文字幕网
|
精品国产网
|
99视频在线免费观看
|
欧美激情一区二区
|
www.国产一区
|
亚洲精品视频观看
|
久久精品国产亚洲一区二区
|
国产免费va
|
免费的av网站
|
91精品国产综合久久婷婷香蕉
|
国产精品久久久久久久久免费丝袜
|
日本午夜视频
|
91在线综合
|
免费观看的黄色网址
|
三区在线观看
|
精品免费视频
|
国产精品三级
|
欧美一级片
|
国产欧美一区二区三区日本久久久
|
久久99精品久久久久婷婷
|
国产成人精品一区二区三区四区
|
久久精品亚洲一区
|
在线视频亚洲
|
波多野结衣中文视频
|
日本中文在线视频
|
日本三级网站在线观看
|
久久成人人人人精品欧
|
黑人巨大精品欧美一区二区免费
|
欧美极品一区二区
|
国产视频中文字幕在线观看
|
日韩国产一区二区三区
|
亚洲性在线
|
国产xxx在线观看
|