LED流水燈設(shè)計(jì)-微型計(jì)算機(jī)及控制技術(shù)實(shí)訓(xùn)_第1頁
LED流水燈設(shè)計(jì)-微型計(jì)算機(jī)及控制技術(shù)實(shí)訓(xùn)_第2頁
LED流水燈設(shè)計(jì)-微型計(jì)算機(jī)及控制技術(shù)實(shí)訓(xùn)_第3頁
LED流水燈設(shè)計(jì)-微型計(jì)算機(jī)及控制技術(shù)實(shí)訓(xùn)_第4頁
LED流水燈設(shè)計(jì)-微型計(jì)算機(jī)及控制技術(shù)實(shí)訓(xùn)_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

微型計(jì)算機(jī)及控制技術(shù)實(shí)訓(xùn)班級(jí):姓名:學(xué)號(hào):實(shí)驗(yàn)一:LED流水燈設(shè)計(jì)設(shè)計(jì)目的通過此次涉及、熟悉并掌握實(shí)驗(yàn)系統(tǒng)原理和方法掌握流水燈原理和使用方法設(shè)計(jì)過程設(shè)計(jì)內(nèi)容了解LED發(fā)光二極管的順序滅了解LED的使用原理和引腳接法掌握實(shí)用Keil環(huán)境編程掌握下載Keil編譯好的稱序列AT89C51單片機(jī)中實(shí)驗(yàn)步驟掌握AT89C51單片機(jī)與外設(shè)LED的引腳接法和使用原理使用Keil編譯環(huán)境,編寫LED發(fā)光二極管順序滅的程序在Keil編譯好的程序下載到AT89c51單片機(jī)中,實(shí)現(xiàn)LED發(fā)光二極管順序滅電路及程序設(shè)計(jì)電路設(shè)計(jì)編程如下org0 sjmpstart org30hstart: movP1,#1 ;P1.0為1,不亮 movP1,#2 ;P1.1為1,不亮 movP1,#4 ;以下原理同上 movP1,#8 movP1,#10h movP1,#20h movP1,#40h movP1,#80h sjmpstartdelay: nop nop nop nop ret end設(shè)計(jì)結(jié)果如上圖:D7亮了。如上圖:D3亮了。實(shí)驗(yàn)二8*8點(diǎn)陣的設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康模毫私恻c(diǎn)陣式LED顯示原理。2.掌握單片機(jī)與8×8點(diǎn)陣塊之間接口電路設(shè)計(jì)及編程。3.掌握8155工作原理及與單片機(jī)的接口電路設(shè)計(jì)。二、實(shí)驗(yàn)要求:利用8×8點(diǎn)陣顯示屏,自己設(shè)計(jì)并調(diào)試電路板,實(shí)現(xiàn)在單片機(jī)的控制下,點(diǎn)陣顯示屏顯示數(shù)字。實(shí)驗(yàn)步驟:1、實(shí)驗(yàn)電路圖2、編碼程序:#include<reg52.h>#include<intrins.h> #defineucharunsignedchar#defineuintunsignedintuchari=0,n,k;ucharcodeTable[][8]={ {~0x00,~0x00,~0x3C,~0x42,~0x42,~0x3C,~0x00,~0x00}, {~0x00,~0x00,~0x00,~0x22,~0x7E,~0x02,~0x00,~0x00}, {~0x00,~0x00,~0x22,~0x46,~0x4A,~0x32,~0x00,~0x00}, {~0x00,~0x00,~0x22,~0x49,~0x49,~0x36,~0x00,~0x00}, {~0x00,~0x00,~0x18,~0x28,~0x7E,~0x08,~0x00,~0x00}, {~0x00,~0x00,~0x7A,~0x29,~0x29,~0x2E,~0x00,~0x00}, {~0x00,~0x00,~0x3E,~0x49,~0x49,~0x26,~0x00,~0x00}, {~0x00,~0x00,~0x40,~0x4F,~0x50,~0x60,~0x00,~0x00}, {~0x00,~0x00,~0x36,~0x49,~0x49,~0x36,~0x00,~0x00}, {~0x00,~0x00,~0x32,~0x49,~0x49,~0x3E,~0x00,~0x00}, {~0x91,~0x52,~0x00,~0xA4,~0xF5,~0xBF,~0xF4,~0xA4}, {~0x11,~0x13,~0x55,~0x51,~0x55,~0x12,~0x11,~0x00}, };ucharcodeTab[]={~0xfe,~0xfd,~0xfb,~0xf7,~0xef,~0xdf,~0xbf,~0x7f}; voiddelay(uinti); voidmain(){ TMOD=0x00; TH0=(8192-3000)/32; TL0=(8192-3000)%32; TR0=1; EA=1; ET0=1; while(1) { n=4; }}voidT0_ISP(void)interrupt1 { TH0=(8192-3000)/32; TL0=(8192-3000)%32; P3=Tab[k++]; if(k==8)k=0; P0=Table[n][i]; if(++i==8)i=0; }voiddelay(uinti){ while(i--);}3、實(shí)驗(yàn)結(jié)果:實(shí)驗(yàn)三:矩陣鍵盤的設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康模?、掌握鍵盤接口的基本特點(diǎn),了解獨(dú)立鍵盤和矩陣鍵盤的應(yīng)用方法。2、掌握鍵盤接口的硬件設(shè)計(jì)方法,軟件程序設(shè)計(jì)和貼士排錯(cuò)能力。3、復(fù)習(xí)利用Keil51軟件對(duì)程序進(jìn)行編譯。4、用Proteus軟件繪制“矩陣鍵盤掃描”電路,并用測(cè)試程序進(jìn)行仿真。二、實(shí)驗(yàn)要求

通過實(shí)訓(xùn),學(xué)生應(yīng)達(dá)到以下幾方面的要求:(1)素質(zhì)要求1.以積極認(rèn)真的態(tài)度對(duì)待本次實(shí)訓(xùn),遵章守紀(jì)、團(tuán)結(jié)協(xié)作。

2.善于發(fā)現(xiàn)數(shù)字電路中存在的問題、分析問題、解決問題,努力培養(yǎng)獨(dú)立工作能力。

(2)能力要求

1.模擬電路的理論知識(shí)

2.脈沖與數(shù)字電路的理念知識(shí)

3.通過模擬、數(shù)字電路實(shí)驗(yàn)有一定的動(dòng)手能力

4.能熟練的編寫8951單片機(jī)匯編程序

5.能夠熟練的運(yùn)用仿真軟件進(jìn)行仿真

三、實(shí)訓(xùn)基本步驟

1、用Proteus繪制“矩陣鍵盤掃描”電路原理圖。2、編寫程序使數(shù)碼管顯示當(dāng)前閉合按鍵的鍵值。(代碼)#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintuchar code dis[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0X88,0X83,0XC6,0XA1,0X86,0X8E};ucharcodetab[]={0x77,0xb7,0xd7,0xe7,0x7b,0xbb,0xdb,0xeb,0x7d,0xbd,0xdd,0xed,0x7e,0xbe,0xde,0xee};voiddelay(uintx){ uchar i; while(x--) for(i=0;i<120;i++);}ucharscan(){ uchara,b,c,i; P2=0XF0; delay(10); P2=0X0F; for(i=0;i<16;i++) if(c==tab[i]) returni;}voidmain(){ uchar key; while(1) { key=scan(); if(key!=-1) { P0=dis[key]; delay(100); } }}利用Proteus軟件的仿真功能對(duì)其進(jìn)行仿真測(cè)試,觀察數(shù)碼管的顯示狀態(tài)和按鍵開關(guān)的對(duì)應(yīng)關(guān)系。(實(shí)驗(yàn)結(jié)束)如上圖:當(dāng)K7被按下時(shí),數(shù)碼管上顯示出數(shù)字7了。實(shí)驗(yàn)四:電子時(shí)鐘設(shè)計(jì)一、設(shè)計(jì)目的通過此次設(shè)計(jì),熟悉并掌握實(shí)驗(yàn)系統(tǒng)的原理和方法。掌握電子時(shí)鐘的原理和使用方法。二、設(shè)計(jì)要求1、設(shè)計(jì)一個(gè)電子時(shí)鐘,并且能夠?qū)崿F(xiàn)分秒實(shí)現(xiàn)的和調(diào)節(jié)。2、設(shè)計(jì)出硬件電路、3、設(shè)計(jì)出軟件編程方法,并寫出程序。4、用匯編語言實(shí)現(xiàn)程序設(shè)計(jì)5、利用查表,中斷等方式實(shí)現(xiàn)目的三、電路程序設(shè)計(jì)1、電路設(shè)計(jì)編碼程序#include<REG51.H>#include<intrins.h>//#include"LCD1602.h"http://#include"DS1302.h"#defineuintunsignedint#defineucharunsignedcharsbitDS1302_CLK=P1^7;//實(shí)時(shí)時(shí)鐘時(shí)鐘線引腳sbitDS1302_IO=P1^6;//實(shí)時(shí)時(shí)鐘數(shù)據(jù)線引腳sbitDS1302_RST=P1^5;//實(shí)時(shí)時(shí)鐘復(fù)位線引腳sbitACC0=ACC^0;sbitACC7=ACC^7;charhide_sec,hide_min,hide_hour,hide_day,hide_week,hide_month,hide_year;//秒,分,時(shí)到日,月,年位閃的計(jì)數(shù)sbitSet=P2^0;//模式切換鍵sbitUp=P2^1;//加法按鈕sbitDown=P2^2;//減法按鈕sbitout=P2^3;//立刻跳出調(diào)整模式按鈕chardone,count,temp,flag,up_flag,down_flag;ucharTempBuffer[5],week_value[2];voidshow_time();//液晶顯示程序/***********1602液晶顯示部分子程序****************///PortDefinitions**********************************************************sbitLcdRs =P2^5;sbitLcdRw =P2^6;sbitLcdEn =P2^7;sfrDBPort =0x80; //P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.數(shù)據(jù)端口//內(nèi)部等待函數(shù)**************************************************************************unsignedcharLCD_Wait(void){LcdRs=0;LcdRw=1; _nop_();LcdEn=1; _nop_(); LcdEn=0;returnDBPort; }//向LCD寫入命令或數(shù)據(jù)************************************************************#defineLCD_COMMAND 0//Command#defineLCD_DATA 1//Data#defineLCD_CLEAR_SCREEN 0x01//清屏#defineLCD_HOMING 0x02//光標(biāo)返回原點(diǎn)voidLCD_Write(bitstyle,unsignedcharinput){LcdEn=0;LcdRs=style;LcdRw=0; _nop_();DBPort=input; _nop_();//注意順序LcdEn=1; _nop_();//注意順序LcdEn=0; _nop_();LCD_Wait(); }//設(shè)置顯示模式************************************************************#defineLCD_SHOW 0x04//顯示開#defineLCD_HIDE 0x00//顯示關(guān) #defineLCD_CURSOR 0x02 //顯示光標(biāo)#defineLCD_NO_CURSOR 0x00//無光標(biāo) #defineLCD_FLASH 0x01//光標(biāo)閃動(dòng)#defineLCD_NO_FLASH 0x00//光標(biāo)不閃動(dòng)voidLCD_SetDisplay(unsignedcharDisplayMode){LCD_Write(LCD_COMMAND,0x08|DisplayMode); }//設(shè)置輸入模式************************************************************#defineLCD_AC_UP 0x02#defineLCD_AC_DOWN 0x00//default#defineLCD_MOVE 0x01//畫面可平移#defineLCD_NO_MOVE 0x00//defaultvoidLCD_SetInput(unsignedcharInputMode){LCD_Write(LCD_COMMAND,0x04|InputMode);}//初始化LCD************************************************************voidLCD_Initial(){LcdEn=0; LCD_Write(LCD_COMMAND,0x38);//8位數(shù)據(jù)端口,2行顯示,5*7點(diǎn)陣 LCD_Write(LCD_COMMAND,0x38); LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);//開啟顯示,無光標(biāo) LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);//清屏 LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);//AC遞增,畫面不動(dòng)}//液晶字符輸入的位置************************voidGotoXY(unsignedcharx,unsignedchary){if(y==0)LCD_Write(LCD_COMMAND,0x80|x); if(y==1)LCD_Write(LCD_COMMAND,0x80|(x-0x40));}//將字符輸出到液晶顯示voidPrint(unsignedchar*str){while(*str!='\0') {LCD_Write(LCD_DATA,*str);str++;}}/***********DS1302時(shí)鐘部分子程序******************/typedefstruct__SYSTEMTIME__{ unsignedcharSecond; unsignedcharMinute; unsignedcharHour; unsignedcharWeek; unsignedcharDay; unsignedcharMonth; unsignedcharYear; unsignedcharDateString[11]; unsignedcharTimeString[9];}SYSTEMTIME; //定義的時(shí)間類型SYSTEMTIMECurrentTime;#defineAM(X) X#definePM(X) (X+12) //轉(zhuǎn)成24小時(shí)制#defineDS1302_SECOND 0x80//時(shí)鐘芯片的寄存器位置,存放時(shí)間#defineDS1302_MINUTE 0x82#defineDS1302_HOUR 0x84#defineDS1302_WEEK 0x8A#defineDS1302_DAY 0x86#defineDS1302_MONTH 0x88#defineDS1302_YEAR 0x8CvoidDS1302InputByte(unsignedchard) //實(shí)時(shí)時(shí)鐘寫入一字節(jié)(內(nèi)部函數(shù)){unsignedchari;ACC=d;for(i=8;i>0;i--){DS1302_IO=ACC0; //相當(dāng)于匯編中的RRCDS1302_CLK=1;DS1302_CLK=0;ACC=ACC>>1;}}unsignedcharDS1302OutputByte(void) //實(shí)時(shí)時(shí)鐘讀取一字節(jié)(內(nèi)部函數(shù)){unsignedchari;for(i=8;i>0;i--){ACC=ACC>>1; //相當(dāng)于匯編中的RRCACC7=DS1302_IO;DS1302_CLK=1;DS1302_CLK=0;}return(ACC);}voidWrite1302(unsignedcharucAddr,unsignedcharucDa) //ucAddr:DS1302地址,ucData:要寫的數(shù)據(jù){DS1302_RST=0;DS1302_CLK=0;DS1302_RST=1;DS1302InputByte(ucAddr); //地址,命令DS1302InputByte(ucDa); //寫1Byte數(shù)據(jù)DS1302_CLK=1;DS1302_RST=0;}unsignedcharRead1302(unsignedcharucAddr) //讀取DS1302某地址的數(shù)據(jù){unsignedcharucData;DS1302_RST=0;DS1302_CLK=0;DS1302_RST=1;DS1302InputByte(ucAddr|0x01);//地址,命令ucData=DS1302OutputByte();//讀1Byte數(shù)據(jù)DS1302_CLK=1;DS1302_RST=0;return(ucData);}voidDS1302_GetTime(SYSTEMTIME*Time)//獲取時(shí)鐘芯片的時(shí)鐘數(shù)據(jù)到自定義的結(jié)構(gòu)型數(shù)組{unsignedcharReadValue; ReadValue=Read1302(DS1302_SECOND); Time->Second=((ReadValue&0x70)>>4)*10+(ReadValue&0x0F); ReadValue=Read1302(DS1302_MINUTE); Time->Minute=((ReadValue&0x70)>>4)*10+(ReadValue&0x0F); ReadValue=Read1302(DS1302_HOUR); Time->Hour=((ReadValue&0x70)>>4)*10+(ReadValue&0x0F); ReadValue=Read1302(DS1302_DAY); Time->Day=((ReadValue&0x70)>>4)*10+(ReadValue&0x0F); ReadValue=Read1302(DS1302_WEEK); Time->Week=((ReadValue&0x70)>>4)*10+(ReadValue&0x0F); ReadValue=Read1302(DS1302_MONTH); Time->Month=((ReadValue&0x70)>>4)*10+(ReadValue&0x0F); ReadValue=Read1302(DS1302_YEAR); Time->Year=((ReadValue&0x70)>>4)*10+(ReadValue&0x0F); }voidDateToStr(SYSTEMTIME*Time)//將時(shí)間年,月,日,星期數(shù)據(jù)轉(zhuǎn)換成液晶顯示字符串,放到數(shù)組里DateString[]{if(hide_year<2)//這里的if,else語句都是判斷位閃爍,<2顯示數(shù)據(jù),>2就不顯示,輸出字符串為20{Time->DateString[0]='2'; Time->DateString[1]='0'; Time->DateString[2]=Time->Year/10+'0'; Time->DateString[3]=Time->Year%10+'0';} else{Time->DateString[0]='';Time->DateString[1]=''; Time->DateString[2]='';Time->DateString[3]='';} Time->DateString[4]='/'; if(hide_month<2) {Time->DateString[5]=Time->Month/10+'0'; Time->DateString[6]=Time->Month%10+'0';} else{Time->DateString[5]='';Time->DateString[6]='';} Time->DateString[7]='/'; if(hide_day<2) {Time->DateString[8]=Time->Day/10+'0'; Time->DateString[9]=Time->Day%10+'0';} else{Time->DateString[8]='';Time->DateString[9]=''; } if(hide_week<2){ week_value[0]=Time->Week%10+'0';//星期的數(shù)據(jù)另外放到week_value[]數(shù)組里,跟年,月,日的分開存放,因?yàn)榈纫幌乱谧詈箫@示} else{week_value[0]='';} week_value[1]='\0'; Time->DateString[10]='\0';//字符串末尾加'\0',判斷結(jié)束字符}voidTimeToStr(SYSTEMTIME*Time)//將時(shí),分,秒數(shù)據(jù)轉(zhuǎn)換成液晶顯示字符放到數(shù)組TimeString[];{if(hide_hour<2){Time->TimeString[0]=Time->Hour/10+'0'; Time->TimeString[1]=Time->Hour%10+'0';} else{Time->TimeString[0]='';Time->TimeString[1]='';} Time->TimeString[2]=':';if(hide_min<2){Time->TimeString[3]=Time->Minute/10+'0'; Time->TimeString[4]=Time->Minute%10+'0';} else{Time->TimeString[3]='';Time->TimeString[4]='';} Time->TimeString[5]=':';if(hide_sec<2){Time->TimeString[6]=Time->Second/10+'0'; Time->TimeString[7]=Time->Second%10+'0';}else{Time->TimeString[6]='';Time->TimeString[7]='';} Time->DateString[8]='\0';}voidInitial_DS1302(void)//時(shí)鐘芯片初始化{unsignedcharSecond=Read1302(DS1302_SECOND); if(Second&0x80) //判斷時(shí)鐘芯片是否關(guān)閉 {Write1302(0x8e,0x00);//寫入允許 Write1302(0x8c,0x07);//以下寫入初始化時(shí)間日期:07/07/25.星期:3.時(shí)間:23:59:55 Write1302(0x88,0x07);Write1302(0x86,0x25); Write1302(0x8a,0x07);Write1302(0x84,0x23);Write1302(0x82,0x59); Write1302(0x80,0x55);Write1302(0x8e,0x80);//禁止寫入}}voidDelay1ms(unsignedintcount){unsignedinti,j;for(i=0;i<count;i++)for(j=0;j<120;j++);}/*延時(shí)子程序*/voidmdelay(uintdelay){ uinti;for(;delay>0;delay--){for(i=0;i<62;i++)//1ms延時(shí).{;}}}voidoutkey()//跳出調(diào)整模式,返回默認(rèn)顯示{ucharSecond;if(out==0){mdelay(8);count=0; hide_sec=0,hide_min=0,hide_hour=0,hide_day=0,hide_week=0,hide_month=0,hide_year=0; Second=Read1302(DS1302_SECOND);Write1302(0x8e,0x00);//寫入允許 Write1302(0x80,Second&0x7f); Write1302(0x8E,0x80);//禁止寫入 done=0;while(out==0);}}////////////////////////////////////////////////////////////////////////////////////////////////////////////voidUpkey()//升序按鍵{ Up=1;if(Up==0) {mdelay(8);switch(count){case1:temp=Read1302(DS1302_SECOND);//讀取秒數(shù)temp=temp+1;//秒數(shù)加1up_flag=1;//數(shù)據(jù)調(diào)整后更新標(biāo)志if((temp&0x7f)>0x59)//超過59秒,清零temp=0; break;case2:temp=Read1302(DS1302_MINUTE);//讀取分?jǐn)?shù)temp=temp+1;//分?jǐn)?shù)加1up_flag=1;if(temp>0x59)//超過59分,清零temp=0;break;case3:temp=Read1302(DS1302_HOUR);//讀取小時(shí)數(shù)temp=temp+1;//小時(shí)數(shù)加1up_flag=1;if(temp>0x23)//超過23小時(shí),清零temp=0;break;case4:temp=Read1302(DS1302_WEEK);//讀取星期數(shù) temp=temp+1;//星期數(shù)加1up_flag=1; if(temp>0x7) temp=1; break; case5:temp=Read1302(DS1302_DAY);//讀取日數(shù) temp=temp+1;//日數(shù)加1up_flag=1; if(temp>0x31) temp=1; break; case6:temp=Read1302(DS1302_MONTH);//讀取月數(shù) temp=temp+1;//月數(shù)加1up_flag=1; if(temp>0x12) temp=1; break; case7:temp=Read1302(DS1302_YEAR);//讀取年數(shù) temp=temp+1;//年數(shù)加1up_flag=1; if(temp>0x85) temp=0; break; default:break;}while(Up==0);}}////////////////////////////////////////////////////////////////////////////////////////////////////////////voidDownkey()//降序按鍵{ Down=1;if(Down==0) {mdelay(8); switch(count) {case1:temp=Read1302(DS1302_SECOND);//讀取秒數(shù) temp=temp-1; //秒數(shù)減1down_flag=1;//數(shù)據(jù)調(diào)整后更新標(biāo)志 if(temp==0x7f)//小于0秒,返回59秒 temp=0x59; break; case2:temp=Read1302(DS1302_MINUTE);//讀取分?jǐn)?shù) temp=temp-1;//分?jǐn)?shù)減1down_flag=1; if(temp==-1) temp=0x59;//小于0秒,返回59秒 break; case3:temp=Read1302(DS1302_HOUR);//讀取小時(shí)數(shù) temp=temp-1;//小時(shí)數(shù)減1down_flag=1; if(temp==-1) temp=0x23; break; case4:temp=Read1302(DS1302_WEEK);//讀取星期數(shù) temp=temp-1;//星期數(shù)減1down_flag=1; if(temp==0) temp=0x7;; break; case5:temp=Read1302(DS1302_DAY);//讀取日數(shù) temp=temp-1;//日數(shù)減1down_flag=1; if(temp==0) temp=31; break; case6:temp=Read1302(DS1302_MONTH);//讀取月數(shù) temp=temp-1;//月數(shù)減1down_flag=1; if(temp==0) temp=12; break; case7:temp=Read1302(DS1302_YEAR);//讀取年數(shù) temp=temp-1;//年數(shù)減1down_flag=1; if(temp==-1) temp=0x85; break; default:break;}while(Down==0);}}voidSetkey()//模式選擇按鍵{Set=1;if(Set==0) {mdelay(8);count=count+1; //Setkey按一次,count就加1 done=1; //進(jìn)入調(diào)整模式while(Set==0);}}voidkeydone()//按鍵功能執(zhí)行{ucharSecond; if(flag==0)//關(guān)閉時(shí)鐘,停止計(jì)時(shí){Write1302(0x8e,0x00);//寫入允許temp=Read1302(0x80);Write1302(0x80,temp|0x80); Write1302(0x8e,0x80);//禁止寫入flag=1;}Setkey(); //掃描模式切換按鍵 switch(count) {case1:do //count=1,調(diào)整秒 {outkey(); //掃描跳出按鈕 Upkey();//掃描加按鈕 Downkey();//掃描減按鈕 if(up_flag==1||down_flag==1)//數(shù)據(jù)更新,重新寫入新的數(shù)據(jù) { Write1302(0x8e,0x00);//寫入允許 Write1302(0x80,temp|0x80);//寫入新的秒數(shù) Write1302(0x8e,0x80);//禁止寫入 up_flag=0; down_flag=0;}hide_sec++;//位閃計(jì)數(shù) if(hide_sec>3) hide_sec=0;show_time();//液晶顯示數(shù)據(jù) }while(count==2);break; case2:do //count=2,調(diào)整分 {hide_sec=0; outkey(); Upkey(); Downkey(); if(temp>0x60) temp=0; if(up_flag==1||down_flag==1) {Write1302(0x8e,0x00);//寫入允許 Write1302(0x82,temp);//寫入新的分?jǐn)?shù) Write1302(0x8e,0x80);//禁止寫入 up_flag=0; down_flag=0;} hide_min++; if(hide_min>3) hide_min=0;show_time(); }while(count==3);break; case3:do //count=3,調(diào)整小時(shí) {hide_min=0; outkey(); Upkey(); Downkey(); if(up_flag==1||down_flag==1) {Write1302(0x8e,0x00);//寫入允許 Write1302(0x84,temp);//寫入新的小時(shí)數(shù) Write1302(0x8e,0x80);//禁止寫入 up_flag=0; down_flag=0;} hide_hour++; if(hide_hour>3) hide_hour=0;show_time(); }while(count==4);break; case4:do //count=4,調(diào)整星期 {hide_hour=0; outkey(); Upkey(); Downkey(); if(up_flag==1||down_flag==1) {Write1302(0x8e,0x00);//寫入允許 Write1302(0x8a,temp);//寫入新的星期數(shù) Write1302(0x8e,0x80);//禁止寫入 up_flag=0; down_flag=0;} hide_week++; if(hide_week>3) hide_week=0;show_time(); }while(count==5);break; case5:do //count=5,調(diào)整日 {hide_week=0; outkey(); Upkey(); Downkey(); if(up_flag==1||down_flag==1) {Write1302(0x8e,0x00);//寫入允許 Write1302(0x86,temp);//寫入新的日數(shù) Write1302(0x8e,0x80);//禁止寫入 up_flag=0; down_flag=0;} hide_day++; if(hide_day>3) hide_day=0;show_time(); }while(count==6);break; case6:do //count=6,調(diào)整月 {hide_day=0; outkey(); Upkey(); Downkey(); if(up_flag==1||down_flag==1) {Write1302(0x8e,0x00);//寫入允許 Write1302(0x88,temp);//寫入新的月數(shù) Write1302(0x8e,0x80);//禁止寫入 up_flag=0; down_flag=0;} hide_month++; if(hide_month>3) hide_month=0;show_time(); }while(count==7);break; case7:do //count=7,調(diào)整年 {hide_month=0; outkey(); Upkey(); Downkey(); if(up_flag==1||down_flag==1) {Write1302(0x8e,0x00);//寫入允許 Write1302(0x8c,temp);//寫入新的年數(shù) Write1302(0x8e,0x80);//禁止寫入 up_flag=0; down_flag=0;} hide_year++; if(hide_year>3) hide_year=0;show_time(); }while(count==8);break; case8:count=0;hide_year=0;//count8,跳出調(diào)整模式,返回默認(rèn)顯示狀態(tài) Second=Read1302(DS1302_SECOND);Write1302(0x8e,0x00);//寫入允許 Write1302(0x80,Second&0x7f); Write1302(0x8E,0x80);//禁止寫入 done=0; break;//count=7,開啟中斷,標(biāo)志位置0并退出 default:break;}}voidshow_time()//液晶顯示程序{DS1302_GetTime(&CurrentTime);//獲取時(shí)鐘芯片的時(shí)間數(shù)據(jù)TimeToStr(&CurrentTime);//時(shí)間數(shù)據(jù)轉(zhuǎn)換液晶字符DateToStr(&CurrentTime);//日期數(shù)據(jù)轉(zhuǎn)換液晶字符GotoXY(0,1);Print(CurrentTime.TimeString);//顯示時(shí)間GotoXY(0,0);Print(CurrentTime.DateString);//顯示日期GotoXY(15,0);Print(week_value);//顯示星期GotoXY(11,0);Print("Week"); //在液晶上顯示字母weekDelay1ms(400);//掃描延時(shí)}main(){flag=1;//時(shí)鐘停止標(biāo)志 LCD_Initial();//液晶初始化 Initial_DS1302();//時(shí)鐘芯片初始化 up_flag=0; down_flag=0; done=0;//進(jìn)入默認(rèn)液晶顯示 while(1) {while(done==1)keydone();//進(jìn)入調(diào)整模式 while(done==0) {show_time();//液晶顯示數(shù)據(jù)flag=0;Setkey(); //掃描各功能鍵 }}}設(shè)計(jì)結(jié)果通過按鍵還可以對(duì)時(shí)間調(diào)節(jié)。如上圖,此時(shí)選中了秒位,通過按鍵K2可以對(duì)其進(jìn)行加,按鍵K3可以對(duì)其減,K4可以立刻跳出模式選擇?;贑8051F單片機(jī)直流電動(dòng)機(jī)反饋控制系統(tǒng)的設(shè)計(jì)與研究基于單片機(jī)的嵌入式Web服務(wù)器的研究MOTOROLA單片機(jī)MC68HC(8)05PV8/A內(nèi)嵌EEPROM的工藝和制程方法及對(duì)良率的影響研究基于模糊控制的電阻釬焊單片機(jī)溫度控制系統(tǒng)的研制基于MCS-51系列單片機(jī)的通用控制模塊的研究基于單片機(jī)實(shí)現(xiàn)的供暖系統(tǒng)最佳啟停自校正(STR)調(diào)節(jié)器單片機(jī)控制的二級(jí)倒立擺系統(tǒng)的研究基于增強(qiáng)型51系列單片機(jī)的TCP/IP協(xié)議棧的實(shí)現(xiàn)基于單片機(jī)的蓄電池自動(dòng)監(jiān)測(cè)系統(tǒng)基于32位嵌入式單片機(jī)系統(tǒng)的圖像采集與處理技術(shù)的研究基于單片機(jī)的作物營(yíng)養(yǎng)診斷專家系統(tǒng)的研究基于單片機(jī)的交流伺服電機(jī)運(yùn)動(dòng)控制系統(tǒng)研究與開發(fā)基于單片機(jī)的泵管內(nèi)壁硬度測(cè)試儀的研制基于單片機(jī)的自動(dòng)找平控制系統(tǒng)研究基于C8051F040單片機(jī)的嵌入式系統(tǒng)開發(fā)基于單片機(jī)的液壓動(dòng)力系統(tǒng)狀態(tài)監(jiān)測(cè)儀開發(fā)模糊Smith智能控制方法的研究及其單片機(jī)實(shí)現(xiàn)一種基于單片機(jī)的軸快流CO〈,2〉激光器的手持控制面板的研制基于雙單片機(jī)沖床數(shù)控系統(tǒng)的研究基于CYGNAL單片機(jī)的在線間歇式濁度儀的研制基于單片機(jī)的噴油泵試驗(yàn)臺(tái)控制器的研制基于單片機(jī)的軟起動(dòng)器的研究和設(shè)計(jì)基于單片機(jī)控制的高速快走絲電火花線切割機(jī)床短循環(huán)走絲方式研究基于單片機(jī)的機(jī)電產(chǎn)品控制系統(tǒng)開發(fā)基于PIC單片機(jī)的智能手機(jī)充電器基于單片機(jī)的實(shí)時(shí)內(nèi)核設(shè)計(jì)及其應(yīng)用研究基于單片機(jī)的遠(yuǎn)程抄表系統(tǒng)的設(shè)計(jì)與研究基于單片機(jī)的煙氣二氧化硫濃度檢測(cè)儀的研制基于微型光譜儀的單片機(jī)系統(tǒng)單片機(jī)系統(tǒng)軟件構(gòu)件開發(fā)的技術(shù)研究基于單片機(jī)的液體點(diǎn)滴速度自動(dòng)檢測(cè)儀的研制基于單片機(jī)系統(tǒng)的多功能溫度測(cè)量?jī)x的研制基于PIC單片機(jī)的電能采集終端的設(shè)計(jì)和應(yīng)用基于單片機(jī)的光纖光柵解調(diào)儀的研制氣壓式線性摩擦焊機(jī)單片機(jī)控制系統(tǒng)的研制基于單片機(jī)的數(shù)字磁通門傳感器基于單片機(jī)的旋轉(zhuǎn)變壓器-數(shù)字轉(zhuǎn)換器的研究基于單片機(jī)的光纖Bragg光柵解調(diào)系統(tǒng)的研究單片機(jī)控制的便攜式多功能乳腺治療儀的研制基于C8051F020單片機(jī)的多生理信號(hào)檢測(cè)儀基于單片機(jī)的電機(jī)運(yùn)動(dòng)控制系統(tǒng)設(shè)計(jì)Pico專用單片機(jī)核的可測(cè)性設(shè)計(jì)研究基于MCS-51單片機(jī)的熱量計(jì)基于雙單片機(jī)的智能遙測(cè)微型氣象站MCS-51單片機(jī)構(gòu)建機(jī)器人的實(shí)踐研究基于單片機(jī)的輪軌力檢測(cè)基于單片機(jī)的GPS定位儀的研究與實(shí)現(xiàn)基于單片機(jī)的電液伺服控制系統(tǒng)用于單片機(jī)系統(tǒng)的MMC卡文件系統(tǒng)研制基于單片機(jī)的時(shí)控和計(jì)數(shù)系統(tǒng)性能優(yōu)化的研究基于單片機(jī)和CPLD的粗光柵位移測(cè)量系統(tǒng)研究單片機(jī)控制的后備式方波UPS提升高職學(xué)生單片機(jī)應(yīng)用能力的探究基于單片機(jī)控制的自動(dòng)低頻減載裝置研究基于單片機(jī)控制的水下焊接電源的研究基于單片機(jī)的多通道數(shù)據(jù)采集系統(tǒng)基于uPSD3234單片機(jī)的氚表面污染測(cè)量?jī)x的研制基于單片機(jī)的紅外測(cè)油儀的研究96系列單片機(jī)仿真器研究與設(shè)計(jì)基于單片機(jī)的單晶金剛石刀具刃磨設(shè)備的數(shù)控改造基于單片機(jī)的溫度智能控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)基于MSP430單片機(jī)的電梯門機(jī)控制器的研制基于單片機(jī)的氣體測(cè)漏儀的研究基于三菱M16C/6N系列單片機(jī)的CAN/USB協(xié)議轉(zhuǎn)換器基于單片機(jī)和DSP的變壓器油色譜在線監(jiān)測(cè)技術(shù)研究基于單片機(jī)的膛壁溫度報(bào)警系統(tǒng)設(shè)計(jì)基于AVR單片機(jī)的低壓無功補(bǔ)償控制器的設(shè)計(jì)基于單片機(jī)船舶電力推進(jìn)電機(jī)監(jiān)測(cè)系統(tǒng)基于單片機(jī)網(wǎng)絡(luò)的振動(dòng)信號(hào)的采集系統(tǒng)基于單片機(jī)的大容量數(shù)據(jù)存儲(chǔ)技術(shù)的應(yīng)用研究基于單片機(jī)的疊圖機(jī)研究與教學(xué)方法實(shí)踐基于單片機(jī)嵌入式Web服務(wù)器技術(shù)的研究及實(shí)現(xiàn)基于AT89S52單片機(jī)的通用數(shù)據(jù)采集系統(tǒng)基于單片機(jī)的多道脈沖幅度分析儀研究機(jī)器人旋轉(zhuǎn)電弧傳感角焊縫跟蹤單片機(jī)控制系統(tǒng)基于單片機(jī)的控制系統(tǒng)在PLC虛擬教學(xué)實(shí)驗(yàn)中的應(yīng)用研究基于單片機(jī)系統(tǒng)的網(wǎng)絡(luò)通信研究與應(yīng)用基于PIC16F877單片機(jī)的莫

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論