導航:首頁 > 操作系統 > 單片機led顯示時間

單片機led顯示時間

發布時間:2022-07-20 19:17:30

單片機控制LED燈亮的時間

你的意思是想讓這個LED亮大約10-15分鍾後永久關閉是嗎?方法很簡單我說出我的想法,

用一片價格低廉的單片機,單片機供電加一個低W保險絲、程序控制IO點亮LED 10-15分鍾後,在控制另一IO口驅動三級管(或其他開關器件)燒斷保險絲,這樣即使更換電池LED也不可能在亮,

㈡ 51單片機程序設計,在6位LED數碼管上顯示時間,P1口控制顯示器段碼,P2口控制顯示器位碼

你好,時間的話可以考慮使用時鍾晶元DS3231,P1口控制段碼的話,可以使用兩顆595晶元搞定,P2口也可以使用595搞定,P口就掃描按鍵輸入就行了。秒錶的話,使用單片機內部的定時器,可以很精確的計時。。至於倒計時,什麼的話,都一個道理使用單片機內部的定時器搞定。如果你還不懂的話,我們可以提供有償服務。

㈢ 單片機led顯示時間年月日

如果想使單片機控制的LED數碼管或點陣屏顯示時間年月日,需要根據硬體配置編寫完整的時鍾、日歷程序,程序調試好了下載到單片機里在整個系統供電正常時就可以自動顯示了。

㈣ 51單片機c語言版,編寫程序:單片機控制八位LED數碼管顯示20220204間隔兩秒後顯示2022

摘要 顯示程序和硬體關聯,如驅動方式、位數等,所以沒有統一的程序,假定動態顯示,大概思路如下:

㈤ 怎麼用89C52單片機控制LED實時顯示時間介面是怎樣的 望各位不吝賜教啊 小女子在此謝過了

8 段直接接在P0口,上拉電阻510左右,位選直接接其它IO口, 就可以啦。

㈥ 求助單片機匯編語言:在LED上實現時鍾功能

程序就不寫了,因為每個人有每個人的寫作風格,我給你的程序,你不一定能理解我的思路,拿一個現成的程序讓你看,那最終不是你自己的,所以要讓自己弄懂,就給你一個思路,你就把程序做出來,那才是自己的東西,這里就給你一個思路

把0……9的數碼顯示代碼存在ROM里,用tab:db……(字型碼)來存,做一段1秒的定時程序,在程序的初始化時要做幾個計數器,分別對時分秒計數,先從秒開始,設初始值為10,然後是「分」60個,最後一個是「時」也是60,開中斷,啟動1秒定時器,一秒到了以後,把1的字型碼發送到串列口,然後秒計數器減1,在啟動1秒定時,到了後,把2字型碼發送出去……直到減為0,個位進1,將秒的「十」位字型碼發送到出去,分計數器從60開始減計數,這里要注意,定時器不能停,要一直的循環執行1秒定時,採用中斷方式,分進位後,再對時計數器減計數,就象這樣,不停的減計數,直至溢出後將相應的代碼發送出去,基本思路就是這樣,關鍵的就是幾個計數器的控制,要主要完成了一個周期後,要重新賦值

㈦ 用AT89C51單片機控制LED數碼管能夠顯示時間和日期,求電路圖和程序代碼

這是一個朋友做的,你可以參考一下:

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit db=P2^7;
char i,sec,min,h,date,month,year,flag;
uchar j,k,m,n,o,p;
sbit la=P2^0;
sbit wela1=P2^1;
sbit wela2=P2^2;
sbit key_ch=P3^5;
sbit key_add=P3^6;
sbit key_minus=P3^7;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void init();
void delay(uint);
void second_display();
void minute_display();
void hour_display();
void date_display();
void month_display();
void year_display();
void control();
void time();
void main()
{
init();
while(1)
{
second_display();
minute_display();
hour_display();
date_display();
month_display();
year_display();
control();
}
}
void init()
{
db=0;
i=0;
sec=0;
min=0;
h=0;
date=1;
month=1;
year=1;
flag=0;
wela1=0;
wela2=0;
EA=1;
ET0=1;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void second_display()
{
int sec_shi,sec_ge;
sec_shi=sec/10;
sec_ge=sec%10;

if(flag==1&&j!=1)
j++;
else
{
j=0;
la=1;
P0=~table[sec_ge];
la=0;
wela1=1;
P1=0x00;
wela1=0;
wela2=1;
P1=0x20;
wela2=0;
delay(1);
la=1;
P0=0xff;
la=0;

la=1;
P0=~table[sec_shi];
la=0;
wela1=1;
P1=0x00;
wela1=0;
wela2=1;
P1=0x10;
wela2=0;
delay(1);
la=1;
P0=0xff;
la=0;
}
}
void minute_display()
{
int min_shi,min_ge;
min_shi=min/10;
min_ge=min%10;

if(flag==2&&k!=1)
k++;
else
{
k=0;
la=1;
P0=~table[min_ge];
la=0;
wela1=1;
P1=0x00;
wela1=0;
wela2=1;
P1=0x08;
wela2=0;
delay(1);
la=1;
P0=0xff;
la=0;

la=1;
P0=~table[min_shi];
la=0;
wela1=1;
P1=0x00;
wela1=0;
wela2=1;
P1=0x04;
wela2=0;
delay(1);
la=1;
P0=0xff;
la=0;
}
}
void hour_display()
{
int h_shi,h_ge;
h_shi=h/10;
h_ge=h%10;

if(flag==3&&m!=1)
m++;
else
{
m=0;
la=1;
P0=~table[h_ge];
la=0;
wela1=1;
P1=0x00;
wela1=0;
wela2=1;
P1=0x02;
wela2=0;
delay(1);
la=1;
P0=0xff;
la=0;
delay(1);

la=1;
P0=~table[h_shi];
la=0;
wela1=1;
P1=0x00;
wela1=1;
P1=0x00;
wela1=0;
wela2=1;
P1=0x01;
wela2=0;
delay(1);
la=1;
P0=0xff;
la=0;
wela2=0;
delay(1);
}

}
void date_display()
{
int date_shi,date_ge;
date_shi=date/10;
date_ge=date%10;

if(flag==4&&n!=1)
n++;
else
{
n=0;
la=1;
P0=~table[date_ge];
la=0;
wela2=1;
P1=0x00;
wela2=0;
wela1=1;
P1=0x80;
wela1=0;
delay(1);
la=1;
P0=0xff;
la=0;

la=1;
P0=~table[date_shi];
la=0;
wela2=1;
P1=0x00;
wela2=0;
wela1=1;
P1=0x40;
wela1=0;
delay(1);
la=1;
P0=0xff;
la=0;
}
}
void month_display()
{
int month_shi,month_ge;
month_shi=month/10;
month_ge=month%10;

if(flag==5&&o!=1)
o++;
else
{
o=0;
la=1;
P0=~table[month_ge];
la=0;
wela2=1;
P1=0x00;
wela2=0;
wela1=1;
P1=0x20;
wela1=0;
delay(1);
la=1;
P0=0xff;
la=0;

la=1;
P0=~table[month_shi];
la=0;
wela2=1;
P1=0x00;
wela2=0;
wela1=1;
P1=0x10;
wela1=0;
delay(1);
la=1;
P0=0xff;
la=0;
}
}
void year_display()
{
int year_qian,year_,year_shi,year_ge;
year_qian=year/1000;
year_=year%1000/100;
year_shi=year%1000%100/10;
year_ge=year%10;

if(flag==6&&p!=1)
p++;
else
{
p=0;
la=1;
P0=~table[year_ge];
la=0;
wela2=1;
P1=0x00;
wela2=0;
wela1=1;
P1=0x08;
wela1=0;
delay(1);
la=1;
P0=0xff;
la=0;

la=1;
P0=~table[year_shi];
la=0;
wela2=1;
P1=0x00;
wela2=0;
wela1=1;
P1=0x04;
wela1=0;
delay(1);
la=1;
P0=0xff;
la=0;

la=1;
P0=~table[year_];
la=0;
wela2=1;
P1=0x00;
wela2=0;
wela1=1;
P1=0x02;
wela1=0;
delay(1);
la=1;
P0=0xff;
la=0;

la=1;
P0=~table[2];
la=0;
wela2=1;
P1=0x00;
wela2=0;
wela1=1;
P1=0x01;
wela1=0;
delay(1);
la=1;
P0=0xff;
la=0;
wela1=0;
}
}
void control()
{
if(!key_ch)
{
delay(5);
if(!key_ch)
{
flag++;
if(flag==7)
flag=0;
}
}
while(!key_ch);
if(flag==1&&key_add==0)
{
while(!key_add);
sec++;
if(sec==60)
sec=0;
}
if(flag==1&&key_minus==0)
{
while(!key_minus);
sec--;
if(sec==-1)
sec=59;
}

if(flag==2&&key_add==0)
{
while(!key_add);
min++;
if(min==60)
min=0;
}
if(flag==2&&key_minus==0)
{
while(!key_minus);
min--;
if(min==-1)
min=59;
}

if(flag==3&&key_add==0)
{
while(!key_add);
h++;
if(h==24)
h=0;
}
if(flag==3&&key_minus==0)
{
while(!key_minus);
h--;
if(h==-1)
h=23;
}

if(flag==4&&key_add==0)
{
while(!key_add);
date++;
if(date==29)
if((year%4!=0)&&(month==2))
date=1;
if(date==30)
if((year%4==0)&&(month==2))
date=1;
if(date==31)
if((month==4)||(month==6)||(month==9)||(month==11))
date=1;
if(date==32)
if((month==1)||(month==3)||(month==5)||(month==7)||(month==8)||(month==10)||(month==12))
date=1;
}

if(flag==5&&key_add==0)
{
while(!key_add);
month++;
if(month==13)
month=1;
}
if(flag==5&&key_minus==0)
{
while(!key_minus);
month--;
if(month==0)
month=12;
}

if(flag==6&&key_add==0)
{
while(!key_add);
year++;
if(year==99)
year=1;
}
if(flag==6&&key_minus==0)
{
while(!key_minus);
year--;
if(year==0)
year=99;
}
}

void T0_rpt() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
i++;
time();
}

void time()
{
if(i==20)
{
i=0;
sec++;
if(sec==60)
{
sec=0;
min++;
if(min==60)
{
min=0;
h++;
if(h==24)
{
h=0;
min=0;
sec=0;
date++;
if(date==29)
if((year%4!=0)&&(month==2))
{
date=1;
month++;
if(month==13)
{
month=1;
year++;
}
}
if(date==30)
if((year%4==0)&&(month==2))
{
date=1;
month++;
if(month==13)
{
month=1;
year++;
}
}
if(date==31)
if((month==4)||(month==6)||(month==9)||(month==11))
{
date=1;
month++;
if(month==13)
{
month=1;
year++;
}
}
if(date==32)
if((month==1)||(month==3)||(month==5)||(month==7)||(month==8)||(month==10)||(month==12))
{
date=1;
month++;
if(month==13)
{
month=1;
year++;
}
}
}
}
}
}
}

㈧ 用51單片機做一個LED顯示的電子鍾

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]="ME-400-A clock";
uchar code table1[]=" --:--:-- ";
uchar code table2[]="ALL:00:00:-- ";
uchar code table3[]=" ";
uchar clk_time[3]; //秒,分,時寄存器初始值
sbit T_RST=P2^2;//ds1302-5
sbit T_IO=P2^3;//ds1302-6
sbit T_CLK=P2^4;//ds1302-7
sbit en=P2^5; //參照LCD1602說明檔,使能信號
sbit rw=P2^6; //。。。。。。。。,讀寫信號端(輸入高電頻時為讀,低電為寫)
sbit rs=P2^7; //。。。。。。。。,數據/命令選擇端(H/L)
sbit led=P1^0;
sbit la=P1^1;
sbit wela=P1^2;
sbit ACC0=ACC^0;
sbit ACC7=ACC^7;
sbit up=P3^3;
sbit down=P3^4;
sbit set=P3^2;
sbit did=P1^4;
uchar num,clock_ss,clock_sg,clock_fs,clock_fg,clock_ms,clock_mg,b,clock_s,clock_g;
char hour,mie,sei,c,nhour,nmie,shour,smie;
/******************DS1302:寫入操作(上升沿)*********************/

void write_byte(uchar da)
{
uchar i;
ACC=da;
for(i=8;i>0;i--)
{
T_IO=ACC0;
T_CLK=0;
T_CLK=1;
ACC=ACC>>1;
}
}

/******************DS1302:讀取操作(下降沿)*****************/
uchar read_byte(void)
{
uchar i;
for(i=0;i<8;i++)
{
ACC=ACC>>1;
T_CLK = 1;
T_CLK = 0;
ACC7 = T_IO;
}
return(ACC);

}

/******************DS1302:寫入數據(先送地址,再寫數據)***************************/
void write_1302(uchar addr,uchar da)
{
T_RST=0; //停止工作
T_CLK=0; //只有在CLK為低電平時,才能將RST置為高電平,然後才能傳輸數據
T_RST=1; //重新工作
write_byte(addr); //寫入地址

write_byte(da);
T_RST=0;
T_CLK=1;
}

/******************DS1302:讀取數據(先送地址,再讀數據)**************************/
uchar read_1302(uchar addr)
{
uchar temp;
T_RST=0; //停止工作
T_CLK=0;
T_RST=1; //重新工作
write_byte(addr); //寫入地址
temp=read_byte();
T_RST=0;
T_CLK=1; //停止工作
return(temp);
}

/***********************延時程序=a*1ms**************************************/
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void fn()
{
did=0;
delay(120);
did=1;
delay(120);
did=0;
delay(120);
did=1;
delay(120);
did=0;
delay(120);
did=1;
delay(120);
did=0;
delay(320);
did=1;
delay(400);
}
void write_com(uchar com)
{
led=1;
wela=1;
P0=0xff;
delay(1);
led=0;
wela=0;
P0=0x00;
la=1;
delay(1);
la=0;
rs=0;
P0=com;
delay(5);
en=1;
delay(5);
en=0;
}

void write_data(uchar date)
{
led=1;
wela=1;
P0=0xff;
delay(1);
led=0;
wela=0;
P0=0x00;
la=1;
delay(1);
la=0;
rs=1;
P0=date;
delay(5);
en=1;
delay(5);
en=0;
}
void morning()
{ shour=clock_ss*10+clock_sg;
smie=clock_fs*10+clock_fg;
if(b==0)
{
if(nhour==shour)
{
if(smie>=nmie)
{
fn();
}
}
}

}
void init()
{
b=0;
P0=0xff;
delay(5);
led=1;
delay(5);
P0=0xff;
led=0;
la=0;
wela=1;
delay(5);
wela=0;//關ME-400開發板數碼管
nhour=0;
nmie=0;
rw=0;
en=0;
write_com(0x38);//設置液晶
write_com(0x0c);//設游標等
write_com(0x06);//寫一個字元地址指針加1且游標加1
write_com(0x01);//清屏
write_com(0x80);//設置s地址指針
}
void display(uchar add,date)
{
if(b==0)
{
clock_ms=clk_time[0]/ 16; clock_mg=clk_time[0]%16;
led=0;
clock_fs=clk_time[1]/ 16; clock_fg=clk_time[1]%16;
led=0;
clock_ss=clk_time[2]/ 16; clock_sg=clk_time[2]%16;
write_com(0x80+0x44);
write_data(0x30+clock_ss);
write_com(0x80+0x45);
write_data(0x30+clock_sg);
write_com(0x80+0x47);
write_data(0x30+clock_fs);
write_com(0x80+0x48);
write_data(0x30+clock_fg);
write_com(0x80+0x4a);
write_data(0x30+clock_ms);
write_com(0x80+0x4b);
write_data(0x30+clock_mg);

}
if(b!=0)
{
clock_s=date/ 10; clock_g=date%10;
write_com(0x80+0x40+add);
write_data(0x30+clock_s);
write_data(0x30+clock_g);
}

}
void key()
{
uchar clock_s1, clock_s2, clock_f1, clock_f2;
rw=0;

if(set==0)
{
delay(10);
if(set==0)
{
did=0;
delay(10); did=1;
b++;

}
while(!set);

if(b==1)
{
hour=clock_ss*10+clock_sg;
mie=clock_fs*10+clock_fg;
write_com(0x80+0x45);
write_com(0x0f);

}
if(b==2)
{
write_com(0x80+0x48);

}
if(b==3)
{
write_com(0x80+0x40);
for(num=0;num<13;num++)
{
write_data(table2[num]);

}

write_com(0x80+0x45); display(4,nhour);write_com(0x80+0x45);
}
if(b==4)
{

write_com(0x80+0x48);
display(7,nmie); write_com(0x80+0x48);

}
if(b==5)
{
write_com(0x80+0x40);
for(num=0;num<4;num++)
{
write_data(table3[num]);

}
write_com(0x80+0x45);
write_com(0x0c);
b=0;
clock_s1=hour/10;//十進制轉十六進制
clock_s2=hour%10;//十進制轉十六進制
clock_s1=clock_s1&0xff;//十進制轉十六進制
clock_s2=clock_s2&0xff;//十進制轉十六進制
clock_s1<<=4;//十進制轉十六進制
clock_s1=clock_s1|clock_s2;//十進制轉十六進制

clock_f1=mie/10;//十進制轉十六進制
clock_f2=mie%10;//十進制轉十六進制
clock_f1=clock_f1&0xff; //全1出1 與運算
clock_f2=clock_f2&0xff;//十進制轉十六進制
clock_f1<<=4;//十進制轉十六進制
clock_f1=clock_f1|clock_f2;//十進制轉十六進制

write_1302(0x8e,0x00); //WP=0 寫操作
write_1302(0x80,0x00);//寫秒
write_1302(0x82,clock_f1);//寫分
write_1302(0x84,clock_s1);//寫時
write_1302(0x86,0x14);//寫日
write_1302(0x88,0x02);//寫月
write_1302(0x8a,0x06);//寫星期
write_1302(0x8c,0x09);
write_1302(0x8e,0x80); //WP=1 防寫

}
}
if(b!=0)
{
if(up==0)
{
delay(10);
if(up==0)
{
did=0;
delay(10);
did=1;
while(!up);
if(b==1)
{

hour++;
if(hour>=24)
{
delay(1);
hour=0;
}
display(4,hour);
write_com(0x80+0x45);

}
if(b==2)
{
mie++;

if(mie>=60)
{
mie=0;
}
display(7,mie);
write_com(0x80+0x48);
}
if(b==3)
{

nhour++;
if(nhour>=24)
{
delay(1);
nhour=0;
}
display(4,nhour);
write_com(0x80+0x45);

}
if(b==4)
{
nmie++;

if(nmie>=60)
{
nmie=0;
}
display(7,nmie);
write_com(0x80+0x48);
}
}

}

if(down==0)
{
delay(10);
if(down==0)
{
did=0;
delay(10);
did=1;
while(!down);
if(b==1)
{
hour--;
if(hour<0)
{

hour=23;
}
display(4,hour);
write_com(0x80+0x45);

}
if(b==2)
{
mie--;
if(mie<0)
{
mie=59;
}
display(7,mie);
write_com(0x80+0x48);
}
if(b==3)
{
nhour--;
if(nhour<0)
{

nhour=23;
}
display(4,nhour);
write_com(0x80+0x45);

}
if(b==4)
{
nmie--;
if(nmie<0)
{
nmie=59;
}
display(7,nmie);
write_com(0x80+0x48);
}

}

}
}
}

void main()
{
uchar temp=0x80;
uchar i;
init();
for(num=0;num<14;num++)
{
write_data(table[num]);
delay(100);
}

write_com(0x80+0x40); // 設置數據地址指針為0X40
for(num=0;num<15;num++)
{
write_data(table1[num]);

}
/*for(num=0;num<16;num++)
{
write_com(0x18);
delay(20);
}*/
write_1302(0x8e,0x00);
write_1302(0x90,0xa4);
write_1302(0x8e,0x80);
while(1)
{

if(b==0)

{ temp=0x81;
for(i=0;i<3;i++)
{
clk_time[i]=read_1302(temp);
temp+=2;
}
display(0x4b,0x00);
}

morning();
key();

}
}

1602做的時鍾

閱讀全文

與單片機led顯示時間相關的資料

熱點內容
客戶端框架源碼 瀏覽:206
python自動辦公能幹嘛 瀏覽:873
程序員追愛 瀏覽:252
程序員邏輯故事 瀏覽:768
加密icsot23i2c 瀏覽:713
你們有什麼好的解壓軟體 瀏覽:607
常州空氣壓縮機廠家 瀏覽:241
安卓如何關閉app內彈出的更新提示 瀏覽:409
e4a寫的app怎麼裝蘋果手機 瀏覽:201
海立壓縮機海信系 瀏覽:210
社保如何在app上合並 瀏覽:220
小米加密照片後綴 瀏覽:236
我的世界網易手機怎麼創伺服器 瀏覽:978
載入單頁源碼 瀏覽:930
阿里雲伺服器seo 瀏覽:777
海洋斗什麼時候上線安卓 瀏覽:86
中行app如何查每日匯款限額 瀏覽:840
輸入伺服器sn是什麼意思 瀏覽:725
sha1演算法java 瀏覽:90
asp代碼壓縮 瀏覽:851