導航:首頁 > 操作系統 > 帶時鍾的單片機

帶時鍾的單片機

發布時間:2023-08-01 00:22:39

⑴ 怎樣利用51單片機實現時鍾功能程序

#define uchar unsigned char // (先定義一下方便使用)

#define uint unsigned int

#define ulong unsigned long

#include <reg52.h> //包括一個52標准內核的頭文件

uchar code zixing[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

uchar code ziwei[]={0x10,0x20,0x40,0x80};

uchar *h,*m;

uchar hour=12,min=0,sec=0,h_ding,m_ding,count=0,ms_50,ms_10,miaobiao_sec;

sbit dp=P0^7;

sbit k1=P3^2;

sbit k2=P3^3;

sbit k3=P3^4;

sbit sound=P2^3;

sfr ZIXING=0x80; //p0口輸出字形

sfr ZIWEI=0xa0; //P2口輸出字位

typedef enum //枚舉類型:4種狀態//

{

CLOCK,

SET_RING1,

SET_RING2,

MIAOBIAO_RUN,

}STATE;

STATE status;

typedef struct //定時時間的數據結構//

{

uchar hour;

uchar min;

}DINGSHI_TIME;

DINGSHI_TIME dingshi_time[2];

#define NO_KEY -1 //定義一下方便使用

#define KEY_1 1

#define KEY_2 2

#define KEY_3 3

bit show_on_flag;

//#######定時器T0中斷服務程序########//

Timer0() interrupt 1

{

TH0=0x3c;TL0=0xb4; //50ms

ms_50++;

if(ms_50==20) {sec++;ms_50=0;}

if(sec==60) {sec=0;min++;}

if(min==60) {min=0;hour++;}

if(hour==24) {hour=0;}

}

//#######定時器T1中斷服務程序########//

Timer1() interrupt 3

{

TH1=0xd8;TL1=0xf4; //10ms

ms_10++;

if(ms_10==100)

{

miaobiao_sec++;

ms_10=0;

}

if(miaobiao_sec==60)

miaobiao_sec=0;

}

//##############數碼管顯示#####################//

show(uchar time_high,uchar time_low)

{

uchar m;

uint n,k;

k=time_high*1000/10+time_low;

for(m=0;m<4;m++)

{

ZIXING=zixing[k%10];

if(ms_50<10)

dp=0;

ZIWEI=~ziwei[m];

for(n=0;n<500;n++);

ZIXING=0xff;

for(n=0;n<100;n++);

k=k/10;

}

}

//顯示 on 定時編號//

show_on(uchar id) //id:定時編號//

{

uchar m;

uint n;

for(m=0;m<2;m++)

{

ZIXING=zixing[id%10];

dp=0;

ZIWEI=~ziwei[m];

for(n=0;n<500;n++);

ZIXING=0xff;

for(n=0;n<80;n++);

id=id/10;

}

ZIXING=0xc8; //字母n//

ZIWEI=~ziwei[2];

for(n=0;n<500;n++);

ZIXING=0xff;

for(n=0;n<200;n++);

ZIXING=0xc0; //字母0//

ZIWEI=~ziwei[3];

for(n=0;n<500;n++);

ZIXING=0xff;

for(n=0;n<200;n++);

}

/*************啟動秒錶***************/

void run_miaobiao()

{

ms_10=0;

miaobiao_sec=0;

TH1=0xd8; //標準是0xd8e4

TL1=0xf4;

// TR1=1; //啟動定時器1

}

⑵ 單片機中時鍾、晶振分別是起什麼作用的

晶振用來提供時鍾頻率,時鍾頻率決定了單片機執行的快慢。沒有晶振,就沒有時鍾周期,沒有時鍾周期,就無法執行程序代碼,單片機就無法工作。

單片機工作時,是一條一條地從RoM中取指令,然後一步一步地執行。單片機訪問一次存儲器的時間,稱之為一個機器周期,這是一個時間基準。一個機器周期包括12個時鍾周期。如果一個單片機選擇了12MHz晶振,它的時鍾周期是1/12us, 它的一個機器周期是12X (1/12)us,也就是1us。


(2)帶時鍾的單片機擴展閱讀

每個單片機系統里都有晶振,全程是叫晶體震盪器,在單片機系統里晶振的作用非常大,他結合單片機內部的電路,產生單片機所必須的時鍾頻率,單片機的一切指令的執行都是建立在這個基礎上的,晶振的提供的時鍾頻率越高,那單片機的運行速度也就越快。

晶振通常與鎖相環電路配合使用,以提供系統所需的時鍾頻率。如果不同子系統需要不同頻率的時鍾信號,可以用與同一個晶振相連的不同鎖相環來提供。

⑶ 關於單片機內部時鍾和外部時鍾的問題

答:當單片機有內部時鍾的時候。其工作的時候是可以用內部時鍾和自己接外部時鍾。
這個是沒有硬性要求的,但是一般都用外部時鍾,因為外部時鍾比較穩定可靠。但是如果你想電路簡單也可用內部時鍾,不接外部時鍾。這個也是可以的。使用起來沒有什麼差別。

閱讀全文

與帶時鍾的單片機相關的資料

熱點內容
stc模擬器編程器 瀏覽:155
伺服器銷售怎麼做好 瀏覽:87
什麼是com編程 瀏覽:848
演算法工程師最新資訊 瀏覽:608
郵政銀行卡怎麼在app簽約綁定 瀏覽:49
壓縮卷一直轉 瀏覽:976
初一編程小程序怎麼做 瀏覽:826
bt軟體文件夾名稱 瀏覽:157
unix創建命令 瀏覽:622
devc是多少位的編譯器 瀏覽:980
怎麼樣能快點升安卓系統 瀏覽:976
奇跡mu用什麼伺服器 瀏覽:605
如何讓軟體在多個安卓系統上運行 瀏覽:574
java判斷半形 瀏覽:880
java判斷正負 瀏覽:320
刷頭條程序員的日常 瀏覽:103
吉林程序員吐槽 瀏覽:243
單片機溫度范圍 瀏覽:420
程序員為什麼素質低 瀏覽:898
可愛的程序員小姐姐 瀏覽:147