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

正文內(nèi)容

基于單片機(jī)的萬年歷的設(shè)計(jì)與制作(更新版)

2025-08-05 19:27上一頁面

下一頁面
  

【正文】 Char(void) { unsigned char i=0。 //釋放數(shù)據(jù)線(將數(shù)據(jù)線拉高) for(time=0。 //先將數(shù)據(jù)線拉高 for(time=0。 //因?yàn)?8b20處理接受到的數(shù)據(jù)要進(jìn)行處理,先將高八位左移4位 temp=temp|a。 uchar a,b。 _nop_()。 for(i=0。 for(i=0。 _nop_()。 }void delay1(uchar count) //延時(shí){ while(count0) count。i4。 在對(duì)液晶模塊的初始化中要先設(shè)置其顯示模式,在液晶模塊顯示字符時(shí)光標(biāo)是自動(dòng)右移的,無需人工干預(yù)。 指令5:光標(biāo)或顯示移位 S/C :高電平時(shí)顯示移動(dòng)的文字,低電平時(shí)移動(dòng)光標(biāo) 指令6:功能設(shè)置命令 DL:高電平時(shí)為4位總線,低電平時(shí)為8位總線 N:低電平時(shí)為單行顯示,高電平時(shí)為雙行顯示,F(xiàn):低電平時(shí)顯示5X7的點(diǎn)陣字符,高電平時(shí)顯示5X10的顯示字符。其中圖13示出的三個(gè)按鍵,由上向下分別第一位鍵鍵鍵3,對(duì)應(yīng)于系統(tǒng)的功能分別是:時(shí)鐘的模式選擇鍵、加鍵、減鍵。表6 DS18B20溫度數(shù)據(jù)舉例溫度值/℃數(shù)據(jù)輸出(二進(jìn)制)數(shù)據(jù)輸出(16進(jìn)制)+1250000 0011 1101 000007D0H+850000 0101 0101 00000550H+0000 0001 1001 00010191H+0000 0000 1010 001000A2H+0000 0000 0000 10000008H00000 0000 0000 00000000H1111 1111 1111 1000FFF8H1111 1111 0101 1101FF5EH1111 1110 0101 1110FE6FH551111 1100 1001 0000FC90H③DS18B20溫度轉(zhuǎn)換的時(shí)序根據(jù)DS18B20的通信協(xié)議,主機(jī)控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過這幾個(gè)步驟:初始化DS18B20(發(fā)復(fù)位脈沖),接著ROM功能命令,發(fā)存儲(chǔ)器操作命令,最后處理數(shù)據(jù)。斜率累加器則用于補(bǔ)償和修正測(cè)溫過程中的非線性,其輸出用于修正減法計(jì)數(shù)器的預(yù)置值;只要計(jì)數(shù)門仍未關(guān)閉就重復(fù)上述過程,直到溫度寄存器值達(dá)到被測(cè)溫度值?!癢P”是寫保護(hù)位,在任何的對(duì)時(shí)鐘和RAM的寫操作之前,WP必須為0。當(dāng)命令字節(jié)為FE或FF時(shí),DS1302工作在多字節(jié)連續(xù)傳送模式,31個(gè)RAM寄存器從0地址開始,連續(xù)讀/寫從0位開始的數(shù)據(jù)。后面幾個(gè)時(shí)鐘寄存器中數(shù)據(jù)存儲(chǔ)情況基本和秒寄存器數(shù)據(jù)的存儲(chǔ)情況相同。表4 DS1302的日歷、時(shí)間寄存器寫寄存 器讀寄存 器Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit080H81HCH10秒秒82H83H10分分84H85H12/24010時(shí)時(shí)AM/PM86H87H0010日日88H89H00010月月8AH8BH00000星期8CH8DH10年年8EH8FHWP0000000普通時(shí)鐘寄存器(包括秒、分、時(shí)等七種寄存器)用于表示普通時(shí)鐘數(shù)據(jù)內(nèi)容,而其他三種寄存器用于只是CPU對(duì)DS1302進(jìn)行狀態(tài)的控制或設(shè)置。 時(shí)鐘模塊的設(shè)計(jì)及原理(1)模塊設(shè)計(jì)系統(tǒng)時(shí)間部分原理圖如圖8所示。當(dāng)工作于寄生電源時(shí),也可以向器件提供電源。DS18B20“一線總線”數(shù)字化溫度傳感器的測(cè)量溫度范圍55℃~+125℃,在10~+85℃范圍內(nèi),精度為177。RST是復(fù)位/片選線,通過把RST輸入驅(qū)動(dòng)置高電平來啟動(dòng)所有的數(shù)據(jù)傳送。DS1302內(nèi)部有一個(gè)318的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。 ⑤ (29腳):片外ROM選通線。作為第二功能使用時(shí),各位的作用見表1。P0口為雙向8位三態(tài)I/O接口。 MCS51單片機(jī)外部引腳AT89S52單片機(jī)為40個(gè)引腳的雙列直插式(DIP)封裝,共分為電源線、端口線和控制線三類。(1) 可靠性高 單片機(jī)的系統(tǒng)軟件都固化在ROM中,不易受病毒破壞。而且C語言可以嵌入?yún)R編語言來解決高時(shí)效性的代碼編寫問題。此設(shè)計(jì)方案需用A/D轉(zhuǎn)換電路,增加硬件成本而且熱敏電阻的感溫特性曲線并不是嚴(yán)格線性的,會(huì)產(chǎn)生較大的測(cè)量誤差。所以采用了LCD液晶顯示屏作為顯示。電子鐘是一種利用數(shù)字電路來顯示秒、分、時(shí)的計(jì)時(shí)裝置,與傳統(tǒng)的機(jī)械鐘相比,它具有計(jì)時(shí)準(zhǔn)確、顯示直觀等優(yōu)點(diǎn),因而得到廣泛應(yīng)用。程序采用C語言編寫,以便更簡(jiǎn)單地實(shí)現(xiàn)調(diào)整時(shí)間功能。在設(shè)計(jì)的同時(shí)對(duì)單片機(jī)的理論基礎(chǔ)和外圍擴(kuò)展知識(shí)進(jìn)行了比較全面準(zhǔn)備。基于單片機(jī)的萬年歷的設(shè)計(jì)與制作摘要:?jiǎn)纹瑱C(jī)應(yīng)用技術(shù)飛速發(fā)展,縱觀我們現(xiàn)在生活的各個(gè)領(lǐng)域,從導(dǎo)彈的導(dǎo)航裝置,到飛機(jī)上各種儀表的控制,從計(jì)算機(jī)的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,到工業(yè)自動(dòng)化過程的實(shí)時(shí)控制和數(shù)據(jù)處理,以及我們生活中廣泛使用的各種智能IC卡、電子寵物等,這些都離不開單片機(jī)。本設(shè)計(jì)是基于51系列的單片機(jī)進(jìn)行的電子萬年歷設(shè)計(jì),可以顯示年月日時(shí)分秒及周信息,具有可調(diào)整日期和時(shí)間功能。軟件方面主要包括日歷程序、時(shí)間調(diào)整程序,顯示程序等。電子萬年歷的出現(xiàn)給人們的生活帶來諸多方便。并且可以同時(shí)顯示大量信息,所以在此設(shè)計(jì)中采用LCD液晶顯示屏。 溫度傳感器的選擇方案和論證方案一:使用熱敏電阻作為傳感器,用熱敏電阻與一個(gè)相應(yīng)阻值電阻相串聯(lián)分壓,利用熱敏電阻阻值隨溫度變化而變化的特性,采集這兩個(gè)電阻變化的分壓值,并進(jìn)行A/D轉(zhuǎn)換。C語言提供了很多函數(shù),并支持浮點(diǎn)運(yùn)算,開發(fā)效率高,故可縮短開發(fā)時(shí)間,增加程序可讀性和可維護(hù)性。單片機(jī)的主要特點(diǎn)如下。除此之外,單片機(jī)還具有集成度高、體積小、性價(jià)比高、應(yīng)用廣泛、易于產(chǎn)品化。 ①P0口 32~~。P3口為8位準(zhǔn)雙向I/O接口,它是雙功能復(fù)用口,作為通用I/O接口時(shí),功能與P1口相同,常使用第二功能。 ④XTAL1和XTAL2(18,19腳):XTAL1腳為片內(nèi)振蕩電路的輸入端, XTAL2腳為片內(nèi)振蕩電路的輸出端。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。X1和X2是振蕩源。圖4. DS1302引腳圖 DS18B20溫度芯片 DS18B20簡(jiǎn)介DS18B20是由Dallas半導(dǎo)體公司生產(chǎn)的數(shù)字化溫度傳感器,是世界上第一個(gè)支持“一線總線”接口的溫度傳感器,“一線總線”接口芯片獨(dú)特芯片而且經(jīng)濟(jì),使用戶可以輕松地組建傳感器網(wǎng)絡(luò),為測(cè)量系統(tǒng)的構(gòu)建引入了全新概念。引腳2(DQ):數(shù)據(jù)輸入/輸出引腳,漏極開路單總線接口引腳。 主要單元模塊的設(shè)計(jì)及原理 單片機(jī)主控制模塊的設(shè)計(jì)系統(tǒng)主控制部分原理圖如圖7所示。如下圖9所示③DS1302的寄存器DS1302有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式,其日歷、時(shí)間寄存器及其控制字見表2。假設(shè)現(xiàn)有數(shù)據(jù)為31s,那么其存儲(chǔ)情況應(yīng)為bit6~bit4=011,bit3~bit0=0001。8個(gè)時(shí)鐘/日歷寄存器從RAM寄存器0開始,依次由地址0~地址7順序讀/寫數(shù)據(jù)。表3為DS1302的日歷、時(shí)間寄存器內(nèi)容:“CH”是時(shí)鐘暫停標(biāo)志位,當(dāng)該位為1時(shí),時(shí)鐘振蕩器停止,DS1302處于低功耗狀態(tài);當(dāng)該位為0時(shí),時(shí)鐘開始運(yùn)行。增加停止減法計(jì)數(shù)器1對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行減法計(jì)數(shù),當(dāng)預(yù)置數(shù)值減到0時(shí),溫度計(jì)數(shù)器的值將加1,然后減法計(jì)數(shù)器1的預(yù)置值重新被裝入且重新開始對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如此循環(huán)直到減法計(jì)數(shù)器2計(jì)數(shù)到0時(shí),停止溫度寄存器值的累加,此時(shí)溫度寄存器中的數(shù)值就是所測(cè)溫度值。幾種溫度數(shù)據(jù)輸出舉例如表6所列。表7 DS18B20 ROM命令命令描述協(xié)議此命令發(fā)出后總線上的活動(dòng)SEARCH ROM識(shí)別總線上掛著的所有DS18B20的ROMF0H所有DS18B20向主機(jī)傳送ROM碼READ ROM當(dāng)只有一個(gè)DS18B20掛在總線上時(shí),可用此命令讀取ROM33HDS18B20向主機(jī)傳送ROM碼MATCH ROM主機(jī)用ROM碼來指定某一個(gè)DS18B20,只有匹配的DS18B20才會(huì)響應(yīng)55H主機(jī)向總線傳送一個(gè)ROM碼SKIP ROM用于指定總線上所有的器件CCHALARMSEARCH與SEARCH ROM命令相似,但只有溫度超過警報(bào)線的DS18B20才會(huì)響應(yīng)ECH超過警報(bào)線的DS18B20向主機(jī)傳送ROM碼表8 DS18B20 RAM功能命令命令描述協(xié)議此命令發(fā)出后總線上的活動(dòng)Convert T開始溫度轉(zhuǎn)換44HDS18B20向主機(jī)傳送轉(zhuǎn)換狀態(tài)Read Scratchpad讀暫存器完整的數(shù)據(jù)BEHDS18B20向主機(jī)傳送總共9字節(jié)的數(shù)據(jù)Write Scratchpad向寄存器的3和4字節(jié)寫入數(shù)據(jù)(TH、TL和精度)4EH主機(jī)向DS18B20傳送3字節(jié)的數(shù)據(jù)Copy Scratchpad將TH、TL和配置寄存器的數(shù)據(jù)復(fù)制到EEPROM48HDS18B20向主機(jī)傳送調(diào)用狀態(tài)Recall E2將TH、TL和配置寄存器的數(shù)據(jù)從EEPROM中調(diào)到暫存器中B8HRead Power Supply向主機(jī)示意電源供電狀態(tài)B4HDS18B20向主機(jī)傳送供電狀態(tài) 按鍵處理模塊的設(shè)計(jì)系統(tǒng)按鍵部分原理圖如圖13所示。C:控制光標(biāo)的開與關(guān),高電平表示有光標(biāo),低電平表示無光標(biāo) B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。圖16. LCD1602內(nèi)部顯示地址例如第二行第一個(gè)字符的地址是40H,那么是否直接寫入40H就可以將光標(biāo)定位在第二行第一個(gè)字符的位置呢?這樣不行,因?yàn)閷懭腼@示地址時(shí)要求最高位D7恒定為高電平1所以實(shí)際寫入的數(shù)據(jù)應(yīng)該是01000000B(40H)+10000000B(80H)=11000000B(C0H)。 for(i=0。i++) delay1ms()。 DS=0。 bit j。 //返回字節(jié)數(shù)}void write_byte(uchar mand) //寫一字節(jié)到18b20{ uchar i。 } else //否則產(chǎn)生一上升沿 { DS=0。 //啟動(dòng)18b20進(jìn)行溫度轉(zhuǎn)換} uint tmp() //獲取溫度{ float tt。 temp=8。 //儲(chǔ)存DS18B20是否存在的標(biāo)志,flag=0,表示存在;flag=1,表示不存在 DQ = 1。 //以向DS18B20發(fā)出一持續(xù)480~960us的低電平復(fù)位脈沖 DQ = 1。 //延時(shí)足夠長(zhǎng)時(shí)間,等待存在脈沖輸出完畢 return (flag)。 //單片機(jī)從DS18B20讀書據(jù)時(shí),將數(shù)據(jù)線從高拉低即啟動(dòng)讀時(shí)序 _nop_()。//如果讀到的數(shù)據(jù)是0,則將0存入dat //將單片機(jī)檢測(cè)到的電平信號(hào)DQ存入r[i] for(time=0。 // 先將數(shù)據(jù)線拉高 _nop_()。 //釋放數(shù)據(jù)線 for(time=0。 //將DS18B20初始化 WriteOneChar(0xCC)。 //數(shù)據(jù)引腳sbit DS1302_RST = P1^5。 //DS1302是否寫入保護(hù)void DS1302_SetTime(unchar Address, unchar Value)。 i0。 i) { DS1302_CLK = 0。 DS1302_InputByte(Address)。 //RST拉高,啟動(dòng)數(shù)據(jù)傳送 DS1302_InputByte(Address|0x01)。 Write1302(Address,((Value/10)4|(Value%10)))。 TimeMinute = ((ReadValueamp。 TimeDay = ((ReadValueamp。 TimeMonth = ((ReadValueamp。039。039。\039。039。039。最后經(jīng)過多次的模塊子程序的修改,一步一步的完成,最終解決了軟件問題。在本電子萬年歷的設(shè)計(jì)調(diào)試中遇到了很多的問題。反而達(dá)到事半功倍的效果
點(diǎn)擊復(fù)制文檔內(nèi)容
電大資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1