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

正文內(nèi)容

數(shù)字萬年歷設(shè)計(jì)報(bào)告-在線瀏覽

2025-03-10 15:57本頁面
  

【正文】 RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)l RST:復(fù)位輸入。WDT溢出將使引腳輸出高電平,設(shè)置SFR AUXR的DISRT0(地址8EH)可打開或關(guān)閉該功能。l ALE/PROG:當(dāng)訪問外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE(地址鎖存器允許)輸出脈沖用于鎖存地址的低8位字節(jié)。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過一個(gè)ALE脈沖。如有必要,可通過多特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置,可禁止ALE操作。另外,該引腳會(huì)被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE無效。當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器,沒有兩次有效的PSEN信號(hào)。欲使CPU僅訪問外部程序存儲(chǔ)器(地址為0000H—FFFFH),EA端必須保持低電平(接地)。如EA端為高電平(接Vcc端),CPU則執(zhí)行內(nèi)部程序存儲(chǔ)器中的指令。l XTAL2:振蕩器反相放大器的輸出端。WDT 由13位計(jì)數(shù)器和特殊功能寄存器中的看門狗定時(shí)器復(fù)位存儲(chǔ)器(WDTRST)構(gòu)成。當(dāng)WDT激活后,晶振工作,WDT在每個(gè)機(jī)器周期都會(huì)增加。除了復(fù)位(硬件復(fù)位或WDT溢出復(fù)位),沒有辦法停止WDT工作。l 可編程串口(UART)在AT89S52中,UART 的操作與AT89S52 和AT89C52 一樣。當(dāng)工作于異步方式時(shí),它具有全雙工的操作功能,也就是說,它可以同時(shí)進(jìn)行數(shù)據(jù)的發(fā)送和接收。串行口的發(fā)送和接收操作都是通過特殊功能寄存器中的數(shù)據(jù)緩沖寄存器SBUF進(jìn)行的,但在SBUF的內(nèi)部,接收寄存器和發(fā)送寄存器在物理結(jié)構(gòu)上是完全獨(dú)立的。如果執(zhí)行SBUF指令,則讀出的數(shù)據(jù)一定來自接收緩存器。這2個(gè)寄存器的功能決不能混淆。XTAL1反相器的輸入,XTAL2為反相器的輸出。另一種方式由外部時(shí)鐘源提供一個(gè)時(shí)鐘信號(hào)到XTAL1端輸入,而XTAL2端浮空。在電路中,對電容C1和C2的值要求不是很嚴(yán)格,如果使用高質(zhì)的晶振,則不管頻率為多少,CC2通常都選擇30pF。當(dāng)用于定時(shí)器方式時(shí),定時(shí)器的輸入來自內(nèi)部時(shí)鐘發(fā)生電路,每過一個(gè)機(jī)器周期,定時(shí)器加1,而一個(gè)機(jī)器周期包含有12個(gè)振蕩周期,所以,定時(shí)器的技術(shù)頻率為晶振頻率的1/12,而計(jì)數(shù)頻率最高為晶振頻率的1/24??刂萍拇嫫魇且粋€(gè)8位的寄存器,用于控制定時(shí)器的工作狀態(tài),方式寄存器是一個(gè)8位的寄存器,用于確定定時(shí)器的工作方式,定時(shí)器/計(jì)數(shù)器是16位的計(jì)數(shù)器,分為高字節(jié)和低字節(jié)兩部分。的直接地址訪問同一個(gè)存儲(chǔ)空間,高于7FH的間接地址訪問另一個(gè)存儲(chǔ)空間。究竟訪問哪一區(qū),存是通過不同的尋址方式加以區(qū)分的。雖然如此,不是所有的單元都被特殊功能寄存器占用,未被占用的單元,其內(nèi)容是不確定的。l 中斷系統(tǒng):AT89S52單片機(jī)有6個(gè)中斷源,中斷系統(tǒng)主要由中斷允許寄存器IE、中斷優(yōu)先級(jí)寄存器IP、優(yōu)先級(jí)結(jié)構(gòu)和一些邏輯門組成。在整個(gè)中斷響應(yīng)過程中CPU所執(zhí)行的操作步驟如下:(1)完成當(dāng)前指令的操作(2)將PC內(nèi)容壓入堆棧(3)保存當(dāng)前的中斷狀態(tài)(4)阻止同級(jí)的中斷請求(5)將中斷程序入口地址送PC寄存器(6)執(zhí)行中斷服務(wù)程序(7)返回DS1302是Dallas公司生產(chǎn)的一種實(shí)時(shí)時(shí)鐘芯片。另外,它還能提供31字節(jié)的用于高速數(shù)據(jù)暫存的RAM。DS1302與單片機(jī)系統(tǒng)的數(shù)據(jù)傳送依靠RST,I/O,SCLK三根端線即可完成。因此,其與單片機(jī)之間的數(shù)據(jù)傳送是十分容易實(shí)現(xiàn)的,DS1302的引腳排列及內(nèi)部結(jié)構(gòu)圖如圖2:DS1302引腳說明: X1,X2 GND 地線RST 復(fù)位端I/O 數(shù)據(jù)輸入/輸出端口SCLK 串行時(shí)鐘端口VCC1 慢速充電引腳VCC2 電源引腳 圖2 DS1302管腳 圖2 DS1302的引腳1時(shí)鐘芯片DS1302的接口電路及工作原理:圖3 DS1302與MCU接口電路圖3為DS1302的接口電路,其中Vcc1為后備電源,Vcc2為主電源。VCC2在雙電源系統(tǒng)中提供主電源,在這種運(yùn)用方式中VCC1連接到備份電源,以便在沒有主電源的情況下能保存時(shí)間信息以及數(shù)據(jù)。當(dāng)VCC2大于VCC1+,VCC2給DS1302供電。 DS1302在每次進(jìn)行讀、寫程序前都必須初始化,先把SCLK端置 “0”,接著把RST端置“1”,最后才給予SCLK脈沖;讀/寫時(shí)序如下圖5所示。對于位6,若對時(shí)間進(jìn)行讀/寫時(shí),CK=0,對程序進(jìn)行讀/寫時(shí)RAM=1。位0是讀/寫操作位,進(jìn)行讀操作時(shí),該位為1;進(jìn)行寫操作時(shí),該位為0。表2為DS1302的日歷、時(shí)間寄存器內(nèi)容:“CH”是時(shí)鐘暫停標(biāo)志位,當(dāng)該位為1時(shí),時(shí)鐘振蕩器停止,DS1302處于低功耗狀態(tài);當(dāng)該位為0時(shí),時(shí)鐘開始運(yùn)行。當(dāng)“WP”為1時(shí),寫保護(hù)位防止對任一寄存器的寫操作??刂谱止?jié)的高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入DS1302中,位6如果0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為1表示進(jìn)行讀操作,為0表示進(jìn)行寫操作。表2 DS1302的控制字格式 1 RAM/CKA4A3A2A1A0RD/WR數(shù)據(jù)輸入輸出(I/O)在控制指令字輸入后的下一個(gè)SCLK時(shí)鐘的上升沿時(shí),數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從低位即位0開始。如下圖4所示。 表3 DS1302的日歷、時(shí)間寄存器寫寄存器讀寄存器Bit7Bit6Bit5Bit7Bit3Bit2Bit1Bit080H81HCH10秒秒82H83H10分分84H85H12/010時(shí)時(shí)/PM86H87H0010 日日88H89H00010月月8AH8BH00000星期8CH8DH 10年年8EH8FHWP0000000此外,DS1302 還有年份寄存器、控制寄存器、充電寄存器、時(shí)鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。 DS1302與RAM相關(guān)的寄存器分為兩類:一類是單個(gè)RAM單元,共31個(gè),每個(gè)單元組態(tài)為一個(gè)8位的字節(jié),其命令控制字為C0H~FDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的RAM寄存器,此方式下可一次性讀寫所有的RAM的31個(gè)字節(jié),命令控制字為FEH(寫)、FFH(讀)。現(xiàn)場溫度直接以一線總線的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。與前一代產(chǎn)品不同,新的產(chǎn)品支持3V~,使系統(tǒng)設(shè)計(jì)更靈活、方便。 DS18B20測溫原理如圖5所示。高溫度系數(shù)晶振隨溫度變化其振蕩率明顯改變,所產(chǎn)生的信號(hào)作為計(jì)數(shù)器2的脈沖輸入。計(jì)數(shù)器1對低溫度系數(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重新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如此循環(huán)直到計(jì)數(shù)器2計(jì)數(shù)到0時(shí),停止溫度寄存器值的累加,此時(shí)溫度寄存器中的數(shù)值即為所測溫度。LSB位置/清除增加計(jì)數(shù)器1斜率累加器計(jì)數(shù)比較器溫度寄存器減到0預(yù)置計(jì)數(shù)器2減到0停止預(yù)置低溫度系數(shù)晶振高溫度系數(shù)晶振圖5 DS18B20測溫原理 DS18B20接口電路設(shè)計(jì)如6圖所示,該系統(tǒng)中采用數(shù)字式溫度傳感器DS18B20,具有測量精度高,電路連接簡單特點(diǎn),此類傳感器僅需要一條數(shù)據(jù)線進(jìn)行數(shù)據(jù)傳輸,Vcc接電源,GND接地。圖15 按鍵電路對以上4個(gè)按鍵作簡要說明:S4——SET 鍵,S3——UP鍵,S2——DOWN鍵,S5——OUT/STOP鍵。DOWN鍵:當(dāng)SET鍵按下時(shí),DOWN進(jìn)行SET選定項(xiàng)(如:小時(shí))的減操作;OUT鍵:當(dāng)OUT鍵按下時(shí),此鍵功能為退出校準(zhǔn)功能,進(jìn)入下一模式,顯示溫度值和上下限的溫度值。如果RST持續(xù)為高電平,單片機(jī)就處于循環(huán)復(fù)位狀態(tài),而無法執(zhí)行程序。而本系統(tǒng)選用的是12MHz的晶振,因此一個(gè)機(jī)器周期為1μs,那么復(fù)位脈沖寬度最小應(yīng)為2μs。根據(jù)應(yīng)用的要求,復(fù)位操作通常有兩種基本形式:上電復(fù)位、手動(dòng)復(fù)位。AT89S52單片機(jī)的上電復(fù)位POR(Power On Reset)實(shí)質(zhì)上就是上電延時(shí)復(fù)位,也就是在上電延時(shí)期間把單片機(jī)鎖定在復(fù)位狀態(tài)上。復(fù)位電路把單片機(jī)鎖定在復(fù)位狀態(tài)上并且維持一個(gè)延時(shí)(記作TRST),以便給予電源電壓從上升到穩(wěn)定的一個(gè)等待時(shí)間;在電源電壓穩(wěn)定之后,再插入一個(gè)延時(shí),給予時(shí)鐘振蕩器從起振到穩(wěn)定的一個(gè)等待時(shí)間;在單片機(jī)開始進(jìn)入運(yùn)行狀態(tài)之前,還要至少推遲2個(gè)機(jī)器周期的延時(shí)。當(dāng)單片機(jī)已在運(yùn)行之中時(shí),按下復(fù)位鍵也能使RST持續(xù)一段時(shí)間的高電平,從而實(shí)現(xiàn)上電且開關(guān)復(fù)位的操作。圖16 復(fù)位電路 4 系統(tǒng)的軟件設(shè)計(jì)電子萬年歷的功能是在程序控制下實(shí)現(xiàn)的。這樣有利于程序修改和調(diào)試,增強(qiáng)了程序的可移植性。程序開始運(yùn)行后首先要進(jìn)行初始化,把單片機(jī)的各引腳的狀態(tài)按程序里面的初始化命令進(jìn)行初始化,初始化完成后運(yùn)行溫度測量程序,讀取出溫度傳感器測量出來的溫度,然后運(yùn)行公歷計(jì)算程序,得到公歷的時(shí)間、日期信息,再運(yùn)行按鍵掃描程序,檢測有無按鍵按下,如果沒有按鍵按下則直接調(diào)用節(jié)日計(jì)算程序,根據(jù)得到的公歷日期信息計(jì)算出節(jié)日,如果有按鍵按下則更新按鍵修改后的變量后送給節(jié)日計(jì)算程序,由節(jié)日計(jì)算程序根據(jù)修改后的變量計(jì)算出對應(yīng)的節(jié)假日,計(jì)算完成后運(yùn)行顯示程序,顯示程序?qū)⒌玫降臏囟葦?shù)據(jù)、公歷信息、節(jié)假日信息送給對應(yīng)的數(shù)碼管讓其顯示。讀取寫程序設(shè)計(jì)如下:sbit clk = P1^3。 //數(shù)據(jù)線sbit rst = P1^5。 //寫地址uchar code read_add[] ={0x81,0x83,0x85,0x87,0x89,0x8d,0x8b}。 uchar miao,fen,shi,ri,yue,week,nian。uchar fen1=0x11,shi1=0。/*************寫一個(gè)數(shù)據(jù)到對應(yīng)的地址里***************/void write_ds1302(uchar add,uchar dat){ rst = 1。i8。 //時(shí)鐘線拿低開始寫數(shù)據(jù) io = add amp。 add = 1。 //時(shí)鐘線拿高 } for(i=0。i++) { clk = 0。 0x01。 //把數(shù)據(jù)右移一位 clk = 1。 //復(fù)位線合低 clk = 0。}/*************從對應(yīng)的地址讀一個(gè)數(shù)據(jù)出來***************/uchar read_ds1302(uchar add){ uchar value,i。 //把復(fù)位線拿高 for(i=0。i++) { //低位在前 clk = 0。 0x01。 //把地址右移一位 clk = 1。i8。 //時(shí)鐘線拿低開始讀數(shù)據(jù) value = 1。 clk = 1。 //復(fù)位線合低 clk = 0。 return value。 //讀秒 fen = read_ds1302(read_add[1])。 //讀時(shí) ri = read_ds1302(read_add[3])。 //讀月 nian = read_ds1302(read_add[5])。 //讀星期 Conversion(0,nian,yue,ri)。 n_yue = month_moon 。}/*************把數(shù)據(jù)保存到ds1302 RAM中**031*************/void write_ds1302ram(uchar add,uchar dat){ add = 1。= 0xfe。 //地址最高兩位為 1 write_ds1302(0x8e,0x00)。 write_ds1302(0x8e,0x80)。 //地址是從第二位開始的 add |= 0x01。 //地址最高兩位為 1 return(read_ds1302(add))。 rst = 0。 io = 0。 if(i != 3) { i = 3。 //4050 4100 3080 write_ds1302(0x8e,0x00)。i7。 //把最高位值0 允許ds1302工作 write_ds1302(0x8e,0x80)。 溫度程序設(shè)計(jì)單總線上最基本的操作有初始化、寫和讀3種,所有其它的操作都由這3種基本操作組合而成,初始化用于對總線上的器件進(jìn)行狀態(tài)復(fù)位,寫用于主節(jié)點(diǎn)向總線上寫入一位數(shù)據(jù),讀用于主節(jié)點(diǎn)從總線上讀取一位數(shù)據(jù)。具體程序設(shè)計(jì)如下:byte ow_r
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1