上位機(jī)控制調(diào)整小時(shí)制電子時(shí)鐘硬件設(shè)計(jì)與程序_第1頁
上位機(jī)控制調(diào)整小時(shí)制電子時(shí)鐘硬件設(shè)計(jì)與程序_第2頁
上位機(jī)控制調(diào)整小時(shí)制電子時(shí)鐘硬件設(shè)計(jì)與程序_第3頁
上位機(jī)控制調(diào)整小時(shí)制電子時(shí)鐘硬件設(shè)計(jì)與程序_第4頁
上位機(jī)控制調(diào)整小時(shí)制電子時(shí)鐘硬件設(shè)計(jì)與程序_第5頁
已閱讀5頁,還剩21頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、Click to add your text上位機(jī)控制調(diào)整上位機(jī)控制調(diào)整24小時(shí)制電子時(shí)鐘小時(shí)制電子時(shí)鐘硬件設(shè)計(jì)上位機(jī)控制調(diào)整上位機(jī)控制調(diào)整24小時(shí)制電子時(shí)鐘小時(shí)制電子時(shí)鐘程序設(shè)計(jì)#include #include #define LCD_DAT P1 /P1口宏定義sbit LCD_EN=P20; /1602使能端sbit LCD_RW=P21;/1602rw端sbit LCD_RS=P22;/1602rs 端sbit KEY1=P00;/選項(xiàng)鍵上位機(jī)控制調(diào)整上位機(jī)控制調(diào)整24小時(shí)制電子時(shí)鐘小時(shí)制電子時(shí)鐘程序設(shè)計(jì)sbit KEY2=P01;/加按鍵sbit KEY3=P02;/減按鍵sbit

2、 KEY4=P03;/退出鍵bit flag_1S; /1秒標(biāo)志位bit flag2; /按鍵修改標(biāo)志位bit KEY1_TEMP1,KEY1_TEMP2,KEY1_TEMP3;/去抖緩沖變量上位機(jī)控制調(diào)整上位機(jī)控制調(diào)整24小時(shí)制電子時(shí)鐘小時(shí)制電子時(shí)鐘程序設(shè)計(jì)bit KEY2_TEMP1,KEY2_TEMP2,KEY2_TEMP3;bit KEY3_TEMP1,KEY3_TEMP2,KEY3_TEMP3;bit KEY4_TEMP1,KEY4_TEMP2,KEY4_TEMP3;unsigned char sec,min,hour,number,fun; /fun值:1小時(shí)2調(diào)分3調(diào)4退出。un

3、signed char code cursor_place=0,5,8,11;/光標(biāo)閃爍位置 unsigned char code data0=0123456789;上位機(jī)控制調(diào)整上位機(jī)控制調(diào)整24小時(shí)制電子時(shí)鐘小時(shí)制電子時(shí)鐘程序設(shè)計(jì) unsigned char RX_Data=0,0,0,0,0;unsigned char num=0;/*延時(shí)函數(shù)*/ void delay(unsigned int z)unsigned int x,y;for(x=z;x0;x-)for(y=120;y0;y-);上位機(jī)控制調(diào)整上位機(jī)控制調(diào)整24小時(shí)制電子時(shí)鐘小時(shí)制電子時(shí)鐘程序設(shè)計(jì)/*LCD寫指令*/voi

4、d LCD_write_com(unsigned char com) LCD_RS=0;LCD_RW=0;LCD_EN=0;LCD_DAT=com;LCD_EN=1;delay(5);LCD_EN=0;/*LCD寫數(shù)據(jù)*/void LCD_write_data(unsigned char dat) 上位機(jī)控制調(diào)整上位機(jī)控制調(diào)整24小時(shí)制電子時(shí)鐘小時(shí)制電子時(shí)鐘程序設(shè)計(jì) LCD_RS=1;LCD_RW=0;LCD_EN=0;LCD_DAT=dat;LCD_EN=1;delay(5);LCD_EN=0;/*LCD顯示*/void disp_string(unsigned char addr,char

5、 *string) unsigned char len,i,k;len=strlen(string);/計(jì)算字符串大小 上位機(jī)控制調(diào)整上位機(jī)控制調(diào)整24小時(shí)制電子時(shí)鐘小時(shí)制電子時(shí)鐘程序設(shè)計(jì)if(addr0 x10) LCD_write_com(0 x80+addr);for(i=0;ilen;i+)k=addr+i;if(k=0 x10)LCD_write_com(0 x80+0 x40); LCD_write_data(*(string+i);k=0; else 上位機(jī)控制調(diào)整上位機(jī)控制調(diào)整24小時(shí)制電子時(shí)鐘小時(shí)制電子時(shí)鐘程序設(shè)計(jì)LCD_write_com(addr-0 x10+0 xC0)

6、;for(i=0;i59) /分 sec=0;min+;if(min59) /小時(shí) min=0;hour+; if(hour23) hour=0;上位機(jī)控制調(diào)整上位機(jī)控制調(diào)整24小時(shí)制電子時(shí)鐘小時(shí)制電子時(shí)鐘程序設(shè)計(jì)void timedisplay(unsigned char add,unsigned char dat)/時(shí)間顯示 LCD_write_com(0 x80+add); LCD_write_data(data0dat/10); LCD_write_data(data0dat%10); void display()/總顯示timedisplay(5,hour);timedisplay(

7、8,min);timedisplay(11,sec);上位機(jī)控制調(diào)整上位機(jī)控制調(diào)整24小時(shí)制電子時(shí)鐘小時(shí)制電子時(shí)鐘程序設(shè)計(jì)/*按鍵處理*/void key_scan() if (KEY1_TEMP1&KEY1_TEMP2&(KEY1_TEMP3)&(KEY1) /光標(biāo)顯示位置fun+;/通過數(shù)值確定光標(biāo)位置if(fun0)&(fun=4)LCD_write_com(0 x0c);fun=0;flag2=0;上位機(jī)控制調(diào)整上位機(jī)控制調(diào)整24小時(shí)制電子時(shí)鐘小時(shí)制電子時(shí)鐘程序設(shè)計(jì)KEY1_TEMP1=KEY1_TEMP2; /去抖動(dòng)KEY1_TEMP2=KEY1_TE

8、MP3;KEY1_TEMP3=KEY1;if(KEY2_TEMP1&KEY2_TEMP2&(KEY2_TEMP3)&(KEY2) /加按鍵 switch(fun) /通過fun值,確定修改某時(shí)間變量 case 1 :hour+;if(hour23) hour=0;timedisplay(5,hour);LCD_write_com(0 x80+6);break;case 2 :min+;if(min59) min=0;timedisplay(8,min);上位機(jī)控制調(diào)整上位機(jī)控制調(diào)整24小時(shí)制電子時(shí)鐘小時(shí)制電子時(shí)鐘程序設(shè)計(jì)LCD_write_com(0 x80+9);br

9、eak;case 3 :sec+;if(sec59) sec=0;timedisplay(11,sec);LCD_write_com(0 x80+12);break;上位機(jī)控制調(diào)整上位機(jī)控制調(diào)整24小時(shí)制電子時(shí)鐘小時(shí)制電子時(shí)鐘程序設(shè)計(jì)KEY2_TEMP1=KEY2_TEMP2;KEY2_TEMP2=KEY2_TEMP3;KEY2_TEMP3=KEY2;if(KEY3_TEMP1&KEY3_TEMP2&(KEY3_TEMP3)&(KEY3) /減按鍵 switch(fun) case 1 :hour-;上位機(jī)控制調(diào)整上位機(jī)控制調(diào)整24小時(shí)制電子時(shí)鐘小時(shí)制電子時(shí)鐘程序設(shè)計(jì)i

10、f(hour23) hour=23;timedisplay(5,hour);LCD_write_com(0 x80+6);break;case 2 :min-;if(min59) min=59;timedisplay(8,min);上位機(jī)控制調(diào)整上位機(jī)控制調(diào)整24小時(shí)制電子時(shí)鐘小時(shí)制電子時(shí)鐘程序設(shè)計(jì)LCD_write_com(0 x80+9);break;case 3 :sec-;if(sec59) sec=59;timedisplay(11,sec);LCD_write_com(0 x80+12);break;上位機(jī)控制調(diào)整上位機(jī)控制調(diào)整24小時(shí)制電子時(shí)鐘小時(shí)制電子時(shí)鐘程序設(shè)計(jì)KEY3_TE

11、MP1=KEY3_TEMP2;KEY3_TEMP2=KEY3_TEMP3;KEY3_TEMP3=KEY3;if(KEY4_TEMP1&KEY4_TEMP2&(KEY4_TEMP3)&(KEY4) /退出調(diào)時(shí)flag2=0;fun=0;LCD_write_com(0 x0c);上位機(jī)控制調(diào)整上位機(jī)控制調(diào)整24小時(shí)制電子時(shí)鐘小時(shí)制電子時(shí)鐘程序設(shè)計(jì)KEY4_TEMP1=KEY4_TEMP2;KEY4_TEMP2=KEY4_TEMP3;KEY4_TEMP3=KEY4; /*總初始化*/void init()init_t1();init_1602();disp_string(0,

12、TiMe:00:00:00);上位機(jī)控制調(diào)整上位機(jī)控制調(diào)整24小時(shí)制電子時(shí)鐘小時(shí)制電子時(shí)鐘程序設(shè)計(jì)/*主函數(shù)體*/void main()init();while(1)key_scan();if(flag2=0)time_chuli();/時(shí)間函數(shù)if(RX_Data0=0 x55)/串口顯示RX_Data0=0 x00;hour=RX_Data1;上位機(jī)控制調(diào)整上位機(jī)控制調(diào)整24小時(shí)制電子時(shí)鐘小時(shí)制電子時(shí)鐘程序設(shè)計(jì)min=RX_Data2;sec=RX_Data3; display();/顯示void time_T0() interrupt 1 /定時(shí)器 T0中斷TH0=0 x3C;TL0=0 xB0;number+;if(number=20)上位機(jī)控制調(diào)整上位機(jī)控制調(diào)整24小時(shí)制電子時(shí)鐘小時(shí)制電子時(shí)鐘程序設(shè)計(jì)number=0;flag_1S=1;void ZD1() interrupt 4 /串口中斷函數(shù)

溫馨提示

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

評論

0/150

提交評論