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

正文內(nèi)容

基于51單片機鬧鐘設(shè)計(參考版)

2025-01-21 14:52本頁面
  

【正文】 )Display(0,1,pow)。 //開根號 if(num==39。g39。)Display(0,1,ln) 。 if(num==39。c39。)Display(0,1,tan) 。 if(num==39。s39。s++) //賦值完成后把數(shù)組清零 temp[s]=0。 for(s=0。 } else //到下一個數(shù)據(jù)輸入時可以跳轉(zhuǎn)賦值給b sscanf(temp,%f,amp。a)。==num))//輸入數(shù)字最大值16,輸入符號表示輸入結(jié)束 { i=0。==num)||(39。==num)||(39。==num)||(39。==num) ||(39。==num) || (39。==num) ||(39。==num)|| (39。==num)||(39。==num)||(39。==num)||(i==16)||(39。 if((39。} else num=KeyChar。s++)temp[s]=0。 for(s=0。flag=0。//等待有鍵按下 KeyPress=0。 KeyPress=0。 unsigned char s。 //最大為十六位數(shù)字 bit flag。運算;小數(shù)點判斷;}}main(){Lcd初始化;開ps2中斷;While(1){fun();}} 源程序includeinclude //調(diào)用單值函數(shù)include include //包含sscanf和sprintfincludeincludevoid fun(){ unsigned char num=0,i=0,sign。//輸出數(shù)據(jù) i++。//輸出數(shù)據(jù) } } else { temp[i]=num。 } //這里沒有判斷連續(xù)按小數(shù)點, else { temp[0]=num。 DispOneChar(1,0,num)。) //如果是小數(shù)點則正常輸入,光標(biāo)位置加1 { temp[1]=39。) )//如果第一個字符是0,判讀第二個字符 { if(num==39。 (temp[0]==39。 if((1==i)amp。計算出來。 //檢測到輸入=號,判斷上次讀入的符合 switch(sign) {case sign:a(sign)b;break;} 單值函數(shù)計算:在輸入第一個數(shù)據(jù)后,可以進(jìn)一步判斷,如果輸入的為單值函數(shù)符號,如sin,tan,log等的時候,不須等待第二個數(shù)據(jù)的輸入,直接按39。) //判斷當(dāng)前符號位并做相應(yīng)處理 sign=num。==num)) if(num!=39。==num)||(39。==num)||(39。==num)||(39。==num) ||(39。==num) || (39。==num) ||(39。==num)|| (39。==num)||(39。==num)||(39。==num)||(i==16)||(39。2. 、雙值函數(shù)計算:在記錄第一個數(shù)據(jù)的同時記下按下的符號鍵,按下等于號后根據(jù)記錄下的符號鍵使用switch()語句開始計算:if((39。等待記錄第二個數(shù)據(jù),如果是等于1則記錄下第二個數(shù)據(jù)。s++) //賦值完成后把緩沖區(qū)清零,防止下次輸入影響結(jié)果 temp[s]=0。 for(s=0。 } else sscanf(temp,%f,amp。a)。三、功能實現(xiàn)數(shù)據(jù)輸入和記錄:要實現(xiàn)顯示,可先將數(shù)據(jù)先輸入并記錄到某一個數(shù)組tmp[]中,在液晶上顯示,等有符號和算法鍵按下后,記錄第一個數(shù)據(jù),并清空tmp[],開始記錄第二個數(shù)據(jù)。要想實現(xiàn)顯示和數(shù)據(jù)存儲,就必須用到數(shù)組,()和sprintf()函數(shù)接近完美的實現(xiàn)了數(shù)組和數(shù)據(jù)類型的轉(zhuǎn)換。 課題二:基于51單片機的計算器設(shè)計 材料材料:STC89C52單片機開發(fā)板一塊,1602液晶一片,ps2鍵盤,下載線,個人計算機編譯軟件:wave及keil下載程序軟件:STC專用下載串口軟件二、思路分析硬件:計算器的加減乘除對單片機來說本來不難,但是要結(jié)合硬件,實現(xiàn)顯示和輸入,必先熟悉PS2鍵盤和液晶的使用。當(dāng)然其間不得不承認(rèn)百度功能很強大,也請教了他很多不懂的地方,比如說編譯過程中的語法和其他錯誤問題。后來和其他同學(xué)對比,我的鬧鐘還是有優(yōu)勢的,但是他們還能設(shè)置時間,又定義了一項設(shè)置時間日期的功能。就只好加重單片機負(fù)擔(dān)不用硬件實現(xiàn),用軟件自己定義了一個鬧鐘函數(shù),用if語句掃描判斷,后來也加上了自己的一點小創(chuàng)意,在液晶上顯示Lazy Pig Get up。時間顯示只是第一步,但也算是一個關(guān)鍵,沒有時間就沒有鬧鐘。開始的時候無論怎么改變數(shù)組里面元素值,都是顯示一些看不懂得字符,后來我試探性的將每個元素都加上一個單引號,才在液晶上正常顯示了定義的數(shù)字,原來顯示的都是數(shù)值對應(yīng)的ASC碼。后來發(fā)現(xiàn)問題后,才真正開始編程,這讓我認(rèn)識到硬件不熟悉,編程能力再好,往往也無從下手的。 }} 七、心得體會從了解硬件到熟悉硬件及芯片功能,再到編程實現(xiàn)功能用時四天,真正的的編程時間實為兩天。} //屏蔽鬧鐘 if(flg==0)Led()。){flg=1。 } //關(guān)閉后不延時 if(KeyChar==39。 WrtLcdCmd(Clear)。KeyChar=0。_39。KeyChar=0。m39。KeyChar=0。DS12887_Week=1。j39。KeyChar=0。DS12887_Week+=1。w39。)Newtime()。 if(KeyChar==39。:39。)。 DispOneChar(5,1,39。39。 //屏蔽狀態(tài) if(flg==0)Display(0,0, $)。 //月 Date_Time[0]=DS12887_Year。 //星期 Date_Time[2]=DS12887_Day。 //分 Date_Time[4]=DS12887_Hour。 Date_Time[6]=DS12887_Sec。 //DS12887_Week=6。 //SetTime(9,15,34)。 //設(shè)外部中斷0為低電平觸發(fā) EX0 = 1。 Init12887()。} }}main(){ dely()。} else {DispOneChar(x,1,KeyChar)。LcdInit()。flg=0。} if(KeyChar==0x0EF) {KeyChar=39。} if(x10||x4){x=3。){x。} if(KeyChar==39。SetCursor(x,1)。 39。 //等待有鍵按下 KeyPress=0。 WrtLcdCmd(0x0E)。:39。)。 DispOneChar(5,1,39。y=0。 //清顯示 WrtLcdCmd(AllOn)。 KeyPress=0。 KeyChar=39。}Alrm(){ unsigned char x,y。 DispOneChar(9,1,Almtime[9])。 DispOneChar(6,1,Almtime[6])。}void disalm() //鬧鐘界面顯示{ DispOneChar(3,1,Almtime[3])。amp。amp。amp。break。Flag=1。break。KeyChar=0。Almtime[8]=Almtime[8]+1。939。) {Almtime[7]+=3。} //關(guān)閉鬧鐘 if(KeyChar==39。WrtLcdCmd(Clear)。Flag=1。t39。 Date_Time[6]=DS12887_Sec。Display(0,0, Lazy pig )。break。} //懶豬功能 if(Date_Time[6]/10==(Almtime[9]47)){D2=1。WrtLcdCmd(Clear)。}D2=1。){Almtime[7]=Almtime[7]10。if(Almtime[7]39。y39。break。KeyChar=0。){D2=1。 if(KeyChar==39。Display(4,1,Get up!)。D2==0) { D2=0。 while(Date_Time[5]%10==Almtime[7]48amp。 //dly1=Almtime[9]47。break。WrtLcdCmd(Clear)。 DS12887_Sec=(tmp[9]48)*10+tmp[10]48。)//Enter鍵 保存參數(shù) { DS12887_Hour=(tmp[3]48)*10+tmp[4]48。 } if(KeyChar==39。//掉頭 } if(x==5)x=6。 x++。) { tmp[x]=KeyChar。KeyChar!=39。amp。 if(KeyChar!=39。)。DispOneChar(8,1,39。:39。 KeyPress=0。 while(1) { SetCursor(x,y)。 x=3。 //清顯示()。 //顯示坐標(biāo) unsigned char tmp[12]。 if(Date_Time[3]==7) Display(5,0,Sat)。 if(Date_Time[3]==2) Display(5,0,Mon)。 if(Date_Time[3]==4) Display(5,0,Wed)。 //秒鐘}void week() //星期函數(shù){ if(Date_Time[3]==6) Display(5,0,Fri)。//分鐘 DispOneChar(9,1,(Date_Time[6]/10)+48)。 DispOneChar(6,1,(Date_Time[5]/10)+48)。//月份 DispOneChar(3,1,(Date_Time[4]/10)+48)。 //日期 DispOneChar(9,0,(Date_Time[1]/10)+48)。}void DisplayTime() //分離并顯示時間{ //取余運算,求得各位數(shù)字 DispOneChar(12,0,(Date_Time[2]/10)+48)。i200。}}void dely(){ unsigned char i。i200。//鬧鐘屏蔽標(biāo)志unsigned char Flag=1;//延時掃描標(biāo)志void delay(){ unsigned char i,j=200。unsigned char Date_Time[7]。_39。_39。:39。_39。_39。:39。_39。_39。 39。 39。 39。}其中,如果flg為1則不掃描Led()及autdly();五、整體結(jié)構(gòu)整個程序簡化后如下:時分秒調(diào)整();時間顯示();鬧鐘設(shè)置();亮燈();mian(){Lcd初始化;開ps2中斷;While(1){時間數(shù)組=DS12887_;時間顯示();日期及星期調(diào)整;時分秒調(diào)整();鬧鐘設(shè)置();亮燈();開關(guān)鬧鐘屏蔽;}} 源程序include //包含單片機寄存器的頭文件include //包含隨機函數(shù)rand()的定義文件include include //包含_nop_()函數(shù)定義的頭文件includeincludeincludesbit D2=P3^1。){flg=1。在主函數(shù)循環(huán)中可定義如下語句:if(KeyChar==39。p39。} }以上為第一次開始鬧鐘,一分鐘后通過語句 while(Date_Time[5]%10==(Almtime[7]47)),再次進(jìn)入鬧鐘實現(xiàn)如上一樣功能。WrtLcdCmd(Clear)。break。KeyChar=0。Almtime[8]=Almtime[8]+1。939。)
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1