




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 基于launchpad的愛情萬年歷一、要實(shí)現(xiàn)的功能:1、 精確顯示年月日時分秒2、 閏年、二月自動調(diào)節(jié)時間4、 顯示自定義的語句5、 戀愛紀(jì)念日提醒,顯示不一樣的畫面(Weve been together for XX years!)二、硬件部分:1、 launchpad開發(fā)板一塊(板載MSP430G2553)2、 LCD12864液晶屏一塊3、 DS1302數(shù)字時鐘芯片4、 32.768KHz晶振一枚5、 按鍵四枚6、 二極管一個7、 電容、導(dǎo)線、插針等8、開關(guān)一個三、設(shè)計(jì)思路a、依據(jù)題目要求,作品采用德州儀器Texas Instrument公司的混合信號處理器MSP430系列單片機(jī)作為控
2、制核心。該芯片以驚人的低功耗性能著稱,是一款基于RISC指令集的16位MCU,在實(shí)現(xiàn)超低功耗的前提下達(dá)到較高的性能,是絕對適合本題設(shè)計(jì)要求(超低功耗、高運(yùn)算性能、相對低廉價格、相對較低的開發(fā)成本)的單片機(jī)。考慮到萬年歷并非高級電子設(shè)備,成本不能過高,控制核心單片機(jī)一般在低端的MSP430FX1XX系列或MSP430G2XX系列中選擇。我們最終選擇了MSP430G2553芯片作為控制核心 1、Launchpad所采用的G2553芯片存儲空間為4K; 2、G2553有20管腳,如果用于開發(fā)將不得不設(shè)計(jì)較為復(fù)雜的程序?qū)崿F(xiàn)管腳的分時復(fù)用。基于以上討論,作品最終采用MSP430G2553芯片作為控制核心
3、。 b、實(shí)時時鐘 由于MSP430G2553片內(nèi)沒有實(shí)時時鐘RTC模塊,作品采用外擴(kuò)實(shí)時時鐘的方式完成計(jì)時功能。不同廠商生產(chǎn)的RTC芯片有許多,性能、價格上相差甚遠(yuǎn)。出于性價比考慮,Dallas公司的DS1302芯片足以滿足萬年歷的計(jì)時要求。該芯片具有涓細(xì)電流充電能力,利用普通手表晶振實(shí)現(xiàn)低功耗運(yùn)行,利用備用電源(紐扣電池)實(shí)現(xiàn)斷電計(jì)時功能,操作簡單,性價比極高,精度足以滿足題目要求。基于以上討論,作品最終采用DallasDS1302芯片作為實(shí)時時鐘模塊的核心。c、人機(jī)交互根據(jù)題目要求,作品采用LCD12864作為主顯示器,顯示公歷的年月日、時分秒及閏年情況,同時實(shí)現(xiàn)農(nóng)歷年月日的漢字輸出,同時
4、實(shí)現(xiàn)溫度等數(shù)據(jù)以及全中文菜單的顯示。根據(jù)題目要求,作品采用四枚獨(dú)立按鍵分別作為上、下、確認(rèn)、菜單功能按鍵,足以滿足多級菜單間的切換與相應(yīng)時間、功能、日程安排的設(shè)置。d、程序開發(fā)語言MSP430單片機(jī)開發(fā)采用C語言較多。但由于開發(fā)時間極短、開發(fā)人數(shù)極少、課業(yè)壓力大、任務(wù)較重,作品采用IEEE制定的EmbeddedC+語言開發(fā),且充分利用了面向?qū)ο缶幊痰乃枷耄蟠蠛喕顺绦蛟O(shè)計(jì)的過程,也較大程度地提高了代碼的復(fù)用性(且代碼具有很高的可重用性)。代碼也適當(dāng)?shù)乩昧薎ARElectricWorkbenchforMSP430開發(fā)環(huán)境對C+泛型編程開發(fā)的良好支持,使用了標(biāo)準(zhǔn)模板庫STL中的部分函數(shù)簡化部分
5、算法和數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)開發(fā)工作。由于C+編譯的程序?qū)⒈菴效率低,為保證程序仍具有較高效率,編程時充分考慮MSP430內(nèi)部結(jié)構(gòu),遵循C430編程規(guī)范,盡量避免使用不適合MSP430架構(gòu)執(zhí)行的代碼段。為保持較好的可移植性,幾乎沒有使用EmbeddedC+語言不支持的特性。e、算法選擇萬年歷主要涉及的算法為公歷年月日(涉及閏年補(bǔ)償)及星期的算法、公歷與農(nóng)歷的高效轉(zhuǎn)換算法。基于的討論,作品采用了外連RTC模塊的設(shè)計(jì)方案,而DS1302具有閏年補(bǔ)償功能,能實(shí)現(xiàn)較完整的公歷年月日計(jì)算,因此只需設(shè)計(jì)星期的計(jì)算方法。作品采用了基于Zeller公式的星期計(jì)算方法,時間復(fù)雜度僅為O(1)。由于中國農(nóng)歷計(jì)算依賴于天象
6、等不確定量,無特定算法。因此作品內(nèi)建了公農(nóng)歷映射表實(shí)現(xiàn)公農(nóng)歷間轉(zhuǎn)換。此外,作品在菜單設(shè)計(jì)部分還利用到了遞歸算法的思想,在日程設(shè)計(jì)方面利用了STL提供的快速排序算法。2.總體設(shè)計(jì)設(shè)計(jì)總體框架圖四、方案描述基于1.1部分的比較分析,作品最終的方案描述如下:1、作品提供了一種基于MSP430與DS1302的萬年歷解決方案。硬件方面,作品控制核心采用MSP430G2553單片機(jī),以LCD12864作為顯示器,依賴DS1302提供實(shí)時時鐘信息。軟件方面,系統(tǒng)代碼采用EmbeddedC+編寫,采用面向?qū)ο笤O(shè)計(jì)方法實(shí)現(xiàn),設(shè)計(jì)了利用中斷實(shí)現(xiàn)的支持多任務(wù)時間片輪轉(zhuǎn)調(diào)度、高優(yōu)先級任務(wù)搶占調(diào)度的偽RTOS;設(shè)計(jì)了功
7、能完善的多級菜單,具有良好的人機(jī)交互性能;設(shè)計(jì)了基于Zeller公式與紫金歷數(shù)據(jù)表的萬年歷算法,能顯示判斷閏年并自動調(diào)整日期。功能與特性包括以下幾點(diǎn):1、 精確顯示年月日時分秒2、 閏年、二月自動調(diào)節(jié)時間3、 兩個按鍵控制調(diào)節(jié)時間日期等4、 顯示自定義的語句5、 戀愛紀(jì)念日提醒,顯示不一樣的畫面(Weve been together for XX years!)2、理論分析與計(jì)算2.1邏輯控制電路設(shè)計(jì)眾所周知,單片機(jī)系統(tǒng)發(fā)展的趨勢是片內(nèi)集成,通過片上鏈路實(shí)現(xiàn)各類信息的處理轉(zhuǎn)換,利用單片機(jī)自身的其他資源實(shí)現(xiàn)各類控制。然而由于設(shè)計(jì)者相關(guān)知識與經(jīng)驗(yàn)的匱乏,作品依然采用了8086時代以單片機(jī)為核心、外
8、擴(kuò)各類模塊實(shí)現(xiàn)所需功能的設(shè)計(jì)方法。邏輯控制電路均以單片機(jī)管腳為出發(fā)點(diǎn)設(shè)計(jì),各模塊直接或者通過各類總線連接方式連接到相應(yīng)管腳。具體參見第三章電路設(shè)計(jì)部分。2.2日程設(shè)定和日期計(jì)算方法公歷的計(jì)算方法:由于硬件選擇的原因,公歷方面不需考慮年月日計(jì)算、閏年補(bǔ)償,只需設(shè)計(jì)星期算法:最著名也最有效的公歷星期算法為Zeller公式:1公式都是基于公歷的置閏規(guī)則來考慮。公式中的符號含義如下:w:星期(計(jì)算所得的數(shù)值對應(yīng)的星期:0-星期日;1-星期一;2-星期二;3-星期三;4-星期四;5-星期五;6-星期六)1c:年份前兩位數(shù)y:年份后兩位數(shù)m:月(m的取值范圍為3至14,即在蔡勒公式中,某年的1、2月要看作
9、上一年的13、14月來計(jì)算,比如2003年1月1日要看作2002年的13月1日來計(jì)算)d:日:稱作高斯符號,代表向下取整,即,取不大于原數(shù)的最大整數(shù)。mod:同余(這里代表括號里的答案除以7后的余數(shù))實(shí)際編程時考慮C+語言特性,采用了以下修正公式代替Zeller公式:其中各變量與Zeller公式定義一致,只是采用了char(編譯時默認(rèn)為unsignedchar)類型作為各變量的數(shù)據(jù)類型,利用C+語言特性可以實(shí)現(xiàn)取整。農(nóng)歷算法:由于中國農(nóng)歷是直接利用天體位置定義的歷法(區(qū)別于利用固定的天體時間平周期定義的歷法,如格里歷,回歷等),它是現(xiàn)今世界上為數(shù)不多的天文年歷性質(zhì)的歷法,它和一些重要天象是一一
10、對應(yīng)的2,因此不存在確切的算法。程序內(nèi)建了一張紫金歷與公歷的映射表實(shí)現(xiàn)了公農(nóng)歷間的轉(zhuǎn)換。五、硬件電路圖六、PCB圖七、整體思路/*/* 程序說明:直流電壓表(串行LCD顯示) */* P1.0控制RW,并行的讀/寫選擇信號,串行的數(shù)據(jù)口 */* P1.1控制E,并行的使能信號,串行的同步時鐘 */* P1.4接被測電壓信號源,信號源與單片機(jī)要共地 */* PSB低電平是串行,直接接地;RS接高電平 */* */* P2.3為SCLK,P2.4為SDA,P2.5為RST */*/#include#define uint unsigned int#define uchar unsigned cha
11、r#define BIT(x) (10;j-) switch(j) case 3:temp=firstbyte;break; case 2:temp=transdata&0xf0;break; case 1:temp=(transdata0;i-) if(temp&0x80) P1OUT |= BIT0; else P1OUT &= BIT0; P1OUT |= BIT1; temp = 1; P1OUT &= BIT1; Delay_nms(1); P1OUT &= BIT0;/*定位函數(shù)*/void LCD_Pos(uchar x,uchar y) int pos; switch(x) c
12、ase 1:pos=0x80;break; case 2:pos=0x90;break; case 3:pos=0x88;break; case 4:pos=0x98;break; default:pos=0x80; pos += y; LCD_Send(0,pos); /*函數(shù)功能:字符串顯示函數(shù)入口參數(shù):*pt ,num出口參數(shù):無函數(shù)說明:無*/ void LCD_Display_String(const uchar *pt,uchar num) uchar i; for(i = 0;i (num*2);i+) LCD_Send(1,*(pt+);void Delay_nms(uint
13、n) uchar i; while(n-) for(i=0;i115;i+);/*函數(shù)名稱:顯示函數(shù)入口參數(shù):Data出口參數(shù):無函數(shù)說明:每行最多8個字,2個字母或數(shù)字相當(dāng)于1個字的長度,注意 漢字沒法跨格顯示。*/ /void LCD_Display(long int Data)/ LCD_Pos(2,0); /第二行/ LCD_Display_String(串口數(shù)據(jù),4);/ LCD_Pos(3,0); /第三行/ LCD_Display_String(當(dāng)前顯示:,5);/ LCD_Display_Digit(Data);/*修改*/ void update_disbuf() dis_b
14、uf10=2; dis_buf11=0; dis_buf12=year/16 + 0x30; dis_buf13=year%16 + 0x30; dis_buf14=-; dis_buf15=month/16 + 0x30; dis_buf16=month%16 + 0x30; dis_buf17=-; dis_buf18=date/16 + 0x30; dis_buf19=date%16 + 0x30;/ dis_buf110= ;/ dis_buf111= ;/ dis_buf112= ;/ dis_buf113=dayn-10;/ dis_buf114=dayn-11;/ dis_buf
15、115=dayn-12; void update_disbuf1() dis_buf20=hour/16 + 0x30; dis_buf21=hour%16 + 0x30; dis_buf22=:; dis_buf23=minute/16 + 0x30; dis_buf24=minute%16 + 0x30; dis_buf25=:; dis_buf26=second/16 + 0x30; dis_buf27=second%16 + 0x30; void update_disbuf2() dis_buf30=dayn-10; dis_buf31=dayn-11; dis_buf32=dayn-
16、12;/*以下為DS1302的子函數(shù)*/ /*/ /向DS1302寫一個字節(jié)的數(shù)據(jù) void ds1302_Wbyte(char dat) char s,temp; temp = dat; for(s=0;s1; /數(shù)據(jù)右移一位為下次輸出做準(zhǔn)備 SCLK_0; /為下一次做準(zhǔn)備 /從DS1302讀取8位數(shù)據(jù) char ds1302_Rbyte() char u,temp; P2DIR &= BIT4; for(u=8; u0;u-) temp=temp1; temp += (P2IN&BIT4)0x29 & month=0x02) /如果調(diào)時時2月超過29 ds1302_Write(write
17、_date,0x01); date = ds1302_Read(read_date); ds1302_Write(write_month,month + 1); month = ds1302_Read(read_month);/讀取月 year = ds1302_Read(read_year); /讀取年 hour = ds1302_Read(read_hour); /讀取時 hour = hour & 0x3f; /屏蔽掉前兩位 minute = ds1302_Read(read_minute);/讀取分 second = ds1302_Read(read_second);/讀取秒 n =
18、ds1302_Read(read_day);/讀取星期 ds1302_Write(write_protect,0x80);/打開寫保護(hù) /*函數(shù)名稱:主函數(shù)入口參數(shù):無出口參數(shù):無函數(shù)說明:請看完最上面程序說明再運(yùn)行程序*/void main() WDTCTL = WDTPW + WDTHOLD; P1DIR=0xff; P2DIR =(BIT3+BIT4+BIT5); Delay_nms(100); LCD_Init(); ds1302_init(); while(1) _DINT(); data_pro(); /讀取并處理數(shù)據(jù) _EINT(); if(minute= 0x00)/紀(jì)念日時間 LCD_Send(0,0x01); LCD_Pos(1,0); LCD_Display_String(紀(jì)念日,8); LCD_Pos(2,0); LCD_Display_String(love1,6); LCD_Pos(3,0); LCD_Display_String(love2,6); Delay_nms(10); LCD_Pos(4,0); LCD_Display_String( 2015-1-2,5); Delay_nms(1000000); LCD_Send(0,0x01); else LCD_Pos(1,0); LCD_
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45487-2025船舶與海上技術(shù)海上環(huán)境保護(hù)船舶燃油消耗數(shù)據(jù)收集規(guī)范
- GB/T 38205.2-2025液壓傳動16 MPa系列單出桿缸的安裝尺寸第2部分:缸徑25 mm~220 mm緊湊型系列
- 考試過程中情緒管理的重要性與實(shí)踐試題及答案
- 軟件開發(fā)合作協(xié)議
- 項(xiàng)目管理考試的前瞻性分析試題及答案
- 2024新教材高中政治 第四課 只有堅(jiān)持和發(fā)展中國特色社會主義才能實(shí)現(xiàn)中華民族偉大復(fù)興 4.3 習(xí)近平新時代中國特色社會主義思想教學(xué)設(shè)計(jì) 部編版必修1
- 2025年金融理財(cái)師考試倫理決策思維訓(xùn)練及試題答案
- 提高項(xiàng)目管理考試自信的有效途徑與試題答案
- 財(cái)務(wù)報(bào)表分析與特許金融分析師考試試題及答案
- 2025年金融市場法規(guī)和監(jiān)管試題及答案
- 四川涼山歷年中考語文現(xiàn)代文之散文閱讀7篇(截至2024年)
- 教學(xué)課件:《城市地理學(xué)》
- 幼兒園集中教育活動培訓(xùn)
- DB37-T 5307-2024 住宅小區(qū)供水設(shè)施建設(shè)標(biāo)準(zhǔn)
- 公司安全生產(chǎn)管理制度培訓(xùn)
- 2025年八省聯(lián)考新高考數(shù)學(xué)試卷真題答案詳解(精校打印)
- 燃?xì)夤艿兰霸O(shè)施保護(hù)專項(xiàng)方案
- DB31-T 1298-2021 既有多層住宅加裝電梯安全技術(shù)要求
- 在登高作業(yè)時要注意的安全事項(xiàng)
- 【MOOC】數(shù)學(xué)建模精講-西南交通大學(xué) 中國大學(xué)慕課MOOC答案
- 地下管廊電纜施工方案
評論
0/150
提交評論