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

正文內(nèi)容

單片機(jī)多功能數(shù)字電子時(shí)鐘設(shè)計(jì)畢業(yè)設(shè)計(jì)論文(編輯修改稿)

2024-07-24 13:25 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 **************1302寫數(shù)據(jù)子函數(shù)**************************/void write_1302(uchar addd,uchar dat){rst=0。 _nop_()。sck=0。_nop_()。rst=1。_nop_()。write_1302_byte(addd)。//發(fā)送地址write_1302_byte(dat)。//發(fā)送數(shù)據(jù)rst=0。} 從DS1302讀數(shù)據(jù)/***************************讀DS1302數(shù)據(jù)函數(shù)*************************/uchar read_1302(uchar add)//輸入地址add,返回讀取的數(shù)據(jù){uchar i,temp=0x00。rst=0。sck=0。rst=1。write_1302_byte(add)。for(i=0。i8。i++)//循環(huán)8次讀取{if(sda)temp|=0x80。//每次傳輸?shù)妥止?jié)等價(jià)于temp=temp|0x80sck=0。temp=1。//右移一位sck=1。 //sck被置高在其下一次變?yōu)?時(shí)數(shù)據(jù)被寫入}rst=0。//以下為DS1302復(fù)位的穩(wěn)定時(shí)間sck=0。sck=1。sda=0。sda=1。return(temp)。//將temp值返回} 顯示函數(shù)對(duì)1602進(jìn)行操作前要對(duì)其進(jìn)行初使化,初使化完成后它才能正常顯示。如果想在1602液晶的某一個(gè)位置顯示一個(gè)內(nèi)容,要先對(duì)其寫入一個(gè)指令,在什么地方顯示。然后再對(duì)其寫入一個(gè)數(shù)據(jù),要顯示什么內(nèi)容。對(duì)1602的液晶初使化,需要用寫入指令的方式完成。void write_(uchar ){lcdwr=0。 //lcdwr為讀寫控制端lcdwr=0,這里可不寫lcdrs=0。 //液晶rs接口為0時(shí),寫指令rs為1時(shí)寫數(shù)據(jù)P0=。 //將要寫的指令賦給P0口delay(5)。 //由1602讀寫操作時(shí)序圖先將指令賦給P0口延時(shí)后將使能lcden=1。 端lcden置高再延時(shí)一段時(shí)間然后將lcden置低這樣指令delay(5)。 就寫入到LCD了lcden=0。}void write_data(uchar date)與寫指令類似這里lcdrs設(shè)為1{lcdrs=1。P0=date。delay(5)。lcden=1。delay(5)。lcden=0。}此函數(shù)首先對(duì)液晶進(jìn)行初使化,使其處于待命狀態(tài),然后將時(shí)鐘框架顯示出來(lái):年、月、日、之間的“—”時(shí)分秒之間的“:”,還有世紀(jì)年的高兩位。void init_1602(){uchar num。lcdwr=0。lcden=0。write_(0x38)。//設(shè)置LCD為16*2顯示、5*7點(diǎn)陣、8位數(shù)據(jù)接口模式write_(0x0c)。//開(kāi)顯示、不顯示光標(biāo)write_(0x06)。//寫一個(gè)字符后地址指針加1write_(0x01)。//顯示清0write_(0x80)。//將指針指向初始位置for(num=0。num14。num++)//循環(huán)函數(shù)用于將 20 寫入液晶write_data(table[num])。write_(0x80+0x40+4)。//將指針指向1602液晶的第二行第四個(gè)字段for(num=0。num8。num++)//功能與上同用于將 : : 寫入write_data(table1[num])。} 如何在液晶上顯示時(shí)間、日期及周DS1302中的時(shí)間、日期等信息是以BCD碼的形式存放的,要先將從1302中讀取的數(shù)據(jù)轉(zhuǎn)化成10進(jìn)制,然后顯示在液晶上相應(yīng)的位置。/***************************顯示時(shí)間、日期子函數(shù)***********************/void write_sfm(uchar add,uchar time)//用于在1602上顯示年、月、日、時(shí)、分、秒。{ Add為顯示位置time為要顯示的內(nèi)容uchar shi,ge。shi=time/16。 //將從DS1302中讀取的BCD碼數(shù)據(jù)轉(zhuǎn)化成10進(jìn)制個(gè)位和10ge=time%16。 進(jìn)制十位write_(add+0x80)。//定義顯示在液晶的什么位置write_data(0x30+shi)。//由1602液晶字庫(kù)可知0~9的數(shù)據(jù)碼分別對(duì)應(yīng)0x30~0x39write_data(0x30+ge)。 //初使化中設(shè)定了寫一個(gè)字符后地址指針加1因此這里} 不用重新光標(biāo)定位/**************************顯示周子函數(shù)*******************************/void write_zhou(uchar time1)用于在1602上顯示周信息與顯示{ 時(shí)間日期子函數(shù)類似uchar ge。ge=time1%16。//一周七天因此只需個(gè)位write_(0x80+13)。write_data(0x30+ge)。}此電子時(shí)鐘共有4個(gè)按鍵SSS3與調(diào)時(shí)有關(guān)圖按鍵程序如圖11S4為12小時(shí)切換鍵S1功能鍵:在24小時(shí)顯示模式下該鍵被第一次按下后進(jìn)入秒調(diào)整液晶顯示器上的時(shí)間停止走動(dòng)。模式再次按下后進(jìn)入分調(diào)整模式接著是調(diào)時(shí)模式、調(diào)年模式、調(diào)月模式、調(diào)日模式、調(diào)周模式當(dāng)?shù)诎舜伟聪略撴I后退出S2 調(diào)整鍵:在調(diào)整模式下該鍵每按一次相應(yīng)時(shí)間或日期加1S3 確定鍵:在調(diào)整模式下該鍵被按下后退出調(diào)整模式并將調(diào)整后的時(shí)間、日期寫入DS1302S4 顯示模式調(diào)整鍵:用于對(duì)時(shí)間的12/24小時(shí)模式的切換 12/24小時(shí)顯示模式切換鍵時(shí)鐘默認(rèn)在24小時(shí)模式下運(yùn)行定義一個(gè)標(biāo)志位flag1。第一次按下切換鍵把瞬時(shí)時(shí)間轉(zhuǎn)化成12小時(shí)制令flag1=1。并寫入DS1302芯片此后DS1302芯片在12小時(shí)模式下運(yùn)行。第二次按下切換鍵即返回24小時(shí)顯示模式,令flag1=0,把瞬時(shí)時(shí)間轉(zhuǎn)化成24小時(shí)模式并寫入DS1302芯片。有關(guān)DS1302的時(shí)間寄存器存放形式參閱前文。如24小時(shí)模式下的22:00,存放的形式為00100010。12小時(shí)模式下的22點(diǎn),也就是10:00PM,存放形式為10110000,在切換的一瞬間,我們只需要把小時(shí)數(shù)據(jù)0xb0寫入到DS1302,這樣就能讓時(shí)鐘芯片在12小時(shí)模式下運(yùn)行了。需要注意的是,12小時(shí)模式下,只用到后5位來(lái)表示時(shí)間,第6位用來(lái)表示AM或PM信息,如果真接用24小時(shí)模式下的顯示方法是會(huì)出錯(cuò)的,這里我們需要對(duì)時(shí)進(jìn)行轉(zhuǎn)化。首先提取AM/PM信息,讓其顯示。然后提取其后5位時(shí)間,顯示時(shí)間。在主函數(shù)部分如果檢測(cè)到flag1=1,就進(jìn)行轉(zhuǎn)換。12轉(zhuǎn)24小進(jìn)模式與其類似,不再贅述。if(s1num==0amp。amp。s4==0)// 設(shè)置鍵沒(méi)被按下,且12/24小時(shí)模式切換鍵被按下后{delay(5)。if(s4==0){s2num++。while(!s4)。if(s2num==1)//24小時(shí)切換成12小時(shí){int ge,shi。flag1=1。hour=read_1302(0x85)。ge=hour%16。shi=hour/16。if(shi=1amp。amp。ge=1)//時(shí)小于12{if(shi==0amp。amp。ge==0)hour=0x92。else{hour=houramp。0x9f。 hour=hour+0x80。}}if(shi==1amp。amp。ge==2)//12點(diǎn){hour=hour+0x80。hour=hour+0x20。}if(shi=1amp。amp。ge=3amp。amp。ge=9)//13點(diǎn)~19點(diǎn){hour=hour0x12。hour=hour+0x80。hour=hour+0x20。}if(shi==2amp。amp。ge==0)//20點(diǎn){hour=0xa8。}if(shi==2amp。amp。ge==1)hour=0xa9。if(shi==2amp。amp。ge==2){hour=0xb0。}if(shi==2amp。amp。ge==3)hour=0xb1。write_1302(0x8e,0x00)。write_1302(0x84,hour)。write_1302(0x8e,0x80)。}if(s2num==2)//12小時(shí)切換成24小時(shí){int ap1,ap2。hour=read_1302(0x85)。ap1=houramp。0x20。// ap1=0時(shí) AM ,ap1!=0時(shí) PMap2=houramp。0x1f。if(ap1==0amp。amp。ap2!=0x12)//AM,且小時(shí)不等于12{hour=houramp。0x1f。}if(ap1==0amp。amp。ap2==0x12)//AM ,小時(shí)等于12即0點(diǎn){hour=0x00。}if(ap1!=0amp。amp。ap2==0x08)//下午8點(diǎn)轉(zhuǎn)化成20點(diǎn)hour=0x20。if(ap1!=0amp。amp。ap2==0x09)//下午9點(diǎn)轉(zhuǎn)化成21點(diǎn)hour=0x21。if(ap1!=0amp。amp。ap2!=0x08amp。amp。ap2!=0x09)//PM,且不是8點(diǎn)或9點(diǎn){hour=hour0xa0。hour=hour+0x12。}if(ap1!=0amp。amp。ap2==0x12)//12點(diǎn)PM也就是24小時(shí)模式下的12點(diǎn)hour=hour0xa0。write_1302(0x8e,0x00)。//把轉(zhuǎn)化成24小進(jìn)模式后的時(shí)寫入DS1302write_1302(0x84,hour)。write_1302(0x8e,0x80)。flag1=0。s2num=0。//按鍵次數(shù)清0}}} 功能鍵函數(shù)if(s1==0amp。amp。s2num==0)//如果S1被按下 當(dāng)在12小時(shí)模式下顯示時(shí)按此鍵無(wú)效{delay(5)。if(s1==0)//以上用于鍵盤消抖差小誤差{flag=1。//時(shí)鐘暫停標(biāo)志位flag=1時(shí)液晶時(shí)鐘計(jì)時(shí)暫停s1num++。//s1num表示按鍵被按下的次數(shù)按下次數(shù)加1while(!s1)。//松手后繼續(xù)執(zhí)行后面指令if(s1num==1)//如果S1按下一次秒的個(gè)位位置閃爍光標(biāo){write_(0x80+0x40+11)。write_(0x0f)。}if(s1num==2)//如果S1按下兩次先將設(shè)置后的秒
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1