藍橋杯微控制器第8屆 電子時鐘

2021-10-25 15:49:14 字數 3853 閱讀 9670

)//2毫秒@11.0592mhz

void

distime

(uchar i,

int time_dis)

else

}void

display()

else}

p2 =

0xc0

; p0 = semg_bit[i]

; p2 =

0x00

; p0 =

0xff;

i++; time_dis++;if

(i ==8)

i =0;

if(time_dis ==

500)

time_dis =0;

}void

led()if

(j ==3)

else

state_led = s0;

}break

;case s1:

else}if

(!alarm || time_led ==

2500)}

break

;default

: state_led = s0;

break;}

p2 =

0x00

; p0 =

0xff;}

void

fun(

) interrupt 1

}else}}

char

keyscan()

void

menu

(char keyvalue)

else

if(keyvalue ==7)

else

if(keyvalue ==6)

}break

;case s1:

else

}else

if(keyvalue ==5)

else

}switch

(state_set)}}

break

;case s1:}}

break

;default

: state_set = s0;

break;}

}break

;default

: state = s0;

break;}

}void

main()

}

/*

程式說明: ds1302驅動程式

軟體環境: keil uvision 4.10

硬體環境: ct107微控制器綜合實訓平台 8051,12mhz

日 期: 2011-8-9

*/#include

#include

#define uchar unsigned char

sbit sck=p1^

7;

sbit sda=p2^

3;

sbit rst = p1^3;

// ds1302復位

void

write_ds1302

(unsigned

char temp)

}void

write_ds1302_byte

(unsigned

char address,

unsigned

char dat )

unsigned

char read_ds1302_byte (

unsigned

char address )

rst=0;

_nop_()

; sck=0;

_nop_()

; sck=1;

_nop_()

; sda=0;

_nop_()

; sda=1;

_nop_()

;return

(temp);}

void

write_ds1302_main

(char

*time)

write_ds1302_byte

(0x8e

,0x80);

}void

write_ds1302_interrupt

(char

*time)

write_ds1302_byte

(0x8e

,0x80);

}char

*read_ds1302()

write_ds1302_byte

(0x8e

,0x80);

return time;

}

/*

程式說明: 單匯流排驅動程式

軟體環境: keil uvision 4.10

硬體環境: ct107微控制器綜合實訓平台(外部晶振12mhz) stc89c52rc微控制器

日 期: 2011-8-9

*/#include

"reg52.h"

#define uchar unsigned char

sbit dq = p1^4;

//單匯流排介面

//單匯流排延時函式

void

delay_onewire

(unsigned

int t)

//stc89c52rc

}//通過單匯流排向ds18b20寫乙個位元組

void

write_ds18b20

(unsigned

char dat)

delay_onewire(5

);}//從ds18b20讀取乙個位元組

unsigned

char

read_ds18b20

(void

)delay_onewire(5

);}return dat;

}//ds18b20裝置初始化

bit init_ds18b20

(void

)uchar get_tempr()

51微控制器實戰之電子時鐘

源 工作模式下,51微控制器從ds1302中獲取資料,再把資料傳遞到lcd來顯示時間和日期 設定模式下,通過k2和k3來改變資料 計時模式下,通過k2來開啟或關閉定時器1,來實現開始 暫停計時,通過k3來計時初始化 鬧鐘響時,開啟定時器1,通過天空之城樂譜來控制蜂鳴器的音調。十進位制數 8421碼 ...

51微控制器電子時鐘

include include define uint unsigned int define uchar unsigned char define key menu 0x01 define key up 0x02 define key down 0x03 define key clk 0x04 d...

關於51微控制器電子時鐘精度的問題

前幾天用stc89c52微控制器製作了乙個電子時鐘,經過一段時間的實驗,發現時間精度存在誤差,一分鐘慢4秒左右。這可了不得,十分鐘就要慢40秒,一天下來不得慢半96分鐘!這個微控制器晶振頻率為11.0592mhz,和大部分時鐘的晶振頻率相同,應該沒有問題。後天考慮到源 在定時器中斷函式裡 void ...