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

正文內(nèi)容

帶溫度顯示的電子鬧鐘的設計畢業(yè)論文(存儲版)

2025-07-27 15:04上一頁面

下一頁面
  

【正文】 鬧鈴子程序設計 鬧鈴子程序設計 29第五章 系統(tǒng)調(diào)試 30 硬件調(diào)試 31 單片機基礎電路調(diào)試 31 顯示電路調(diào)試 32 DS1302電路調(diào)試 32 按鍵電路調(diào)試 33 軟件調(diào)試 33 環(huán)境溫度采集子程序調(diào)試 34 鍵盤子程序調(diào)試 34結 論 35結 論 28參考文獻 29致 謝 30致 謝 36參考文獻 37附錄A 帶溫度顯示的電子鬧鐘元器件一覽表 31附錄A 帶溫度顯示的電子鬧鐘元器件一覽表 38附錄B 帶溫度顯示的電子鬧鐘硬件電路圖 3239附錄C 帶溫度顯示的電子鬧鐘 程序 3340。所以說能隨時準確的知道時間并利用時間,是我們生活和工作中必不可少的。另外,溫度實時顯示系統(tǒng)應用同樣越來越廣泛,比如空調(diào)遙控器上當前室溫的顯示、熱水器溫度的顯示等等。交流供電為主,直流電源為備用電源,并能自動切換。但是受芯片引腳數(shù)量和功能限制,不容易實現(xiàn)電子時鐘的多功能性。利用單片機的智能性,可方便地實現(xiàn)具有智能的電子鐘設計。擁有15條可編程I/O引腳,2個16位定時器/計數(shù)器,6個中斷源,可編程串行UART通道,并能直接驅(qū)動LED輸出。在空閑方式中,CPU停止工作,而RAM、定時器/計數(shù)器、串行口和中斷系統(tǒng)都繼續(xù)工作。故而從性價比和貨源上考慮,本設計采用實時時鐘日歷芯片DS1302。 DS1302芯片引腳圖。2. BIT 6:如果為0,則表示存取日歷時鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);3. BIT 5至BIT 1(A4~A0):用A4~A0表示,定義片內(nèi)寄存器和RAM的地址??刂谱挚偸菑淖畹臀婚_始輸出。不管是否寫了全部31字節(jié),所寫的每一個字節(jié)都將傳送至RAM。多字節(jié)操作方式與其類似,只是后面跟的字節(jié)數(shù)不止一個。當該位置為1時,時鐘振蕩器停止,DS1302處于低功耗狀態(tài);當該位置為0時,時鐘開始運行。寄存器的BIT4~BIT7(TCS)決定是否具備充電性能:僅在編碼為1010的條件下才具備充電性能,其他編碼組合不允許充電。寄存器和RAM的操作通過命令字節(jié)的BIT6加以區(qū)別。3VDD可選擇的VDD引腳;當工作于寄生電源時,此引腳必須接地。 DS18B20溫度值格式表,如果配置為低分辨率,則其中無意義位為“0”。另外,本設計要求該電子鐘能夠采集環(huán)境溫度,所以還需要溫度采集芯片。當+5V電源恢復供電,LED依舊顯示當前時間,而不會因為斷電使系統(tǒng)復位到初始化時間,避免了重新校時的麻煩。作為數(shù)據(jù)的讀入和寫出口。但設計上如果處理不當,易造成亮度低,閃爍問題。按照鍵盤與CPU的連接方式可分為獨立式鍵盤和矩陣式鍵盤。K2鍵:該鍵為帶自鎖按鍵,在正常顯示時間狀態(tài)下,每次將按鍵按下,LED數(shù)碼管將顯示環(huán)境溫度;再次按下,按鍵彈出,重新顯示時間。 鬧鈴電路設計鬧鈴音樂可以直接采用蜂鳴器鬧鈴,如當前時刻與鬧鈴時間相同,單片機向蜂鳴器送出高低電平,蜂鳴器發(fā)聲高電平時,蜂鳴器會發(fā)聲嗎??。 主程序設計第一次上電,系統(tǒng)先進行初始化, LED顯示初始時間“14:28:00”,并開始走時。在進行寫操作時,需要先解除寫保護寄存器的“禁止”狀態(tài)。單線器件DS18B20檢測到該上升沿后,延時15~60μs,通過拉低總線60~240μs來產(chǎn)生應答脈沖。如果總線上接多個DS18B20,并且在此命令后執(zhí)行讀命令,將會發(fā)生數(shù)據(jù)沖突。Copy Scratchpad(復制暫存器)48H 此命令將暫存器中的內(nèi)容復制進E2RAM,以便將溫度告警觸發(fā)字節(jié)存入非易失內(nèi)存。在單線DQ上,存在復位脈沖、應答脈沖、寫“0”、寫“1”、讀“0”和讀“1”幾種信號類型。對于主機產(chǎn)生寫“1”時隙的情況,數(shù)據(jù)線必須先被拉低,然后釋放,在寫時隙開始后的15μs,允許DQ線拉至高電平。 環(huán)境溫度采集子程序流程圖所有的讀寫時隙至少需要60μs,且每兩個獨立的時隙之間至少需要1μs的恢復時間。為了方便實現(xiàn)按鍵顯示,程序中調(diào)用的都是各個標志位,通過判斷標志位的“真”、“假”來決定顯示的內(nèi)容。如果沒有按鍵按下,則程序掃描到Key=FFH,將鍵值Key清零,返回主程序。該軟件提供了一個集成開發(fā)環(huán)境uVision,它包括C編輯器、宏編輯器、連接器、庫管理和一個功能強大的仿真調(diào)試器。為了正確顯示時間,接下來還要確定顯示電路能否正常工作。3. 如果使用P0口做I/O口,要接上拉電阻。j0。n8。、B腳。3. 。觀察32分鐘之后,數(shù)碼管顯示“150000”,證明DS1302電路正確。將這三部分調(diào)試成功,那么整個設計的軟件部分也就基本完成了。源程序見附錄C。由于自己能力有限,匯編語言學的不是很好,故未采用匯編語言編寫程序。 //74LS164的A;sbit CLK=P1^1。 //定義確認/;sbit Alarm=P2^1。void dis()。void ds1302_init()。atime。 //初始化鬧鈴管腳;while(1) //循環(huán); { key_task()。void wbyte_3w(uchar)。 uchar min=25。 //14:28 /*定義寄存器地址*/ define READ_SEC_ADD 0x81 //讀秒寄存器define READ_MIN_ADD 0x83 //讀分寄存器define READ_HOUR_ADD 0x85 //讀時寄存器define READ_DATE_ADD 0x87 //讀日寄存器define READ_MONTH_ADD 0x89 //讀月寄存器define READ_DOW_ADD 0x8B //讀周寄存器define READ_YEAR_ADD 0x8D //年寄存器define WRITE_SEC_ADD 0x80 //寫秒寄存器define WRITE_MIN_ADD 0x82 //寫分寄存器define WRITE_HOUR_ADD 0x84 //寫時寄存器define WRITE_DATE_ADD 0x86 //寫日寄存器define WRITE_MONTH_ADD 0x88 //寫月寄存器define WRITE_DOW_ADD 0x8A //寫周寄存器define WRITE_YEAR_ADD 0x8C //寫年寄存器define CLOCK_BURST_ADD 0xBE //時鐘多字節(jié)傳送模式extern void write_clock_burst()。void write_clock_burst()。uchar code bcd2hex[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0, /* 0009 */ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 0, 0, 0, 0, 0, /* 1019 */ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 0, 0, 0, 0, 0, 0, /* 2029 */ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, 0, 0, 0, 0, 0, /* 3039 */ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 0, 0, 0, 0, 0, 0, /* 4049 */ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 0, 0, 0, 0, 0, 0, /* 5059 */ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 0, 0, 0, 0, 0, 0, /* 6069 */ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 0, 0, 0, 0, 0, 0, /* 7079 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 0, 0, 0, 0, 0, 0, /* 8089 */ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 0, 0, 0, 0, 0, 0, /* 9099 */}。 if(W_Byte amp。 R_Byte = 0x00。 R_Byte = 1。 //復位 wbyte_3w(CLOCK_BURST_ADD)。 wbyte_3w(0)。 }void ds1302_init() /* initialize time amp。 reset_3w()。 wbyte_3w(hex2bcd[day_of_week])。 reset_3w()。 TmpByte = (uchar)IO。 uchar R_Byte。 i 8。 //定義管腳RSTuchar sec,min,hour,date,month,year。void write_byte(uchar Clock_Add,uchar Clock_Data)。 uchar clk_hour=14。void ds1302_task()。 //延時; beeper=1。 }void main() //主程序;{ ds1302_init()。void delay(unsigned int time) //10ms延時{ unsigned char a,b,c。uchar read_byte(uchar)。 extern bit alarm_flag。 //;sbit DOWN=P2^3。 感謝所有關心、支持、幫助過我的良師益友。所以這類時鐘有多種實現(xiàn)方案,能夠?qū)崿F(xiàn)的功能也很多。例如:If(K7==0){alarm_flag= true。 軟件調(diào)試在硬件調(diào)試完畢的基礎上,需要進一步完善程序,也就是進入軟件調(diào)試階段。本人編寫了一段汶川特大地震發(fā)生的時間顯示程序,設置初始時間為14:28:00,初始日期為2008年5月12日。本設計定義為:,I/。2. 因為是移位顯示,所以需要注意前一位74LS164的QH腳要與下一位74LS164的A、B腳連接。 while(1) { P1=0xFFH。i0。2. 單片機電源要連接正確,并且保證AT89C51的31號引腳接高電平。在調(diào)試過程中,首先必須明確調(diào)試順序。硬件調(diào)試比較費時,需要細心和耐心,也需要熟練掌握電路原理。89C51單片機完全有能力完成以上工作,所以采用隨機掃描鍵盤方式,系統(tǒng)也能夠正常運行。只要將需要顯示的數(shù)字編輯成對應的BCD碼,逐位送入74LS164的A、B串行輸入端,數(shù)碼管將正常顯示。在讀時隙結束時,DQ引腳將通過外部上拉電阻拉回至高電平。所有寫時隙必須在60μs以上(即由高拉低后持續(xù)60μs以上),各個寫時隙之間必須保證最短1μs的恢復時間。Read Power Supply(讀供電方式)B4H 主機發(fā)起此命令后的每個讀數(shù)據(jù)時隙內(nèi),DS18B20發(fā)信號通知它的供電方式:0為寄生電源方式,1為外部供電方式。Rrad Scratchpad(讀暫存器)BEH 此命令讀取暫存器內(nèi)容,從字節(jié)0一直讀取到字節(jié)8。此命令可用于單掛接或者多掛接總線。初始化過程如下:主機通過拉低單線480μs以上,產(chǎn)生復位脈沖,然后釋放該線,進入RX接收模式。 實時時鐘日歷子程序流程圖DS1302每次上電時自動處于暫停狀態(tài),必須把秒寄存器的位7置位0,時鐘才開始計時。當響鈴標志位為“1”時,使蜂鳴器U11發(fā)出聲音。K6鍵:該鍵為自動復位鍵,在校對狀態(tài)下,按下該鍵,從校對狀態(tài)返回時間顯示狀態(tài);在響鈴狀態(tài)下,按下該鍵,鬧鈴進入貪睡狀態(tài)。 鍵盤電路。74LS164是8位移位寄存器,應用該芯片驅(qū)動LED做顯示部分,其優(yōu)點在于連線簡單,節(jié)省單片機I/O口,軟件編程容易。故本設計中應用7位8段共陰LED實現(xiàn)顯示部分。特別需要注意X1和X2兩端連接的晶振Y1。而+3V電源僅作為DS1302的備用電源。特別需要注意的是,這決定了指令的運行時間,在軟件設計中將根據(jù)此指令運行時間編寫各種延時程序。 DS18B20配置寄存器結構表BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0TMR1R011111MSB LSB,出廠時R0、R1被置為“1”,默認設置是12位分辨率,用
點擊復制文檔內(nèi)容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1