【文章內(nèi)容簡(jiǎn)介】
設(shè)計(jì)報(bào)告DB 00AH, 05BH, 04CH。2078 DB 005H, 02BH, 042H。2079 DB 03AH, 093H, 0B6H。2080 DB 006H, 093H, 049H。2081 DB 077H, 029H, 0BDH。2082 DB 006H, 0AAH, 051H。2083 DB 00AH, 0D5H, 046H。2084 DB 054H, 0DAH, 0BAH。2085 DB 004H, 0B6H, 04EH。2086 DB 00AH, 057H, 043H。2087 DB 045H, 027H, 038H。2088 DB 00DH, 026H, 04AH。2089 DB 08EH, 093H, 03EH。2090 DB 00DH, 052H, 052H。2091 DB 00DH, 0AAH, 047H。2092 DB 066H, 0B5H, 03BH。2093 DB 005H, 06DH, 04FH。2094 DB 004H, 0AEH, 045H。2095 DB 04AH, 04EH, 0B9H。2096 DB 00AH, 04DH, 04CH。2097 DB 00DH, 015H, 041H。2098 DB 02DH, 092H, 0B5H。2090課程設(shè)計(jì)報(bào)告DB 00DH, 053H, 049H。2100 TIME_WEEK1 DATA 52H WEEK: MOV A, TIME_YEAR MOV B, 16 DIV AB MOV TEMP_BYTE1, B MOV B, 10 MUL AB ADD A, TEMP_BYTE1 MOV TEMP_BYTE1, A MOV A, TIME_MONTH JB , GETW02 MOV A, 100 ADD A, TEMP_BYTE1 MOV TEMP_BYTE1, A MOV A, TIME_MONTH CLR GETW02: JNB , GETW04 ADD A , 10 CLR GETW04: MOV TEMP_BYTE2,A課程設(shè)計(jì)報(bào)告MOV A, TIME_DATA MOV B, 16 DIV AB MOV TEMP_BYTE3, B MOV B, 10 MUL AB ADD A, TEMP_BYTE3 MOV TEMP_BYTE3, A MOV A ,TEMP_BYTE1 ANL A, 03H JNZ GETW10 MOV A, TEMP_BYTE2 CJNE A, 3,GETW06 GETW06: JNC GETW10 DEC TEMP_BYTE3 GETW10: MOV A,TEMP_BYTE2 LCALL GET_CORRECT ADD A, TEMP_BYTE1 MOV B, 7 DIV ABMOV A, TEMP_BYTE1課程設(shè)計(jì)報(bào)告ANL A, 0FCH RR A RR A ADD A, B ADD A, TEMP_BYTE3 MOV B, 7 DIV AB MOV A, B CJNE A, 0,OUTOUT MOV B, 8 OUTOUT: MOV TIME_WEEK, B RET GET_CORRECT: MOVC A, @A+PC RET DB 0,3,3,6,1,4,6,2,5,0,3,5 END 系統(tǒng)仿真及調(diào)試課程設(shè)計(jì)報(bào)告 仿真結(jié)果及分析課程設(shè)計(jì)報(bào)告上圖為運(yùn)行時(shí)的顯示,左邊兩個(gè)數(shù)碼管顯示器顯示的是年、月、日,中間的顯示的是時(shí)、分、秒,右邊顯示的是農(nóng)歷日期以及星期。若想要調(diào)試時(shí)間,可通過右下方兩個(gè)并聯(lián)開關(guān)調(diào)試,左邊開關(guān)調(diào)試數(shù)碼管顯示位置,右邊的調(diào)試增1。此刻是2013年11月29日下午15:02,星期五,時(shí)間準(zhǔn)確。訓(xùn)練體會(huì)在整個(gè)單片機(jī)課程設(shè)計(jì)中,想要做出這個(gè)完整的設(shè)計(jì)過程,必須突破幾個(gè)難點(diǎn):元件得找準(zhǔn)卻,6路驅(qū)動(dòng)可以用74LS244代替。連線不能連錯(cuò),對(duì)應(yīng)的輸入輸出端標(biāo)上序號(hào)。程序代碼不能敲錯(cuò)。由于單管顯示的星期數(shù)不穩(wěn)定,可以采用雙管顯示。參考文獻(xiàn):?jiǎn)纹瑱C(jī)課程設(shè)計(jì)指導(dǎo)。第三篇:萬年歷C語言課程設(shè)計(jì)報(bào)告程序?qū)嵺`報(bào)告任務(wù)分配:頭文件,定義常量,全局變量,自定義函數(shù)和打印輸出模塊。即1~50和140~290功能控制模塊和一部分日歷顯示模塊,即50~140和290~400一部分日歷顯示模塊和鍵值獲取模塊,即400~基本思路功能模塊圖本系統(tǒng)包括4個(gè)模塊,分別是功能控制模塊、打印輸出模塊、日歷顯示模塊和鍵值獲取模塊。(1)功能控制模塊。該模塊用于實(shí)現(xiàn)日期有效性檢查、判斷是否是閏年和返回指定日期對(duì)應(yīng)的星期。(2)打印輸出模塊。該模塊主要是進(jìn)行輸出顯示,包括打印指定個(gè)數(shù)的空格、打印分隔線、打印用戶使用手冊(cè)、打印當(dāng)前日期對(duì)應(yīng)的星期以及打印給定的星期。(3)日歷顯示模塊。該模塊是系統(tǒng)的核心模塊,是用來顯示指定日期所在月份的月歷。(4)鍵值獲取模塊。該模塊接受鍵盤操作,獲取鍵值,來進(jìn)行日期調(diào)整,并調(diào)用日歷顯示模塊中的函數(shù)來顯示調(diào)整后的日歷。日歷顯示模塊日歷顯示是系統(tǒng)的核心模塊,它控制著日歷的生成和顯示。其實(shí)現(xiàn)流程如圖所示。程序輸入的是包含年月日(year,month和day)的日期,輸出month所在月份的月歷,并突出顯示day所在的日期和year是否是閏年的標(biāo)識(shí)。程序首先根據(jù)year判斷其是否是閏年,如果是則需要將該年2月份的天數(shù)設(shè)置為29天,接著判斷day是否超過month所在月份的最大天數(shù),如果超過則顯示系統(tǒng)日期所在的月歷。然后進(jìn)行星期輸出的判斷,如果輸出的是該月的第一個(gè)星期,則判斷該星期中還有幾天在本月(如,該月1號(hào)是星期五,則表示該月第一個(gè)星期中只有兩天在本月,星期一到星期四在上月,則星期一到星期四在本月就不輸出,僅有空格表示),輸出空格。輸出完第一周后,接著輸出第二到第五(或者六)周,每周7天。在輸出過程中,如果遇到了day所在的日期,則突出顯示。鍵值獲取流程圖鍵值獲取實(shí)現(xiàn)的是從鍵盤調(diào)整日期并顯示調(diào)整后的月歷。其實(shí)現(xiàn)流程如圖所示。系統(tǒng)首先判斷從鍵盤輸入的值,如果是右移鍵,表示增加月份。此時(shí),如果當(dāng)前月份是12月,則增加月份后就進(jìn)入下一年的一月;如果是左移鍵,表示減少月份。此時(shí),如果當(dāng)前月份是1月,則減少月份后就進(jìn)入上一年的12月;如果是上移鍵表示增加年份,直接年份加1即可;如果是下移鍵表示減少奶奶分,直接年份減1即可。如果是向上翻頁鍵表示減小日期。如果是1月1號(hào),則減少日期后進(jìn)入上一年的12月31號(hào),如果是某一個(gè)月的1號(hào),則減小日期后進(jìn)入上一月的最后一天;如果是向下翻頁鍵表示增加日期。如果是12月31號(hào),則增加日期后進(jìn)入到下一年的1月1號(hào),如果是某一個(gè)月的最后一天,則增加日期后進(jìn)入到下一個(gè)月的第一天;如果是Q/q鍵表示查詢?nèi)掌?,此時(shí)將輸出提示信息,提示用戶輸入查詢?nèi)掌?。在用戶輸入查詢?nèi)掌诤?,系統(tǒng)就愛那個(gè)調(diào)用日期檢查函數(shù)對(duì)輸入日期的合法性進(jìn)行檢測(cè),如果輸入日期不合格,則提示錯(cuò)誤信息并顯示當(dāng)前系統(tǒng)日期所在月的月歷;如果是空格鍵表示重置,顯示當(dāng)前系統(tǒng)日期所在月的月歷。如果是Esc鍵表示退出系統(tǒng),按此鍵后,系統(tǒng)將詢問用戶是否確定退出,在得到確定回答(用戶輸入Y/y)后將退出系統(tǒng)。函數(shù)功能描述1)checkDate()函數(shù)原型:void checkDate()checkDate()函數(shù)用于檢查輸入日期的合法性,包括檢查輸入日期中的年、月、日部分。對(duì)于年,檢查其是否是負(fù)數(shù)或者是0;對(duì)于月,檢查其是否是范圍在1~12中的值;對(duì)于日,檢查其是否是范圍在1~31中的值。如果有一個(gè)部分不合法,則程序提示用戶。2)isLeapyear()函數(shù)原型:int isLeapyear(int year)isLeapyear()函數(shù)用于判斷制定月份是否是閏年。參數(shù)year為待判斷的年份。3)getWeek()函數(shù)原型:int getWeek(int year,int month,int day)getWeek()函數(shù)用于計(jì)算并返回給定日期對(duì)應(yīng)的星期。其中參數(shù)year、month和day都為整型,分別表示輸入的年、月和日。4)printSpace()函數(shù)原型:void printSpace(int n)printSpace()函數(shù)用于輸出制定個(gè)數(shù)的空格。其中整型參數(shù)n表示需要輸出的空格的個(gè)數(shù)。5)printSepatator()函數(shù)原型:void printSeparator()printSeparator()函數(shù)用于在制定位置輸出用戶使用手冊(cè)。輸出位置在函數(shù)中已經(jīng)設(shè)定。7)printWeek()函數(shù)原型:void printWeek()printWeek()函數(shù)用于輸出當(dāng)前日期對(duì)應(yīng)的星期,即由 currentYear,currentMonth和currentDay確定的日期對(duì)應(yīng)的星期。該函數(shù)首先調(diào)用getWeek()函數(shù)返回當(dāng)前日期對(duì)應(yīng)的星期。8)printWeek2()函數(shù)原型:void printWeek2(int week)printWeek2()函數(shù)用于根據(jù)制定值輸出星期。參數(shù)week是一個(gè)整型變量,其值可取0到6,分別表示星期一到星期日。8)showCalendar()函數(shù)原型:void showCalendar(int year,int month,int day)showCalendar()函數(shù)用于顯示日歷。參數(shù)year,month和day分別表示年、月和日。該函數(shù)顯示year所在年是否是閏年,顯示month所在月的月歷,突出顯示day所在日的日期。10)getKeyValue()函數(shù)原型:void getKeyValue()getKeyValue()函數(shù)用于獲取鍵盤的輸入。根據(jù)鍵盤的輸入(上下移鍵、左右移鍵、上下翻頁鍵、Q/q鍵)調(diào)整當(dāng)前日期,并顯示當(dāng)前日期所在月的月歷等。遇到的問題和相應(yīng)的解決措施 C++里使用。若使用Turbo C,則鍵入的漢字無法顯示,且無法復(fù)制粘貼。解決措施:經(jīng)過上網(wǎng)查詢和詢問同學(xué),知道了導(dǎo)致問題的原因, c++,過程太復(fù)雜,很難實(shí)現(xiàn)。最后,我們跟同學(xué)借了一個(gè)winTC,是C語言程序,且可以使用中文和進(jìn)行復(fù)制粘貼。“非法字符’?(0xa3)在showCalender函數(shù)中”解決措施:把showCalender函數(shù)全部檢查一遍也沒有找出問題所在,然后咨詢老師,經(jīng)驗(yàn)豐富的老師一眼看出函數(shù)中的一個(gè)左括號(hào)是用拼音輸出的,不是英文。,但應(yīng)該只顯示一個(gè)向下箭頭的地方顯示了三行,且覆蓋了其他的字符。解決措施:認(rèn)真的又檢查了一遍,發(fā)現(xiàn)“指定輸出字符為向下的箭頭”的函數(shù)中,_CX=01,寫成了_CH=01。,不知從何下手。解決措施:經(jīng)查閱資料,得知應(yīng)用:currentYear=。currentMnth=。currentDay=。心得體會(huì)經(jīng)歷了這次課程設(shè)計(jì)的設(shè)計(jì)和制作的整個(gè)過程,我們才發(fā)現(xiàn)我們知識(shí)的貧乏和知識(shí)面的狹窄,原本以為不就是一個(gè)小小的課程設(shè)計(jì),小case,很容易就可以搞定,可是到了后來實(shí)際的操作的時(shí)候可是花費(fèi)了我們九牛二虎之力,不說其他的,只說時(shí)間上面,我們就花費(fèi)了大把的時(shí)間,當(dāng)然我們也從中體會(huì)了很多平時(shí)不能收獲的東西。經(jīng)過一個(gè)多月的自主上機(jī)和三個(gè)多星期的大作業(yè)編寫,我們一隊(duì)三人的齊心努力,查閱書籍,上網(wǎng)查詢等各種途徑,完成了這次的大作業(yè)編寫。其中遇到了很多問題,一一解決的過程讓我們學(xué)會(huì)了很多,當(dāng)然有很多最初的構(gòu)想沒有實(shí)現(xiàn),這也是我們的遺憾之處。這次作課程設(shè)計(jì)我們也是收獲很大,我們更深入的體會(huì)到團(tuán)隊(duì)的重要性,通過自學(xué)學(xué)到了更多C語言的編譯,如插入顏色,讀取系統(tǒng)時(shí)間等,這會(huì)是我們終身的財(cái)富。首先,我們對(duì)C語言有了更深的了解,使用起來也更加的熟練,原來有一些不知道和不熟悉的函數(shù),我們學(xué)會(huì)用了。其次,我們這一次找了不少的資料,找專業(yè)的書籍、上網(wǎng)找各方面的資料,也使我們學(xué)到了一些書本中學(xué)不到的知識(shí),讓我們長(zhǎng)了見識(shí)。同時(shí)我們同學(xué)之間也互相的探討,也增進(jìn)了我們同學(xué)之間的感情。這次的萬年歷設(shè)計(jì),雖然我們自己覺的很有的成就感,但是這必竟是我們第一次C語言的課程設(shè)計(jì),必然會(huì)有很多的不足之處有待改進(jìn),相信以后我們一定會(huì)做的更好。同時(shí)也感謝老師們的耐心講解與指導(dǎo),我們期待下一次可以做的更好!【程序代碼】 /*加載頭文件*/ include include include include include include include/*定義常量*/ /*左移鍵*/ define LEFT 0x4b00 /*右移鍵*/ define RIGHT 0x4d00 /*下移鍵*/ define DOWN 0x5000 /*上移鍵*/define UP 0x4800 /*向上翻頁鍵*/ define PAGEUP 0x4900 /*向下翻頁鍵*/ define PAGEDOWN 0x5100 /*小寫字母q*/ define QLOWER 0x1071 /*大寫字母Q*/ define QUPPER 0x1051 /*空格鍵*/ define SPACE 0x3920 /*Esc鍵*/ define ESC 0x011b/*定義全局變量*/ struct date sysTime。int currentYear。int currentMonth。int currentDay。int n_currentMon。int n_lastMon。/*自定義函數(shù)*/ void checkDate()。int isLeapyear(int year)。int getWeek(int year,int month,int day)。void printSpace(int n)。void printSaparator()。void printUsage()。void printWeek()。void printWeek2(int week)。void showCalendar(int year,int month,int day)。void getKeyValue()。wele(){ int i, graphdriver,graphmode,size,page。char s[30]。graphdriver=DETECT。in