freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于51單片機(jī)的電子萬年歷畢業(yè)論文設(shè)計(jì)-資料下載頁

2025-02-26 07:28本頁面

【導(dǎo)讀】以及投入市場變得非常有必要。本設(shè)計(jì)是基于51單片機(jī)并模擬日常所用的日歷,而51系。列單片機(jī)是各單片機(jī)中最為典型和最有代表性的一種。通過本次設(shè)計(jì),學(xué)習(xí)和鞏固了單片。機(jī)指令編程的相關(guān)知識(shí),熟悉單片機(jī)各部件的組成及其功能。本設(shè)計(jì)將制作一種基于單片機(jī)控制的帶實(shí)時(shí)溫度顯示、具有定時(shí)功能的電子萬年歷。傳統(tǒng)的電子日歷大都體積大,功耗大,顯示不準(zhǔn)確等特點(diǎn)。為了縮小體積,減小功耗,使??啃韵鄬^差,占用計(jì)算機(jī)的資源比較多。本設(shè)計(jì)將采用DS18B20一線制數(shù)字溫度傳感器,最后,溫度和時(shí)間都將通過12864液晶顯示器進(jìn)行顯示。到了設(shè)計(jì)要求的各項(xiàng)功能,各部分工作正常。

  

【正文】 ammad Ali Mazidi,Janice Gillispie,Rolin 8051 Microcontroller and Embedded Systems:Using Assembly and C,Second Education,2021 [10] , Fundamentals of electric Circuits , Tsinghua university press 2021; 1 附錄 電路原理圖: 設(shè)計(jì)主程序 : /* * 萬年歷 */ include include include include include include 2 TIME time, tmp_time。 ALARM alarm。 bit Alarm_flag=0。 bit Clock_flag=0。 bit flag=0。 sbit DQ=P2^6。 //DS18B20 pin //18B20 unsigned char L_18B20,H_18B20,zhengshu,shangwen,xiawen。 unsigned int fg=0,xiaoshu_a。 //18B20 //音樂 uint8 code SONG_TONE[]= { 212,212,190,212,159,169,212,212,190,212,142,159,212,212,106,126,129,169,190,119,119,126,159,142,159,0 }。 uint8 code SONG_LONG[]= { 9,3,12,12,12,24,9,3,12,12,12,24,9,3,12,12,12,12,12,9,3,12,12,12,24,0 }。 // void delay(uint16 n) { while (n)。 } //************************************************************************/ // 函數(shù) : LCD_Delay() // 描述 : 延時(shí) t ms 函數(shù) // 參數(shù) : t // 返回 : 無 // 備注 : t=1 延時(shí)時(shí)間約 1ms // 版本 : 2021/01/01 First version //************************************************************************/ void Delay_nms(unsigned int t) { unsigned int i,j。 for(i=0。it。i++) for(j=0。j113。j++) 。 } ///////////////////////////////////////////////// 3 //播放音樂 void PlayMusic() { uint16 i =0,j,k。 while(SONG_LONG[i]!=0||SONG_TONE[i]!=0) { for(j=0。jSONG_LONG[i]*20。j++) { BEEP = ~BEEP。 for(k=0。kSONG_TONE[i]/3。k++)。 } Delay_nms(10)。 i++。 } BEEP =1。//關(guān)閉蜂鳴器 } ///////////////////////////////////////////////// /*DS18B20*/ void delay_18B20(unsigned int i) { while(i)。 } /*DS18B20 的復(fù)位脈沖 主機(jī)通過拉低單總線至少 480us 以產(chǎn)生復(fù)位脈沖 然后主機(jī)釋放單總線并進(jìn)入接收模式 此時(shí)單總線電平被拉高 DS18B20 檢測 到上升沿后 延時(shí) 15~ 60us,拉低總線 60~ 240us 產(chǎn)生應(yīng)答脈沖 */ void Init_DS18B20(void) { unsigned char x=0。 DQ = 1。 //DQ 復(fù)位 delay_18B20(8)。 //稍做延時(shí) DQ = 0。 //單片機(jī)將 DQ 拉低 delay_18B20(80)。 //精確延時(shí) 大于 480us DQ = 1。 //拉高總線 delay_18B20(14)。 x=DQ。 //稍做延時(shí)后 如果 x=0 則初始化成功 x=1 則初始化失敗 delay_18B20(20)。 } /*寫時(shí)隙 主機(jī)在寫 1 時(shí)隙向 DS18B20 寫入 1,在寫 0 時(shí)隙向 DS18B20 寫入 0 所有寫時(shí)隙至少需要 60us,且在兩次寫時(shí)隙之間至少需要 1us 的恢復(fù)時(shí)間 兩種寫時(shí)隙均以主機(jī)拉低總線開始 產(chǎn)生寫 1 時(shí)隙:主機(jī)拉低總線后,必須在 15us 內(nèi)釋放總線,由上拉電阻拉回至高電平 產(chǎn)生寫 0 時(shí)隙:主機(jī)拉低總線后,必須整個(gè)時(shí)隙保持低電平 */ void WriteOneChar(unsigned char dat) 4 { unsigned char i=0。 for (i=8。 i0。 i) { DQ = 0。 DQ = datamp。0x01。 delay_18B20(5)。 DQ = 1。 dat=1。 } } /*所有讀時(shí)隙至少 60us 且兩次獨(dú)立的讀時(shí)隙之間至少需要 1us 的恢復(fù)時(shí)間 每次讀時(shí)隙由主機(jī)發(fā)起,拉低總線至少 1us。 若傳 1,則保持總線高電平;若發(fā)送 0,則拉低總線 傳 0 時(shí) DS18B20在該時(shí)隙結(jié)束時(shí)釋放總線,再拉回高電平狀態(tài),主機(jī)必須在讀時(shí)隙開始后的 15us內(nèi)釋放總線,并保持采樣總線狀態(tài) */ unsigned char ReadOneChar(void) { unsigned char i=0。 unsigned char dat = 0。 for (i=8。i0。i) { DQ = 0。 // 給脈沖信號(hào) dat=1。 DQ = 1。 // 給脈沖信號(hào) if(DQ) dat|=0x80。 delay_18B20(4)。 } return(dat)。 } void read_18B20(void) { Init_DS18B20()。 WriteOneChar(0xCC)。 // 跳過讀序號(hào)列號(hào)的操作 WriteOneChar(0x44)。 // 啟動(dòng)溫度轉(zhuǎn)換 delay_18B20(100)。 // this message is wery important Init_DS18B20()。 WriteOneChar(0xCC)。 //跳過讀序號(hào)列號(hào)的操作 5 WriteOneChar(0xBE)。 //讀取溫度寄存器等(共可讀 9 個(gè)寄存器) 前兩個(gè)就是溫度 delay_18B20(100)。 L_18B20=ReadOneChar()。 //讀取低八位數(shù)據(jù) H_18B20=ReadOneChar()。 //讀取高八位數(shù)據(jù) zhengshu=L_18B20/16+H_18B20*16。 //整數(shù)部分 xiaoshu_a=(L_18B20amp。0x0f)*10/16。 //小數(shù)第一位 } //DS18B20 ///////////////////////////////////////////////// /* * 按鍵掃描 */ int8 scan_key(void) { int8 val=1。 if (KeyIn1 == 0) { val = 1。 while (KeyIn1 == 0)。 } else if (KeyIn2 == 0) { val = 2。 while (KeyIn2 == 0)。 } else if (KeyIn3 == 0) { val = 3。 while (KeyIn3 == 0)。 } //if (val 0) //buzzer_sound()。 return val。 } /* * 主界面框架 */ void main_frame(void) 6 { play32(80, 2, 10)。 play32(32, 2, 10)。 play8(16, 0, S_xie)。 play8(40, 0, S_xie)。 // play8(96, 0, RH)。 // play8(120, 0, S_percent)。 play8(120, 6, S_du)。 } /* * 主界面 */ void main_show(bit refresh) { uint8 lunar[2]。 if (refresh) read_time((uint8 *)amp。time)。 // 時(shí)間 if (refresh || ( != )) // 秒更新 { = 。 // 溫濕度 play8_num(104, 6,zhengshu)。 //溫度顯示 play32_num(96, 2, )。 } if (refresh) main_frame()。 if (refresh || ( != )) // 分更新 { if (!refresh) flag = 0。 = 。 play32_num(48, 2, )。 } if (refresh || ( != )) // 時(shí)更新 { if ((!refresh)amp。amp。(Clock_flag)) alarm_sound()。 = 。 play32_num(0, 2, )。 7 } if (refresh || ( != )) // 日更新 { = 。 play8_num(48, 0, )。 // 農(nóng)歷 turn_lunar_calendar(amp。time, lunar)。 play_lunar_calendar(0, 6, lunar[0], lunar[1])。 } if (refresh || ( != )) // 周更新 { = 。 play_week(68, 0, )。 } if (refresh || ( != )) // 月更新 { = 。 play8_num(24, 0, )。 // 農(nóng)歷 turn_lunar_calendar(amp。time, lunar)。 play_lunar_calendar(0, 6, lunar[0], lunar[1])。 } if (refresh || ( != )) // 年更新 { = 。 play8_num(0, 0, )。 // 農(nóng)歷 turn_lunar_calendar(amp。time, lunar)。 play_lunar_calendar(0, 6, lunar[0], lunar[1])。 } } /* * 主機(jī)界面設(shè)置 */ void main_set(void) { int8 key_val, state=1。 play32_num(96, 2|0x80, )。 8 while (1) { key_val = scan_key()。 if (key_val == 1) // 設(shè)置 { if (state = 7) state = 0。 else state++。 set_time((uint8 *)amp。time)。 main_show(1)。 switch (state) { case 0: set_time((uint8 *)amp。time)。 break。 case 1: play32_num(96, 2|0x80, )。 break。 case 2: play32_num(48, 2|0x80, )。
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1