版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、單片機(jī)課程設(shè)計題目名稱: 姓 名: 學(xué) 號: 系 別: 班 級: 指導(dǎo)老師: 完成時間: 華南理工大學(xué)廣州學(xué)院課程設(shè)計任務(wù)書一、實現(xiàn)功能利用51單片機(jī)芯片和DS1302芯片設(shè)計電子萬年歷功能圖如下52單片機(jī)+=+選擇確定-12864LCDDS1302通過四個按鍵輸入調(diào)整,在LCD液晶模塊上能顯示陽歷年、月、日、星期、時、分、秒和陰歷月、日,在顯示農(nóng)歷時間時,能標(biāo)明是否為閏年。當(dāng)切斷主5V電源時,由3.3V備用電池供電,1302內(nèi)時鐘仍然工作。當(dāng)重新接上5V電源后,則可以實時顯示當(dāng)前時間。二、開發(fā)環(huán)境操作系統(tǒng):windows XP開發(fā)芯片:89C52RC+編譯器:keil51三、硬件實現(xiàn)1、整體
2、仿真圖如下2、12864LCD12864采用8位并行數(shù)據(jù)傳送方式,占用單片機(jī)的P0口。由于P0口用作普通I/O口時為開漏輸出,所以為了輸出高電平,增大負(fù)載能力,需在每個P0位接一個上拉電阻,本設(shè)計中采用10K的排阻接線。圖中的RV1為LCD背光調(diào)節(jié)電位器,可調(diào)節(jié)屏幕的亮度。3、DS13021腳接+5V電源; 8腳接3.3V備份電源;2、3腳接晶振;4腳接地;5腳接P2.6;6腳接P2.4;7腳接P2.5;+5V工作時,DS1302的7腳時鐘信號由單片機(jī)的P2.5口提供,當(dāng)以3.3V工作時時鐘由其2、3腳外接的晶振提供時鐘,晶振的震蕩頻率為32.768KHz。4、按鍵選擇按鍵一端接P2.0,另一
3、端接地;加按鍵一端接P2.1,另一端接地;減按鍵一端接P3.1,另一端接地;確定按鍵一端接P3.2,另一端接地;四、軟件實現(xiàn)程序流程圖如下開始等待LCD初始化DS1302初始化12864顯示讀DS1302“選擇”鍵按下?“+”或“-”“確定”鍵按下?NNYY1、農(nóng)歷為復(fù)雜的歷法,因此適宜采用查表法進(jìn)行編程;2、編程中接按鍵的四個管腳皆為查詢方式,單片機(jī)上電默認(rèn)為高電平,當(dāng)按鍵按下去的時候變?yōu)榈碗娖?,輸入有效,并?zhí)行相應(yīng)的事件處理程序;3、12864采用8位并行數(shù)據(jù)傳送方式,占用單片機(jī)的P0口;4、DS1302位一線串行方式,所以在編程中對時序的要求非常嚴(yán)格,應(yīng)認(rèn)真注意時序的先后;主要程序源代碼
4、uchar Read1302(uchar ADDRorCOMM) uchar dat; DS1302_RST=0; /禁止數(shù)據(jù)傳輸 DS1302_SCLK=0; /確保寫寫之前SCLK被拉低 DS1302_RST=1; /啟動數(shù)據(jù)傳輸 DS1302InputByte(ADDRorCOMM); /寫入命令或地址 dat=DS1302OutputByte(); / 讀出數(shù)據(jù) DS1302_SCLK=1; /將時鐘電平置于高電平狀態(tài) 置高是為了讓下次寫的時候 能準(zhǔn)確的被拉低 保證電平狀態(tài)的正確性/ DS1302_RST=0; /禁止數(shù)據(jù)傳輸 return(dat);void Init_1302(vo
5、id) /(2008年7月12日12時00分00秒星期六) uchar flag; flag=Read1302(0x81); /讀秒寄存器 if(flag&0x80) /CH為0(flag最高位是0),時鐘走動,不用初始化 。 Write1302(0x8e,0x00); /允許寫操作 Write1302(0x8c,(8/10)<<4|(8%10); /YEAR Write1302(0x8a,0x01); /DAY Write1302(0x88,(3/10)<<4|(3%10); /MONTH Write1302(0x86,(14/10)<<4|(14
6、%10); /DATE Write1302(0x84,(12/10)<<4|(12%10); /HR Write1302(0x82,(0/10)<<4|(0%10); /MIN Write1302(0x80,(0/10)<<4|(0%10); /SEC Write1302(0x90,0xa5); /打開充電功能 Write1302(0x8e,0x80); /禁止寫操作 typedef struct _SYSTEMTIME_ uchar Second; uchar Minute; uchar Hour; uchar Week; uchar Day; uchar
7、 Month; uchar Year; uchar DateString11; uchar TimeString9;SYSTEMTIME;SYSTEMTIME CurrentTime;void DS1302_GetTime(SYSTEMTIME *Time) uchar ReadValue; ReadValue=Read1302(0x81); /從秒寄存器里讀數(shù)據(jù) Time->Second=(ReadValue&0x70)>>4)*10+(ReadValue&0x0f); /把讀出的數(shù)據(jù)轉(zhuǎn)換成BCD碼 ReadValue=Read1302(0x83); /從分
8、寄存器里讀數(shù)據(jù) Time->Minute=(ReadValue&0x70)>>4)*10+(ReadValue&0x0f); /把讀出的數(shù)據(jù)轉(zhuǎn)換成BCD碼 ReadValue=Read1302(0x85); /從小時寄存器里讀數(shù)據(jù) Time->Hour=(ReadValue&0x70)>>4)*10+(ReadValue&0x0f); /把讀出的數(shù)據(jù)轉(zhuǎn)換成BCD碼 ReadValue=Read1302(0x8b); /從星期寄存器里讀數(shù)據(jù) Time->Week=(ReadValue&0x70)>>4)
9、*10+(ReadValue&0x0f); /把讀出的數(shù)據(jù)轉(zhuǎn)換成BCD碼 ReadValue=Read1302(0x87); /從日寄存器里讀數(shù)據(jù) Time->Day=riqi=(ReadValue&0x70)>>4)*10+(ReadValue&0x0f); /把讀出的數(shù)據(jù)轉(zhuǎn)換成BCD碼 ReadValue=Read1302(0x89); /從月寄存器里讀數(shù)據(jù) Time->Month=yuefen=(ReadValue&0x70)>>4)*10+(ReadValue&0x0f); /把讀出的數(shù)據(jù)轉(zhuǎn)換成BCD碼 Rea
10、dValue=Read1302(0x8d); /從年寄存器里讀數(shù)據(jù) Time->Year=nianfen=(ReadValue&0xf0)>>4)*10+(ReadValue&0x0f); /把讀出的數(shù)據(jù)轉(zhuǎn)換成BCD碼 /注意是0xF0void Date2Str(SYSTEMTIME *Time) uchar tab=0xd2,0xbb,0xbb6,0xfe,0xc8,0xfd,0xcb,0xc4,0xce,0xe5,0xc1,0xf9,0xc8,0xd5;/?/ uchar tab="一二三四五六日" if(hide_year<2)
11、 /這里的if,else語句都是判斷位閃爍,<2顯示數(shù)據(jù),>2就不顯示, Time->DateString0='2' Time->DateString1='0' Time->DateString2=Time->Year/10+'0' Time->DateString3=Time->Year%10+'0' else Time->DateString0=' ' Time->DateString1=' ' Time->DateString2
12、=' ' Time->DateString3=' ' Time->DateString4='-' if(hide_month<2) Time->DateString5=Time->Month/10+'0' Time->DateString6=Time->Month%10+'0' else Time->DateString5=' ' Time->DateString6=' ' Time->DateString7='-&
13、#39; if(hide_day<2) Time->DateString8=Time->Day/10+'0' Time->DateString9=Time->Day%10+'0' else Time->DateString8=' ' Time->DateString9=' ' if(hide_week<2) week_value0=tab2*(Time->Week%10)-2; /星期的數(shù)據(jù)另外放到 week_value數(shù)組里,跟年,月,日的分開存放,因為等一下要在最后顯示/
14、week_value1=tab2*(Time->Week%10)-1; else week_value0=' ' week_value1=' ' week_value2='0' Time->DateString10='0' /字符串末尾加 '0' ,判斷結(jié)束字符void Time2Str(SYSTEMTIME *Time) if(hide_hour<2) Time->TimeString0=Time->Hour/10+'0' Time->TimeString1=T
15、ime->Hour%10+'0'linshi0=Time->Hour/10+'0'linshi1=Time->Hour%10+'0' else Time->TimeString0=' ' Time->TimeString1=' ' Time->TimeString2=':' if(hide_min<2) Time->TimeString3=Time->Minute/10+'0' Time->TimeString4=Time-
16、>Minute%10+'0'linshi3=Time->Minute/10+'0'linshi4=Time->Minute%10+'0' else Time->TimeString3=' ' Time->TimeString4=' ' Time->TimeString5=':' if(hide_sec<2) Time->TimeString6=Time->Second/10+'0' Time->TimeString7=Tim
17、e->Second%10+'0' else Time->TimeString6=' ' Time->TimeString7=' ' Time->TimeString8='0'void Setkey(void) Set=1; /為按鍵輸入做好準(zhǔn)備/ if(Set=0) /Set按下/ delaynms(15); if(Set=0) /確認(rèn)按下/ count+; while(Set=0); void Upkey(void) Up=1; if(Up=0) delaynms(15); if(Up=0) Up=1;
18、switch(count) case 1: temp=Read1302(0x81); /讀取秒數(shù) temp=(temp&0x70)>>4)*10+(temp&0x0f); /轉(zhuǎn)化成BCD碼 temp+; /秒加1 up_flag=1; /數(shù)據(jù)調(diào)整后更新標(biāo)志 if(temp>59) /超過59秒,清0 temp=0; temp=temp/10*16+temp%10; /把新的BCD碼轉(zhuǎn)化回去 break; case 2: temp=Read1302(0x83); /讀取分 temp=(temp&0x70)>>4)*10+(temp&0
19、x0f); temp+; /分加1 up_flag=1; if(temp>59) /超過59分,清0 temp=0; temp=temp/10*16+temp%10; /把新的BCD碼轉(zhuǎn)化回去 break; case 3: temp=Read1302(0x85); /讀取小時 temp=(temp&0x70)>>4)*10+(temp&0x0f); /轉(zhuǎn)化成BCD碼 temp+; /時加1 up_flag=1; /數(shù)據(jù)調(diào)整后更新標(biāo)志 if(temp>23) /超過23時,清0 temp=0; temp=temp/10*16+temp%10; /把新的BC
20、D碼轉(zhuǎn)化回去 break; case 4: temp=Read1302(0x8b); /讀取星期 temp=(temp&0x70)>>4)*10+(temp&0x0f); /轉(zhuǎn)化成BCD碼 temp+; /星期加1 up_flag=1; /數(shù)據(jù)調(diào)整后更新標(biāo)志 if(temp>7) /超過7, temp=1; temp=temp/10*16+temp%10; /把新的BCD碼轉(zhuǎn)化回去 break; case 5: temp=Read1302(0x87); /讀取日 temp=(temp&0x70)>>4)*10+(temp&0x0f)
21、; /轉(zhuǎn)化成BCD碼 temp+; /日加1 up_flag=1; /數(shù)據(jù)調(diào)整后更新標(biāo)志 if(temp>31) /超過31, temp=1; temp=temp/10*16+temp%10; /把新的BCD碼轉(zhuǎn)化回去 break; case 6: temp=Read1302(0x89); /讀取月 temp=(temp&0x70)>>4)*10+(temp&0x0f); /轉(zhuǎn)化成BCD碼 temp+; /月加1 up_flag=1; /數(shù)據(jù)調(diào)整后更新標(biāo)志 if(temp>12) /超過12, temp=1; temp=temp/10*16+temp%1
22、0; /把新的BCD碼轉(zhuǎn)化回去 break; case 7: temp=Read1302(0x8d); /讀取年 temp=(temp&0xf0)>>4)*10+(temp&0x0f); /轉(zhuǎn)化成BCD碼 temp+; /年加1 up_flag=1; /數(shù)據(jù)調(diào)整后更新標(biāo)志 if(temp>99) /超過99,清0 temp=0; temp=temp/10*16+temp%10; /把新的BCD碼轉(zhuǎn)化回去 break; default: break; void Downkey(void) Down=1; if(Down=0) delaynms(15); if(D
23、own=0) /確認(rèn)Upkey按下 Down=1; switch(count) case 1: temp=Read1302(0x81); /讀取秒數(shù) temp=(temp&0x70)>>4)*10+(temp&0x0f); /轉(zhuǎn)化成BCD碼 temp-; /秒減1 down_flag=1; /數(shù)據(jù)調(diào)整后更新標(biāo)志 if(temp<0) /小于0秒,置59 temp=59; temp=temp/10*16+temp%10; /把新的BCD碼轉(zhuǎn)化回去 break; case 2: temp=Read1302(0x83); /讀取分 temp=(temp&0x
24、70)>>4)*10+(temp&0x0f); temp-; /分減1 down_flag=1; if(temp<0) /小于0分,置59 temp=59; temp=temp/10*16+temp%10; /把新的BCD碼轉(zhuǎn)化回去 break; case 3: temp=Read1302(0x85); /讀取小時 temp=(temp&0x70)>>4)*10+(temp&0x0f); /轉(zhuǎn)化成BCD碼 temp-; /時減1 down_flag=1; /數(shù)據(jù)調(diào)整后更新標(biāo)志 if(temp<0) /小于0時,置23 temp=23;
25、 temp=temp/10*16+temp%10; /把新的BCD碼轉(zhuǎn)化回去 break; case 4: temp=Read1302(0x8b); /讀取星期 temp=(temp&0x70)>>4)*10+(temp&0x0f); /轉(zhuǎn)化成BCD碼 temp-; /星期減1 down_flag=1; /數(shù)據(jù)調(diào)整后更新標(biāo)志 if(temp<1) /小于1,置7 temp=7; temp=temp/10*16+temp%10; /把新的BCD碼轉(zhuǎn)化回去 break; case 5: temp=Read1302(0x87); /讀取日 temp=(temp&am
26、p;0x70)>>4)*10+(temp&0x0f); /轉(zhuǎn)化成BCD碼 temp-; /日減1 down_flag=1; /數(shù)據(jù)調(diào)整后更新標(biāo)志 if(temp<1) /小于1,置31 temp=31; temp=temp/10*16+temp%10; /把新的BCD碼轉(zhuǎn)化回去 break; case 6: temp=Read1302(0x89); /讀取月 temp=(temp&0x70)>>4)*10+(temp&0x0f); /轉(zhuǎn)化成BCD碼 temp-; /月減1 down_flag=1; /數(shù)據(jù)調(diào)整后更新標(biāo)志 if(temp<
27、;1) /小于1,置12 temp=12; temp=temp/10*16+temp%10; /把新的BCD碼轉(zhuǎn)化回去 break; case 7: temp=Read1302(0x8d); /讀取年 temp=(temp&0xf0)>>4)*10+(temp&0x0f); /轉(zhuǎn)化成BCD碼 temp-; /年加1 down_flag=1; /數(shù)據(jù)調(diào)整后更新標(biāo)志 if(temp<0) /小于0,置99 temp=99; temp=temp/10*16+temp%10; /把新的BCD碼轉(zhuǎn)化回去 break; default: break; void keydo
28、ne(void) Setkey(); /掃描模式切換按鍵 switch(count) case 1:do /count=1,調(diào)整秒 Upkey(); /掃描加按鍵,如果按下,up_flag置1 Downkey(); /掃描減按鍵,如果按下,down_flag置1 if(up_flag=1|down_flag=1) /數(shù)據(jù)更新,重新寫入新的數(shù)據(jù) Write1302(0x8e,0x00); /寫入允許 Write1302(0x80,temp); /寫入新的秒數(shù) Write1302(0x8e,0x80); /禁止寫入,寫保護(hù) up_flag=0; /標(biāo)志位清0 down_flag=0; if(Dow
29、n!=0&&Up!=0) /如果加鍵和減鍵都沒按 hide_sec+; if(hide_sec>3) hide_sec=0; else hide_sec=0; show_all(); /液晶顯示數(shù)據(jù) while(count=2); break; case 2:do /count=2,調(diào)整分 hide_sec=0; / Upkey(); /掃描加按鍵,如果按下,up_flag置1 Downkey(); /掃描減按鍵,如果按下,down_flag置1 if(up_flag=1|down_flag=1) /數(shù)據(jù)更新,重新寫入新的數(shù)據(jù) Write1302(0x8e,0x00);
30、/寫入允許 Write1302(0x82,temp); /寫入新的分 Write1302(0x8e,0x80); /禁止寫入,寫保護(hù) up_flag=0; /標(biāo)志位清0 down_flag=0; if(Down!=0&&Up!=0) /如果加鍵和減鍵都沒按 hide_min+; if(hide_min>3) / hide_min=0; else hide_min=0; show_all(); /液晶顯示數(shù)據(jù) while(count=3); break; case 3:do /count=3,調(diào)整小時 hide_min=0; Upkey(); /掃描加按鍵,如果按下,up_
31、flag置1 Downkey(); /掃描減按鍵,如果按下,down_flag置1 if(up_flag=1|down_flag=1) /數(shù)據(jù)更新,重新寫入新的數(shù)據(jù) Write1302(0x8e,0x00); /寫入允許 Write1302(0x84,temp); /寫入新的小時 Write1302(0x8e,0x80); /禁止寫入,寫保護(hù) up_flag=0; /標(biāo)志位清0 down_flag=0; if(Down!=0&&Up!=0) /如果加鍵和減鍵都沒按 hide_hour+; if(hide_hour>3) hide_hour=0; else hide_hou
32、r=0; show_all(); /液晶顯示數(shù)據(jù) while(count=4); break; case 4:do /count=4,調(diào)整星期 hide_hour=0; Upkey(); /掃描加按鍵,如果按下,up_flag置1 Downkey(); /掃描減按鍵,如果按下,down_flag置1 if(up_flag=1|down_flag=1) /數(shù)據(jù)更新,重新寫入新的數(shù)據(jù) Write1302(0x8e,0x00); /寫入允許 Write1302(0x8a,temp); /寫入新的星期 Write1302(0x8e,0x80); /禁止寫入,寫保護(hù) up_flag=0; /標(biāo)志位清0
33、down_flag=0; if(Down!=0&&Up!=0) /如果加鍵和減鍵都沒按 hide_week+; if(hide_week>3) hide_week=0; else hide_week=0; show_all(); /液晶顯示數(shù)據(jù) while(count=5); break; case 5:do /count=5,調(diào)整日 hide_week=0; Upkey(); /掃描加按鍵,如果按下,up_flag置1 Downkey(); /掃描減按鍵,如果按下,down_flag置1 if(up_flag=1|down_flag=1) /數(shù)據(jù)更新,重新寫入新的數(shù)據(jù)
34、Write1302(0x8e,0x00); /寫入允許 Write1302(0x86,temp); /寫入新的日 Write1302(0x8e,0x80); /禁止寫入,寫保護(hù) up_flag=0; /標(biāo)志位清0 down_flag=0; if(Down!=0&&Up!=0) /如果加鍵和減鍵都沒按 hide_day+; if(hide_day>3) hide_day=0; else hide_day=0; show_all(); /液晶顯示數(shù)據(jù) while(count=6); break; case 6:do /count=6,調(diào)整月 hide_day=0; Upkey
35、(); /掃描加按鍵,如果按下,up_flag置1 Downkey(); /掃描減按鍵,如果按下,down_flag置1 if(up_flag=1|down_flag=1) /數(shù)據(jù)更新,重新寫入新的數(shù)據(jù) Write1302(0x8e,0x00); /寫入允許 Write1302(0x88,temp); /寫入新的月 Write1302(0x8e,0x80); /禁止寫入,寫保護(hù) up_flag=0; /標(biāo)志位清0 down_flag=0; if(Down!=0&&Up!=0) /如果加鍵和減鍵都沒按 hide_month+; if(hide_month>3) hide_m
36、onth=0; else hide_month=0; show_all(); /液晶顯示數(shù)據(jù) while(count=7); break; case 7:do /count=7,調(diào)整年 hide_month=0; Upkey(); /掃描加按鍵,如果按下,up_flag置1 Downkey(); /掃描減按鍵,如果按下,down_flag置1 if(up_flag=1|down_flag=1) /數(shù)據(jù)更新,重新寫入新的數(shù)據(jù) Write1302(0x8e,0x00); /寫入允許 Write1302(0x8c,temp); /寫入新的年 Write1302(0x8e,0x80); /禁止寫入,寫
37、保護(hù) up_flag=0; /標(biāo)志位清0 down_flag=0; if(Down!=0&&Up!=0) /如果加鍵和減鍵都沒按 hide_year+; if(hide_year>3) hide_year=0; else hide_year=0; show_all(); /液晶顯示數(shù)據(jù) while(count=8); break; case 8:count=0; hide_year=0; done=0; break; default:break; code uchar year_code597= 0x04,0xAe,0x53, /1901 0 0x0A,0x57,0x48
38、, /1902 3 0x55,0x26,0xBd, /1903 6 0x0d,0x26,0x50, /1904 9 . 0x4A,0x4e,0xB9, /2096 0x0A,0x4d,0x4C, /2097 0x0d,0x15,0x41, /2098 0x2d,0x92,0xB5, /2099;/月份數(shù)據(jù)表code uchar day_code19=0x0,0x1f,0x3b,0x5a,0x78,0x97,0xb5,0xd4,0xf3;code uint day_code23=0x111,0x130,0x14e;/*函數(shù)功能:輸入BCD陽歷數(shù)據(jù),輸出BCD陰歷數(shù)據(jù)(只允許1901-2099年)
39、調(diào)用函數(shù)示例:Conversion(c_sun,year_sun,month_sun,day_sun)如:計算2004年10月16日Conversion(0,0x4,0x10,0x16);c_sun,year_sun,month_sun,day_sun均為BCD數(shù)據(jù),c_sun為世紀(jì)標(biāo)志位,c_sun=0為21世紀(jì),c_sun=1為19世紀(jì)調(diào)用函數(shù)后,原有數(shù)據(jù)不變,讀c_moon,year_moon,month_moon,day_moon得出陰歷BCD數(shù)據(jù)*/bit c_moon;data uchar year_moon,month_moon,day_moon,week;/*子函數(shù),用于讀取數(shù)
40、據(jù)表中農(nóng)歷月的大月或小月,如果該月為大返回1,為小返回0*/bit get_moon_day(uchar month_p,uint table_addr)uchar temp01; switch (month_p) case 1:temp01=year_codetable_addr&0x08; if (temp01=0)return(0);else return(1); case 2:temp=year_codetable_addr&0x04; if (temp01=0)return(0);else return(1); case 3:temp=year_codetable_a
41、ddr&0x02; if (temp01=0)return(0);else return(1); case 4:temp01=year_codetable_addr&0x01; if (temp01=0)return(0);else return(1); case 5:temp01=year_codetable_addr+1&0x80; if (temp01=0) return(0);else return(1); case 6:temp01=year_codetable_addr+1&0x40; if (temp01=0)return(0);else retu
42、rn(1); case 7:temp01=year_codetable_addr+1&0x20; if (temp01=0)return(0);else return(1); case 8:temp01=year_codetable_addr+1&0x10; if (temp01=0)return(0);else return(1); case 9:temp01=year_codetable_addr+1&0x08; if (temp01=0)return(0);else return(1); case 10:temp01=year_codetable_addr+1&a
43、mp;0x04; if (temp01=0)return(0);else return(1); case 11:temp01=year_codetable_addr+1&0x02; if (temp01=0)return(0);else return(1); case 12:temp01=year_codetable_addr+1&0x01; if (temp01=0)return(0);else return(1); case 13:temp01=year_codetable_addr+2&0x80; if (temp01=0)return(0);else retur
44、n(1); /*函數(shù)功能:輸入BCD陽歷數(shù)據(jù),輸出BCD陰歷數(shù)據(jù)(只允許1901-2099年)調(diào)用函數(shù)示例:Conversion(c_sun,year_sun,month_sun,day_sun)如:計算2004年10月16日Conversion(0,0x4,0x10,0x16);c_sun,year_sun,month_sun,day_sun均為BCD數(shù)據(jù),c_sun為世紀(jì)標(biāo)志位,c_sun=0為21世紀(jì),c_sun=1為19世紀(jì)調(diào)用函數(shù)后,原有數(shù)據(jù)不變,讀c_moon,year_moon,month_moon,day_moon得出陰歷BCD數(shù)據(jù)*/void Conversion(bit c,uchar year,uchar month,uchar day) /c=0 為21世紀(jì),c=1 為19世紀(jì) 輸入輸出數(shù)據(jù)均為BCD數(shù)據(jù) uchar temp1,temp2,temp3,month_p; uint temp4,table_addr; bit flag2,flag_y; temp1=year/16; /BCD->hex 先把數(shù)據(jù)轉(zhuǎn)換為十六進(jìn)制 temp2=year%16; year=temp1*10+temp2; temp1=month/16; temp2=month%16; month=temp1*10+temp2; temp1=day/16; temp2=day%
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【優(yōu)化方案】2021高考英語(外研版)總復(fù)習(xí)階段綜合檢測(一)
- 2024廢棄電器電子產(chǎn)品線上線下耦合回收集成技術(shù)規(guī)范
- 【名師一號】2020-2021學(xué)年高中英語(人教版)必修一雙基限時練14
- 人教版2022年高三第二輪復(fù)習(xí)-專題六-第1講-第1講-種群和群落
- 2022年學(xué)校教學(xué)工作總結(jié)范文
- 陜西省渭南市尚德中學(xué)2024-2025學(xué)年高一上學(xué)期第一次階段性生物試卷(含答案)
- 【全程復(fù)習(xí)方略】2020年北師版數(shù)學(xué)文(陜西用)課時作業(yè):第六章-第五節(jié)合情推理與演繹推理
- 【全程復(fù)習(xí)方略】2022屆高考化學(xué)(人教版)一輪總復(fù)習(xí)單元評估檢測(8)電化學(xué)基礎(chǔ)
- IT工作半年總結(jié):組織好工作流程-提升工作效率
- 2022高考(新課標(biāo))數(shù)學(xué)(理)大一輪復(fù)習(xí)試題:第十章-概率10-9a
- 8位半萬用表大比拼
- 品牌管理部績效考核指標(biāo)
- 《數(shù)學(xué)廣角——數(shù)與形》評課稿
- 瀝青路面施工監(jiān)理工作細(xì)則
- 物業(yè)設(shè)備設(shè)施系統(tǒng)介紹(詳細(xì)).ppt
- 公司走賬合同范本
- 獲獎一等獎QC課題PPT課件
- 人教版小學(xué)三年級數(shù)學(xué)上冊判斷題(共3頁)
- 國際項目管理手冊The Project Manager’s Manual
- 小學(xué)五年級思政課教案三篇
- 華為內(nèi)部虛擬股管理暫行條例
評論
0/150
提交評論