freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于單片機的電子萬年歷設(shè)計畢業(yè)論文-免費閱讀

2024-07-22 19:59 上一頁面

下一頁面
  

【正文】 0x80。else return(1)。 case 10:{temp=year_code[table_addr+1]amp。 if (temp==0)return(0)。} break。0x80。else return(1)。 case 2:{temp=year_code[table_addr]amp。 c_sun,year_sun,month_sun,day_sun均為BCD數(shù)據(jù),c_sun為世紀標志位,c_sun=0為21世紀,c_sun=1為19世紀調(diào)用函數(shù)后,原有數(shù)據(jù)不變,讀c_moon,year_moon,month_moon,day_moon得出陰歷BCD數(shù)據(jù)*/ //bit c_moon。 time_buf1[i]=time_buf1[i]+tmp*10。 //時 time_buf[5]=Ds1302_Read_Byte(ds1302_min_add)。 //分 Ds1302_Write_Byte(ds1302_sec_add,time_buf[6])。 //關(guān)閉寫保護 Ds1302_Write_Byte(ds1302_sec_add,0x80)。 //停止DS1302總線 return temp。 i 8。 i 8。 SCK_CLR。 SCK_CLR。 //寫入目標地址:addr addr = addr amp。return(LCD_Data)。return(LCD_Data)。 LCD_E = 1。 LCD_E = 1。for(i=0。i++) { 12864WriteData(str2[i])。12864Writemand(0x80,1)。 X++。break。if(Y4) Y=4。 //高位b=8。Writeonechar(0xCC)。DelayUs2x(25)。DelayUs2x(25)。}/*讀取一個字節(jié)*/unsigned char Readonechar(void){unsigned char i=0。 //稍做延時 DQ = 0。} if(beepalarm!=0) {beep=~beep。//全屏顯示所有數(shù)據(jù) else display4_1()。beeptime2。 //LCM初始化 DelayMs(5)。uint beeptime1,beeptime2,beepalarm。onUsing參考文獻[1] 郭天祥. 新概念51單片機C語言教程 電子工業(yè)出版社,2009[2] 譚浩強.C程序設(shè)計(第二版).清華大學(xué)出版社,1999[3] 肖炎根,舒望 ,2007[4] 閻石. 數(shù)字電子技術(shù)基礎(chǔ)(第五版). 清華大學(xué)出版社,1983[5] 何立明.《單片機高級教程——應(yīng)用與設(shè)計》.北京:北京航天航空大學(xué)出版社,2000[6] 林志奇,郎建軍,[M].北京:北京航空航天大學(xué)出版社,2006[7] [M]. 北京:人民郵電出版社,2003[8] 劉彥華,邢鵬康. [9] :電子世界,2002[10]V.今后的學(xué)習(xí)科研都要以這樣的方法和心態(tài)去學(xué)習(xí),爭取能在軟硬件設(shè)計方面做出一定的成果。第三蜂鳴器報時是簡單的發(fā)聲示意,如果能播放音樂,將更人性化。下圖分別附上接液晶前后的實物圖。連接圖如下圖42所示:圖42 單片機最小系統(tǒng)溫度傳感器接線圖如下圖43所示:圖43 溫度傳感器電路DS1302時鐘芯片為雙列直插8引腳,其引腳需要接晶振32768hz,雙電源供電,備用3v電源接VCC2,為單片機斷電后時鐘繼續(xù)走提供條件。遇到問題解決問題的過程就是提高的過程。警告并不一定會影響最終程序運行,但是即便無警告無錯誤,也只能保證程序無語法問題。原因就在于當鬧鐘的秒時間到時,判斷語句不能馬上判斷出,秒時間過去后,再判斷出的條件已經(jīng)不具備了。問題可能就出在編譯后與硬件脫節(jié)上。本課題程序編寫和調(diào)試時間了一個月左右的時間,可以說程序設(shè)計是此次單片機萬年歷系統(tǒng)設(shè)計的重點。計算公歷年某月某日是星期幾的算法也有固定規(guī)律。表格數(shù)據(jù)來源于互聯(lián)網(wǎng),經(jīng)過抽查驗證證明該數(shù)據(jù)表是正確的。陽歷轉(zhuǎn)陰歷的程序,最直接的算法是特定公式來推導(dǎo)。}上述程序流程為讀取時鐘芯片時間數(shù)據(jù),然后將改變后的年數(shù)值寫入DS1302,在顯示即可。 //此條保證閃爍調(diào)整時間時時間在變化 dplay1()。 temp=key_down(temp,99,0)?!北硎景聪碌?狀態(tài)等待,1狀態(tài)跳出,這樣就解決了重復(fù)計數(shù)和忽視計數(shù)的問題。 else count++。其中讀取字節(jié)、初始化等程序均依據(jù)元件手冊中相應(yīng)操作時序定義并封裝成相應(yīng)子函數(shù)。Writeonechar(0xCC)。其數(shù)據(jù)字節(jié)定義如下圖33所示:圖34 溫度傳感器數(shù)據(jù)字節(jié)定義考慮到電子萬年歷的顯示精度往往到1攝氏度即可,因此溫度傳感器子程序?qū)⒑笏奈恍?shù)部分進行了四位右移,并未考慮四舍五入進位問題,因此最終程序有1攝氏度左右的誤差。每次只需改變str1[]數(shù)組的值(注意此值不是漢字或者ASCII碼的查表坐標,而是相應(yīng)的ASCII型的字符),賦值方法可以是str1[]=“2014年6月4日7度”,而要改變的數(shù)字則給某個數(shù)組元素賦值再把數(shù)組放在特定行掃描即可。這樣,要想實現(xiàn)任意字符或漢字顯示在任意一個或兩個字符位置,就要使用其他方法。12864操作時序(以寫資料到12864中為例):圖33寫數(shù)據(jù)或命令到12864時序圖之所以稱為寫資料,是因為可寫入的資料包括數(shù)據(jù)和命令兩類,寫命令和寫數(shù)據(jù)不同,要嚴格按照數(shù)據(jù)手冊中規(guī)定的方式操作。需要用到多少種漢字就“畫”多少種漢字。課題用到的7個相關(guān)寄存器、讀寫控制字以及寄存器數(shù)據(jù)范圍見表31(圖表來源于數(shù)據(jù)手冊)。其中按照模塊化編程方法,頭文件中只需描述對外的接口、需要調(diào)用的函數(shù)以及某些外部聲明的函數(shù)。首先進行初始化,對12864和DS1302初始化。第3章軟件設(shè)計部分簡單說,模塊化程序設(shè)計是一種優(yōu)良的編程方法。無源蜂鳴器需要一定頻率方波驅(qū)動,而有源蜂鳴器給電即會發(fā)聲。故,本課題采用四按鍵獨立鍵盤,分別為換調(diào)節(jié)位按鍵、增按鍵、減按鍵、確認按鍵。因此,本課題采用DS18B20作為溫度傳感器。該方案成本很低,但熱敏電阻輸出電壓,需要將電壓數(shù)據(jù)進行分析,再轉(zhuǎn)換為溫度,且溫度測量結(jié)果精確度不高。做電子時鐘,數(shù)碼管肯定是首先被考慮的方案,但對于多功能電子萬年歷來說,數(shù)碼管顯然不具備顯示陰歷和天干地支等功能,考慮顯示漢字問題,數(shù)碼管方案不可行。假設(shè)使用定時器的16位工作方式,由于每次中斷都需要重裝初值,重裝初值占用兩條c語句的時間,該時間產(chǎn)生的累計誤差較大;即便使用8位自動重裝方式,由于中斷服務(wù)子程序占用一定時間,使每次定時溢出并不總是發(fā)生在前一次中斷服務(wù)子程序結(jié)束之時,同樣會產(chǎn)生累計誤差。本課題最終確定使用51系列單片機STC89C52,這款單片機顯然不是性能最好或者說最適合做萬年歷產(chǎn)品的單片機,如果萬年歷產(chǎn)品商用,51單片機也不是首選。第五章:成果展示與課題收獲,可改進與提高之處。 本課題主要流程和論文章節(jié)安排課題主要目的是設(shè)計出實用的數(shù)字電子萬年歷,主要圍繞單片機進行單片機系統(tǒng)的外圍電路設(shè)計,諸如復(fù)位電路部分的設(shè)計、時鐘部分的設(shè)計、按鍵部分設(shè)計、報時部分的設(shè)計、顯示電路部分的設(shè)計,以及實現(xiàn)各個模塊各項功能而編寫的c語言程序設(shè)計等。這些產(chǎn)品都用到了各種電子芯片,基于FPGA、基于DSP芯片、單片機為控制核心的以及專用集成電路設(shè)計的。一個可靠性好、計時準確、提供附加功能豐富的日歷產(chǎn)品的需求使得多功能數(shù)字電子萬年歷應(yīng)運而生。單片機技術(shù)自誕生之日起,就以它靈活的可編程特性,豐富的外圍接口和越來越便捷可靠的可擴展功能贏得了電子產(chǎn)品開發(fā)人員的青睞。 電子萬年歷的研究現(xiàn)狀與發(fā)展趨勢應(yīng)該說,數(shù)字電子萬年歷是一個成熟的產(chǎn)品。當今市場上的數(shù)字電子萬年歷幾乎都采用了集成度極高的專用芯片,這能在降低設(shè)計難度的同時也大大縮短了生產(chǎn)周期。第三章:介紹了單片機電子萬年歷的程序設(shè)計部分,包括基于開發(fā)板的仿真,必要算法的研究與選擇,詳細描述了程序設(shè)計中遇到的問題和解決的方案。通過本課題,能夠熟悉單片機、提高c語言編程能力、熟練使用某些傳感器、對單片機基本功能和某些協(xié)議有更好的理解,獨立完成課題全部任務(wù),便是有意義的目標。利用51單片機的兩個定時器資源,通過寫程序?qū)崿F(xiàn)。在外加電源甚至是電容的情況下,可在斷電條件下工作,單片機斷電后仍然保持時鐘數(shù)據(jù)正常走時,外加3v紐扣電池甚至可運行一年。方案三:液晶LCD12864顯示方案,12864兼具1602的優(yōu)點,功耗低,顯示界面友好,價格可以接受,顯示信息更加豐富,美觀大氣,而其帶字庫的類型使?jié)h字顯示變得更加方便,編程操作簡單。DS18B20抗干擾能力強;精度可調(diào),且測溫范圍由55攝氏度到125攝氏度;此外還擁有溫度報警功能。方案二:獨立按鍵方案。因此華而不實的揚聲器方案不可行。由于硬件電路簡單,不采用PCB制板,僅依靠原理圖即可在萬用板上完成焊接。模塊化編程也便于分工合作,在較大程序中應(yīng)用能提高編程的效率。值得注意的是,大循環(huán)完成一次的時間應(yīng)小于1s,這樣秒數(shù)據(jù)變化才能顯示出來,如果循環(huán)內(nèi)cpu完成的操作過多,以至于超出1s,秒位數(shù)據(jù)變化就會跳變。DS1302具有兩種讀寫模式,字節(jié)模式和突發(fā)模式。 本次軟件設(shè)計中,將時間數(shù)據(jù)年月日時分秒六位寫到數(shù)組time_buf1[]中,該數(shù)組也具有時鐘初始化功能,即通過設(shè)置time_buf1[]的2到6位來定義上電復(fù)位后顯示的年月日時分秒。12864同樣有兩種操作方法,串行和并行。同樣查表法讀ASCII碼時,雖然某個符號如阿拉伯數(shù)字“1”占用1/16個位置,但是依然服從漢字的規(guī)則,只能出現(xiàn)在偶奇位置,其中奇數(shù)位置什么也不顯示。i16。溫度傳感器通過單總線協(xié)議通信,即通過DQ數(shù)據(jù)端進行輸入輸出控制。 // 跳過讀取序號列號的操作Writeonechar(0x44)。 m=a+b。計數(shù)值程序如下:void key_count(){ State_Set=1。需要說明的按鍵部分關(guān)鍵問題是按鍵的消抖,消抖一般有兩種方法。 Ds1302_Read_Time()。 //寫入新的年數(shù) Ds1302_Write_Byte(0x8e,0x80)。 key_sure()。鬧鐘和整點報時功能此時也是無效的。本部分查表法輸出為月日信息,紀年信息由于算法簡單故單列子程序。天干算法為“(2000+當前年份(后兩位)3)%101”,所得為數(shù)字09,通過查詢數(shù)組tiangan[]=甲乙丙丁戊已庚辛壬癸可得年干;地支算法為“(2000+當前年份(后兩位)3)%121”,所得數(shù)字為011,通過查詢數(shù)組dizhi[]=子丑寅卯辰巳午未申酉戌亥可得年支。 延時子程序延時子程序為Ms級延時和us級延時。第二,c語言編程的特殊性導(dǎo)致的錯誤。(al_min==time_buf1[5])amp。比如鬧鐘該響時,給時間標志賦值,然后根據(jù)時間標志驅(qū)動蜂鳴器。實驗板更接近硬件仿真,可以說在實驗板上程序通過了,將來焊接成品就有了一定的保證。整體框架如圖41:STC89C52單片機晶振與復(fù)位電路蜂鳴器驅(qū)動電路DS18B20測溫電路DS1302時鐘芯片12864顯示電路按鍵電路圖41 單片機電子萬年歷系統(tǒng)整體框架單片機最小系統(tǒng)是單片機工作的必備條件。焊接完成后燒寫程序直接可用,這說明,數(shù)字電路的可靠性較高。比如按鍵掃描時候單個按鍵不夠靈敏,不能按下去馬上有反應(yīng),如果這樣的產(chǎn)品商用,一定是失敗的。做一個成功的產(chǎn)品是不容易的,軟件類的看不出成果的產(chǎn)品更甚。在此,還要感謝在互聯(lián)網(wǎng)上提供各種問題解決方案的不知名前輩們,當我遇到簡單的甚至某些低級問題的時候,點開搜索引擎,總能找到一些有意義的啟示。Thermoelectric[11] Meehan Joanne,Muir in Merseyside SMEs:Benefits and barriers[J]. TQM Journal. 2008附 錄源程序清單主程序includeinclude include include include include include include include unsigned char idata time_buf1[8] = {20,14,6,6,12,29,45}。//初值寫入ds1302 Init_DS18B20()。beeptime1。 Conver_week(time_buf1[1],time_buf1[2],time_buf1[3])。(al_min==time_buf1[5])amp。}各部分子程序/*名稱:18B20溫度傳感器內(nèi)容:18B20單線溫度檢測的應(yīng)用樣例程序*/includeinclude/*
點擊復(fù)制文檔內(nèi)容
數(shù)學(xué)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1