實時日歷時鐘顯示系統2_第1頁
實時日歷時鐘顯示系統2_第2頁
實時日歷時鐘顯示系統2_第3頁
實時日歷時鐘顯示系統2_第4頁
實時日歷時鐘顯示系統2_第5頁
已閱讀5頁,還剩15頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、武漢理工大學華夏學院信息工程課程設計報告書課 程 名 稱 智能儀器設計基礎 課程設計總評成績 學生姓名、學 號 學 生 專 業 班級 指 導 教 師 姓名 課程設計起止日期 2012.6.112012-6-22 課程設計基本要求課程設計是工科學生十分重要的實踐教學環節,通過課程設計,培養學生綜合運用先修課程的理論知識和專業技能,解決工程領域某一方面實際問題的能力。課程設計報告是科學論文寫作的基礎,不僅可以培養和訓練學生的邏輯歸納能力、綜合分析能力和文字表達能力,也是規范課程設計教學要求、反映課程設計教學水平的重要依據。為了加強課程設計教學管理,提高課程設計教學質量,特擬定如下基本要求。1. 課

2、程設計教學一般可分為設計項目的選題、項目設計方案論證、項目設計結果分析、答辯等4個環節,每個環節都應有一定的考核要求和考核成績。2. 課程設計項目的選題要符合本課程設計教學大綱的要求,該項目應能突出學生實踐能力、設計能力和創新能力的培養;該項目有一定的實用性,且學生通過努力在規定的時間內是可以完成的。課程設計項目名稱、目的及技術要求記錄于課程設計報告書一、二項中,課程設計項目的選題考核成績占10%左右。3. 項目設計方案論證主要包括可行性設計方案論證、從可行性方案中確定最佳方案,實施最佳方案的軟件程序、硬件電路原理圖和PCB圖。項目設計方案論證內容記錄于課程設計報告書第三項中,項目設計方案論證

3、主要考核設計方案的正確性、可行性和創新性,考核成績占30%左右。4. 項目設計結果分析主要包括項目設計與制作結果的工藝水平,項目測試性能指標的正確性和完整性,項目測試中出現故障或錯誤原因的分析和處理方法。項目設計結果分析記錄于課程設計報告書第四項中,考核成績占25%左右。5. 學生在課程設計過程中應認真閱讀與本課程設計項目相關的文獻,培養自己的閱讀興趣和習慣,借以啟發自己的思維,提高綜合分和理解能力。文獻閱讀摘要記錄于課程設計報告書第五項中,考核成績占10%左右。6. 答辯是課程設計中十分重要的環節,由課程設計指導教師向答辯學生提出23個問題,通過答辯可進一步了解學生對課程設計中理論知識和實際

4、技能掌握的程度,以及對問題的理解、分析和判斷能力。答辯考核成績占25%左右。7.學生應在課程設計周內認真參加項目設計的各個環節,按時完成課程設計報告書交給課程設計指導教師評閱。課程設計指導教師應認真指導學生課程設計全過程,認真評閱學生的每一份課程設計報告,給出課程設計綜合評閱意見和每一個環節的評分成績(百分制),最后將百分制評分成績轉換為五級分制(優秀、良好、中等、及格、不及格)總評成績。8. 課程設計報告書是實踐教學水平評估的重要資料,應按課程、班級集成存檔交實驗室統一管理。課程設計任務書學生姓名: 專業班級: 指導教師: 工作單位: 題目: 實時日歷時鐘顯示系統 初始條件:利用實驗室可以提

5、供的設備平臺、儀器儀表、常見芯片,設計實時日歷時鐘顯示系統。要求完成的主要任務:1在 51 單片機系統中設置、獲取、記錄實時的日歷時鐘信息并通過 LED 顯示或 LCD 顯示。 2. 能夠進行長時間的記錄,并且存儲的時間信息在掉電情況下能長期保存。3. 初始的時間信息要求用戶用鍵盤輸入或通過 PC 機和單片機的串口通信來設置。4. 利用已有設備進行安裝調試 。以上內容為基本要求,可按照自己的理解增加功能使之更完善。課程設計說明書應嚴格按統一格式打印,資料齊全,堅決杜絕抄襲,雷同現象。應畫出單元電路圖和整體電路原理圖,給出系統參數計算過程,圖紙、元器件符號及文字符號符合國家標準。時間安排:整個課

6、程設計時間為2周。具體進度安排如下:學時分配進度安排2天總體方案設計與論證2天系統硬件電路設計與仿真2天系統軟件設計與仿真3天安裝調試1天完成課程設計報告書、答辯指導老師簽字: 年 月 日3一、課程設計項目名稱實時日歷時鐘顯示系統二、項目設計目的及技術要求1在 51 單片機系統中設置、獲取、記錄實時的日歷時鐘信息并通過 LED 顯示或 LCD 顯示。 2. 能夠進行長時間的記錄,并且存儲的時間信息在掉電情況下能長期保存。3. 初始的時間信息要求用戶用鍵盤輸入或通過 PC 機和單片機的串口通信來設置。4. 利用已有設備進行安裝調試。三、項目設計方案論證(可行性方案、最佳方案、軟件程序、硬件電路原

7、理圖和PCB圖)1.可行性方案1.1單片機芯片的選擇方案和論證方案一:采用FPGA(現場可編程門陣列)實現日歷時鐘系統,它是作為專用集成電路(ASIC)領域中的一種半定制電路而出現的,既解決了定制電路的不足,又克服了原有可編程器件門電路數有限的缺點。FPGA的使用非常靈活,同一片FPGA通過不同的編程數據可以產生不同的電路功能。 方案二:主控器模塊采用的是ATMEL公司的8位系列最高配置的Atmega128單片機,高性能,低功耗,具有128KB的系統內可編程Flash、4KB的EEPROM、4KB的內部SRAM,并集成內部8路高速10位ADC,能過滿足本次設計的要求。方案三:采用AT89S52

8、,片內ROM全都采用Flash ROM:能以3V超低壓工作;同時也與MCS-51系列單片機完全兼容,該芯片內部存儲器為8KB ROM存儲空間,同樣具有89C51的功能,且具有在線編程可擦除技術,當在對電路進行調試時,由于程序的錯誤修改或對程序的新增功能需要燒入程序時,不需要對芯片的多次拔插,所以不會對芯片造成一定的損壞。基于實驗室設備及課程所學我們選擇方案三1.2顯示模塊選擇方案和論證方案一:采用LED液晶顯示屏,液晶顯示屏的顯示功能強大,可顯示大量文字,圖形,顯示多樣,清晰可見,但是價格昂貴,需要的接口線多,所以在此設計中不采用LED 液晶顯示屏。方案二:采用點陣式數碼管顯示,點陣式數碼管是

9、由八行八列的發光二極管組成,對于顯示文字比較適合,如采用在顯示數字顯得太浪費,且價格也相對較高,所以也不用此種作為顯示。方案三:采用LED數碼管動態掃描,LED數碼管價格適中,對于顯示數字最合適,而且采用動態掃描法與單片機連接時,占用的單片機口線少。所以采用了LED數碼管作為顯示。1.3時鐘芯片的選擇方案和論證方案一:直接采用單片機定時計數器提供秒信號,使用程序實現時,分,秒計數。采用此種方案雖然減少芯片的使用,節約成本,但是,實現的時間誤差較大。所以不采用此方案。方案二:采用DS1302時鐘芯片實現時鐘,DS1302芯片是一種高性能的時鐘芯片,可自動對秒,分,時,日,周,月,年以及閏年補償的

10、年進行計數,而且精度高,工作電壓2.5V5.5V范圍內,2.5V時耗電小于300nA。方案三:采用達拉斯公司的日歷時鐘芯片DS12C887作為實時時鐘芯片,DS12C887能夠自動產生世紀、年、月、日、時、分、秒等時間信息,而且自帶有鋰電池,外部掉電時,其內部時間信息還能夠保持10年之久;對于一天內的時間記錄,有12小時制和24小時制兩種模式。在12小時制模式中,用AM和PM區分上午和下午。所以采用掉電可長時間保存的DS12C887時鐘芯片。1.4電路設計最佳方案確定綜上各方案所述,對此次課程設計的方案選定:以單片機AT89S52為主控制器,時間數據是通過時鐘芯片DS12C887來讀取,并通過

11、LED 數碼管顯示出來,并用鍵盤來完成對當前時間的調整。2.硬件電路設計本設計的硬件電路設計主要是圍繞日歷時鐘芯片DS12C887的使用進行的。2.1電路設計框圖本設計的硬件電路包括單片機電路、日歷時鐘芯片電路和數碼管顯示輸出電路,其結構框圖如圖1所示。圖1系統硬件結構框圖2.2電路原理圖及說明2.2.1控制電路圖2所示為本設計的單片機部分的電路原理圖圖2實時日歷時鐘顯示系統單片機部分電路原理圖上圖是AT89C52單片機的最小系統,包括晶振電路,復位電路,確保系統的控制部分。P0端口用作地址/數據復用總線AD07,和日歷時鐘芯片相連。P1端口用作數碼管的段碼接口,由于本設計的顯示不會出現小數點

12、,因此只使用了a、b、c、d、e、f、g,而沒有使用dp(小數點)段。P2端口的P2.1P2.4作為數碼管的位碼接口,它們需要通過4-16譯碼電路以及驅動電路來控制13位數碼管的位碼選擇。P2端口的P2.0在反相之后為日歷時鐘芯片提供片選信號,需要反相是因為該片選信號為低電平有效。單片機的P3.7(/RD)、P3.6(/WR)引腳和日歷時鐘芯片的讀、寫引腳直接相連,它們均為低電平有效。2.2.2日歷時鐘電路圖3為日歷時鐘芯片部分的電路圖圖3實時日歷時鐘顯示系統片選及日歷時鐘芯片部分電路原理圖圖3中,U2為6反相器74LS04,它將單片機的P2.0反相之后送至DS12C887的片選引腳。U3為日

13、歷時鐘芯片DS12C887,在本設計中,將其MOT引腳接地,選擇Intel總線時序模式。在以Intel總線時序模式工作時,它和51單片機的接口完全兼容,因此將它的地址/數據復用線AD0AD7、鎖存輸入ALE、讀輸入DS、寫輸入和51單片機的對應引腳直接相連。DS12C887的方波輸出SQW和中斷申請/IRQ在本設計中不使用。2.2.3顯示電路圖4為顯示電路的電路圖,采用了LED驅動芯片MAX7219。使用兩片MAX7219,實現16為數碼管顯示。因為本設計要實現顯示年(4位數字)、月(2位數字)、日(2位數字)、星期(1位數字)、小時(2位數字)、分鐘(2位數字),總共需要13位數碼管,而一片

14、MAX7219最多只能支持8位數碼管的顯示,所以,我們需要單片機分別連接兩片MAX7219來實現13位數碼管顯示。圖4顯示電路電路圖3.軟件設計 軟件設計分兩部分:時鐘部分以及顯示部分。3.1程序流程圖 程序流程圖如圖5所示圖5系統程序流程圖3.2基于DS12C887的實時日歷時鐘顯示系統程序#include #include #include #define uchar unsigned char#define uint unsigned int#define NoOp 0x00 / 空操作寄存器#define Digit0 0x01 / 數碼管1寄存器#define Digit1 0x02

15、 / 數碼管2寄存器#define Digit2 0x03 / 數碼管3寄存器#define Digit3 0x04 / 數碼管4寄存器#define Digit4 0x05 / 數碼管5寄存器#define Digit5 0x06 / 數碼管6寄存器#define Digit6 0x07 / 數碼管7寄存器#define Digit7 0x08 / 數碼管8寄存器#define DecodeMode 0x09 / 譯碼模式寄存器#define Intensity 0x0a / 亮度寄存器#define ScanLimit 0x0b / 掃描位數寄存器#define ShutDown 0x0c

16、 / 低功耗模式寄存器#define DisplayTest 0x0f / 顯示測試寄存器#define ShutdownMode 0x00 / 低功耗方式#define NormalOperation 0x01 / 正常操作方式#define ScanDigit 0x07 / 掃描位數設置,顯示8位數碼管#define DecodeDigit 0xff / 譯碼設置,8位均為BCD碼#define IntensityGrade 0x0a / 亮度級別設置#define TestMode 0x01 / 顯示測試模式#define TextEnd 0x00 / 顯示測試結束,恢復正常工作模式/*

17、 DS12C887 內部專用寄存器宏定義 */#define MIN XBYTE0x0102#define HOUR XBYTE0x0104#define DAYOFWEEK XBYTE0x0106#define DAYOFMONTH XBYTE0x0107#define MONTH XBYTE0x0108#define YEAR XBYTE0x0109#define REG_A XBYTE0x010a#define REG_B XBYTE0x010bsbit DIN = P10; / 串行數據輸入sbit CLK = P11;/ 串行時鐘sbit LOAD1 = P12;/ 顯示數據鎖存控制

18、sbit LOAD2 = P13;uchar DisBuffer8=0,0,0,0,0,0,0,0; / 顯示緩存uchar year1=10,month1=6,dayofweek1=5,dayofmonth1=10,hour1=22,min1=17;/* 芯片DS12C887提供的日歷時鐘信息變量 */uchar year2,month2,dayofweek2,dayofmonth2,hour2,min2;void delay(uint z)uint j,k;for(j=z;j0;j-)for(k=110;k0;k-);/* 向MAX7219寫入字節(8位)*/void SendChar (

19、uchar ch)uchar i,temp; _nop_(); for (i=0;i8;i+) temp=ch&0x80; ch=ch1; if(temp) DIN=1; CLK=0; CLK=1; else DIN=0; CLK=0; CLK=1; /* 向MAX7219寫入字(16位)*/void WriteWord (uchar addr,uchar num,int p) if(p=1) LOAD1=0; _nop_(); SendChar(addr); _nop_(); SendChar(num); _nop_(); LOAD1=1;/ 鎖存進相應寄存器else if(p=2) LOA

20、D2=0; _nop_(); SendChar(addr); _nop_(); SendChar(num); _nop_(); LOAD2=1;/ 鎖存進相應寄存器 /* MAX7219初始化 */void InitDisplay (void) WriteWord (ScanLimit,ScanDigit,1); / 設置掃描界限 WriteWord (DecodeMode,DecodeDigit,1); / 設置譯碼模式 WriteWord (Intensity,IntensityGrade,1); / 設置亮度 WriteWord (ShutDown,NormalOperation,1);

21、 / 設置為正常工作模式WriteWord (ScanLimit,ScanDigit,2); / 設置掃描界限 WriteWord (DecodeMode,DecodeDigit,2); / 設置譯碼模式 WriteWord (Intensity,IntensityGrade,2); / 設置亮度 WriteWord (ShutDown,NormalOperation,2); / 設置為正常工作模式/* 設置日歷和時鐘函數 */void settime()REG_B = REG_B|0x80;/ SET=1,芯片DS12C887處于設置狀態MIN = min1;HOUR = hour1;DAY

22、OFWEEK = dayofweek1;DAYOFMONTH = dayofmonth1;MONTH = month1;YEAR = year1;REG_B = REG_B&0x7f; / SET=0,芯片DS12C887恢復正常數據更新狀態/* 獲取日歷時鐘函數 */void gettime()while (REG_A&0x80=0x00)/ 直到UIP=0時,才能讀取日歷時鐘信息min2 = MIN ;hour2 = HOUR;dayofweek2 = DAYOFWEEK;dayofmonth2 = DAYOFMONTH; month2 = MONTH;year2 = YEAR;/* 13

23、位數碼管顯示年、月、日、星期、時、分 */void display()WriteWord (Digit0,0,1); WriteWord (Digit1,0,1); WriteWord (Digit2,0,1); WriteWord (Digit3,2,1); WriteWord (Digit4,0,1); WriteWord (Digit5,year2/10,1); WriteWord (Digit6,year2%10,1); WriteWord (Digit7,month2/10,1);WriteWord (Digit0,month2%10,2); WriteWord (Digit1,da

24、yofmonth2/10,2); WriteWord (Digit2,dayofmonth2%10,2); WriteWord (Digit3,dayofweek2,2); WriteWord (Digit4,hour2/10,2); WriteWord (Digit5,hour2%10,2); WriteWord (Digit6,min2/10,2); WriteWord (Digit7,min2%2,2);void main(void)InitDisplay(); / MAX7219初始化 WriteWord(DisplayTest,TestMode,1);/ 開始顯示測試,點亮所有LED

25、 delay(3000); / 延時約3s WriteWord (DisplayTest,TextEnd,1);/ 退出顯示測試模式WriteWord(DisplayTest,TestMode,2);/ 開始顯示測試,點亮所有LED delay(3000); / 延時約3s WriteWord (DisplayTest,TextEnd,2);/ 退出顯示測試模式/* 設置DV2、DV1、DV0為010,打開芯片DS12C887內部晶振 */REG_A = REG_A&0xaf;/ DV2=DV0=0REG_A = REG_A|0x20;/ DV1=1REG_B = REG_B&0x7b;/ S

26、ET=0,時間數據正常更新;DM=0,二進制數據模式REG_B = REG_B|0x02;/ 寄存器B的24/12位置1,24小時時間模式while (1)settime(); /* 調用設置日歷時鐘函數 */gettime(); /* 調用獲取日歷時鐘函數 */display(); /* 13位數碼管顯示日歷、星期和時間信息 */四、項目設計結果分析(分析試驗過程中獲得的數據、波形、現象或問題的正確性和必然性,分析產生不正確結果的原因和處理方法)實驗結果:當上電后,系統顯示提示符P。按下k1后,系統開始正常運行, 此時按其它鍵均無效當再按下k1后,進入調秒狀態,按k2加1,按k3減1,再按一

27、下k1進入調分狀態,再按一下,進入調時,再按一下,進入正常的運行狀態在調整狀態下,當調整該位時,該位會閃爍。較好地完成了設置、獲取、記錄實時的日歷時鐘信息并通過 LED 顯示或 LCD 顯示。掉電后DS1302會轉用后備電池供電,在次上電后,時鐘顯示為當前時間。證明了能夠進行長時間的記錄,并且存儲的時間信息在掉電情況下能長期保存。實驗結論:硬件設計中對于單片機最終選擇了AT89C51,它是一種帶4K字節閃存可編程可擦除只讀存儲器的低電壓,高性能CMOS8位微處理器。單片機是很容易受干擾的控制器,當采用外部晶振時,應盡量讓其靠近單片機減少對其干擾,防止程序亂飛現象。同時還可以采用隔離等方式減少干

28、擾。軟件設計中要完成鍵值處理,定時中斷,延時,鍵盤掃描,顯示等功能。軟件設計是核心部分,具有多樣化,靈活性高,易移植等優點,要深深理會各指令的含義才能更加熟練應用,中斷的合理利用可以減少CPU利用資源,具有執行效率高等優點,本設計用到定時器中斷以減少對CPU的占用,更好的處理其他功能。軟件的設計大部分采用模塊化設計的方法以方便調試,并使其可讀性大大增強,方便更改和移植。 在這次課程設計中,我熟悉了芯片的結構及掌握了各芯片的工作原理和其具體的使用方法。我也發現了一些不足之處,在電路設計中,先仿真后連接實物圖,但有時仿真和電路連接是不完全一致的 ,在實際電路的連接圖中出錯的原因都是界限和芯片的接觸

29、不良以及接線錯誤引起的,因此要學會區分仿真和電路連接圖間的區別。 在此次課程設計中,我學會了獨立思考并解決問題以及及時向同學求教不懂之處。我認識到了知識要靈活運用的重要性以及要將知識與實際相結合的道理。五、參考文摘(相關文摘不少于5篇,記錄每篇文獻的作者姓名.文獻名稱.文獻發行城市:文獻出版社,出版年;文獻內容摘要, 每篇不少于100字)【1】李群芳,張士軍,黃建.單片微型計算機與接口技術(第三版).北京:電子工業出版社.2008.摘要:從硬件連接方式看,鍵盤通常可分為獨立式鍵盤和矩陣式鍵盤兩類。所謂獨立式鍵盤是指各按鍵相互獨立,每個按鍵分別于單片機的I/O口或外擴I/O芯片的一根輸入線項鏈,通常每根輸入線上按鍵的工作狀態不會影響其他輸入線的工作狀態。通過檢測輸入線的電平就可很容易判斷哪個按鍵被按下。獨立式鍵盤電路配置靈活,軟件簡單,但在按鍵數較多時,會占用大量的輸入口線。【2】史建芳.智能儀器設計基礎.北京:電子工業出版社,2007.摘要:靜態顯示方式是指顯示器顯示某一字符時,相應段的發光二極管恒定導通或截止使顯示字符的字段連續發光。在靜態顯示

溫馨提示

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

評論

0/150

提交評論