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

正文內(nèi)容

基于單片機(jī)的多功能萬(wàn)年歷-預(yù)覽頁(yè)

 

【正文】 的1信號(hào)讀入后不一定是1。 RST(Pin9):?jiǎn)纹瑱C(jī)內(nèi)部CPU的復(fù)位信號(hào)輸入端。DS1302內(nèi)部有一個(gè)318的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。DS1302由Vcc1或Vcc2兩者中的較大者供電。RST是復(fù)位/片選線(xiàn),通過(guò)把RST輸入驅(qū)動(dòng)置高電平來(lái)啟動(dòng)所有的數(shù)據(jù)傳送。上電運(yùn)行時(shí),在Vcc,RST必須保持低電平。圖示為DS1302與單片機(jī)的連接電路: 如圖所示:DS18B20各引腳功能如下:216。 圖3 DS18B20溫度采集 電路原理及說(shuō)明(1) 時(shí)鐘芯片DS1302的工作原理: DS1302在每次進(jìn)行讀、寫(xiě)程序前都必須初始化,先把SCLK端置 “0”,接著把RST端置“1”,最后才給予SCLK脈沖;讀/寫(xiě)時(shí)序如下圖4所示。位0是讀/寫(xiě)操作位,進(jìn)行讀操作時(shí),該位為1;該位為0則表示進(jìn)行的是寫(xiě)操作。當(dāng)“WP”為1時(shí),寫(xiě)保護(hù)位防止對(duì)任一寄存器的寫(xiě)操作。如下圖4所示 圖4 DS1302讀/寫(xiě)時(shí)序圖(4) DS1302的寄存器DS1302有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式,其日歷、時(shí)間寄存器及其控制字見(jiàn)表2。 2. 溫度傳感器DS18B20的說(shuō)明(1)顯示模塊采用LCD1602,其電路圖如下:           引腳說(shuō)明:l Pin1:電源引腳l Pin2:接地引腳l Pin3:LCD驅(qū)動(dòng)電壓輸入,采用10K可調(diào)電位器與地相連l Pin4:RS=1,表示Pin7Pin14為顯示數(shù)據(jù);RS=0,表示Pin7Pin14為指令l Pin5:RW=1,數(shù)據(jù)被讀到Pin7Pin14;RW=0,數(shù)據(jù)被寫(xiě)到Pin7Pin14l Pin6:使能信號(hào)l Pin7Pin14:數(shù)據(jù)線(xiàn)l Pin15:背光正極l Pin16:背光負(fù)極控制時(shí)序表RSRWEPin7Pin14功能001輸入寫(xiě)指令代碼01下降沿輸出讀BF和AC值101輸入寫(xiě)顯示數(shù)據(jù)11下降沿輸出讀顯示數(shù)據(jù)報(bào)警模塊電路原理圖如下:由于本系統(tǒng)只需發(fā)出簡(jiǎn)單的聲音,因此采用了有源蜂鳴器,以減少程序的復(fù)雜程度。sfr ISP_ADDRL=0xe4。sbit bell=P1^0。sbit SCLK=P0^2。sbit ACC7=ACC^7。sbit keyup=P3^5。sbit DQ=P3^6。char ala[]=Alarm。uint ahour,aminute,asecond。 //說(shuō)明顯示的是溫度uchar code Error[]={Error!Check!}。void baoshi()。 0x18。 0x7f。 /* 打開(kāi) ISP,IAP 功能*/ ISP_TRIG = 0x46。/* 地址賦值*/ ISP_ADDRL = (unsigned char)(byte_addr amp。 /* 清除低3位 */ ISP_CMD = ISP_CMD | RdCommand。 /* 返回讀到的數(shù)據(jù)*/}void SectorErase(unsigned int sector_addr) /* =========== 扇區(qū)擦除 ============ */{ unsigned int iSectorAddr。 ISP_ADDRL = 0x00。 /* 擦除命令3 */ ISPgoon()。 0x00ff)。 /* 寫(xiě)命令2 */ ISP_DATA = original_data。 TEMP1=bitm。i7。0X01。x0。}/******************液晶寫(xiě)入************************/void Lcd(uchar )//液晶寫(xiě)入指令函數(shù){ RS=0。//拉高使能端 delay(1)。//送入數(shù)據(jù) delay(1)。}void write_hyear(){ uchar gw,sw。 Lcddat(0x30+sw)。 for(a=8。 SCLK=1。a0。 ACC=ACC1。 RST=1。 RST=0。 RST=1。 RST=0。 return(Decimal=Decimal*10+(bcdamp。 write_1302(0x80,miao)。 Lcd(row_2+add)。 alarm()。 sw=dat/10。Y39。N39。 Lcddat(0x30+gw)。)。 Lcddat(39。 case 2:Lcddat(39。U39。)。)。 Lcddat(39。 case 4:Lcddat(39。H39。)。)。 Lcddat(39。 case 6:Lcddat(39。A39。)。)。 Lcddat(39。 }}void lcd_init() //液晶初始化函數(shù){ RW=0。 //整屏不移動(dòng),指針加一 Lcd(0x01)。 Lcddat(0x30+hyear%10)。 Lcddat(0x30+nian%10)。)。)。)。)。 //延時(shí)5ms ,給硬件一點(diǎn)反應(yīng)時(shí)間 Lcd(0x38)。 //延時(shí)5ms ,給硬件一點(diǎn)反應(yīng)時(shí)間 Lcd(0x0c)。 //延時(shí)5ms ,給硬件一點(diǎn)反應(yīng)時(shí)間 Lcd(0x01)。 sw=dat/10。}void Akeyscan(){ if(Akey==0) { delay(3)。 Akeyn++。 Lcd(row_1)。 ahour=EEP_read(0x2400)。 Lcddat(0x30+ahour/10)。)。:39。 Lcd(row_2+5)。 break。 //設(shè)置光標(biāo)不閃爍 lcd_init()。 break。 if(ahour==24) ahour=0。 Lcd(row_2+0x05)。 SectorErase(0x2600)。 break。 EEP_write(0x2800,asecond)。 } } } if(keydown==0) { delay(5)。 SectorErase(0x2400)。 break。 EEP_write(0x2600,aminute)。 case 3: asecond。 lcdala(10,asecond)。 if(Tkey==0) { setled=0。 if(Tkeyn==10) Tkeyn=1。 //設(shè)置光標(biāo)為閃爍 Lcd(row_1+0x03)。 case 3: Lcd(row_1+0x08)。 case 5: Lcd(row_1+0x0f)。 case 7: Lcd(row_2+8)。 write_1302(0x8e,0x00)。 case 9: Lcd(0x0c)。 write_1302(0x8e,0x00)。 secled=0。 if(keyup==0) { while(keyup==0)。//擦除扇區(qū) EEP_write(0x2000,hyear)。 case 2:nian++。//重新寫(xiě)入數(shù)據(jù) write_nyr(4,nian)。 if(yue==13) yue=0。 write_1302(0x88,temp)。 case 4:ri++。(nian%4==0))) if(ri=30) ri=1。 write_1302(0x8e,0x00)。 break。 write_1302(0x8e,0x00)。 break。 temp=(shi)/10*16+(shi)%10。 Lcd(row_2+5)。 write_sfm(0x07,fen)。 write_1302(0x8e,0x80)。 if(miao==60) miao=0。 write_1302(0x80,0x80|temp)。 } } } if(keydown==0) { delay(5)。 SectorErase(0x2000)。 break。//擦除扇區(qū) EEP_write(0x2200,nian)。 case 3:yue。 write_1302(0x8e,0x00)。 break。 else if(yue==2) { if((nian%400==0)||((nian%400!=0)amp。 temp=(ri)/10*16+(ri)%10。 Lcd(row_1+11)。 write_week(week)。 Lcd(row_1+0x0f)。 write_sfm(4,shi)。 write_1302(0x8e,0x80)。 if(fen==1) fen=59。 write_1302(0x82,temp)。 case 8:miao。 write_1302(0x80,0x80|temp)。 //因?yàn)樵O(shè)置液晶的模式是寫(xiě)入數(shù)據(jù)后,指針自動(dòng)加一,在這里是寫(xiě)回原來(lái)的位置 break。 EA=1。 uchar i。i++) { delay(45)。i20。 } } if(ha==3) { for(i=0。 secled=~secled。 } } bell=1。miao==0) sound(0)。 ahour=EEP_read(0x2400)。amp。 Lcd(0x01)。i++) Lcddat(atime[i])。 TR0=1。time2。time200。time10。time200。 unsigned char dat。 // 先將數(shù)據(jù)線(xiàn)拉高 _nop_()。 //等待一個(gè)機(jī)器周期 DQ = 1。 //延時(shí)約6us,使主機(jī)在15us內(nèi)采樣 if(DQ==1) dat|=0x80。time++) 。 i8。 //將數(shù)據(jù)線(xiàn)從高拉低時(shí)即啟動(dòng)寫(xiě)時(shí)序 DQ=datamp。time++) 。time++) 。time++) 。 //從第一個(gè)字符開(kāi)始顯示 while(Error[i] != 39。 //指向下一個(gè)字符 delay(100)。 //寫(xiě)顯示地址,將在第1行第1列開(kāi)始顯示 i = 0。 //將字符常量寫(xiě)入LCD i++。.39。 Lcd(row_2+0x0c)。) //只要沒(méi)有寫(xiě)到結(jié)束標(biāo)志,就繼續(xù)寫(xiě) { Lcddat(Cent[i])。 //k,l分別儲(chǔ)存溫度的十位和個(gè)位 k=(x%100)/10。 //將十位數(shù)字的字符常量寫(xiě)入LCD Lcddat(digit[l])。 //將小數(shù)部分的第一位數(shù)字字符常量寫(xiě)入LCD delay(50)。 // 啟動(dòng)溫度轉(zhuǎn)換 for(time=0。 //將DS18B20初始化 WriteOneChar(0xCC)。 //儲(chǔ)存暫存器的溫度高位 uchar TN。 //延時(shí)5ms給硬件一點(diǎn)反應(yīng)時(shí)間 if(Init_DS18B20()==1) display_error()。 //顯示溫度的單位 while(1) //不斷檢測(cè)并顯示溫度 { ReadyReadTemp()。 //實(shí)際溫度值=(TH*256+TL)/16,即:TH*16+TL/16 //這樣得出的是溫度的整數(shù)部分,小數(shù)部分被丟棄了 TD=(TL%16)*10/16。 } }void Tempscan(){ if(Ckey==0) { delay(5)。 setled=1。 while(1) { Tkeyscan()。 fen = BCD_Decimal(read_1302(0x
點(diǎn)擊復(fù)制文檔內(nèi)容
職業(yè)教育相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1