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

正文內(nèi)容

基于單片機(jī)的電子萬(wàn)年歷的設(shè)計(jì)—畢業(yè)設(shè)計(jì)論文(完整版)

  

【正文】 寄存器 8AH 8BH 0107 0 0 0 0 0 DAY 年份寄存器 8CH 8DH 0099 10YEAR YEAR DS1302 內(nèi)部的 RAM 分為兩類,一類是單個(gè) RAM 單元,共 31個(gè),每個(gè)單元為一個(gè) 8位的字節(jié),其命令控制字為 COH~FDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;再一類為突發(fā)方式下的 RAM,此方式下可一次性讀寫所有的 RAM的 31個(gè)字節(jié),命令控制字為 FEH(寫)、FFH(讀)。 SCLK 為時(shí)鐘輸入端。 X1 和 X2 是振蕩源,外接 晶振。 DS1302 工作時(shí)功耗很低,保持?jǐn)?shù)據(jù)和時(shí)鐘信息時(shí),功耗小于 1mW。各種型號(hào)的芯片,其引腳的第一功能信號(hào)是相同的,所不同的只在引腳的第二功能信號(hào)。如何解決這個(gè)矛盾,兼職是唯一可行的辦法,即給一些信號(hào)引腳賦以雙重功能。當(dāng)輸入的復(fù)位信號(hào)延續(xù) 2 個(gè)機(jī)器周期以上高電平即為有效,用以完成單片機(jī)的復(fù)位初始化操作。 ALE:地址鎖存控制信號(hào)。時(shí)鐘 CPU 時(shí)鐘電路 ROM 定時(shí) /計(jì)數(shù)器 RAM 中斷系統(tǒng) 并行接口 串行接口 P3 TxD x P RxD INT0 INT1 P2 P1 P0 T1 T0 第 8 頁(yè) 共 40 頁(yè) 電路為單片機(jī)產(chǎn)生時(shí)鐘脈沖序列。 定時(shí)器 /計(jì)數(shù)器: AT89C52 共有 2個(gè) 16 位的定時(shí)器 /計(jì)數(shù)器,以實(shí)現(xiàn)定時(shí)或計(jì)數(shù)功能,并以其定時(shí)或計(jì)數(shù)結(jié)果對(duì)計(jì)算機(jī)進(jìn)行控制。 ATMEL 公司生產(chǎn)的 AT89C52 單片機(jī)采用高性能的靜態(tài) 80C51 設(shè)計(jì),并采用先進(jìn)工藝制造,還帶有非易失性 Flash 程序存儲(chǔ)器。硬件設(shè)計(jì)總體框圖如圖 31所示。 方案比較:選用 DS18B20 數(shù)字式溫度傳感器,與單片機(jī)連接簡(jiǎn) 單,成本低,還具有測(cè)量精度高、測(cè)量范圍廣等優(yōu)點(diǎn)。 方案比較:因?yàn)楸驹O(shè)計(jì)鍵盤部分簡(jiǎn)單需要的按鍵少,故采用獨(dú)立式按鍵選擇方案二。而本設(shè)計(jì)顯示內(nèi)容量大,采用 LCD 液晶顯示畫面效果好,直觀明了,故選用方案二。選用方案一作為主方案,方案二作為備用方案。 本文介紹了基于 AT89C52 單片機(jī)設(shè)計(jì)的電子萬(wàn)年歷。由于 該 系統(tǒng)所用元器件較少,單片機(jī)所被占用的 I/O口不多,因此系統(tǒng)具有 較強(qiáng) 的可擴(kuò)展性。要求該系統(tǒng)具有如下特點(diǎn)和功能: 、月、日和時(shí)、分、秒; ,可調(diào)整公歷年、月、日和時(shí)、分、秒; ,當(dāng)市電停電時(shí),不但萬(wàn)年歷所有數(shù)據(jù)不丟失,且萬(wàn)年歷照常運(yùn)行(有后備電池供電,可供數(shù)年); 2099年。選用的是單片機(jī) AT89C52 來(lái)實(shí)現(xiàn)電子萬(wàn)年歷的功能。第一次是擺和擺輪游絲的發(fā)明,相對(duì)穩(wěn)定的機(jī)械振蕩頻率源使鐘表的走時(shí)差從分級(jí)縮小到秒級(jí),代表性的產(chǎn)品就是帶有擺或擺輪游絲的機(jī)械鐘或表。它是一種高性能、低功耗的 8位 CMOS 微處理芯片,市場(chǎng)應(yīng)用最多。 方案 二 :使用液晶顯示屏顯示 時(shí)間數(shù)字 。 方案二:使用矩陣式鍵盤。此設(shè)計(jì)方案需用 A/D 轉(zhuǎn)換電路,增加硬件成本而且熱敏電阻的感溫特性曲線并不是嚴(yán)格線性的,會(huì)產(chǎn)生較大的測(cè)量誤差。數(shù)字式溫度傳感器 DS18B20,測(cè)量準(zhǔn)確,誤差小范圍廣。 鍵盤模塊:對(duì)系統(tǒng)進(jìn)行操作。 內(nèi)部數(shù)據(jù)存儲(chǔ)器(內(nèi)部 RAM): AT89C52 芯片中共有 256個(gè) RAM 單元,但其中后 128單元被專用寄存器占用,能作為寄存器供用戶使用的只是前 128 單元,用于存放可讀寫的數(shù)據(jù)。 AT89C52共有 5 個(gè)中斷源,即外中斷 2 個(gè),定時(shí) /計(jì)數(shù)中斷 2 個(gè),串行中斷 1 個(gè)。 ~ :只能做一般 I/O 口。 EA :訪問(wèn)程序存儲(chǔ)控制信號(hào)。 以上是 AT89C52 單片機(jī)芯片 40條引腳的定義及簡(jiǎn)單功能說(shuō)明。 AT89C52 單片機(jī)的備用電源也是以第二功能的方式由 9腳( RST/VPD)引入的。實(shí)時(shí)時(shí)鐘 /日歷電路提供秒、分、時(shí)、日、星期、月、年的信息,每個(gè)月的天數(shù)和閏年的天數(shù)可自動(dòng)調(diào)整,時(shí)鐘操作可通過(guò) AM/PM標(biāo)志位決定采用 24 或 12 小時(shí)時(shí)間格式。 DS1302 由 Vcc1 或 Vcc2 兩者中的較大者供電。上電運(yùn)行時(shí),在 Vcc 之前, RST 必須保持低電電 源 控 制 輸入移位 寄存器 振蕩器與分頻器 實(shí)時(shí)時(shí)鐘 命令與控制 邏輯 31*8RAM Vcc1 Vcc2 GND I/O SCLK RST X1 X2 第 12 頁(yè) 共 40 頁(yè) 平。此外, DS1302 還有年份寄存器、控制寄存器、充電寄存器、時(shí)鐘突發(fā)寄存器及與 RAM 相關(guān)的寄存器等。具體的讀寫時(shí)序參考圖 35,但是請(qǐng)注意,無(wú)論是哪種同步通訊類型的串行接口,都是對(duì)時(shí)鐘信號(hào)敏感的,而且一般數(shù)據(jù) 寫入有效是在上升沿,讀出有效是在下降沿 ( DS1302 正是如此的,但是在芯片手冊(cè)里沒(méi)有明確說(shuō)明),如果不是特別確定, 則把程序設(shè)計(jì)成這樣:平時(shí) SCLK保持低電平,在時(shí)鐘變動(dòng)前設(shè)置數(shù)據(jù),在時(shí)鐘變動(dòng)后讀取數(shù)據(jù), 即數(shù)據(jù)操作總是在 SCLK保持為低電平的時(shí)候,相鄰的操作之間間隔有一個(gè)上升沿和一 個(gè)下降沿。減法計(jì)數(shù)器 1 對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行減法計(jì)數(shù),當(dāng)減法計(jì)數(shù)器 1的預(yù)置值減到 0時(shí)溫度寄存器的值將加 1,減法計(jì)數(shù)器 1 的預(yù)置將重新被裝入,減法計(jì)數(shù)器 1重新開(kāi)始對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如此循環(huán)直到減法計(jì)數(shù)器 2計(jì)數(shù)到 0時(shí),停止溫度寄存器值的累加,此時(shí)溫度寄存器中的數(shù)值即為所測(cè)溫度。計(jì)數(shù)器 1的預(yù)置數(shù)也就是在給定溫度處使溫度寄存器寄存值增加 1℃ 計(jì)數(shù)器所需要的計(jì)數(shù)個(gè)數(shù)。 DS18B20 內(nèi)部的低溫度系數(shù)振蕩器能產(chǎn)生穩(wěn)定的頻率信號(hào);同樣的, 高溫度系數(shù)振蕩器則將被測(cè)溫度轉(zhuǎn)換成頻率信號(hào)。存在脈沖讓總 線控制器知道 DS18B20 在總線上且已準(zhǔn)備好操作。所有與 64 位 ROM 序列不符的從片將等待復(fù)位脈沖。告警的條件定義為溫度高于 TH 或低于 TL。如果不想讀完所有字節(jié),控制器可以在任何時(shí)間發(fā)出復(fù)位命令來(lái)中止讀取。 Recall E2(重新調(diào)整 E2) [B8h] 這條命令把貯存在 E2 中溫度觸發(fā)器的值重新調(diào)至?xí)捍娲鎯?chǔ)器。 溫度轉(zhuǎn)換計(jì)算方法舉例: 第 20 頁(yè) 共 40 頁(yè) 例如當(dāng) DS18B20 采集到 +125℃ 的實(shí)際溫度后,輸出為 07D0H,則: 實(shí)際溫度 =07D0H =2021 =1250C。 決定選用 4個(gè)按鈕的小鍵盤, 四個(gè)按鈕的功能分別為:up鍵,具有向上和加 1 的功能。 LGM12641BS1R 的指令可帶一個(gè)、兩個(gè)參數(shù),或無(wú)參數(shù)。 R/W:讀寫控制線, R/W=0:寫操作, R/W=1:讀操作。軟件系統(tǒng)框圖如下: 圖 41 軟件系統(tǒng)框圖 溫度采集軟件 因?yàn)?DS18B20溫度傳感器在測(cè)溫時(shí)是通過(guò)累加來(lái)記錄溫度的,為了溫度傳感器正常穩(wěn)定的運(yùn)行,需要加延時(shí)子程序。 // 稍做延時(shí) dq = 0。 ROM 操作命令 : Read T(讀 區(qū)溫度寄存器 ) [BEh], Skip ROM( 跳過(guò) ROM ) [CCh], Convert T(溫度變換) [44h]。由此可定義位變量: sbit ACC0 = ACC ^ 0。 //時(shí) Clock_Write_Time( day_address, * clock_time )。 //讀分 clock_time ++。第三字節(jié) BIT7 表示農(nóng)歷第 13 個(gè)月大小。通過(guò)計(jì)算可取得公歷日和春節(jié)距離元旦的天數(shù),以計(jì)算 2021 年 10 月 16 號(hào)為例,對(duì)應(yīng)數(shù)據(jù)為( 0, 0x4,0x10,0x16)其中第一位數(shù) 0 值 21 世紀(jì),如果是 1 為 19 世紀(jì)。 //春節(jié)在 1月 第 28 頁(yè) 共 40 頁(yè) temp3 = temp2 + 31 – 1 //春節(jié)在 2月 //計(jì)算陽(yáng)歷月離當(dāng)年元旦的天數(shù) day_number = day_code1[ month 1 ] + day 1。amp。 //小月 29天 //閏月所在的月分 temp2 = year_code[ calendar_address ] amp。 } //農(nóng)歷年等于公歷年減 1,定位前一年 while( temp3 temp1 ) //temp3 陽(yáng)歷日離春節(jié)的天數(shù) if( flag_year == 0 ) //如果不是閏年 month =1。 //開(kāi)啟顯示器 Lcd_Clear() 。 例如年字的字型碼為: /* 文字 : 年 */ /* 宋體 12。 //顯示 小時(shí) 其中時(shí)間數(shù)組全為 BCD碼。 //function 鍵 掃描按鍵 Function 鍵有效,進(jìn)入時(shí) 鐘調(diào)整程序 是否調(diào)整時(shí)間 Y 使用 UP或 DOWN進(jìn)行調(diào)整 返回主程序 N 第 31 頁(yè) 共 40 頁(yè) default : return null。另外可以通過(guò)軟件來(lái)調(diào)試硬件,如為了測(cè)試顯示電路連接是否正確,可以編寫一個(gè)簡(jiǎn)單的顯示程序來(lái)測(cè)量它。本設(shè)計(jì)正是大家熟悉的電子萬(wàn)年歷。最后調(diào)試時(shí)間,調(diào)整程序。 系統(tǒng)主流程圖 系統(tǒng)的軟件主流程圖如圖 47 所示 圖 47 系統(tǒng)主流程圖 詳細(xì)系統(tǒng)主程序見(jiàn)附錄 2。 0x0f ) != 0x0f )。例如顯示小時(shí): //顯示 小時(shí) i= * clock_time 4。通過(guò)數(shù)據(jù)讀寫操作控 制位 E 向 LCD 模塊發(fā)送脈沖,與單片機(jī)之間進(jìn)行數(shù)據(jù)交換。 LCD 顯示系統(tǒng) 要使 LCD液晶顯示器顯示內(nèi)容,首先要對(duì) LCD 進(jìn)行初始化。//calendar_address 農(nóng)歷地址 temp2 = 4。如果陽(yáng)歷日在春節(jié)之后或者春節(jié)當(dāng)日,則農(nóng)歷年和公歷年在一年相等,從數(shù)據(jù)表內(nèi)取出農(nóng)歷天數(shù) 記為 B。 //陽(yáng)歷月大于 10 月 取得春節(jié)和陽(yáng)歷日離元旦的天數(shù)后,可求的陽(yáng)歷 日離春節(jié)的天數(shù),求的的天數(shù)記為A,然后判斷該年是否為閏年或者有閏月。 //21 世紀(jì) calendar_address = ( year 1 ) * 3。格式如下: 0x04, 0xAe, 0x53, //1901 0x0A, 0x57, 0x48, //1902 0x55, 0x26, 0xBd, //1903 0x0d, 0x26, 0x50, //1904 0x0d, 0x95, 0x44, //1905 0x46, 0xAA, 0xB9, //1906 ?? 0x0d, 0x15, 0x41, //2098 0x2d, 0x92, 0xB5, //2099 有了此數(shù)據(jù)之后,可以開(kāi)始設(shè)計(jì)算法了。 //讀時(shí) 第 26 頁(yè) 共 40 頁(yè) 陰歷軟件設(shè)計(jì) 圖 44 陰歷轉(zhuǎn)換流程圖 陰歷程序的實(shí)現(xiàn)是要靠陽(yáng)歷日期來(lái)推算。 //月 Clock_Write_Time( year_address, * clock_time )。 //定義最高位 define second_address 0x80 //秒寄存器 define minute_address 0x82 //分寄存器 define hour_address 0x84 //小時(shí)寄存器 define day_address 0x86 //日期寄存器 define month_address 0x88 //月份寄存器 define year_address 0x8C //年寄存器 首次對(duì) DS1302 進(jìn) 行操作之前,必須對(duì)它進(jìn)行初始化,然后從 DS1302 中讀出數(shù)據(jù),再經(jīng)過(guò)處理后,送給顯示緩沖單元。 // 跳過(guò)讀序號(hào)列號(hào)的操作 Sensor_Write_Byte( 0x44 )。 // 精確延時(shí),大于 480us dq = 1。 // count 表示延時(shí)參數(shù),值越大,延時(shí)時(shí)間越長(zhǎng) } 單 總線上的 所有處理都要從初始化開(kāi)始。 Vo:液晶顯示器驅(qū)動(dòng)電源。由于狀態(tài)位作用不一樣,因此執(zhí)行不同指令必須檢測(cè)不同狀態(tài)位。 Clear 鍵,具有清除返回的功能。 圖 311 DS18B20溫度采集模塊 鍵盤模塊 按照鍵盤與 CPU 的連接方式可以分為查詢按鍵和矩陣式鍵盤。在這條命令發(fā)出之后,對(duì)于所發(fā)出的第一個(gè)讀數(shù)據(jù)時(shí)間片,器件會(huì)輸出溫度轉(zhuǎn)換忙的標(biāo)識(shí): “0”= 忙, “1”= 準(zhǔn)備就緒。如果總線控制器在這條命令之后跟著發(fā)出讀時(shí)間隙,而 DS18B20又正在忙于把暫存器拷貝到 E2存儲(chǔ)器, DS18B20 就會(huì)輸出一個(gè) “0” ,如果拷貝結(jié)束的話, DS18B20 則輸出 “1” 。貯存在 EEPROM 內(nèi)的觸發(fā)器值用于告警。 Skip ROM( 跳過(guò) ROM ) [CCh] 第 18 頁(yè) 共 40 頁(yè) 在單點(diǎn)總線系統(tǒng)中,此命令通
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1