單片機課程設計多功能定時器_第1頁
單片機課程設計多功能定時器_第2頁
單片機課程設計多功能定時器_第3頁
免費預覽已結束,剩余33頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、單片機課程設計多功能定時器一、設計目的:1、在理論學習的基礎上, 通過完成一個涉及 MCS-51 單片機多種資源應用并具 有綜合功能的小系統(tǒng)目標板的設計與編程應用;2、能夠對電子電路、電子元器件、印制電路板等方面的知識進一步加深認識, 在軟件編程、排錯調試、相關儀器設備的使用技能等方面得到較全面的鍛煉 和提高;3、使學生增進對單片機的感性認識,加深對單片機理論方面的理解。使學生掌 握單片機的內部功能模塊的應用,如定時器 / 計數(shù)器、中斷、片內外存貯器、 I/O 口、串行口通信等;4、使學生了解和掌握單片機應用系統(tǒng)的軟硬件設計過程、方法及實現(xiàn),為以后 設計和實現(xiàn)單片機應用系統(tǒng)打下良好基礎。二、設

2、計功能說明 數(shù)字鐘是采用數(shù)字電路實現(xiàn)對時,分,秒,數(shù)字顯示的計時裝置,由于數(shù)字集成 電路的發(fā)展和石英晶體振蕩器的廣泛應用, 使得數(shù)字鐘的精度, 遠遠超過老式鐘 表,鐘表的數(shù)字化給人們生產生活帶來了極大的方便, 而且大大地擴展了鐘表的 報時功能。數(shù)字鐘已成為人們日常生活中的必需品,本設計可實現(xiàn)如下功能:1、使用實時時鐘芯片寫入及讀取時間2 、用 LCD 顯示,可顯示年、月、日、時、分、秒、星期、農歷日期、節(jié)日3、選擇蜂鳴器電路,實現(xiàn)兩個鬧鐘設置和事件提示功能4、實現(xiàn)時鐘校正功能, 12 小時 /24 小時切換功能5、顯示當前時間為上午時間或下午時間6、整點報時功能按鍵功能如下:1、對顯示時間的設

3、置按鍵0:進入設置模式,實現(xiàn)秒(S)、分(M )、時(H )、年(丫)、月(m )、 日( D )、星期(W、設置的切換,并在LCD右下角顯示所設置的項目,當各項 目設置完畢后,再按下按鍵 0 則返回主界面正常顯示時間;按鍵 1:每按一次按鍵 1,對所設置的時間加 1 ,當設置的時間超過它的最大值時,該項自動為 0,例如:當設置秒為 59 時,秒自動清零;按鍵2:每按一次按鍵 :2,對所設置的時間減 1,當設置的時間小于 0時,該項 自動為它的最大值;按鍵 3:設置完成后的確認鍵并可按此鍵中途退出設置, 時間按用戶設置值正常 計時;按鍵 7:實現(xiàn)時鐘校正功能, 12 小時/24 小時切換功能。

4、2、對鬧鐘的設置按鍵4 :進入鬧鐘1的設置,并在LCD右上方顯示“ CLOCK1 ”并通過按鍵0、1、 2設置用戶所需鬧鐘時間,完成鬧鐘 1 的設置后,通過按鍵 0進入鬧鐘 2的 設置,并在LCD右上方顯示“ CL0CK2 ”,若無需設置鬧鐘2,則通過按鍵3 退出鬧鐘設置,返回主界面正常顯示時間;按鍵5 :設置鬧鐘是否開啟,例如:當設置鬧鐘 1為開啟狀態(tài)時,在LCD右上 方顯示“ *CL0CK1 ”當鬧鐘,并在返回主界面后顯示“ C1 ”表示鬧鐘1開啟;三、整體設計思路這部分主要介紹工作安排和整體設計的思想。工作過程規(guī)劃如下:完成對測試中的問題再調試四、主程序流程圖上電初始化顯示時間初值與鬧鐘

5、時間相同?是否開啟?響鈴N不響不響Keyvalue=getkey ()進入時間設置N各設置項加一五、電氣原理圖(見附圖)六、實驗程序1、鍵盤程序(Keyprocess )鍵盤與848相連接,采用矩陣鍵盤的方式P2用于列掃描,P1用于行掃描,經過消抖及等待鍵釋放的程序,將最終正確的結果置于getkey();程序實現(xiàn)如下:#in clude"aduc848.h"void KeyDelay(unsigned int KeyJsTime);/ 鍵盤掃描延時函數(shù)聲明unsigned char GetKey();/ 掃描后獲取鍵值un sig ned char GetKey()stat

6、ic un sig ned char KeyHaveFree=1;static un sig ned int KeyJs=0;un sig ned char temp,KeyTemp=Oxff;P1&=OxfO;/ 將低四位置零做 I/O 口/ 延時消除抖動/ 延時后確認是否有鍵按下,并獲取具體P2&=0xf0; temp=P1&0x0f;if(KeyHaveFree)if(temp!=0x0f)KeyDelay(1000);if(temp=(P1&0x0f)鍵值P2|=0x0e;switch(P1&0x0f)case 0x0e:KeyTemp=3;br

7、eak;case 0x0d:KeyTemp=7;break; case 0x0b:KeyTemp=11;break;case 0x07:KeyTemp=15;break;case 0x0f:break;default:KeyTemp= 0x80;break;P2&=0xf0;P2|=0x0d; switch(P1&0x0f)case 0x0e:KeyTemp= 2;break;case 0x0d:KeyTemp= 6;break;case 0x0b:KeyTemp= 10;break;case 0x07:KeyTemp= 14;break;case 0x0f:break;def

8、ault:KeyTemp= 0x81;break;P2&=0xf0;P2|=0x0b; switch(P1&0x0f)case 0x0e:KeyTemp= 1;break;case 0x0d:KeyTemp= 5;break;case 0x0b:KeyTemp= 9;break;case 0x07:KeyTemp= 13;break;case 0x0f:break; default:KeyTemp= 0x82;break;P2&=0xf0;P2|=0x07;switch(P1&0x0f)case 0x0e:KeyTemp= 0;break;case 0x0d:K

9、eyTemp= 4;break;case 0x0b:KeyTemp= 8;break;case 0x07:KeyTemp= 12;break;case 0x0f:break;default:KeyTemp= 0x83;break;KeyHaveFree=0; /LCDPrintNumber(6,11,5,KeyTemp);elseKeyJs+;if(KeyJs>70)KeyHaveFree=1;KeyJs=66;if(temp=0x0f)KeyHaveFree=1;KeyJs=0;KeyTemp=0xf0;return KeyTemp;void KeyDelay(unsigned int

10、 KeyJsTime)unsigned char temp;unsigned int JsKeyDelay;for(JsKeyDelay=0;JsKeyDelay<KeyJsTime;JsKeyDelay+)temp+; 2、Lcd 程序 (1602)#include "aduc848.h"sbit RS=P3A6;sbit RW=P3A5;位定義sbit EN=P3A3;void delay(u nsig ned int z);延時函數(shù)聲明void write_com (un sig ned char com);LCD顯示位置函數(shù)聲明void write_data(

11、 un sig ned char date);寫數(shù)據函數(shù)聲明P3:控制位PO:數(shù)據位RW=0 :寫允許RW=1 :讀允許RS=0:寫地址 RS=1:寫數(shù)據P0 口 =com : P0 口輸出顯示位置的地址P0 口 =data: P0 口輸出數(shù)據的地址EN=1 :從1602顯示到LCD屏EN=0 :關掉顯示以便顯示下一個數(shù)據void in it();void init()/ 初始化RS=0;RW=0;EN=0;write_com(0x38);write_com(0x0f);write_com(0x06);void delay(unsigned int z)/ 延時函數(shù) 延時時間=Z*110un

12、sig ned int x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);void write_com (un sig ned char com)/RS=0;RW=0;P0=com;delay(5);EN=1;delay(5);EN=0;void write_data( un sig ned char date)RS=1;RW=0;P0=date;delay(5);EN=1;delay(5);EN=0;3、iic程序(RTC)II實時時鐘#include"aduc848.h"void iic_start(void);void iic_st

13、op(void);void iic_ack(void);bit read_ack(void);void iic_nack();unsigned char get_byte(void);void out_byte(unsigned char dd);void IIC_Delay_us(unsigned int times); void ReadTime(unsigned char TIME7);void SetTime(unsigned char TIME7); void SwitchRTC(unsigned char SWITCH);void ReadTime(unsigned char TI

14、ME7)bit EATemp; unsigned char temp;EATemp=EA;iic_start(); out_byte(0xd0);read_ack(); out_byte(0x00);read_ack(); iic_stop();IIC_Delay_us(1);iic_start(); out_byte(0xd1);read_ack();TIME0=get_byte(); iic_ack();TIME1=get_byte(); iic_ack();TIME2=get_byte(); iic_ack();TIME3=get_byte(); iic_ack();TIME4=get_

15、byte(); iic_ack();TIME5=get_byte(); iic_ack();TIME6=get_byte();iic_nack();iic_stop();IIC_Delay_us(1);TIME0=(TIME0&0x7f)>>4)*10+(TIME0&0x0f);/secondTIME1=(TIME1&0x7f)>>4)*10+(TIME1&0x0f);/minuteif(TIME2&0x40)if(TIME2&0x20)temp=0x80;else temp=0x40;TIME2=(TIME2&0

16、x1f)>>4)*10+(TIME2&0x0f); /hourTIME2|=temp;elseTIME2=(TIME2&0x3f)>>4)*10+(TIME2&0x0f);TIME3=TIME3&0x07;/weekTIME4=(TIME4&0x3f)>>4)*10+(TIME4&0x0f);/dateTIME5=(TIME5&0x1f)>>4)*10+(TIME5&0x0f);/monthTIME6=(TIME6>>4)*10+(TIME6&0x0f);/yea

17、rEA=EATemp;void SetTime(unsigned char TIME7)bit EATemp;unsigned char temp=0;unsigned char TimeTemp7;EATemp=EA; for(temp=0;temp<7;temp+)TimeTemptemp=TIMEtemp; temp=0;/Year/Day/HourTimeTemp6=(TimeTemp6/10)<<4)+(TimeTemp6%10);TimeTemp5=(TimeTemp5/10)<<4)+(TimeTemp5%10); /MonthTimeTemp4=(

18、TimeTemp4/10)<<4)+(TimeTemp4%10);TimeTemp3=(TimeTemp3/10)<<4)+(TimeTemp3%10); /Weekif(TimeTemp2&0xc0)=0x00)TimeTemp2=(TimeTemp2/10)<<4)+(TimeTemp2%10);elseif(TimeTemp2&0xc0)=0x01)temp=0x40;else temp=0x60;TimeTemp2&=0x3f;TimeTemp2=(TimeTemp2/10)<<4)+(TimeTemp2%10);

19、TimeTemp2|=temp; TimeTemp1=(TimeTemp1/10)<<4)+(TimeTemp1%10);/MinuteTimeTemp0=(TimeTemp0/10)<<4)+(TimeTemp0%10);/SecondTimeTemp0&=0x7f;iic_start();out_byte(0xd0);read_ack();out_byte(0x00);read_ack();out_byte(TimeTemp0);read_ack();out_byte(TimeTemp1);read_ack();out_byte(TimeTemp2);rea

20、d_ack();out_byte(TimeTemp3);read_ack();out_byte(TimeTemp4);read_ack();out_byte(TimeTemp5);read_ack();out_byte(TimeTemp6);read_ack();iic_stop();IIC_Delay_us(1);EA=EATemp;void SwitchRTC(unsigned char SWITCH)unsigned char temp; bit EATemp; EATemp=EA;iic_start(); out_byte(0xd0); read_ack(); out_byte(0x0

21、0);read_ack();iic_stop(); /IIC_Delay_us(1);iic_start(); out_byte(0xd1); read_ack(); temp=get_byte();iic_nack(); iic_stop();/IIC_Delay_us(1);if(SWITCH)temp&=0x7f; else temp|=0x80;iic_start(); out_byte(0xd0);read_ack(); out_byte(0x00);read_ack(); out_byte(temp);read_ack(); iic_stop(); /IIC_Delay_u

22、s(1);EA=EATemp;void iic_start(void)MDE=1;MDO=1;/IIC_Delay_us(2);MCO=1;/IIC_Delay_us(2);MDO=0;/IIC_Delay_us(2);void iic_stop(void)MDE=1;MDO=0;/IIC_Delay_us(2);MCO=1;/IIC_Delay_us(2);MDO=1;void iic_ack(void)MDE=1;MCO = 0;MDO = 0;/IIC_Delay_us(2);MCO = 1;/IIC_Delay_us(2);MCO = 0;/IIC_Delay_us(1);MDO =

23、1;bit read_ack(void)bit flag;MCO = 0;/IIC_Delay_us(2);MDE=1;MDO = 1;MCO = 1;/IIC_Delay_us(2);MDE=0; flag = MDI;MCO = 0;return flag; void iic_nack()MDE=1;MDO = 1; /IIC_Delay_us(2);MCO = 1;/IIC_Delay_us(2);MCO = 0;/* 函數(shù)名 : get_byte;* 描述 : 從 IIC 總線獲取一個字節(jié) ;* 輸入 : none ;* 返回值 : 一字節(jié)數(shù)據 ;* 注釋 : none;*/unsig

24、ned char get_byte(void) / 輸入一個字節(jié) unsigned char dd;int i;dd=0;MDE=1;MDO = 1;MDE=0;for (i=0;i<8;i+)MCO = 0; IIC_Delay_us(1);MCO = 1; /IIC_Delay_us(1);dd<<=1;if (MDI)dd|=0x01;MCO = 0; return(dd);/* 函數(shù)名 : out_byte;* 描述 : 向 IIC 總線輸出一個字節(jié) ;* 輸入 : 一字節(jié)數(shù)據* 返回值 : none;* 注釋 : none;*void out_byte(unsign

25、ed char dd)/ 輸出一個字節(jié) unsigned char i;MDE=1;for(i=0;i<8;i+)MCO = 0;/IIC_Delay_us(0); MDO = (dd & 0x80)>>7; IIC_Delay_us(1); MCO = 1;/IIC_Delay_us(3); dd <<= 1;MCO = 0;/* 函數(shù)名 : IIC_Delay_us;* 描述 : IIC 總線延時函數(shù) ;* 輸入 : 延時參數(shù)* 返回值 : none;* 注釋 : none;*/void IIC_Delay_us(unsigned int times)

26、unsigned int i;unsigned char DelayJs; for (i=0; i<times; i+)DelayJs+;4 、 主程序( Prj6 )#include"aduc848.h" #include"KeyProcess.h"#include"rtc.h"#include"LCD1602.h"unsigned char CurrentTime7=55,59,21,6,23,04,11;unsigned char ClockSetSave13=10,00,22,ClockSetSave

27、23=20,00,22;unsigned char code table7=0x53,0x4d,0x48,0x59,0x6d,0x44,0x57;unsigned char code table14=0x20,0x53,0x4d,0x48;unsigned char KeyValue,ClockKeyValue,shijianzhi=0;un sig ned char SetMode=0;un sig ned char ShowMode=0;un sig nedcharClock=1,ClockSet=0,Fi ni shClockSet 仁0,Fi ni shClockSet2=0,Cloc

28、kE n1=0,ClockEn2=0;un sig ned in t i=0;void KeyProcess();void stop()P1&=OxfO;P2|=0x0f;P2&=0xfe; if(P1 &0x08)=0)P2&=Oxfe;void mai n()PLLCO N&=0xf8;/設置頻率為12.58MHzCFG848|=0x01;使用片內xramini t();I2CCON=OxE8;配置iic為軟件主發(fā)送模式SetTime(Curre ntTime);SwitchRTC(1);write_com(0x82);/寫冒號write_data(

29、0x3A);write_com(0x85);/寫冒號write_data(0x3A);write_com(0xc2);/寫短橫線write_data(0x2D);write_com(0xc5);/寫短橫線write_data(0x2D);write_com(0xc8);/寫短橫線write_data(0x2D);while(1)/HourReadTime():把時間從芯片中讀出 SetTime():把時間寫入芯片 SwitchRTC(1):讓時鐘芯片走時 SwitchRTC(O):讓時鐘芯片暫停計 時stop();if(SetMode=0)ReadTime(Curre ntTime); wri

30、te_com(0x80);write_data(Curre ntTime2/10+48);write_data(Curre ntTime2%10+48);if(Curre ntTime0=ClockSetSave10&&Curre ntTime1=ClockSetSave11&&Curre ntTime2=ClockSetSave12) &&ClockE n1=1|write_com(0x83);write_data(Curre ntTime1/10+48);/Mi nutewrite_data(Curre ntTime1%10+48);writ

31、e_com(0x86);write_data(Curre ntTime0/10+48);/Seco ndwrite_data(Curre ntTime0%10+48);write_com(OxcO);write_data(Curre ntTime6/10+48);/Yearwrite_data(Curre ntTime6%10+48);write_com(0xc3);write_data(Curre ntTime5/10%10+48);/Mon thwrite_data(Curre ntTime5%10+48);將十進制數(shù)轉換為十六write_com(0xc6);進制的ASCII值以便在wri

32、te_data(Curre ntTime4/10%10+48);/DayLCD上顯示write_data(Curre ntTime4%10+48);switch(Curre ntTime3)/Weekcase1:write_com(0xc9);write_data(0x4D);write_data(0x6f);write_data(0x6e);break;顯示Moncase2:write_com(0xc9);write_data(0x54);write_data(0x75);write_data(0x65);break;顯示Tuecase3:write_com(0xc9);write_data

33、(0x57);write_data(0x65);write_data(0x64);break;顯示Wencase4:write_com(0xc9);write_data(0x54);write_data(0x68);write_data(0x75);break;顯示Thucase5:write_com(0xc9);write_data(0x46);write_data(0x72);write_data(0x69);break;顯示Fricase6:write_com(0xc9);write_data(0x53);write_data(0x61);write_data(0x74);break;顯

34、示Satcase7:write_com(0xc9);write_data(0x53);write_data(0x75);write_data(0x6e);break;顯示Sundefault: break;KeyProcess();(CurrentTime0=ClockSetSave20&&CurrentTime1=ClockSetSave21&&Cur rentTime2=ClockSetSave22)&&ClockEn2=1) / 與鬧 鈴時間相同則鬧鈴響PWM1H=62;PWM1L=100;PWMCON=0x31;KeyDelay(333)

35、;PWM1H=0;PWM1L=0;PWMCON=0x00;KeyDelay(333);/ 整點報時/ 對鬧鈴響鈴時長和音調等if(CurrentTime0=0&&CurrentTime1=0)PWM1H=62;PWM1L=100;PWMCON=0x21;的設定KeyDelay(333);PWM1H=0;PWM1L=0;PWMCON=0x00;KeyDelay(333);if(ClockEn1=1)C1write_com(0x8c);write_data(0x43);write_data(0x31);elsewrite_com(0x8c);write_data(0x20);wri

36、te_data(0x20); if(ClockEn2=1) C1write_com(0x8e);write_data(0x43);write_data(0x32); else/ 如果鬧鈴 1 被設置則顯示/ 否則清顯/ 如果鬧鈴 2 被設置則顯示/ 否則清顯write_com(0x8e);write_data(0x20);write_data(0x20); void KeyProcess()描KeyValue=GetKey();switch(KeyValue)case 0: write_com(0xcf); write_data(tableSetMode); if(SetMode=0)Swit

37、chRTC(0); SetMode+;if(SetMode>7)計時 SetMode=0; SetTime(CurrentTime); if(SetMode=0)SwitchRTC(1); write_com(0xcf); write_data(0x20);break;case 1:/ 按鍵處理 , 啟動按鍵掃/ 按鍵 0 進入設置模式/ 顯示被設置項/ 進入設置,則停止計時/ 如果設置完了, 則開始/ 按鍵 1 :加/ 執(zhí)行按鍵 1 是在進入設置的模式switch(SetMode)下case1:write_com(0xcf);write_data(0x53);CurrentTime0+

38、;if(CurrentTime0>59)Curr entTime0=0;break;/miaocase2:write_com(0xcf);write_data(0x4d);CurrentTime1+;if(CurrentTime1>59)Curr entTime1=0;break;/fencase3:write_com(0xcf);write_data(0x48);CurrentTime2+;if(CurrentTime2>23)Curr entTime2=0;break;/shicase4:write_com(0xcf);write_data(0x59);CurrentTi

39、me6+;if(CurrentTime6>99)CurrentTime6=0;break;/yearcase 5:write_com(0xcf);write_data(0x6d);CurrentTime5+;if(CurrentTime5>12)Curr entTime5=1;break;/monthcase 6:/daywrite_com(0xcf);write_data(0x44);CurrentTime4+;switch(CurrentTime5)case 1:case 3:case 5:case 7:case 8:case 10:case 12:if(CurrentTime

40、4>31)CurrentTime4=1;break;case 4:case 6:case 9:case 11:if(CurrentTime4>30)CurrentTime4=1;break;case 2: if(CurrentTime6%4)if(CurrentTime4>28)CurrentTime4=1;else if(CurrentTime4>29)CurrentTime4=1;break;default:break;break;case 7:write_com(0xcf);write_data(0x57);CurrentTime3+;if(CurrentTime

41、3>7)Curre ntTime3=1;break; /weekdefault:break;break;case 2: / 按鍵 2:減switch(SetMode)case1:CurrentTime0-;if(CurrentTime0>254)CurrentTime0=59;break;/miaocase2:CurrentTime1-;if(CurrentTime1>254)CurrentTime1=59;break;/fencase3:CurrentTime2-;if(CurrentTime2>254)CurrentTime2=23;break;/shicase4:

42、CurrentTime6-;if(CurrentTime6>254)CurrentTime6=99;break;/yearcase5:CurrentTime5-;if(CurrentTime5>254)CurrentTime5=12;break;/monthcase 6:/dayCurrentTime4-; switch(CurrentTime5) case 1: case 3:case 5:case 7: case 8:case 10: case12:if(CurrentTime4>254)CurrentTime4=31;break;case 4:case 6:case 9

43、: case11:if(CurrentTime4>254)CurrentTime4=30;break;case 2: if(CurrentTime6%4)if(CurrentTime4>254)CurrentTime4=28;else if(CurrentTime4>254)CurrentTime4=29; break;default:break;break;case7:CurrentTime3-;if(CurrentTime3>7)CurrentTime3=1;break; /week default:break;break;case 3: / 按鍵 3 中途退出設置

44、模式/ 在設置模式中中途退出/ 開計時if(SetMode!=0)SetTime(CurrentTime);SetMode=0;SwitchRTC(1);顯示break;write_com(0xcf); write_data(0x20);case 4:/ 按鍵 4 設置鬧鈴write_com(0xcf); write_data(0x20); while(Clock!=0) switch(Clock) case 1: / 用 Clock 來進行判斷鬧鈴設置完否/*鬧鈴 1while(FinishClockSet1!=1)write_com(0x80); write_data(ClockSetSa

45、ve12/10+48); write_data(ClockSetSave12%10+48);write_com(0x83);write_data(ClockSetSave11/10+48); write_data(ClockSetSave11%10+48);write_com(0x86);write_data(ClockSetSave10/10+48); write_data(ClockSetSave10%10+48);write_com(0x8a);/Hour/Minute/Second/ 鬧鈴 設置序 號write_data(0x43);write_data(0x4c);write_dat

46、a(0x4f);write_data(0x43);write_data(0x4b);write_data(0x31);if(ClockEn1=0)write_com(0x89);write_data(0x20); else write_com(0x89);write_data(0x2a);進入下一個鬧鈴設置ClockKeyValue=GetKey(); switch(ClockKeyValue)case 0:ClockSet+; write_com(0xcf); write_data(table1ClockSet); if(ClockSet>3)ClockSet=0;FinishCloc

47、kSet1=1; Clock+; write_com(0xcf); write_data(0x20);break;case 1: switch(ClockSet)/ 按鍵 0 設置鬧鐘/ 設置鍵按完三次自動/ 鬧鈴設置 +2:write_com(0xcf);write_data(0x4d);ClockSetSave11-;if(ClockSetSave11>254)case1:write_com(0xcf);write_data(0x53);ClockSetSave10+;if(ClockSetSave10>59)C lockSetSave10=0;break;/miaocase2

48、:write_com(0xcf);write_data(0x4d);ClockSetSave11+;if(ClockSetSave11>59)C lockSetSave11=0;break;/fencase3:write_com(0xcf);write_data(0x48);ClockSetSave12+;if(ClockSetSave12>23)C lockSetSave12=0;break;/shidefault:break;break;case 2: / 鬧鈴設置 2 switch(ClockSet)case1:write_com(0xcf);write_data(0x53)

49、;ClockSetSave10-;if(ClockSetSave10>254)ClockSetSave10=59;break;/miaocaseClockSetSave11=59;break;/fencase3:write_com(0xcf);write_data(0x48);ClockSetSave12-;if(ClockSetSave12>254)ClockSetSave12=23;break;/shidefault:break;/ 中途退出鬧鈴設置/ 鬧鈴設置序號清除顯break;case 3:FinishClockSet1=1;Clock=0; write_com(0x89

50、);write_data(20);write_data(20);write_data(20);write_com(0x8e);write_data(20);write_data(20);write_com(0xcf); write_data(0x20);break;case 5: /是否開啟鬧鐘,并予以顯if(ClockEn1=0)ClockEn1=1; write_com(0x89); write_data(0x2a); elseClockEn1=0; write_com(0x89); write_data(0x20);break;default:break; /case4->case1 end/*鬧鈴 2break;case 2 :while(FinishClockSet2!=1)write_com(0x80);write_data(ClockSetSave22/10+48);/Hourwrite_data(ClockSetSave22%10+48);write_com(0x83);write_data(ClockSetSave21/10+48);/Minutewrite_dat

溫馨提示

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

評論

0/150

提交評論