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

正文內(nèi)容

基于51單片機(jī)鬧鐘設(shè)計(jì)-閱讀頁

2025-02-02 14:52本頁面
  

【正文】 ..}整個(gè)時(shí)間顯示結(jié)構(gòu)如下:mian(){SetTime( );SetDate();While(1){Date_Time[i]=DS12887_...;week()。w39。DS12887_Week+=1。KeyChar=0。j39。DS12887_Week=1。KeyChar=0。月份的調(diào)整要簡(jiǎn)單些 if(KeyChar==39。){DS12887_Mon+=1。} //設(shè)置新月份 if(KeyChar==39。){DS12887_Mon=1。}時(shí)分秒的調(diào)整由于變量太多,可設(shè)置跳入另一界面實(shí)現(xiàn),如果有‘s’鍵按下,則進(jìn)入另一界面設(shè)置時(shí)間, 在Newtime()中調(diào)整時(shí)間,以‘b’跳回主函數(shù),函數(shù)從新設(shè)置的時(shí)間開始執(zhí)行。在主函數(shù)循環(huán)中,如果按下回車鍵,進(jìn)入鬧鐘設(shè)置界面,用一個(gè)全局變量數(shù)組Almtime[]記錄所設(shè)置的鬧鐘時(shí)分秒,回車鍵后返回主界面,在原來顯示“$X”的地方顯示“$”及腦中打開。如果到了設(shè)置時(shí)間,則開始鬧鐘, D2=0。并進(jìn)入自動(dòng)延時(shí)狀態(tài),如果有‘t’鍵按下,關(guān)閉鬧鐘,否則自動(dòng)延時(shí)10秒后開始滅燈返回主界面,一分鐘后繼續(xù)開始鬧鐘。y39。具體實(shí)現(xiàn)如下: while(Date_Time[5]%10==Almtime[7]48amp。D2==0) { D2=0。Display(4,1,Get up!)。 if(KeyChar==39。){D2=1。KeyChar=0。break。y39。if(Almtime[7]39。){Almtime[7]=Almtime[7]10。}D2=1。WrtLcdCmd(Clear)。} //懶豬功能 if(Date_Time[6]/10==(Almtime[9]47)){D2=1。break。鬧鐘的屏蔽樣如果想屏蔽鬧鐘功能,按下39。鍵,將鬧鐘屏蔽,屏蔽后,不掃描Led()及其autdly()函數(shù),同時(shí)顯示“$X”。p39。KeyChar=0。unsigned char Almtime[15]={39。,39。,39。,39。,39。,39。,39。,39。,39。,39。,39。}。unsigned char flg=1。 for(i=0。i++) while(j) {j。 for(i=0。i++) delay()。 DispOneChar(13,0,(Date_Time[2]%10)+48)。 DispOneChar(10,0,(Date_Time[1]%10)+48)。 //小時(shí) DispOneChar(4,1,(Date_Time[4]%10)+48)。 DispOneChar(7,1,(Date_Time[5]%10)+48)。 DispOneChar(10,1,(Date_Time[6]%10)+48)。 if(Date_Time[3]==5) Display(5,0,Thu)。 if(Date_Time[3]==3) Display(5,0,Tue)。 if(Date_Time[3]==1) Display(5,0,Sun)。}void Newtime() //新事件設(shè)置{ unsigned char x,y。//用于暫存 WrtLcdCmd(Clear)。 WrtLcdCmd(AllOn)。y=1。 while(KeyPress==0)。//按鍵標(biāo)識(shí)清零 DispOneChar(5,1,39。)。:39。 Display(0,0,Time set:)。b39。amp。s39。 DispOneChar(x,y,KeyChar)。 if(x==11) { x=3。 if(x==8)x=9。b39。 DS12887_Min=(tmp[6]48)*10+tmp[7]48。 LcdInit()。KeyChar=0。 } }}void autdly() //自動(dòng)延時(shí){ //unsigned char dly1,dly2。dly2=Almtime[7]47。amp。Display(0,0, Lazy pig )。 Date_Time[6]=DS12887_Sec。t39。Flag=1。WrtLcdCmd(Clear)。} //關(guān)閉鬧鐘 if(KeyChar==39。) {Almtime[7]+=3。939。Almtime[8]=Almtime[8]+1。KeyChar=0。break。WrtLcdCmd(Clear)。} } while(Date_Time[5]%10==(Almtime[7]47)) //如果沒有關(guān),一分鐘后再鬧 { D2=0。Display(4,1,Get up!)。 if(KeyChar==39。){D2=1。KeyChar=0。break。y39。if(Almtime[7]39。){Almtime[7]=Almtime[7]10。}D2=1。WrtLcdCmd(Clear)。} //懶豬功能 if(Date_Time[6]/10==(Almtime[9]47)){D2=1。WrtLcdCmd(Clear)。} //10秒后關(guān) }}void Led() //亮燈{ if((Almtime[10]48)==Date_Time[6]%10amp。(Almtime[9]48)==Date_Time[6]/10) if((Almtime[7]48)==Date_Time[5]%10amp。(Almtime[6]48)==Date_Time[5]/10) if((Almtime[4]48)==Date_Time[4]%10amp。(Almtime[3]48)==Date_Time[4]/10) D2=0。 DispOneChar(4,1,Almtime[4])。 DispOneChar(7,1,Almtime[7])。 DispOneChar(10,1,Almtime[10])。 //顯示坐標(biāo) //dely()。39。 WrtLcdCmd(Clear)。 x=3。 while(1) { Display(0,0,Alarm set:)。:39。 DispOneChar(8,1,39。)。 while(KeyPress==0)disalm()。//按鍵標(biāo)識(shí)清零 if(KeyChar==39。){x++。 WrtLcdCmd(0x0F)。39。SetCursor(x,1)。SetCursor(x,1)。39。Flag=0。break。Almtime[x]=KeyChar。 LcdInit()。 IT0 = 0。 //開中斷0 EA = 1。 //SetDate(2011,8,26)。 while(1) { week()。 //秒 Date_Time[5]=DS12887_Min。 //時(shí) Date_Time[3]=DS12887_Week 。 //日 Date_Time[1]=DS12887_Mon。 //定義時(shí)間數(shù)組并設(shè)定初始值 if(flg==1)Display(0,0, $x)。 //開啟狀態(tài) DispOneChar(11,0,39。)。:39。 DispOneChar(8,1,39。)。s39。 //設(shè)置新時(shí)間 if(KeyChar==39。){DS12887_Day+=1。if(DS12887_Week7) DS12887_Week=1。} //設(shè)置新日期 if(KeyChar==39。){DS12887_Day=1。if(DS12887_Week1) DS12887_Week=7。} if(KeyChar==39。){DS12887_Mon+=1。} //設(shè)置新月份 if(KeyChar==39。){DS12887_Mon=1。} if(KeyChar==0xef){Alrm()。} //設(shè)置鬧鐘 if(Flag==0){autdly()。p39。KeyChar=0。 //flg=0時(shí)掃描鬧鐘時(shí)間 DisplayTime()。印象很深的是,頭兩天很不熟悉硬件開發(fā)板,忘了給下面的板子上電,時(shí)鐘芯片的時(shí)間不能調(diào)出來給單片機(jī),導(dǎo)致不論怎樣改編程序,都顯示同一個(gè)時(shí)間,而且是一些看不懂得亂碼。至于亂碼問題,也想了很久,定義的時(shí)間的數(shù)組中,開始賦值的都是一些數(shù)值,而實(shí)際上調(diào)用函數(shù)Display()和DispOneChar()都必須是char字符型。分離后我想到數(shù)字跟ASC碼相隔48,所以在分離的時(shí)候特意用了Date_Time[i]/10)+48(Date_Time[i]%10)+48;達(dá)到正常顯示數(shù)字對(duì)應(yīng)的ASC碼的目的。本來先調(diào)用頭文件中的SetAlarm()函數(shù)實(shí)現(xiàn)鬧鐘功能,不好當(dāng)成鬧鐘使用。之后定義的Flg和flg兩個(gè)全局變量幫我很好的實(shí)現(xiàn)了自動(dòng)延時(shí)和鬧鐘屏蔽等功能,覺得自己的想法都得到了實(shí)現(xiàn),小有成就感。總之從1602液晶到ps2鍵盤再到12C887都是第一次接觸,能在幾天內(nèi)用軟件程序把它們結(jié)合起來,實(shí)現(xiàn)一個(gè)多功能鬧鐘,自己覺得還是收獲不小的。由于時(shí)間有限,還要編一個(gè)計(jì)算器,設(shè)想好的實(shí)現(xiàn)多個(gè)鬧鐘的功能未能實(shí)現(xiàn),有點(diǎn)小遺憾,不過有時(shí)間,還是會(huì)想一想的。算法問題:考慮到計(jì)算器有小數(shù)運(yùn)算問題,數(shù)據(jù)類型可以選用float浮點(diǎn)型。要實(shí)現(xiàn)都功能,就得有單值函數(shù)的計(jì)算,如三角函數(shù),log、ln等等。具體實(shí)現(xiàn)如下if(firstflag==0) //如果是輸入的第一個(gè)數(shù)據(jù),賦值給a,并把標(biāo)志位置1,到下一個(gè)數(shù)據(jù)輸入時(shí)可以跳轉(zhuǎn)賦值給b { sscanf(temp,%f,amp。 firstflag=1。b)。s16。其中firstflag起到標(biāo)志第幾個(gè)數(shù)據(jù)的作用,如果firstflag等于0,就用while(KeyPress==0)。按下‘=’開始計(jì)算。c39。+39。39。*39。/39。l39。t39。s39。g39。p39。=39。=39。 //如果不是等號(hào)記下標(biāo)志位 else { firstflag=0。=39。即: switch(sign) {case sign:sign(a);break;} 小數(shù)和頭數(shù)字點(diǎn)處理:在輸入的過程中,必須判斷小數(shù)點(diǎn)的位置,特別是第一位的時(shí)候,如果是0,則需判斷第二位是否是小數(shù)點(diǎn)。amp。039。.39。.39。//輸出數(shù)據(jù) i++。 //如果是19數(shù)字,說明0沒有用,則直接替換第一位0 DispOneChar(0,0,num)。 DispOneChar(i,0,num)。 //輸入數(shù)值累加 } 整體結(jié)構(gòu)程序結(jié)構(gòu)如下:void fun(){ while(1){記錄數(shù)據(jù)a;記錄數(shù)據(jù)b;單值符號(hào)判斷;雙值判斷。 unsigned char temp[16]。 float a=0,b=0。 WrtLcdCmd(Clear)。 while(1) { while(KeyPress==0)。//按鍵標(biāo)識(shí)清零 if(KeyChar==0x0ef) {sign=0。a=b=0。s16。break。 if(i==0) //輸入是第一個(gè)數(shù)字,清空 WrtLcdCmd(Clear)。c39。+39。39。*39。/39。l39。t39。s39。g39。p39。=39。 //計(jì)數(shù)器復(fù)位 if(flag==0) //如果是輸入的第一個(gè)數(shù)據(jù),賦值給a,并把標(biāo)志位置1 { sscanf(temp,%f,amp。 flag=1。b)。s16。 if(num==39。)Display(0,1,sin) 。t39。 if(num==39。)Display(0,1,cos) 。l39。 if(num==39。)Display(0,1,sqrt) 。p39。 //x的y次方 else DispOneChar(0,1,nu
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1