




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)課題:姓名:班級(jí):學(xué)號(hào):指導(dǎo)老師:日期:電子萬(wàn)年歷的設(shè)計(jì)基于 AT89S51單片機(jī)的多功能一、緒論:現(xiàn)在是一個(gè)知識(shí)爆炸的新時(shí)代,新產(chǎn)品、新技術(shù)層出不窮,電子技術(shù)的發(fā)展更是日新 月異??梢院敛豢鋸埖恼f(shuō),電子技術(shù)的應(yīng)用無(wú)處不在,電子技術(shù)正在不斷地改變我們的生活, 改變著我們的世界。近些年,隨著科技的發(fā)展和社會(huì)的進(jìn)步,人們對(duì)電子萬(wàn)年歷的要求也越來(lái)越高,傳統(tǒng)的電子萬(wàn)年歷已不能滿足人們的需求。人們對(duì)多功能電子萬(wàn)年歷的功能及工作順序都非常熟悉,但是卻很少知道它的內(nèi)部結(jié)構(gòu)以及工作原理。由于單片機(jī)具有靈活性強(qiáng)、 成本低、功耗低、保密性好等特點(diǎn),還有,單片機(jī)是微型計(jì)算機(jī)的一個(gè)重要分枝,單片機(jī)是
2、 把中央處理器、隨機(jī)存儲(chǔ)器、只讀存儲(chǔ)器、定時(shí)器/計(jì)數(shù)器、并行接口接口、串行接口、A/D轉(zhuǎn)換器等主要計(jì)算機(jī)部件,集中在一塊集成電路芯片上。雖然只是一個(gè)芯片,但從功能上它就相當(dāng)于一臺(tái)完整的微機(jī)。隨著科學(xué)技術(shù)的迅猛發(fā)展,單片計(jì)集成度高、體積小、運(yùn)算速度快、功耗低、運(yùn)行可靠、價(jià)格低廉等諸多優(yōu)點(diǎn),越來(lái)越顯現(xiàn)出來(lái)。在日常生活方面,我們使 用彩電、錄放機(jī)、 VCD照相機(jī)、手機(jī)等等可以說(shuō)舉不勝舉。所以多功能電子萬(wàn)年歷一般都 以單片機(jī)為核心,外加一些外圍設(shè)備來(lái)實(shí)現(xiàn)。 由單片機(jī)作為多功能電子萬(wàn)年歷的核心控制器, 通過(guò)按鍵可以進(jìn)行定時(shí)、校時(shí)功能。輸出設(shè)備顯示器可以用液晶顯示技術(shù)和數(shù)碼管顯示技術(shù)。意義:電子萬(wàn)年歷作為
3、電子類小設(shè)計(jì)不僅是市場(chǎng)上的寵兒,也是是單片機(jī)實(shí)驗(yàn)中一個(gè)很常用的題目。因?yàn)樗挠泻芎玫拈_(kāi)放性和可發(fā)揮性,因此對(duì)作者的要求比較高,不僅考察了對(duì)單片機(jī)的掌握能力更加強(qiáng)調(diào)了對(duì) 神農(nóng)百草膏單片機(jī)擴(kuò)展的應(yīng)用。而且在操作的設(shè)計(jì)上要力 求簡(jiǎn)潔,功能上盡量齊全,顯示界面也要出色。所以,電子萬(wàn)年歷無(wú)論作為比賽題目還是練 習(xí)題目都是很有價(jià)值。二、系統(tǒng)總體方案設(shè)計(jì):1、共具備兩個(gè)功能:(1)顯示年月日及分秒信息(2)具有可調(diào)整日期和時(shí)間功能。2、硬件電路的總體框圖:圖1總體硬件框圖3、所用芯片U1AXTAL1YTA I oP0.0/AD0 P 0.1/AD1 P0.2/AD2P0.3/AD3P0.4/AD4X IAL
4、2P0.5/AD5P0.6/AD6RSTP0.7/AD7P2.0/A8P 2.1/A9P SENP2.2/A10P2.3/A11ALEP2.4/A12EAP2.5/A13P2.6/A14P2.7/A15P 1.0/T2P 3.0/RXDP 1.1/T2EXP 3.1/TXDP 1.2P 3.2/INT0P 3.3/INT1P 1.3P 1.4P3.4/T0P 1.5P3.5/T1P 1.6P 3.6/WRP 1.7P 3.7/RDAT89C52191894681229_3031_11_12233J517三、硬件系統(tǒng)設(shè)計(jì):1、硬件原理圖:DNGLM016LX222pFX1+5VAn*I 01U2
5、2+5VX1VCC1VCC2RSTSCLKX2I/O536123U119XTAL1P0.0/AD0P0.1/AD1P0.2/AD2XTAL2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6RSTP0.7/AD7P2.0/A8P2.1/A9P2.2/A10PSENP2.3/A11ALEP2.4/A12EAP2.5/A13P2.6/A14P2.7/A15P1.0P3.0/RXDP1.1P3.1/TXDP1.2P3.2/rNT0P1.3P3.3/rNTTP1.4P3.4/T0P1.5P3.5/T1P1.6P3.6/WRP1.7P3.7/RD1892930 k21 22- -23n25
6、 F27-2810073635-343239V5+fl o 上工 fl oR -DNGU3VCCDQGND DS18B20P0 口作為6位液晶顯示電路的驅(qū)動(dòng)接口,這是由于P0 口,它的驅(qū)動(dòng)能力強(qiáng),故只需外接上拉電阻便可以把LED數(shù)碼,在單片機(jī)進(jìn)行動(dòng)態(tài)掃描的時(shí)候不會(huì) 8位LED數(shù)碼管的 ,由一個(gè)8位的I/O 口圖3硬件原理2、硬件原理:在硬件電路中采用 輸出驅(qū)動(dòng)電路工作處于開(kāi)漏狀態(tài) 管點(diǎn)亮。因?yàn)楣碴幍腖ED數(shù)碼管它的驅(qū)動(dòng)電流是分開(kāi)的 影響彼此的電流,故該電路中的8位LED數(shù)碼管均用共陽(yáng)陰極的數(shù)碼管。 位選線分別由相應(yīng)的 P2. 0P2. 5控制,而將其相應(yīng)的段選線并聯(lián)在一起 控制,即 P0 口。
7、P3 口與八個(gè)校時(shí)按鍵相連,以成功實(shí)現(xiàn)萬(wàn)年歷校時(shí)的功能。四、系統(tǒng)軟件設(shè)計(jì):1、程序流程框圖:2、年調(diào)整程序流程圖,圖4 程序流程框圖月、日調(diào)整程序流程圖類似。圖5年調(diào)整程序流程圖3、源程序代碼:#include 溫度傳送數(shù)據(jù) IO 口0 /#include Command/#include LCD1602.hvoid show_time();/液晶#define LCD_DA TA/#include DS1302.h顯示程序1/ Data#define uint unsigned int/*1602 液 晶 顯#define#define uchar unsigned char示部分子程序LC
8、D_CLEAR_SCREENchar*/0x01 / 清屏hide_sec,hide_min,hide_hour#defineLCD_HOMING,hide_day,hide_week,hide_m0x02 / 光onth,hide_year; /秒 ,分 ,時(shí)/Port標(biāo)返回原點(diǎn)到日 ,月,年位閃的計(jì)數(shù)Definitions*void LCD_Write(bit style,char*unsigned char input)done,count,temp,flag,Up_Ke*y_flag,down_flag;sbit LcdRs= P 2人5;LcdEn=0;uchar temp_valu
9、e; /sbit LcdRw= P 2人6;LcdRs=style;溫度值sbit LcdEn= P 2人7;LcdRw=0;ucharsfr DBPort = 0x80;_nop_();TempBuffer5,week_value/P0=0x80,P1=0x90,P2DBPort=input;2;=0xA0,P3=0xB0. 數(shù)據(jù)端口_nop_();/注意順序內(nèi)部等待函數(shù)LcdEn=1;*_nop_();/注意順序sbit DS1302_CLK = PIT;*LcdEn=0;/實(shí)時(shí)時(shí)鐘時(shí)鐘線引腳*_nop_();sbit DS1302_IO= P 1人6;*LCD_Wait();/實(shí)時(shí)時(shí)鐘數(shù)
10、據(jù)線引腳unsignedcharsbit DS1302_RST = P15;LCD_Wait(void)/實(shí)時(shí)時(shí)鐘復(fù)位線引腳/ 設(shè) 置 顯 示 模 式sbit p ortOI = P 3人0;LcdRs=0;*sbit p ort02 = P 3人1;LcdRw=1;*sbit p ort03 = P 3人2;_nop_();/ 延 時(shí)一個(gè) 時(shí)*sbit p ort04 = P 3人3;鐘周期#define LCD_SHOWsbit ACC0 = ACCS;LcdEn=1;_nop_();0x04/顯示開(kāi)sbit ACC7 = ACC7;#define LCD_HIDEsbit Set_Key
11、 =P 2人0;0x00/顯示關(guān)/模式切換鍵LcdEn=0;sbit Up_Key =P 2;return DBPort;/加法按鈕#define LCD_CURSORsbit Down_Key = P 2人2;/向 LCD 寫(xiě)入命令或數(shù)據(jù)0x02/顯示光/減法按鈕*標(biāo)sbit out_Key_Key=P 2人3;*#define LCD_NO_CURSOR/立刻跳出調(diào)整模式按鈕*0x00/無(wú)光標(biāo)sbit DQ = P19/#define LCD_COMMAND幵*卄*卄*卄*卄*卄*卄*#defineLCD_NO_FLASH0x00/光標(biāo)不#define LCD_FLASH0x01/ 光標(biāo)閃
12、閃動(dòng) void void LCD_Initial()LcdEn=0;LCD_Write(LCD_COMMAND,0x38);/8 位數(shù)據(jù)端口 ,2 行顯示 ,5*7 點(diǎn)陣while(*str!=0)LCD_Write(LCD_DATA,*str);str+;LCD_Set_KeyDisplay(unsig ned char DisplayMode) LCD_Write(LCD_CO MMAND, 0x08|DisplayMode);LCD_Write(LCD_CO MMAND,0x38);LCD_Set_KeyDisplay( LCD_SHOW|LCD_NO_CU RSOR); / 開(kāi)啟顯示
13、, 無(wú) 光標(biāo)/ 設(shè) 置 輸 入 模幵*卄*卄*卄*卄*卄*卄*#defineLCD_AC_UP_KEYLCD_Write(LCD_CO MMAND,LCD_CLEAR_SC REEN); /清屏LCD_Set_KeyInput(LC D_AC_UP_KEY|LCD_NO_ MOVE); /AC 遞增 , 畫(huà)面不動(dòng)/*DS1302部分子*/typedef_SYSTEMTIME#define0x02LCD_AC_DOWN0x00/default/ 液 晶 字 符 輸 入 的 位 置*時(shí)鐘序structunsigned char Second; unsigned char Minute; unsig
14、ned char Hour; unsigned char Week; unsigned char Day; unsigned char Month;#define LCD_MOVEvoid GotoXY(unsigned charunsigned charYear;0x01 / 畫(huà)x, unsigned char y)unsignedchar面可平移DateString11;#define LCD_NO_MOVEif(y=0)unsignedchar0x00TimeString9;/defaultLCD_Write(LCD_COSYSTEMTIME;/定義的MMAND,0x80|x);時(shí)間類型
15、voidif(y=1)SYSTEMTIMELCD_Set_KeyInput(unsigneCurrentTime;d char InputMode)LCD_Write(LCD_COMMAND,0x80|(x-0x40);LCD_Write(LCD_CO#define AM(X)XMMAND, 0x04|InputMode);#define PM(X)(X+12)/將字符輸出到液晶顯示/ 轉(zhuǎn)成 24 小時(shí)制void#define DS1302_SECOND/ 初 始 化Print(unsighttp:/www.shenn0x80/時(shí)鐘LCD*ned char *str)芯片的寄存器位置,存放時(shí)/
16、 相charcharchar#define DS1302_MINUTE0x82#define DS1302_HOUR0x84#define DS1302_WEEK0x8A#define DS1302_DAY0x86#define DS1302_MONTH 0x88#define DS1302_YEAR0x8C voidDS1302InputByte(unsigned char d) / 實(shí)時(shí)時(shí)鐘寫(xiě)入一 字節(jié) (內(nèi)部函數(shù) ) unsigned char i;ACC = d; for(i=8; i0; i-) DS1302_IOACC0; 當(dāng)于匯編中的 RRCDS1302_CLK = 1;DS13
17、02_CLK = 0;ACC = ACC 1;unsigned charDS1302OutputByte(void) /實(shí)時(shí)時(shí)鐘讀取一字節(jié) (內(nèi)部函數(shù) )unsigned char i;for(i=8; i0; i-)ACC = ACC 1; /相當(dāng)于匯編 中的 RRCACC7DS1302_IO;DS1302_CLK = 1;DS1302_CLK = 0; return(ACC);void Write1302(unsigned char ucAddr, unsigned char ucDa) /ucAddr: DS1302 地址 , ucData: 要寫(xiě)的數(shù)據(jù) DS1302_RST = 0;D
18、S1302_CLK = 0;DS1302_RST = 1;DS1302InputByte(ucAddr);/ 地址,命令DS1302InputByte(ucDa); / 寫(xiě) 1Byte 數(shù)據(jù) DS1302_CLK = 1; DS1302_RST = 0;unsignedRead1302(unsigned ucAddr) /讀取 DS1302 某 地址的數(shù)據(jù)unsigned char ucData; DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1;DS1302InputByte(ucAddr|0x01); / 地址,命令 ucDataDS1302Ou
19、tputByte();/ 讀 1Byte 數(shù)據(jù) DS1302_CLK = 1; DS1302_RST = 0; return(ucData);void DS1302_GetTime(SYSTEM TIME *Time) / 獲取時(shí)鐘 芯片的時(shí)鐘數(shù)據(jù)到自定義 的結(jié)構(gòu)型數(shù)組 unsignedReadValue;ReadValue Read1302(DS1302_SECON D);Time-Second (ReadValue&0x70)4)*10 + (ReadValue&0x0F);ReadValue Read1302(DS1302_MINUT E);Time-Minute (ReadValue&
20、0x70)4)*10 + (ReadValue&0x0F);ReadValueRead1302(DS1302_HOUR);Time-Hour (ReadValue&0x70)4)*10+ (ReadValue&0x0F);ReadValueRead1302(DS1302_DAY);Time-Day (ReadValue&0x70)4)*10 + (ReadValue&0x0F);ReadValueRead1302(DS1302_WEEK);Time-Week (ReadValue&0x70)4)*10+ (ReadValue&0x0F);ReadValue Read1302(DS1302_MO
21、NTH );Time-Month (ReadValue&0x70)4)*10 + (ReadValue&0x0F);ReadValueRead1302(DS1302_YEAR);Time-Year (ReadValue&0x70)4)*10 + (ReadValue&0x0F); Time-DateString5 = Time-Month/10 + 0;Time-DateString6= Time-Month%10 + 0;elseTime-DateString10 = 0; / 字符串末尾加 0 ,判 斷結(jié)束字符 voidDateToStr(SYSTEMTIME *Time)/將時(shí)間年 ,月
22、 ,日,星期數(shù)據(jù)轉(zhuǎn)換成液晶顯 示字符串,放到 數(shù)組里 DateString if(hide_year2) /這里的 if,else 語(yǔ)句都是判 斷位閃爍 ,2 就不顯示 ,輸出字符串為 2007/07/22Time-DateString0= 2;Time-DateString1= 0;Time-DateString5 = ;Time-DateString6 = ;Time-DateString7if(hide_dayDateString8 = Time-Day/10 + 0;Time-DateString9 = Time-Day%10 + 0;else void TimeToStr(SYSTE
23、MTIME *Time) /將時(shí) ,分 ,秒數(shù)據(jù) 轉(zhuǎn)換成液晶顯示字符放到 數(shù)組 TimeString; if(hide_hourTimeString0 = Time-Hour/10 + 0;Time-TimeString1= Time-Hour%10 + 0;elseTime-TimeString0 = ;Time-DateString2 = Time-Year/10 + 0;Time-DateString3 = Time-Year%10 + 0;elseTime-DateString0 = ;Time-DateString1 = ;Time-DateString2 = ;Time-DateS
24、tring3 = ;Time-DateString4Time-DateString8 = ;Time-DateString9 if(hide_weekWeek%10 + 0; / 星 期的數(shù)據(jù)另外放到 week_value 數(shù)組 里,跟 年, 月 ,日的分開(kāi)存放 ,因?yàn)榈纫?下要在最后顯示elseweek_value0 Time-TimeString1 = ;Time-TimeString2if(hide_minTimeString3 = Time-Minute/10 + 0;Time-TimeString4 = Time-Minute%10 + 0;elseTime-TimeString3
25、= ;Time-TimeString4 = ;Time-TimeString5if(hide_month2)week_value1 = 0;if(hide_secTimeString6 = Time-Second/10 + 0;Time-TimeString7 = Time-Second%10 + 0;else/*ds18b20序*/子程unsignedReadOneChar(void)charTime-TimeString6 = ;Time-TimeString7 = ;Time-DateString80;void/時(shí)鐘芯片初始化unsigned char Second=Read1302(D
26、S1302_ SECOND);if(Second&0x80) /判斷 時(shí)鐘芯 片是否 關(guān)閉Initial_DS1302(void)Write1302(0x8e,0x00);/寫(xiě)入允許Write1302(0x8c,0x07);/ 以下寫(xiě)入初始化時(shí)間 日期:07/07/25. 星期 : 3. 時(shí)間 :23:59:55Write1302(0x88,0x07);Write1302(0x86,0x25);Write1302(0x8a,0x07);Write1302(0x84,0x23);Write1302(0x82,0x59);Write1302(0x80,0x55);Write1302(0x8e,0x
27、80); /禁止寫(xiě)入/*ds18b20 子函數(shù)(晶振 12MHz )*/延遲uchar i=0; uchar dat = 0; for (i=8;i0;i-)DQ = 0; /給脈沖信號(hào)void delay_18B20(unsignedint i)while(i-);/*ds18b20函*/沖信號(hào)初始化數(shù)dat=1;DQ = 1; /給脈if(DQ) dat|=0x80; delay_18B20(4);return(dat);void Init_DS18B20(void)unsigned char x=0;DQ =/DQ 復(fù)位 delay_18B20(8);做延時(shí)DQ = 0;單片機(jī)將 DQ
28、拉低delay_18B20(80);確延時(shí) 大于 480usDQ = 1;拉高總線1;/稍/精/delay_18B20(14); x=DQ;/ 稍做延時(shí)后 如果 x=0 初始化成功 x=1 則初始化 失敗delay_18B20(20);/*ds18b20 個(gè)字節(jié) */讀一/*ds18b20一個(gè)字*/voiddat)WriteOneChar(ucharunsigned char i=0;for (i=8; i0; i-)DQ = 0;DQ = dat&0x01; delay_18B20(5);DQ = 1;dat=1;讀取 ds18b20 當(dāng) 前 溫 度 */*void ReadTemp(voi
29、d)unsigned char a=0; unsigned char b=0; unsigned char t=0;溫度符號(hào)Init_DS18B20();WriteOneChar(0xCC);/ 跳過(guò)讀序號(hào)列號(hào)的 操作WriteOneChar(0x44);/ 啟動(dòng)溫度轉(zhuǎn)換TempBuffer3=C;TempBuffer4=0;void Delay1ms(unsigned count)intwhile(port01=1);/Up_Keykey()/ 升序 按unsigned int i,j; for(i=0;icount;i+) for(j=0;j0;delay-) for(i=0;i62;i+
30、) /1ms 延時(shí) .;=1)mdelay(8);switch(count)case 1:delay_18B20(100);a=ReadOneChar();/讀取溫度值低位 b=ReadOneChar();/讀取溫度值高位 temp_value=b4;void temp_to_str() / 溫度 數(shù)據(jù)轉(zhuǎn)換成液晶字符顯示TempBuffer0=temp_value/10+0; /十位TempBuffer1=temp_value%10+0; /個(gè)位TempBuffer2=0xdf; /temp=Read1302(DS1302_SECOND); / 讀取秒數(shù)void/ 跳出調(diào)整模式 ,返回默認(rèn)顯
31、示outkey()temp=temp+1; / 秒數(shù)加 1 uchar Second;if(out=0|port01=1) mdelay(8);count=0;hide_sec=0,hide_min=0 ,hide_hour=0,hide_day=0,hi de_week=0,hide_month=0,hi de_year=0;Second=Read1302(DS1 302_SECOND);Write1302(0x8e,0x00); /寫(xiě)入允許Write1302(0x80,Second &0x7f);Write1302(0x8E,0x80);/禁止寫(xiě)入done=0;while(out=0);U
32、p_Key_flag=1; 調(diào)整后更新標(biāo)志if(temp&0x7f)0x59)超過(guò) 59 秒,清零temp=0;case 2:/數(shù)據(jù)break;/temp=Read1302(DS1302_MINUTE); / 讀取分?jǐn)?shù)if(temp0x7)temp=temp+1; / 分?jǐn)?shù)加temp=1;temp=temp+1;/ 年數(shù)加 1Up_Key_flag=1;break;Up_Key_flag=1;if(temp0x59) 超過(guò) 59 分,清零/case 5:if(temp0x85)case 3:temp=0;break;temp=Read1302(DS1302_HOUR); /讀取小時(shí)數(shù)temp=
33、temp+1;1/ 小時(shí)數(shù)加Up_Key_flag=1;if(temp0x23)小時(shí) ,清零/超過(guò)23case 4:temp=0;break;temp=Read1302(DS1302_WEEK); / 讀取星期數(shù)temp=temp+1; / 星期數(shù)加1Up_Key_flag=1;temp=Read1302(DS1302_DAY); /讀取日數(shù)temp=temp+1;Up_Key_flag=1;if(temp0x31)case 6:/日數(shù)加temp=1;break;default:break;temp=0;break;while(Up_Key=0);while(port02=1);temp=Re
34、ad1302(DS1302_MONTH); / 讀取月數(shù)/void Down_Keykey()/ 降序 按鍵temp=temp+1;Up_Key_flag=1;if(temp0x12)case 7:/月數(shù)加temp=1;break;Down=1;if(Down=0|port03=1)mdelay(8);switch(count)case 1:temp=Read1302(DS1302_YEAR); / 讀取年數(shù)temp=Read1302(DS1302_SECOND); / 讀取秒數(shù)temp=temp-1;/秒數(shù)減Down_Key_flag=1;case 6:break;while(port03=
35、1);if(temp=-1)temp=Read1302(DS1302_MONTH); / 讀取月數(shù)Down_Key_flag=1;/數(shù)據(jù)調(diào)整后更新標(biāo)志temp=0x23;temp=temp-1; /月數(shù)減 1break;if(temp=0x7f)0 秒 , 返回 59 秒/小于case 4:temp=0x59;temp=Read1302(DS1302_WEEK); / 讀取星期數(shù)case 2:break;temp=temp-1; / 星期數(shù)減1Down_Key_flag=1;if(temp=0)temp=12;break;case 7:temp=Read1302(DS1302_MINUTE);
36、 /讀取分?jǐn)?shù)Down_Key_flag=1;temp=Read1302(DS1302_YEAR); / 讀取年數(shù)if(temp=0)temp=temp-1; / 分?jǐn)?shù)減temp=0x7;temp=temp-1; /年數(shù)減 1Down_Key_flag=1;break;Down_Key_flag=1;case 5:if(temp=-1)if(temp=-1)temp=0x59;/ 小于 0 秒 ,返回 59 秒temp=Read1302(DS1302_DAY); /讀取日數(shù)temp=0x85;break;temp=temp-1; /日數(shù)減 1break;case 3:Down_Key_flag=
37、1;default:break;temp=Read1302(DS1302_HOUR); /讀取小時(shí)數(shù)if(temp=0)temp=temp-1; / 小時(shí)數(shù)減1temp=31;while(Down=0);/掃描模式切換按鍵 switch(count) case 1:do晶顯示數(shù)據(jù)void Set_Keykey()/ 模式選 擇按鍵while(count=2);break;/count=1, 調(diào)整秒case 2:doSet_Key=1;if(Set_Key=0|port04=1)outkey();描跳出按鈕/count=2, 調(diào)整分hide_sec=0;mdelay(8);count=count
38、+1;/Set_Keykey 按 一次,count就加1done=1;/進(jìn)入調(diào)整模式Up_Keykey();/掃描加按鈕Down_Keykey();/掃描減按鈕outkey();Up_Keykey();Down_Keykey();while(Set_Key=0);if(Up_Key_flag=1|down_fl ag=1) /數(shù)據(jù)更新,重新 寫(xiě)入新的數(shù)據(jù)if(temp0x60)temp=0;while(port04=1);Write1302(0x8e,0x00);/ 寫(xiě)入允許if(Up_Key_flag=1|down_flag=1)void行keydo ne()/按鍵功能執(zhí)Write1302(
39、0x80,temp|0x80);/寫(xiě)入新的秒數(shù)Write1302(0x8e,0x00);入允許/寫(xiě)uchar Second;if(flag=0)關(guān)閉時(shí)鐘 ,停止計(jì)時(shí)/Write1302(0x8e,0x80);止寫(xiě)入/ 禁Write1302(0x82,temp); 入新的分?jǐn)?shù)/ 寫(xiě)Up_Key_flag=0; Write1302(0x8e,0x00); 寫(xiě)入允許/Down_Key_flag=0;Write1302(0x8e,0x80);止寫(xiě)入/ 禁temp=Read1302(0x80);Write1302(0x80,temp|0x80);hide_sec+; 閃計(jì)數(shù)/位Up_Key_flag=0
40、;Down_Key_flag=0;Write1302(0x8e,0x80);/禁止寫(xiě)入if(hide_sec3)hide_min+;flag=1;Set_Keykey();show_time();/液hide_min=0;hide_sec=0;if(hide_min3)show_time();while(count=4);break;case 4:do/count=5, 調(diào)整日while(count=3);break;case 3:do/count=4, 調(diào)整星期hide_week=0;outkey();/count=3, 調(diào)整小時(shí)hide_hour=0;Up_Keykey();outkey(
41、);hide_min=0;Down_Keykey();outkey();Up_Keykey();Down_Keykey();if(Up_Key_flag=1|down_flag=1)Up_Keykey();Down_Keykey();if(Up_Key_flag=1|down_flag=1)Write1302(0x8e,0x00);入允許/ 寫(xiě)Write1302(0x8e,0x00);入允許/ 寫(xiě)Write1302(0x8a,temp);入新的星期數(shù)/ 寫(xiě)Write1302(0x84,temp);入新的小時(shí)數(shù)/ 寫(xiě)Write1302(0x8e,0x80);止寫(xiě)入/ 禁Write1302(0x8
42、e,0x80);止寫(xiě)入/ 禁Up_Key_flag=0;Down_Key_flag=0;Up_Key_flag=0;Down_Key_flag=0;hide_week+;hide_hour+;if(hide_hour3)show_time();if(hide_week3)hide_week=0;show_time();while(count=5);break;if(Up_Key_flag=1|down_flag=1)Write1302(0x8e,0x00);入允許Write1302(0x86,temp); 入新的日數(shù)Write1302(0x8e,0x80);止寫(xiě)入U(xiǎn)p_Key_flag=0;D
43、own_Key_flag=0;hide_day+;if(hide_day3)hide_day=0;show_time();/ 寫(xiě)/ 寫(xiě)/ 禁while(count=6);break;/count=6, 調(diào)整月hide_hour=0;case 6:docase 5:dooutkey();hide_month=0;hide_day=0;Up_Keykey();Write1302(0x80,Second&0x7f);outkey();Up_Keykey();Down_Keykey();Write1302(0x8E,0x80);/禁止寫(xiě)入/ 寫(xiě)Down_Keykey();if(Up_Key_flag=1|down_flag=1)if(Up_Key_flag=1|down_flag=1)Write1302(0x8e,0x00);入允許 done=0;break; /count=7, 開(kāi)啟中斷 ,標(biāo)志位置 0 并退 出default:break;Write1302(0x8e,0x00);入允許/ 寫(xiě)Write1302(0x8c,temp);
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 西安理工大學(xué)高科學(xué)院《生物醫(yī)學(xué)安全與法規(guī)》2023-2024學(xué)年第二學(xué)期期末試卷
- 廈門(mén)城市職業(yè)學(xué)院《護(hù)理倫理學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年去年語(yǔ)文會(huì)考試題及答案
- 2025年面試題排序分類及答案
- 2025年飛船太空考試試題及答案
- 2025年超聲科三基試題及答案
- 2025年貴州藥廠面試試題及答案
- 2025年集成電路省賽試題及答案
- 2025年安徽蚌埠中考英語(yǔ)試題及答案
- 2025年客運(yùn)培訓(xùn)考試題及答案
- 2025年滁州城市職業(yè)學(xué)院?jiǎn)握芯C合素質(zhì)考試題庫(kù)必考題
- 人教版(2025新版)七年級(jí)下冊(cè)數(shù)學(xué)第七章 相交線與平行線 單元測(cè)試卷(含答案)
- 汽輪機(jī)輔機(jī)培訓(xùn)
- 國(guó)之重器:如何突破關(guān)鍵技術(shù)-筆記
- 早產(chǎn)兒和低出生體重兒袋鼠式護(hù)理臨床實(shí)踐指南(2024)解讀1
- 三廢環(huán)保管理培訓(xùn)
- 藥品銷售管理制度試卷
- 大慶油田有限責(zé)任公司閑置、報(bào)廢資產(chǎn)處置管理辦
- 住院醫(yī)生站系統(tǒng)操作手冊(cè)
- 第四章 特殊條件下的駕駛ppt課件
- 特種設(shè)備變更登記申請(qǐng)表
評(píng)論
0/150
提交評(píng)論