導航:首頁 > 操作系統 > 51單片機數碼管時鍾需要什麼元件

51單片機數碼管時鍾需要什麼元件

發布時間:2022-05-29 12:20:35

㈠ 用單片機做電子時鍾需要的材料

做電子時鍾需要的材料:
1 6個七段數碼管(2個顯示:0~23小時 、2個顯示:0~59分、2個顯示:0~59秒)
2 6個三極體 作為 6個七段數碼管的驅動
3 一個51單片機(P1口作為6個七段數碼管的段形控制、P2口作為七段數碼管的位控、動態顯示)
4 需要4個微動按鈕,可以分別用來設置或修改小時、分、秒的按鍵。
5 需要電阻或電阻排(220歐姆、10K)
6 最後就是需要焊接工具:電烙鐵一把20~30瓦、焊錫一卷。
7 電路板 可以使用簡易的實驗電路板

呵呵 滿意 就選滿意回答啊

㈡ 基於MCS-51單片機的數字時鍾都需要什麼元器件

單片機就不用說了,必須的
然後看你想用什麼顯示,可以用數碼管,也可以用液晶
如果對精度要求不高的話呢,用外接晶振自己去調就可以了.如果要准確的話,還需要一塊時鍾晶元
要調時的話,還要加按鍵,要幾個就看你程序怎麼寫了

㈢ 基於51單片機的電子時鍾設計需要哪些元件

基於51單片機的電子時鍾設師
知道更多了解肯定

㈣ 51單片機不用鎖存器如何做一個時鍾!

使用鎖存的
目的是
為了擴展或者是為了
數碼管
的顯示不出現閃動。不用也可以的。到俺博客看看有設置好的
。http://hi..com/cgzsxy
用P1口作為數據接每個數碼管的ABCDEFG端。用P2口的前四位分別接四個數碼管的公共端(可以用三極體增加
驅動能力
)。

㈤ 時鍾電路設計需要哪些元件

方案的論證與選擇
1.1方案論證
1.1.1採用MCS—51系列單片機和壓力感測器來完成
壓力感測器是雞蛋鬧鍾必須用到的感測器,它具有結構簡單、體積小、重量輕、使用壽命長等優異的特點。控制電路主要由單片機和程序來實現,這樣的設計具有性能穩定,做工可靠,價格低廉,結構簡單的優點,但也存在編程難度大的缺點。這種設計是目前工業中最常用的一種設計,產品整體價成本格較低,硬體結構簡單,容易實現。
1.1.2採用TTL集成門電路和壓力感測器來實現
這種設計同樣採用壓力感測器,但是控制電路採用集成門電路,電路主要由振盪器,分頻器,計數器,解碼器,顯示電路組成。它的特點在於精度高,抗干擾能力強,允許的工作電壓范圍大,不需要編程,但同時也在產品體積大,硬體結構復雜,工作不可靠,技術老化,成本相對較高的缺點。這種設計目前在市場上已經基本淘汰。
1.1.3採用MCS—51系列單片機,時鍾晶元和壓力感測器來設計
這種設計在控制電路中加入了一個時鍾晶元,總體來說,產品需要的編程難度降低,但是產品的硬體結構復雜了,而且時鍾晶元的價格也很昂貴,提高了成本,這種設計在目前的市場上很少見。
1.2方案的選擇
綜上所述,應選用方案一來完成雞蛋鬧鍾的設計。

這里介紹的電子鍾,電路可稱得上極簡,它僅使用單片的20引腳單片機完成電子鍾的全部功能,而筆者見到的其它設計方案均採用二片以上的多片IC實現。

電路見圖1。

一片20引腳的單片機AT89C2051為電子鍾主體,其顯示數據從P1口分時輸出,P3.0~3.3則輸出對應的位選通信號。由於LED數碼管點亮時耗電較大,故使用了四隻PNP型晶體管VT1~VT4進行放大。本來筆者還有一種更簡的設計方案(見圖2),可省去VT1~VT4及R1~R4八個元件,但這種設計由於單片機輸出口的灌入電流有限(約20mA),數碼管亮度較暗而不向讀者介紹,除非你採用了高亮度的發光數碼管。

P3.4、P3.5、3.7外接了三個輕觸式按鍵,這里我們分別命名為:模式設定鍵set(P3.4)、時調整鍵hour(P3.5)、分調整鍵min(P3.7)。C1、R13組成上電復位電路。VT5及蜂鳴器Bz為鬧時訊響電路。三端穩壓器7805輸出的5V電壓供整個系統工作。此電子鍾可與任何9~20V/100mA的交直流電源適配器配合工作,適應性強。

電子鍾功能

1.走時:通過模式設定鍵set選擇為走時,U1、U2顯示小時,U3、U4顯示分。U2的小數點為秒點,每秒閃爍一次。

2.走時調整:通過模式設定鍵set選擇為走時調整,按下hour鍵對U1、U2的走時「時」顯示進行調整(每0.2秒遞加1)。按下min鍵對U3、U4的走時「分」顯示進行調整(每0.2秒遞加1)。

3.鬧時調整:通過模式設定鍵set選擇為鬧時調整,按下hour鍵對U1、U2的鬧時「時」顯示進行調整(每0.2秒遞加1)。按下min鍵對U3、U4的鬧時「分」顯示進行調整(每0.2秒遞加1)。

4.鬧時啟/停設定:通過模式設定鍵set選擇為鬧時啟/停設定,按下min鍵U3的小數點點亮,鬧時功能啟動;按下hour鍵U3的小數點熄滅,鬧時功能關停。

由於電路設計得極其簡單,因此豐富的功能只能由軟體完成,這里軟體設計成為了關鍵。下面介紹軟體設計要點。

圖3為主程序狀態流程。

圖3

運行時建立的主要狀態標志如下:

flag—掉電標志。掉電後,flag內為一隨機數;重新設定時間後flag內寫入標志數55H。

set—工作模式設定標志。

hour—走時「時」單元。

min—走時「分」單元。

sec—走時「秒」單元。

deda—走時5mS計數單元

t_hour—鬧時「時」單元。

t_min—鬧時「分」單元。

d_05s—0.5秒位標志。每秒鍾的前0.5秒置1,後0.5秒置0,以使秒點閃爍。

o_f—鬧時啟/停位標志。鬧時啟動置1,鬧時關停置0。

另外將定時器T0設定為5mS的定時中斷。這里晶振頻率為12MHz,因此5mS的初值為-5000,但實際上程序還要作其它運算,使得時間偏長,經調整
很高興回答樓主的問題 如有錯誤請見諒

㈥ 我想做個時鍾!用51單片機

這上面的分,是沒有多大用的。不過我可以發個程序你參考參考,原理可以從程序中看出來。

/************** 數碼管時鍾的設計 *******************
/* MCU: AT89C51
/* MCU-crystal: 12M
/* Version: 01
/* Last Updata: 2007-9-15
/* Author: zhaojun
/* Description:
/* 定時器T0、T1溢出周期為50MS,T0為秒計數用,
/* T1為調整時閃爍用,P1.7為調整按鈕,P0口為字元輸出口,
/* P2口為位選,採用共陽顯示管.
/****************************************************/
#include"reg51.h"
#define uchar unsigned char
#define uint unsigned int
#define scan_data P0 //顯示數據輸出埠
#define bit_select P2 //位選埠
char code dis_7[12]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF,0xBF};
/* 共陽LED段碼表 "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "滅" "-" */
char code scan_con[8]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE};
// 列掃描控制字
char data time_data[8]={0x00,0x00,0x0B,0x00,0x00,0x0B,0x00,0x00};
// 計時單元數據初值 秒個 秒十 - 分個 分十 - 時個 時十
char data dis[12]={0x00,0x00,0x0B,0x00,0x00,0x0B,0x00,0x00,0x0a,0x0a,0x00,0x00};
// 顯示單元數據 X X - X X - X X "滅" "滅" x x
char data con_04s=0x00,con_1s=0x00,con=0x00;
sbit set=P1^4;
bit flag,sign;
void scan();
/***************************************************
* 函 數 名:delay_1ms(),delay_500ms(),delay_1s()
* 功能描述:用以判斷按鍵的長短,從而進入不同的設置
* 函數說明:500ms,1s程序變不精確,因嵌入了顯示程序
* 調用函數:scan()顯示程序
* 全局變數:無
* 輸 入 值:無
* 輸 出 值:無
* 返 回 值:無
* 設 計 者:zhaojun 日期:2007-9-15
* 修 改 者:zhaojun 日期:2007-9-19
* 版 本:1.0
*****************************************************/
// 1ms 延時程序
void delay_1ms(uchar t)
{
uchar i,j;
for(i=0;i<t;i++)
for(j=0;j<120;j++)
;
}
// 500ms延時子程序
void delay_500ms(void)
{
uchar i;
for(i=150;i>0;i--)
scan();
}
// 1s延時子程序
void delay_1s(void)
{
uchar h,i;
for(h=5;h>0;h--)
for(i=40;i>0;i--)
scan();
}
/***************************************************
* 函 數 名:scan()
* 功能描述:顯示時鍾數據
* 函數說明:時鍾顯示格式為:xx-xx-xx
* 調用函數:delay_1ms()
* 全局變數:無
* 輸 入 值:無
* 輸 出 值:無
* 返 回 值:無
* 設 計 者:zhaojun 日期:2007-9-15
* 修 改 者:zhaojun 日期:2007-9-19
* 版 本:1.0
*****************************************************/
// 顯示子程序
void scan(void)
{
uchar k;
for(k=0;k<8;k++)
{
scan_data=dis_7[dis[k]];
bit_select=scan_con[k];
delay_1ms(1);
bit_select=0xFF;
}
}
/***************************************************
* 函 數 名:add_data()
* 功能描述:對時、分數據進行加
* 函數說明:flag=0時判斷分鍾,flag=1時判斷小時
* 調用函數:無
* 全局變數:無
* 輸 入 值:無
* 輸 出 值:無
* 返 回 值:無
* 設 計 者:zhaojun 日期:2007-9-15
* 修 改 者:zhaojun 日期:2007-9-19
* 版 本:1.0
*****************************************************/
void add_data(void)
{
uchar i;
time_data[con]++; //時間數據加1
if(time_data[con]>=10) //個位數據等於10,則個位清零,十位加1
{
time_data[con]=0;time_data[con+1]++;
}
if(flag==0) //如果是分鍾數據,判斷十位是否到6時,清零
{
if(time_data[con+1]>=6)
{
time_data[con]=0;time_data[con+1]=0;
}
}
if(flag==1) //如果是小時數據,判斷是否為24時,清零
{
if(time_data[con+1]==2)
{
if(time_data[con]>=4)
{
time_data[con]=0;time_data[con+1]=0;
}
}
}

for(i=0;i<8;i++) //把調節數據放入顯示區
{
dis[i]=time_data[i];
}
dis[8]=0x0a;dis[9]=0x0a; //寄存器中存入熄滅符
}
/***************************************************
* 函 數 名:keyscan()
* 功能描述:對一個按鍵進行時間掃描
* 函數說明:對按鍵長短進行比較,從而進行不同的設置
* 調用函數:delay_1s(),scan(),delay_500ms()
* 全局變數:sign,flag
* 輸 入 值:無
* 輸 出 值:無
* 返 回 值:無
* 設 計 者:zhaojun 日期:2007-9-15
* 修 改 者:zhaojun 日期:2007-9-19
* 版 本:1.0
*****************************************************/
void keyscan(void)
{
if(set==0) //有鍵按下,判斷按鍵時間
{
delay_1s(); //1s延時程序
if(set==0) //大於1s,進入時間設置
{
ET0=0; TR0=0; //關定時器0
while(set==0) scan(); //等鍵釋放
ET1=1;TR1=1; con=3; //開定時器1,讓調整位閃爍
do
{
while(set!=0) scan(); //等待按鍵
delay_500ms();
if(set!=0) //小於0.5s,進入分鍾設置
{
while(set==0) scan(); //等待按鍵釋放
sign=1;
flag=0;
add_data(); //分鍾加1
scan();
}
else sign=0; //大於0.5s,進入小時設置
}while(sign);
while(set==0)scan(); //等待按鍵釋放
con=6;
do
{
while(set!=0) scan(); //等待按鍵
delay_500ms();
if(set!=0) //小於0.5s,進入小時設置
{
while(set==0) scan(); //等待按鍵釋放
sign=1;
flag=1;
add_data(); //小時加1
scan();
}
else sign=0; //大於0.5s,結束時間設置
}while(sign);
ET1=0;TR1=0; //關定時器1
ET0=1;TR0=1; //開定時器0
}
else //小於1s,進入省電模式
{
ET0=1; TR0=1; //開定時器0
while(set!=0); //等待按鍵
do
{
scan(); //有鍵按下,調顯示程序消抖
}while(set!=0); //是干擾則繼續循環
}
while(set==0) scan(); //等待按鍵釋放
}
else ; //無鍵按下,跳出按鍵掃描程序
}
/***************************************************
* 函 數 名:clearmen()
* 功能描述:對主程序進行初始化設置
* 函數說明:對顯示單元,定時器0、1進行賦初值
* 調用函數:無
* 全局變數:無
* 輸 入 值:無
* 輸 出 值:無
* 返 回 值:無
* 設 計 者:zhaojun 日期:2007-9-15
* 修 改 者:zhaojun 日期:2007-9-19
* 版 本:1.0
*****************************************************/
void clearmen(void)
{
uchar i;
for(i=0;i<8;i++)
{
dis[i]=time_data[i];
}
TH0=0x3C; TL0=0xB0; //定時器0賦初值
TH1=0x3C; TL1=0xB0; //定時器1賦初值
TMOD=0x11;ET0=1;ET1=1;TR0=1;TR1=0;EA=1;//設置定時器工作方式,開定時器
}
/***************************************************
* 函 數 名:main()
* 功能描述:主程序
* 函數說明:不斷進行時間顯示和按鍵掃描
* 調用函數:clearmen(),scan(),keyscan()
* 全局變數:無
* 輸 入 值:無
* 輸 出 值:無
* 返 回 值:無
* 設 計 者:zhaojun 日期:2007-9-15
* 修 改 者:zhaojun 日期:2007-9-19
* 版 本:1.0
*****************************************************/
void main( )
{
clearmen(); //初始化
while(1)
{
scan(); //時間顯示
keyscan(); //按鍵掃描
}
}
/***************************************************
* 函 數 名:time_intt0()
* 功能描述:T0中斷服務程序
* 函數說明:1s計數,並對時間值進行判斷
* 調用函數:無
* 全局變數:無
* 輸 入 值:無
* 輸 出 值:無
* 返 回 值:無
* 設 計 者:zhaojun 日期:2007-9-15
* 修 改 者:zhaojun 日期:2007-9-19
* 版 本:1.0
*****************************************************/
void time_intt0(void) interrupt 1
{
uchar i;
ET0=0;TR0=0; //關T0定時器
TH0=0x3C;TL0=0xB7;//賦初值
TR0=1; //開T0定時器
con_1s++; //1s計數器計數
if(con_1s==20) //1s到,時間加1
{
con_1s=0; //1s計數器值0
time_data[0]++;//秒加1
if(time_data[0]>=10) //秒個位
{
time_data[0]=0;time_data[1]++;
if(time_data[1]>=6) //秒十位
{
time_data[1]=0;time_data[3]++;
if(time_data[3]>=10) //分個位
{
time_data[3]=0;time_data[4]++;
if(time_data[4]>=6) //分十位
{
time_data[4]=0;time_data[6]++;
if(time_data[6]>=10) //時個位
{
time_data[6]=0;time_data[7]++;
}
if(time_data[7]==2) //時十位
{
if(time_data[6]==4) //時個位
{
time_data[6]=0;time_data[7]=0;
}
}
}
}
}
}
for(i=0;i<8;i++) //計時數據放入顯示單元
{
dis[i]=time_data[i];
}
dis[8]=0x0a;dis[9]=0x0a; //放入熄滅符
}
ET0=1; //開總中斷
}
/***************************************************
* 函 數 名:time_intt1()
* 功能描述:T1中斷服務程序
* 函數說明:用以調節時間是的閃爍
* 調用函數:無
* 全局變數:無
* 輸 入 值:無
* 輸 出 值:無
* 返 回 值:無
* 設 計 者:zhaojun 日期:2007-9-15
* 修 改 者:zhaojun 日期:2007-9-19
* 版 本:1.0
*****************************************************/
void time_intt1(void) interrupt 3
{
EA=0; TR1=0; //關閉定時器
TH1=0x3C; TL1=0xB0; //定時器1賦初值
TR1=1; //開定時器1
con_04s++; //0.4s計數器計數
if(con_04s==8) //到0.4s,賦閃爍值
{
con_04s=0; //0.4s計數器值0
dis[10]=dis[con];dis[con]=dis[8];dis[8]=dis[10];
dis[11]=dis[con+1];dis[con+1]=dis[9];dis[9]=dis[11];
}
EA = 1; //開總中斷
}

//********************** 程序結束 ***********************

㈦ 51單片機通常用到哪些電子元件

要看板子的主要功能,一般來說,單片機的最小系統包括單片機主晶元,RAM,ROM/Flash,介面擴展晶元等,還包括一些常用的電阻電容,電源晶元,也需要一些輸入輸出設備,比如按鍵,LED顯示管,燈。

㈧ 8051單片機時鍾電路

8051單片機時鍾電路如下所示:


電容C2、C3對頻率有微調的作用,電容容量的選擇范圍在30pF±10pF。震盪頻率的選擇范圍為1.2-12MHz。時鍾周期=石英振盪器頻率的倒數。


單片機是一種集成電路晶元,是採用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計數器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊矽片上構成的一個小而完善的微型計算機系統,在工業控制領域廣泛應用。

㈨ 以51單片機為核心器件,組成一個電子時鍾系統。

調用定時器中斷,發出一個頻率1s的脈沖,用這個來計數。加上幾個按鍵,按鍵接收到一個電平信號這個數也+1。滿60清零,分鍾那個數+1,分鍾滿60清零,小時加1。在循環中不停的和你設定的定時時間做對比,一旦相同就啟動蜂鳴器提醒。

㈩ 用80C51單片機做一個時鍾需要哪些材料啊元器件、

用KEIL
C51編程,用
PROTEUS模擬。
要用到晶振電路,復位電路,這兩個你可以從書上查到怎麼和單片機連上。
然後就是八段數碼管了,其他還有按鍵,用作調表,還有三極體(9013或者PN222)用作驅動數碼管。具體這些器件怎麼連接去查些資料吧!和簡單的,祝你成功

閱讀全文

與51單片機數碼管時鍾需要什麼元件相關的資料

熱點內容
自己購買雲主伺服器推薦 瀏覽:419
個人所得稅java 瀏覽:759
多餘的伺服器滑道還有什麼用 瀏覽:189
pdf劈開合並 瀏覽:26
不能修改的pdf 瀏覽:748
同城公眾源碼 瀏覽:488
一個伺服器2個埠怎麼映射 瀏覽:297
java字元串ascii碼 瀏覽:78
台灣雲伺服器怎麼租伺服器 瀏覽:475
旅遊手機網站源碼 瀏覽:332
android關聯表 瀏覽:945
安卓導航無聲音怎麼維修 瀏覽:332
app怎麼裝視頻 瀏覽:430
安卓系統下的軟體怎麼移到桌面 瀏覽:96
windows拷貝到linux 瀏覽:772
mdr軟體解壓和別人不一樣 瀏覽:904
單片機串列通信有什麼好處 瀏覽:340
游戲開發程序員書籍 瀏覽:860
pdf中圖片修改 瀏覽:288
匯編編譯後 瀏覽:491