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

正文內(nèi)容

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

2024-07-24 13:25 本頁面
 

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