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

正文內(nèi)容

基于stc89c52的數(shù)字電子時鐘設(shè)計-閱讀頁

2024-12-27 09:47本頁面
  

【正文】 C語言 ?也可以用 C語言來編寫 ,但一定要控制好時序 ? DSl8B20 數(shù)字溫度計提供 9 位 (二進(jìn)制 )溫度讀數(shù) ,指示器件的溫度信息經(jīng)過單線接口送入 DSl8B20 或從 DSl8B20 送出 ?因?yàn)槊恳粋€ DSl820 在出廠時已經(jīng)給定了唯一的序號 ,因此任意多個 DSl8B20 可以存放在同一條單線總線上 ,這允許在許多不同的地方放置溫度敏感器件 ?DSl8B20 的測量范圍從 55 到 +125,增量值為 可在 l s(典型值 )內(nèi)把溫度變換成數(shù)字量 ? 每一個 DSl8B20 包括一個唯一的 64 位長的序號該序號值存放在 DSl8B20 內(nèi)部的 ROM(只讀存貯器 )中 ,開始 8 位是產(chǎn)品類型編碼 (DSl8B20 編碼均為 10H),接著的 48 位是每 9 個器件唯一的序號 ,最后 8 位是前面 56位的 CRC(循環(huán)冗余校驗(yàn) )碼 ?DSl8B20 中還有用于貯存測得的溫度值的兩個 8位存貯器 RAM,編號為 0號和 1號 ,1 號存貯器存放溫度值的符號 ,如果溫度為負(fù)則 1 號存貯器 8 位全為 1,否則全為 0? 0 號存貯器用于存放溫度值的補(bǔ)碼 ,LSB(最低位 )的 1表示 ?將 存貯器中的二進(jìn)制數(shù)求補(bǔ)再轉(zhuǎn)換成十進(jìn)制數(shù)并除以 2就得到被測溫度值 (550 至 125)?每只 DS18B20 都可以設(shè)置成兩種供電方式 :即數(shù)據(jù)總線供電方式和外部供電方式 ?采取數(shù)據(jù)總線供電方式可以節(jié)省一根導(dǎo)線 ,但完成溫度測量的時間較長 。 ② 正常工作模式 :典型功耗 為 4mA— 7mA。 : ① 高抗靜電保護(hù) ,可輕松通過 4000V 快速脈沖干擾測試 。 ③ 電源 ?時鐘 ?復(fù)位電路 ?I/O 口電路經(jīng)過特殊處理 ,并且每個 I/O 口對電源 /對地二極管鉗位保護(hù) ,寬溫度范圍 ,0℃ — 75℃ 。外部時鐘頻率可降低一半 ,即單片機(jī)工作在 6T 模式 (每個機(jī)器周期 6時鐘 )。 STC89C516RD+的電路特性和管腳信息 STC89C516RD+單片機(jī)的電路特征為 : :增強(qiáng)型 8051 內(nèi)核 ,速度比普通 8051 快 812 倍 。 :0— 40MHZ,相當(dāng)于普通 8051 的 0— 80MHZ。 1024 字節(jié) RAM。 11 3個十六位計數(shù)器 (或計時 器 ),其中定時器 0 還可當(dāng)成 2個 8為定時器使用 。 STC89C516RD+芯片主要引腳信息如圖 21 所示: VCC403938373635343332EA31ALE/PROG30PSEG292827262524232221T2/1T2EX/2345678RST9RXD/10TXD/11INT0/12INT1/13T0/14T1/15WR/16RD/17XTAL218XTAL119VSS20 圖 21: STC89C516RD+管腳圖 12 : STC89C516RD+電源正極輸入 ,接 +5v 電壓 ? :接地引腳 ? :接外部晶振的一個引腳 ?它采用外部震蕩時 ,該引腳應(yīng)接地 ? :它采用外部震蕩時 ,此引腳接外部振蕩信號的輸入端 ? : STC89C516RD+的復(fù)位信號輸入引腳 ,高電位工作 ,當(dāng)要對芯片復(fù)位時 ,只要將此引腳電位提升到高電位 ,并持續(xù)兩個機(jī)器周期以上的時間 , STC89C516RD+便能完成系統(tǒng)復(fù)位的各項(xiàng)工作 ,使得內(nèi)部特殊功能寄存器的內(nèi)部均被設(shè)為己知狀態(tài) ? :地址鎖存允許信號 ?當(dāng)訪問外部存儲器時 ,地址鎖存允許的輸出電平用于鎖存地址的地址字節(jié) ?在 FLASH 編程器件 ,此引腳用于輸入編程脈沖 ? :內(nèi)外存儲器選擇引腳 ?該引腳接 低電平時 ,CPU 只訪問外部程序存儲器 。 ② TXD 串行通信輸出 。 ④ INT1 外部中斷 1輸入 ,低電平有效 。 ⑥ T1 計數(shù)器 1 外部事件計數(shù)輸入 端 。 ⑧ RD 外部隨機(jī)存儲器的讀選通 ,低電平有效 。 各中斷源的中斷處理程序入口地址如下表 21所示: 中斷源 入口地址 外部中斷 0 0003H 定時器 0 000BH 外部中斷 1 0013H 定時器 1 001BH 串行口 0023H 表 21 中斷控制 中斷的開放或禁止是由中斷允許寄存器 IE 控制的。 EA= 1,開放總中斷,而各個中斷源的中斷請求是允許還是禁止,分別由各自的中斷允許位確定; EA=0,禁止一切中斷。 和 ET0 分別是定時器 T1 和 T0 的中斷允許位。 以上五個中斷允許位的意義是: 0為禁止中斷 ,1為允許中斷。 STC89C516RD+單片機(jī)有高、低兩個中斷優(yōu)先級, 5個中斷源可由程序設(shè)置為高優(yōu)先級中斷或低優(yōu)先級中斷,實(shí)現(xiàn)二級中斷嵌套。STC89C516RD+單片機(jī)的 5 個中斷源的優(yōu)先級由中斷優(yōu)先級寄存器 IP 的相應(yīng)位設(shè)定。 和 PT0 分別是定時器 T1 和 T0 的中斷優(yōu)先級控制位。 中斷優(yōu)先級控制位的意義是: 0 為設(shè)定為低優(yōu)先級中斷源; 1 為設(shè)定為高優(yōu)先級中斷。 STC89C516RD+的定時系統(tǒng) 在控制系統(tǒng)中,常常要 求有一些實(shí)時時鐘以實(shí)現(xiàn)定時或延時控制,如定時中斷、定時檢測、定時掃描等等,也往往要求有計數(shù)器能對外部事件計數(shù)。 定時器的結(jié)構(gòu) STC89C516RD+單片機(jī)的定時器由計數(shù)器 0、計數(shù)器 方式控制寄存器和定時器控制寄存器組成。TH0、 TL0、 TH TL1 是不能位尋址的特殊功能寄存器,通過對 TH0、 TL0、 TH TL1 的初始化編程來控制 T0 和 T1 的計數(shù)初值。計數(shù)器是定時器 T0 和 T1 的核心,它可以對引線 T0和T1 來的外部事件計數(shù);也可以對單片機(jī)的機(jī)器周期計數(shù)。這樣,不但可以根據(jù)計數(shù)值計算出定時時間,也可以反過來按定時時間的要求計算出計數(shù)器的預(yù)置值。 定時器的工作方式 STC89C516RD+單片機(jī)的 T0 有方式 0、方式 方式 2 和方式 3 四種工作方式。 工作方式控制寄存器 TMOD 是不能位尋址的特殊功能寄存器,用于控制 T1 和 T0 的工作方式,各位的定義如下: GATE C/T M1 M0 GATE C/T M1 M0 15 的高半字節(jié)和低半字節(jié)的定義相同,高半字節(jié)用于控制 T1,低半字節(jié)用于控制 T0,其中, GATE 是門控位。 。 和 M0 是定時器的工作方式選擇位。 定時器相關(guān)的程序 /************************************************** 【定時器 T0】【 4】 :(1)uchar nian1=?,nian2=?,nian3=?,nian4=?, yue1=?,yue2=?,ri1=?,ri2=?, shi1=?,shi2=?,fen1=?,fen2=?, miao1=?,miao2=?,dmiao=?,dingshiqiT0=?。 TL0=(6553646044)%256。 if(dingshiqiT0==2){dmiao++。}//定時器 T0 進(jìn)位 if(dmiao==10){miao2++。}//分秒進(jìn)位 if(miao2==10)//秒 2 進(jìn)位 { yanchi(28)。 miao2=0。 TL0=(6553646044)%256。 fen2++。 TH0=(6553646044)/256。 } if(fen2==10)//分 2 進(jìn)位 { yanchi(8)。 fen2=0。 TL0=(6553646044)%256。fen1=0。}//時 2 進(jìn)位 if(shi1==2amp。shi2==4){ri2++。shi2=0。ri2=0。amp。amp。amp。ri1=0。}//日 1 進(jìn)位 if(ri1==3amp。ri2==0amp。yue1==0amp。yue2==2) if(pingrunnian(nian1,nian2,nian3,nian4)) {yue2++。ri2=1。amp。amp。ri1=0。}//日 1 進(jìn)位 if(ri1==3amp。ri2==2amp。pingrunyue(yue1,yue2)==1) {yue2++。ri2=1。yue2=0。amp。yue1=0。}//月 1 進(jìn)位 if(nian4==10){nian3++。}//年 4 進(jìn)位 if(nian3==10){nian2++。}//年 3 進(jìn)位 if(nian2==10){nian1++。}//年 2 進(jìn)位 } /*1*/void chushihuaT0()//定時器 T0 初始化函數(shù) { TMOD|=0x01。//定時器 T0 高字節(jié) TL0=(6553646044)%256。//CPU中斷允許 ET0=1。//定時器 T0 開始工作 } //計算某一日期是星期幾 /*2*/uchar *xingqi(uchar a[16],uchar nian1,uchar nian2,uchar nian3,uchar nian4, uchar yue1,uchar yue2,uchar ri1,uchar ri2) { long int cha=0,riqi=0。 riqi=riqi*10+nian2。 riqi=riqi*10+nian4。 riqi=riqi*10+yue2。 riqi=riqi*10+ri2。} else {cha=tianshucha(20211209,riqi),cha+=6,cha%=7。S39。u39。n39。.39。break。M39。o39。n39。.39。break。T39。u39。e39。s39。break。W39。e39。d39。.39。break。T39。h39。u39。r39。break。F39。r39。i39。.39。break。S39。a39。t39。.39。break。//返回字符數(shù)組 } /*3*/long int tianshucha(long int x,long int y)//計算日期 a 與日期 b 的天數(shù)差 { long int tianshucha=0。 uchar a=0,b=0,c=0,d=0。 nian2=y/10000。 while(nian1!=nian2) { a=nian1/1000。 c=nian1%100/10。 tianshucha+=365。 nian1++。 } /*4*/int dijitian(long int a)//計算日期 a 是該年的第幾天 { int nian=a/10000,ri=a%100,yiyue=1,yue=a%10000/100,dijitian=0。 while(yiyue!=yue) { if(yiyue==2) { dijitian+=28。 } else {dijitian+=30。} 18 yiyue++。 } /************************************************** 【定時器 T1】【 2】 :(1)uchar fen11=?,fen22=?,miao11=?, miao22=?,dmiaod=?,dingshiqiT1=?。 TL1=(6553646044)%256。 if(dingshiqiT1==2){dmiaod++。}//定時器 T1 進(jìn)位 if(dmiaod==10){miao22++。}//分秒進(jìn)位 if(miao22==10)//秒 2 進(jìn)位 { yanchi(28)。miao22=0。 TL1=(6553646044)%256。 fen22++。 TH1=(6553646044)/256。 } if(fen22==10)//分 2 進(jìn)位 { yanchi(8)。fen22=0。 TL1=(6553646044)%256。 } /*1*/void chushihuaT1()//定時器 T1 初始化函數(shù) (沒有開始工作 ) { TMOD|=0x10。//定時器 T1 高字節(jié) TL1=(6553646044)%256。//CPU中斷允許 ET1=1。 以下是定時器 T2 的兩個函數(shù) : **************************************************/ /*0*/void miaoT2() interrupt 5//定時器 T2 中斷函數(shù) { TF2=0。 TL2=(6553646044)%256。 if(dingshiqiT2==2){dmiaodd++。}//定時器 T2 進(jìn)位 if(dmiaodd
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1