時(shí)鐘程序 51單片機(jī) 時(shí)間可設(shè)定_第1頁(yè)
時(shí)鐘程序 51單片機(jī) 時(shí)間可設(shè)定_第2頁(yè)
時(shí)鐘程序 51單片機(jī) 時(shí)間可設(shè)定_第3頁(yè)
時(shí)鐘程序 51單片機(jī) 時(shí)間可設(shè)定_第4頁(yè)
時(shí)鐘程序 51單片機(jī) 時(shí)間可設(shè)定_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

歡迎閱讀本文檔,希望本文檔能對(duì)您有所幫助!歡迎閱讀本文檔,希望本文檔能對(duì)您有所幫助!感謝閱讀本文檔,希望本文檔能對(duì)您有所幫助!感謝閱讀本文檔,希望本文檔能對(duì)您有所幫助!歡迎閱讀本文檔,希望本文檔能對(duì)您有所幫助!感謝閱讀本文檔,希望本文檔能對(duì)您有所幫助!/*時(shí)鐘設(shè)置按鍵由P2.3口輸入加1按鍵由P2.2口輸入*/#include<reg51.h>#defineu8unsignedchar#defineucharunsignedchar#defineu16unsignedint#defineuintunsignedintsbitSCLK=P1^4;sbitSDIN=P1^5;sbitDC=P1^6;sbitSCE=P1^7;voidWr_LCD_byte(u8dat,u8cmd);voidSet_LCD_XY(u8X,u8Y);voidClr_LCD(void);voidWr_LCD_chr(u8col,u8row,u8ch);voidLCD_Init(void);voiddelayms(unsignedintm);ucharkeyscan(void);unsignedcharcodechr[]={0x00,0x00,0x00,0x00,0x00,0x00,//00x00,0x7F,0x7F,0x7F,0x7F,0x7F,//█10x00,0x3E,0x51,0x49,0x45,0x3E,//020x00,0x00,0x42,0x7F,0x40,0x00,//130x00,0x42,0x61,0x51,0x49,0x46,//240x00,0x21,0x41,0x45,0x4B,0x31,//350x00,0x18,0x14,0x12,0x7F,0x10,//460x00,0x27,0x45,0x45,0x45,0x39,//570x00,0x3C,0x4A,0x49,0x49,0x30,//680x00,0x01,0x71,0x09,0x05,0x03,//790x00,0x36,0x49,0x49,0x49,0x36,//8100x00,0x06,0x49,0x49,0x29,0x1E,//9110x00,0x7C,0x12,0x11,0x12,0x7C,//A120x00,0x7F,0x49,0x49,0x49,0x36,//B130x00,0x3E,0x41,0x41,0x41,0x22,//C140x00,0x7F,0x41,0x41,0x22,0x1C,//D150x00,0x7F,0x49,0x49,0x49,0x41,//E160x00,0x7F,0x09,0x09,0x09,0x01,//F170x00,0x3E,0x41,0x49,0x49,0x7A,//G180x00,0x7F,0x08,0x08,0x08,0x7F,//H190x00,0x00,0x41,0x7F,0x41,0x00,//I200x00,0x20,0x40,0x41,0x3F,0x01,//J210x00,0x7F,0x08,0x14,0x22,0x41,//K220x00,0x7F,0x40,0x40,0x40,0x40,//L230x00,0x7F,0x02,0x0C,0x02,0x7F,//M240x00,0x7F,0x04,0x08,0x10,0x7F,//N250x00,0x3E,0x41,0x41,0x41,0x3E,//O260x00,0x7F,0x09,0x09,0x09,0x06,//P270x00,0x3E,0x41,0x51,0x21,0x5E,//Q280x00,0x7F,0x09,0x19,0x29,0x46,//R290x00,0x46,0x49,0x49,0x49,0x31,//S300x00,0x01,0x01,0x7F,0x01,0x01,//T310x00,0x3F,0x40,0x40,0x40,0x3F,//U320x00,0x1F,0x20,0x40,0x20,0x1F,//V330x00,0x3F,0x40,0x38,0x40,0x3F,//W340x00,0x63,0x14,0x08,0x14,0x63,//X350x00,0x07,0x08,0x70,0x08,0x07,//Y360x00,0x61,0x51,0x49,0x45,0x43,//Z370x00,0x20,0x54,0x54,0x54,0x78,//a380x00,0x7F,0x48,0x44,0x44,0x38,//b390x00,0x38,0x44,0x44,0x44,0x20,//c400x00,0x38,0x44,0x44,0x48,0x7F,//d410x00,0x38,0x54,0x54,0x54,0x18,//e420x00,0x08,0x7E,0x09,0x01,0x02,//f430x00,0x18,0xA4,0xA4,0xA4,0x7C,//g440x00,0x7F,0x08,0x04,0x04,0x78,//h450x00,0x00,0x44,0x7D,0x40,0x00,//i460x00,0x40,0x80,0x84,0x7D,0x00,//j470x00,0x7F,0x10,0x28,0x44,0x00,//k480x00,0x00,0x41,0x7F,0x40,0x00,//l490x00,0x7C,0x04,0x18,0x04,0x78,//m500x00,0x7C,0x08,0x04,0x04,0x78,//n510x00,0x38,0x44,0x44,0x44,0x38,//o520x00,0xFC,0x24,0x24,0x24,0x18,//p530x00,0x18,0x24,0x24,0x18,0xFC,//q540x00,0x7C,0x08,0x04,0x04,0x08,//r550x00,0x48,0x54,0x54,0x54,0x20,//s560x00,0x04,0x3F,0x44,0x40,0x20,//t570x00,0x3C,0x40,0x40,0x20,0x7C,//u580x00,0x1C,0x20,0x40,0x20,0x1C,//v590x00,0x3C,0x40,0x30,0x40,0x3C,//w600x00,0x44,0x28,0x10,0x28,0x44,//x610x00,0x1C,0xA0,0xA0,0xA0,0x7C,//y620x00,0x44,0x64,0x54,0x4C,0x44,//z630x00,0x00,0x60,0x60,0x00,0x00,//.640x00,0x00,0x36,0x36,0x00,0x00,//:650x00,0x00,0x41,0x22,0x14,0x08,//>660x00,0x00,0x00,0x2f,0x00,0x00,//!670x00,0x00,0x07,0x00,0x07,0x00,//"680x00,0x14,0x7f,0x14,0x7f,0x14,//#690x00,0x24,0x2a,0x7f,0x2a,0x12,//$700x00,0x62,0x64,0x08,0x13,0x23,//%710x00,0x36,0x49,0x55,0x22,0x50,//&720x00,0x00,0x05,0x03,0x00,0x00,//'730x00,0x00,0x1c,0x22,0x41,0x00,//(740x00,0x00,0x41,0x22,0x1c,0x00,//)750x00,0x14,0x08,0x3E,0x08,0x14,//*760x00,0x08,0x08,0x3E,0x08,0x08,//+770x00,0x00,0x00,0xA0,0x60,0x00,//,780x00,0x08,0x08,0x08,0x08,0x08,//-790x00,0x40,0x40,0x40,0x40,0x40,//_800x00,0x20,0x10,0x08,0x04,0x02,///810x00,0x00,0x7F,0x41,0x41,0x00,//[820x00,0x00,0x41,0x41,0x7F,0x00,//]820x00,0x04,0x02,0x01,0x02,0x04,//^84};/*-------------------------------------wr_LCD_byte:通過(guò)SPI端口向LCD5110寫入數(shù)據(jù)輸入?yún)?shù):dat(byte):寫入的數(shù)據(jù)cmd(0、1):指令0,數(shù)據(jù)1-------------------------------------*/voidWr_LCD_byte(u8dat,u8cmd){ unsignedchari;SCE=0; DC=cmd; for(i=0;i<8;i++){if(dat&0x80) SDIN=1;else SDIN=0;dat=dat<<1; SCLK=0; SCLK=1;} DC=1; SCE=1; SDIN=1;}/*---------------------------set_LCD_XY:設(shè)置光標(biāo)位置輸入?yún)?shù):X(0-83)、Y(0-5)---------------------------*/voidSet_LCD_XY(u8X,u8Y){Wr_LCD_byte(0x40|Y,0);Wr_LCD_byte(0x80|X,0);}/*------------------clr_LCD:LCD5110清屏------------------*/voidClr_LCD(void){unsignedcharc,r; Set_LCD_XY(0,0); for(r=0;r<6;r++) {for(c=0;c<84;c++) { Wr_LCD_byte(0x00,1); } }}/*-------------------------------------------wr_LCD_chr:顯示8*16大小的半角字符輸入函數(shù):col(0-9):顯示位置-列row(0-5):顯示位置-行ch:(0-39):字符位置(位于數(shù)組chr中)-------------------------------------------*/voidWr_LCD_chr(u8col,u8row,u8ch){unsignedchari;Set_LCD_XY(col*6,row); for(i=0;i<6;i++) { Wr_LCD_byte(chr[ch*6+i],1); }} /*----------------------LCD_init:LCD5110初始化----------------------*/voidLCD_Init(void){ Wr_LCD_byte(0x21,0);//初始化LCD,功能設(shè)定使用擴(kuò)充指令 Wr_LCD_byte(0xc8,0);//設(shè)定液晶偏置電壓 Wr_LCD_byte(0x20,0);//使用基本指令 Wr_LCD_byte(0x0C,0);//設(shè)定顯示模式,正常顯示}voiddelayms(unsignedintm)//延時(shí)程序{unsignedinti;while(--m)for(i=0;i<372;i++);}/*------------------------------------------------鍵盤掃描程序------------------------------------------------*/ucharkeyscan(void)//鍵盤掃描函數(shù),使用行列反轉(zhuǎn)掃描法{ucharcord_h,cord_l;//行列值中間變量P3=0x0f;//行線輸出全為0cord_h=P3&0x0f;//讀入列線值if(cord_h!=0x0f)//先檢測(cè)有無(wú)按鍵按下{delayms(10);//去抖if(cord_h!=0x0f){cord_h=P3&0x0f;//讀入列線值P3=cord_h|0xf0;//輸出當(dāng)前列線值cord_l=P3&0xf0;//讀入行線值return(cord_h+cord_l);//鍵盤最后組合碼值}}return(0xff);//返回該值}#defineSETUPCTRL0xF7#definePLUSCTRL0xFB#defineNONE0xFD#defineMENUCTRL0xFEucharscreen[6][14]={0};//6×14列屏幕內(nèi)容數(shù)組uchartime1Counter=0;//定時(shí)器1計(jì)數(shù)器uintdpyCounter=0;//用于控制光標(biāo)處閃爍ucharhour=23;//小時(shí)初始化ucharminute=59;//分鐘初始化ucharsecond=0;//秒初始化ucharcol;ucharrow=2;//顯示在第3行ucharsetupFlag=0;//設(shè)置標(biāo)志sbitLED0=P0^0;sbitLED1=P0^1;sbitLED2=P0^2;sbitLED3=P0^4;sbitLED=P0^7;/*------------------------------------------------定時(shí)器1初始化子程序------------------------------------------------*/voidInit_Timer1(void) //定時(shí)50ms{TMOD|=0x10; //使用模式1,16位定時(shí)器TH1=(65536-50000)/256;//給定初值,定時(shí)器計(jì)數(shù)50ms溢出TL1=(65536-50000)%256;EA=1;//總中斷打開ET1=1;//定時(shí)器中斷打開TR1=1;//定時(shí)器開關(guān)打開}/*------------------------------------------------定時(shí)器1中斷子程序------------------------------------------------*/voidTimer1_isr(void)interrupt3using2{TH1=(65536-50000)/256; //重新賦值TL1=(65536-50000)%256;if(1==setupFlag)//設(shè)置時(shí)鐘時(shí) { time1Counter=0;//定時(shí)器1計(jì)數(shù)器要清零 return; }time1Counter++;//定時(shí)器1計(jì)數(shù)器加1if(20==time1Counter)//1s更新一次 { time1Counter=0;//定時(shí)器1計(jì)數(shù)器清零 second++;//秒加1 if(60==second) { second=0; minute++; if(60==minute) { minute=0; hour++; if(24==hour) hour=0; } } screen[row][5]=hour/10+2;//更新小時(shí)顯示內(nèi)容screen[row][6]=hour%10+2;screen[row][8]=minute/10+2;//更新分鐘顯示內(nèi)容screen[row][9]=minute%10+2; screen[row][11]=second/10+2;//更新秒顯示內(nèi)容 screen[row][12]=second%10+2; }}/*------------------------------------------------外部中斷0子程序------------------------------------------------*/voidExternal_isr(void)interrupt0using1{ucharhourH;ucharhourL;ucharminuteH;ucharminuteL;ucharctrl;LED=0;ctrl=P2;//按鍵從P2口輸入switch(ctrl){ caseSETUPCTRL://按下設(shè)置鍵 LED3=0; if(0==setupFlag) { setupFlag=1; col=4; dpyCounter=0; } col++; if(7==col)//第7列已顯示“:” col++; if(10==col)//以完成設(shè)置 setupFlag=0;//設(shè)置標(biāo)志清零 break; casePLUSCTRL://按下加1鍵 LED2=0; if(1==setupFlag) { switch(col)//光標(biāo)所在列數(shù) { case5://小時(shí)十位處 hour+=10; if(hour>23) hour%=10; break; case6://小時(shí)個(gè)位處 hourH=hour/10; hourL=hour%10; hourL++; if(2==hourH) { if(4==hourL) hourL=0; } else { if(10==hourL) hourL=0; } hour=hourH*10+hourL; break; case8://分鐘十位處 minute+=10; if(minute>59) minute%=10; break; case9://分鐘個(gè)位處 minuteH=minute/10; minuteL=minute%10; minuteL++; if(10==minuteL) minuteL=0; minute=minuteH*10+minuteL; break; default: break; } } break; caseNONE: LED1=0; break; caseMENUCTRL: LED0=0; break; default: break;}screen[row][5]=hour/10+2;//更新小時(shí)顯示內(nèi)容screen[row][6]=hour%10+2;screen[row][8]=minute/10+2;//更新分鐘顯示內(nèi)容screen[row][9]=minute%10+2;while(!(0xFF==ctrl))//等待按鍵釋放ctrl=P2;}voidmain(){ ucharr,c; Init_Timer1();//初始化定時(shí)器1 EX0=1;//開外部中斷0 IT0=0;//設(shè)置低電平可引起外部中斷0 LCD_Init();//LCD初始化 Clr_LCD();//LCD清屏 screen[row][0]=31;//T screen[row][1]=46;//i screen[row][2]=50;//m screen[row][3]=42;//e screen[row][7]=65;//: screen[row][10]=65;//: screen[row][5]=hour/10+2;//計(jì)算小時(shí)顯示的內(nèi)容screen[row][6]=hour%10+2;screen[row][8]=minute/10+2;//計(jì)算分鐘顯示的內(nèi)容screen[row][9]=minute%10+2; screen[row][11]=second/10+2;//計(jì)算秒顯示的內(nèi)容 screen[row][12]=second%10+2; while(1) { if(0==setupFlag)//不處于設(shè)置狀態(tài) { for(r=0;r<6;r++)//6行{for(c=0;c<14;c++)//14列{//:閃爍if((r==row)&

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(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)論