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

正文內(nèi)容

基于msp430f149和ds1302的12864時鐘設計-文庫吧

2025-09-16 15:25 本頁面


【正文】 性能、低功耗的實時時鐘芯片,附加 31 字節(jié)靜態(tài) RAM,采用 SPI 三線接口與 CPU 進行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號和 RAM 數(shù)據(jù)。實時時鐘可提供秒、分、時、日、星期、月和年,一個月小與 31天時可以自動調(diào)整,且具有閏年補償功能。工作電壓寬達 ~ 。采用雙電源供電(主電源和備用電源),可設置備用電源充電方式,提 供了對后背電源進行涓細電流充電的能力。DS1302 的外部引腳分配如圖 1 所示及內(nèi)部結構如圖 2 所示。 DS1302 用于數(shù)據(jù)記錄,特別是對某些具有特殊意義的數(shù)據(jù)點的記錄上,能實現(xiàn)數(shù)據(jù)與出現(xiàn)該數(shù)據(jù)的時間同時記錄,因此廣泛應用于測量系統(tǒng)中。 圖 1 DS1302 的外部引腳分配 圖 2 DS1302 的內(nèi)部結構 各引腳的功能為: Vcc1:主電源; Vcc2:備份電源。當 Vcc2Vcc1+ 時,由 Vcc2 向 DS1302 供電,當 Vcc2 Vcc1 時,由 Vcc1 向 DS1302 供電。 SCLK:串行時鐘,輸入,控制 數(shù)據(jù)的輸入與輸出; I/O:三線接口時的雙向數(shù)據(jù)線; CE:輸入信號,在讀、寫數(shù)據(jù)期間,必須為高。該引腳有兩個功能:第一, CE 開始控制字訪問移位寄存器的控制邏輯;其次, CE 提供結束單字節(jié)或多字節(jié)數(shù)據(jù)傳輸?shù)姆椒ā? DS1302 有下列幾組寄存器: DS1302①有關日歷、時間的寄存器共有 12 個,其中有 7 個寄存器(讀時 81h~ 8Dh,寫時80h~ 8Ch),存放的數(shù)據(jù)格式為 BCD 碼形式,如圖 3 所示。 圖 3 DS1302 有關日歷、時間的寄存器 小時寄存器( 85h、 84h)的位 7 用于定義 DS1302 是運 行于 12 小時模式還是 24 小時模式。當為高時,選擇 12 小時模式。在 12 小時模式時,位 5 是,當為 1 時,表示 PM。在 24 小時模式時,位 5 是第二個 10 小時位。 秒寄存器( 81h、 80h)的位 7 定義為時鐘暫停標志( CH)。當該位置為 1 時,時鐘振蕩器停止, DS1302 處于低功耗狀態(tài);當該位置為 0 時,時鐘開始運行。 控制寄存器( 8Fh、 8Eh)的位 7 是寫保護位( WP),其它 7 位均置為 0。在任何的對時鐘和RAM 的寫操作之前, WP 位必須為 0。當 WP 位為 1 時,寫保護位防止對任一寄存器的寫操作。 DS1302②有關 RAM 的地址 DS1302 中附加 31 字節(jié)靜態(tài) RAM 的地址如圖 4 所示。 圖 4 DS1302③的工作模式寄存器 所謂突發(fā)模式是指一次傳送多個字節(jié)的時鐘信號和 RAM 數(shù)據(jù)。突發(fā)模式寄存器如圖 5 所示。 圖 5 ④此外, DS1302 還有充電寄存器等。 2 讀寫時序說明 DS1302 是 SPI 總線驅(qū)動方式。它不僅要向寄存器寫入控制字,還需要讀取相應寄存器的數(shù)據(jù)。 要想與 DS1302 通信,首先要先了解 DS1302 的控制字。 DS1302 的控制字如圖 6。 圖 6 控制字(即地址及命令字節(jié)) 控制字的最高有效位(位 7)必須是邏輯 1,如果它為 0,則不能把數(shù)據(jù)寫入到 DS1302 中。 位 6:如果為 0,則表示存取日歷時鐘數(shù)據(jù),為 1 表示存取 RAM 數(shù)據(jù); 位 5 至位 1( A4~ A0):指示操作單元的地址; 位 0(最低有效位):如為 0,表示要進行寫操作,為 1 表示進行讀操作。 控制字總是從最低位開始輸出。在控制字指令輸入后的下一個 SCLK 時鐘的上升沿時,數(shù)據(jù)被寫入 DS1302,數(shù)據(jù)輸入從最低位( 0 位)開始。同樣,在緊跟 8 位的控制字指令后的下一個 SCLK 脈沖的下降沿,讀出 DS1302 的數(shù)據(jù),讀出的數(shù)據(jù)也是從最低位到最高位。數(shù)據(jù) 讀 寫 時 序 如 圖 7 。 圖 7 數(shù)據(jù)讀寫時序 具體操作見驅(qū)動程序。 3 電路原理圖 : 電路原理圖如圖 8, DS1302 與單片機的連接也僅需要 3 條線: CE 引腳、 SCLK 串行時鐘引腳、 I/O 串行數(shù)據(jù)引腳, Vcc2 為備用電源,外接 晶振,為芯片提供計時脈沖。 DS1302 采用串行數(shù)據(jù)傳輸, SCLK 控制線、 IO 口線、 REST 口線分別與 P6 P6 P67 相連接。 五、一體化紅外接收頭 1838 紅外線遙控是目前使用比較廣泛的一種通信和遙控手段。由于紅外線遙控裝置具有體積 小、功耗低、功能強、成本低等特點,因而, 繼彩電、錄像機之后,在錄音機、音響設備、 空凋機以及玩具等其它小型電器裝置上也紛紛采用紅外線遙控。工業(yè)設備中,在高壓、輻射、 有毒氣體、粉塵等環(huán)境下,采用紅外線遙控不僅完全可靠而且能有效地隔離電氣干擾。 DM430A 單片機開發(fā)板提供一體化紅外接收頭接口,如果用戶購買的套餐包含紅外一 體化接收頭,用戶可以使用電視遙控器或者音箱等遙控器與單片機通信,可以對遙控器或其 他紅外設備解碼。下圖 為紅外接收頭硬件連接原理圖。其中 1 腳 KEY3 連接到 P13 口,為紅外數(shù)據(jù)通道, 2 腳和 3 腳分別接 GND 和 VCC,該型接收頭支持 ~ 5V 供電,硬件連接非常簡單。 通用紅外遙控系統(tǒng)由發(fā)射和接收兩大部分組成,應用編 /解碼專用集成電路芯片來進行控制操作,如下所示: (一)發(fā)射部分 鍵盤矩陣、編碼調(diào)制、 LED 紅外發(fā)送器 鍵盤 編碼調(diào)制 紅外 LED 發(fā)射( 38KHz 的載波) (二)接收部分 研究中應用 VS0038 一體化紅外接收頭 (實物圖如下:) 紅外接收頭 VS0038 能夠正常接收的角度 2 遙控發(fā)射器及其編碼 ( 1)遙控發(fā)射器專用芯片很多 ( 2)根據(jù)編碼格 式可以分成:脈沖寬度調(diào)制和脈沖相位調(diào)制兩大類 現(xiàn)在我們研究以運用比較廣泛,解碼比較容易實現(xiàn)的脈沖寬度調(diào)制來加以說明。當發(fā)射器按鍵按下后,即有遙控碼發(fā)出,所按的鍵不同遙控編碼也不同。這種遙控碼具有以下特征: ( a) 采用脈寬調(diào)制的串行碼 ( b) 以脈寬為 、間隔 、周期為 的組合表示二進制的“ 0” ( c) 以脈寬為 、間隔 、周期為 的組合表示二進制的“ 1” 遙控器發(fā)出由“ 0”和“ 1”組成的 32 位二進制碼,經(jīng) 38kHz 的載頻進行二次調(diào)制以提高發(fā)射效率,達到降低電 源功耗的目的。然后再通過紅外發(fā)射二極管產(chǎn)生紅外線向空間發(fā)射 ,其中前 16 位為用戶識別碼,能區(qū)別不同的紅外遙控設備,防止不同機種遙控碼互相干擾。后 16 位為 8 位的操作碼和 8 位的操作反碼用于核對數(shù)據(jù)是否接收正確。 (其中的地址碼為用戶識別碼,它又分為用戶碼與用戶反碼) 當遙控器上任意一個按鍵按下超過 36ms 時, LC7461 芯片的振蕩器使芯片激活,將發(fā)射一個特定的同步碼頭,對于接收端而言就是一個 9ms 的低電平 ,和一個 的高電平,這個同步碼頭可以使程序知道從這個同步碼頭以后可以開始接收數(shù)據(jù)。 解碼的 關鍵是如何識別“ 0”和“ 1”,從位的定義我們可以發(fā)現(xiàn)“ 0”、“ 1”均以 的低電平開始,不同的是高電平的寬度不同,“ 0”為 ,“ 1”為 ,所以必須根據(jù)高電平的寬度區(qū)別“ 0”和“ 1”。如果從 低電平過后,開始延時, 以后,若讀到的電平為低,說明該位為“ 0”,反之則為“ 1”,為了可靠起見,延時必須比 長些,但又不能超過 ,否則如果該位為“ 0”,讀到的已是下一位的高電平,因此?。?+) /2= 最為可靠,一般取 左右即可。 根據(jù)紅外編碼的格式,程序應該等待 9ms 的起始碼和 的結果碼完成后才能讀碼。 接收器及解碼 光 /電放大 解調(diào) 52 單片機解碼 VS0038 是塑封一體化紅外線接收器,它是一種集紅外線接收、放大、整形于一體的集成電路,不需要任何外接元件,就能完成從紅外線接收到輸出與 TTL 電平信號兼容的所有工作,沒有紅外遙控信號時為高電平,收到紅外信號時為低電平,而體積和普通的塑封三極管大小一樣,它適合于各種紅外線遙控和紅外線數(shù)據(jù)傳輸。 測試時用的遙控器 測試效果: ( 1) ( 2) 程序如下 : 文件一 include include include include include include include include include void main(void) { unsigned char i。 WDTCTL=WDT_ADLY_//定時器模式, 250ms 中斷一次 IE1|=WDTIE。 BCSCTL1amp。=~XT2OFF。 //打開 XT2 振蕩器 BCSCTL2|=SELM1。 //MCLK 為 8MHZ, SMCLK 時鐘源選擇 DCO 800khz do{ IFG1amp。=~OFIFG。 //清楚振蕩器錯誤標志 for(i=0。i100。i++) _NOP()。 } while((IFG1amp。OFIFG)!=0)。 //如果標志位 1,則繼續(xù)循環(huán)等待 IFG1amp。=~OFIFG。 Close_LED()。//關數(shù)碼管 delay_ms(5)。 P5DIR|=BIT7+BIT6+BIT5+BIT0+BIT1。//將液晶相關控制位設為輸出 LCDDATOUT。//液晶數(shù)據(jù)口設置輸出 P4OUT=0xff。//初始化液晶數(shù)據(jù)口為高電平 LCD_INIT()。//初始化液晶 delay_ms(500)。 P1DIR=0xf7。//鍵盤端口初始化 P1OUT=0xFF。 P1IE|=BIT3。//允許中斷 P1IES=0xff。//下降沿中斷 P2DIR=0xff。 P2OUT=0xff。 /********初始化 flash********/ FCTL2=FWKEY+FSSEL1+FN0。 /********初始化定時器 *********/ TACTL|=TASSEL_1+MC_2+TACLR。 TACCR0=1。 TACCR1=2048。 wellplay()。//顯示歡迎畫面 read_segA()。 //讀取 flash 鬧鐘數(shù)據(jù) LCD_CLEAR()。//清屏 DS1302_INIT()。//初始化 DS1302 GET_TIME()。//讀取一次時間 lunar_calendar()。//進行一次陰歷的轉(zhuǎn)換 display()。 //顯示時間畫面 DS_INIT()。 //初始化 18B20 DS_write(0xcc)。 //跳過 ROM 指令 DS_write(0x44)。//啟動轉(zhuǎn)換 _BIS_SR(GIE)。//開總中斷 while(1) { _BIS_SR(LPM2_bits)。//進入低功耗 if(keydownflag)//如果有按鍵按下,進入鍵值分析處理函數(shù) { keydownflag=0。//清除標志 keyvalue_const()。//鍵值分析處理 } if(flagamp。amp。(setflag==0))//1s 刷新一次數(shù)據(jù) { flag=0。 GET_TIME()。//讀取時間 temperature=GET_TEMP()。//獲取溫度 display()。 //刷新屏幕 } switch(setflag)//根據(jù)狀態(tài)標志的值顯示相應的畫面 { case 1:play_menu_1()。IE1amp。=~WDTIE。 _EINT()。break。//主菜單(一) case 2:play_menu_2()。IE1amp。=~WDTIE。 _EINT()。break。//主菜單(二) case 3:play_menu_1_0()。lastplay=1。IE1amp。=~WDTIE。 _EINT()。break。//時間設置畫面 case 4:play_menu_2_0()。lastplay=1。IE1amp。=~WDTIE。 _EINT()。break。//鬧鐘設置畫面 default :break。 } } } pragma vector=WDT_VECTOR __interrupt void wdt_time(void) { temp=second。 second=READ_DS1302(READ_SECOND)。 if(second!=te
點擊復制文檔內(nèi)容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1