版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、單片機課程設計實驗報告設計題目:基于單片機的多功能綜合應用系統(tǒng)的設計專 業(yè):電子信息工程 _班 級: _姓 名: _指導老師: _目錄第一章 設計說明1.1設計目的 .31.2設計內容及要求 .3第二章 硬件電路仿真實現(xiàn)2.1硬件結構分析. 52.2基本功能仿真電圖.62.3擴展功能仿真電路圖 . 102.4實物電路圖. 15第三章 軟件設計實現(xiàn)3.1軟件程序內容 .163.2模塊分析 .163.3程序流程圖 . 17第四章 系統(tǒng)測試4.1軟件調試 .194.2硬件調試 .19第五章心得體會.20第六章參考文獻.21附錄 . 21第一章 設計說明1.1設計目的單片機在許多領域使用十分廣泛,如智
2、能儀器儀表、實時工控、 通訊設備、導航系統(tǒng)、家用電器等。各科任老師們經常說“學好單片 機,工作就不成問題了?!笨梢妼W好單片意義之重大。單片機作為一 門基礎學科,既是對前期學習 C 語言的綜合運用,也是理論與實踐 相結合的一大體現(xiàn)。 本次課程設計通過基礎部分, 拓展功能以及整體 電路的實現(xiàn)能很好地鍛煉我們的動手及編程能力。1.2設計內容及要求內容:1設計并實現(xiàn)具有復位功能的單片機小系統(tǒng)。2利用單片機進行燈光的場景開關控制、循環(huán)點亮控制、花樣 變化控制及速度變化控制 (如:左右循環(huán)、 擴散收縮式移動、 流星雨、 舞臺燈光綜合效果、名曲名句跟隨顯示等。至少應做兩項:前兩項選一并有速度變化控制功能,后
3、三項選一或自創(chuàng)特色花樣)。3.炫彩音樂顯示(依據(jù) 3 秒以上某名曲名句,模擬高、中、低 音三分頻,彩色LED隨音頻變化而起伏顯示的效果,進一步地,LED 亮度跟隨音樂響度閃爍)。4利用單片機進行燈光的色彩連續(xù)變化效果控制。5利用單片機進行燈光的三色聯(lián)動定時控制 (以交通燈為例) 。(說明: 3、4 中二選一, 1、2、5 必選)6.配合 2 至 5 項中功能,實現(xiàn)液晶屏輸出功能或狀態(tài)信息。7.以調節(jié) 5 或 4 項中的時間為例實現(xiàn)基于 4X4 鍵盤的輸入功 能。(可用現(xiàn)有成品鍵盤, 也可自己課外用按鍵開關焊接自己的鍵盤。 )8.數(shù)字溫度計的設計(要求:實時顯示溫度、設置限值溫度、 超限報警等)
4、9. 32x16 點陣 LED 顯示同組同學漢字名(利用取字模軟件獲 取數(shù)據(jù));10.智能式直流電壓表的設計。要求:( 1 )能啟動、停止;(2)能通過開關進行功能選擇;(3) 基本功能部分要體現(xiàn)循環(huán)、組合和色彩變化的控制功能 和效果,實現(xiàn)三色聯(lián)動定時控制, 控制變化規(guī)律的類型或功能不少于 5 種。元件清單:序號名稱、規(guī)格單位數(shù)量/組組數(shù)備注1AT89S51/2片122AT89S512連線把4共用分紅、黑、藍、綠等色312MHz晶振只122Crystal447p電容只222510u電容(電解)只122Electrolytic capacitor60.1u電容只122capacitor7電阻33
5、0 Q只1022resistor8電阻1k只1022resistor9可調電阻10k只42210電阻:510 QX8排阻只22211紅色LED小燈只322LED12綠色LED小燈只22213藍色LED小燈只32214按鍵式開關只122Button15撥動式開關只622switch16面包板塊1221774LS04片222可換用 74LS07/06、74HC24518RT1602液晶顯示屏只12219DS18B20 溫度傳感器只122208550三極管只122PNP型21有源一體蜂鳴器5V只122第二章硬件電路仿真實現(xiàn)2.1硬件結構分析1、單片機仿真硬件系統(tǒng)由復位電路、晶振電路、獨立鍵盤 輸入、
6、彩燈輸出、矩陣鍵盤輸入以及 LCD顯示模塊構成。根據(jù)課本上的內容,首先搭建好復位電路與晶振電路,P1 口接8個發(fā)光二極管,P3 口接鍵盤,P2.4、P2.5、P2.6和P0 口接LCD 顯示,單片機實物電路由復位電路、晶振電路、獨立鍵盤輸入、彩燈輸ha3A1pn1Ldh1361pl35 IP斗卜34 I亡眄33 I%JFM I葉21吃1:)TfiXp Ej- T -E I j TEXT TXT* TEXTRV11k出模塊構成。由P1 口接入彩燈。其中晶振連接需注意到,兩端測 試電壓的差值在2V左右時才能正常起振工作。復位電路在未工作時不能有電壓。2.2基本功能仿真電路圖復位電路時鐘顯示電路口L
7、CD1詆*=wk IITSI BOd C.戶戶 Q Q Q Q O-TEXT鍵盤具體仿真圖及說明部分日t_ 二| nri- ifa a- -vn-戸 二ZITiEIItABD re iinw PK rcji:AH riMfei 址邸BE r npiKn FC.1LBrFSaE- FS.Idie me mtn 吒g rEFJtT-P l IITSCI 卜-.rrr rzjffFTI*3*TDT3FT1ER廠LIE:li4UZlf3:|=1L3 1=按S1交通燈vmiMSESrua*xuP?曲費 rzarj.3 ew F77吞F3 WIZ-OMinnrzjTFBPlVima3*iT3 HE nsi
8、.nITDMit硏1!w:上吋按S2燈光的色彩連續(xù)變化三色聯(lián)動按S3就轉變?yōu)榱餍怯闘LC4GLTpr*ns &rzrs PT 陽K. rA-ft-;T3KT*Z2IffFI*-4H1rJJL3iFBI HFP沖=何niTHTOEFZJ.TmTTSiiFrlTU十 FI2.3擴展功能仿真電路圖溫度計部分:I-r-EbwI-r-Ebw 11011101 rdl-rdl- EK.3-EK.3- =-=-+ AJax -i:( i 訂-isis ELHgELHg _uUEn_uUEn DE1HMDE1HM LO言 LED-LED-CFEEhCFEEh LOELOE LEF.rJLEF.rJlnvlnv
9、 一c_._.-c_._.- ISPISP3-3-FEEFEEJIF =-r-M!i i- -ss ri14:-wlawssK25 30。CN 旁哺西歳孑=n=n HR.drHR.dr HuHu OrugnOrugn S9S9 EMEM ub$ub$ -350-350 I4II=4II=4I否!-_ *-一測一*里JVRIJVRIn-n-y II i II M *BurnBurn 耶 mhnmhn si-fc-si-fc- DsisiJoDsisiJo Lo*書 LED-LED-OREFOREF R RDHDDHD LO 誌 I1W 一 .- LNSPLNSP3 31 1 戎G5.TCHG5.
10、TCH _=rtswHrtswH-Ji 一 - 】IGIG嗎甬左皿 ElH-lmonLlgEElH-lmonLlgE霍竺.LS.LS9I9I 32*16顯示屏部分:顯示屏顯示:第四部分智能電壓表部分:按下BUTTON鍵,LED燈亮起,調節(jié)RV1的值,LED亮滅變化,代表不同的輸出電壓值調節(jié)RV1,阻值最大訂耳.用 I.WWI 和旳單R5T呷護郵0 H/內離呻亍PltfASFl咻 RZ.ZrAlD 厲MlM-E=a 3恃&時時廿FiJimPS肚枯 H.WtQUDn ior MJ 2.TL叩N.wrVP1J計儷R4M*TaP1flP3 *TIFIJQFl?円網小斤 MMT1T1口n nnlTTnl
11、TT睥口 wOEwOE QriQri K K c c w w i i H H G G G G Q Q o o Q QG G 9 9I LIBI調節(jié)RV1,阻值越來越小:RV1阻值一半:RV1阻值最小:2.4電路實物圖第三章軟件設計實現(xiàn)3.1軟件程序內容見附錄 P183.2模塊分析1. 顯示模塊:用 1602 液晶顯示,設置其技術參數(shù)為:撥復 位開關總能回到初始狀態(tài),使用 8 位數(shù)據(jù),顯示兩行,使用 5*7 的字型,顯示器開,光標關,字符不閃爍,字符不動。2.矩陣鍵盤模塊:當掃描到 1 號鍵盤,進入到流水燈模塊; 掃描到 2 號鍵盤時,進入交通燈模塊;掃描到 3 號鍵盤時,進入 擴展燈模塊;當掃
12、描到 4 號鍵盤,進入到循環(huán)燈模塊;當掃描到 5 號鍵盤,進入到三色聯(lián)動模塊;按下復位鍵后,回到初始狀態(tài)。3.三色聯(lián)動模塊:通過設置各種燈在不同的時間段亮滅,并 且各自亮的時間長不一致, 形成人們視覺上的觀察, 看到的現(xiàn)象是 燈由亮到暗的變化過程 ,由此可形成各種不同的混色。4.交通燈模塊:由延遲控制時間變化,設置兩路交通燈,紅 燈亮 18S ,綠燈亮 17S ,黃燈 1S,A 路交通燈的紅燈亮的時間等 于 B 路交通燈黃燈亮的時間加上綠燈亮的時間,由此形成聯(lián)動狀 態(tài)。5.流星雨模塊:通過控制每個燈的亮滅之間的時間來實現(xiàn), 從而給人視覺上的效果,形成流星雨。溫度顯示模塊:通過 DS18B20溫
13、度傳感器實時采集溫度 通過 1602 芯片顯示當前溫度。3.3程序流程圖4 T基本部分:強和3対砂74 T取碼指針送18行控制口取碼指針取當前列顯示字碼 第一個字節(jié)取當前列顯示字碼 第一個字節(jié)送18行控制口取當前列顯示字碼 第二個字節(jié)取當前列顯示字碼 第二個字節(jié)Led點陣:字碼表初址賦值字碼表初址賦值送916行控制口送列控制碼取當前列顯示字碼 地二個字節(jié)取當前列顯示字碼 地二個字節(jié)送916行控制口送列控制碼送916行控制口送列控制碼送916行控制口送列控制碼Y|N第四章系統(tǒng)測試4.1軟件調試在編程過程中, 遇到了很多難題。 流水燈和交通燈子程序都編的比較順利, 三色聯(lián)動因為要涉及到調節(jié)占空比,
14、 剛開始的時候感到無從下手, 后來又想到利 用定時中斷, 通過產生不同占空比的方波信號來控制燈的亮暗程度。 但是這樣仍 然沒有成功。后來在同學的幫助下,利用隨機函數(shù)調節(jié)占空比,調試成功,達到 了預想的效果。 在編寫鍵盤掃描程序的之前, 我查看了很多資料, 先弄清楚了矩 陣鍵盤的工作原理, 然后確定了一個簡單有效的鍵盤掃描算法, 調試成功, 啟動 鍵盤掃描程序, 能夠準確判斷出鍵值并進入相應的功能模塊。 后來把全部功能整 合到一個總程序中,就遇到了麻煩。首先在調用子函數(shù)的時候,由于各場景由 while (1)控制,在子函數(shù)中不能及時跳出循環(huán),后來在刪除了 while (1 )死 循環(huán)之后, 當檢
15、測到任一其它按鍵后就能立即跳出循環(huán)。 剛開始我們的交通燈子 程序用到了定時中斷, 在寫主函數(shù)的時候, 當矩陣鍵盤按下后交通燈子程序不能 執(zhí)行,后來簡化了交通燈程序,改用延時,交通燈功能模塊就能正常運行了。還 有關于 LCD 顯示的,之前是把對其初始化的調用放在子函數(shù)中,這樣在每次調 用時都初始化一次, 使得不能很好地變化, 后來把初始化放到了主函數(shù)里, 則能 正常跳變。在此次課程設計中碰到了很多困難 , 經過老師和同學的幫助 ,還有自己 在網上查資料都能夠得以解決。 使我深深的體會到, 只要堅持不懈, 沒有什么事 情是不能解決的。4.2硬件測試在硬件電路搭建完畢后,我們開始進行測試,成功燒寫
16、52 芯片后,發(fā)現(xiàn)燈 的亮滅不受控制, 而且 1602 液晶顯示屏也是沒有顯示內容。 在我們反復的檢查, 另外有對應仿真結果逐一排查, 發(fā)現(xiàn)我們的電路有一些問題, 因為我們的剛開始 的電路 AT89C52 的 P0 口接的是排阻,而且排阻的另一端接到了顯示屏的端口, 犯了很大的錯誤,檢查發(fā)現(xiàn)后,我們立刻做了修正,在 P1 口接了 10k 的電阻, 電阻的另一端接到 +5V 的電源,同時 P1 口接到顯示屏的端口。 這樣又進行測試, 發(fā)現(xiàn)顯示屏可以正常的顯示, 燈也可以正常的工作。 給老師檢查中, 發(fā)現(xiàn)我們的 復位鍵不管用, 之前沒有太注意這個, 幸好老師提醒我們, 發(fā)現(xiàn)我們少接了一個 電容。之
17、后我們又做了調整,終于電路正常工作。同時,在調節(jié)滑動變阻器使顯 示屏顯示的過程中也是很大的考驗, 需要有耐心, 不斷轉滑動變阻器, 最后才使 得整個電路順利進行。在本次課程設計中,我們進一步了解了 89C52 各引腳的功能以及 89C52 的內部邏輯結構,深入掌握了 89C52 顯示電路的基本功能及編程方法,同時深 入了解了 89C52 等芯片以及鍵盤的工作方式和接口功能。第五章 心得體會在本次單片機課程設計中,讓我感觸很深,從剛開始的簡單的控制燈的程 序開始, 逐步地增加開關控制, 再將這些連接起來, 真的一步一步地發(fā)現(xiàn)單片機 很有趣。在課程設計課中的頭兩個星期我很困惑, 因為我不懂怎么把很
18、多個功能 放在一起,為此我問了一些學的好的同學,他們認真的講解讓我有了一些啟發(fā), 后來我又自己買了一塊單片機自己試著編寫一個程序達到自己的預期結果, 盡管 這個過程非常的枯燥, 有時候編不出來或者想的跟試驗結果不同時, 又要重新檢 查語句,看每條語句的功能,又通過在網上查閱很多的資料來解決自己的問題 對于我來說, 我比較偏向于動手, 在硬件的搭建中還算是比較順利的。 還有在這 兩個多月里, 我學到了很多的東西, 看書本僅僅只是理論知識, 而將所學的理論 知識與實踐結合的過程中, 才發(fā)現(xiàn)自己學的理論知識遠遠不夠。 尤其是在編程時 往往能想到怎么做, 卻不知怎么編寫, 我感覺這是最難的, 在心里真
19、的是想要去 認真的完成,可是卻因為克服不了自己的恐懼,總覺得很難,就拖了好幾天,不 過慶幸的是我還是堅持了過來, 我覺得做什么事都必須要有信心和耐心, 這樣做 事才會更有效率。 在設計的過程中, 我也深刻地感受到了做一個完整的項目靠一 個人的力量是很辛苦的, 必須和自己的隊員一起商量討論, 而且分工合作, 這樣 每個人做自己所擅長的一部分,再合起來就會達到事半功倍的效果。通過這次課程設計, 我更加理解了單片機這門課, 也將課堂知識運用到實踐 中,不斷地積累, 讓我對單片機產生了很大的興趣, 我想接下來我還會繼續(xù)學習 這門課,不斷地提升自己的編程能力, 讓自己的思考能力增強。 所以我認為這次 的
20、課程設計意義很深,和另外兩位同學的共同學習、配合、努力的過程很愉快, 另外還要感謝老師的耐心輔導!_*因為這次我們單片機課程和單片機課程設計是同一個學期的課程, 在開始單 片機課程設計的時候單片機基礎也沒什么, 班上有些人參加了藍橋杯的看著他們 一開始就能自己編程序覺得很厲害, 自己只能慢慢從基礎開始學習, 難免有點心 浮氣躁。但是好在課程時間比較長,自己慢慢的看書查資料,和組員慢慢磨合, 按照課本的知識我們也能自己編出簡單的程序。 剛開始的課堂實驗開關控制燈等 等到矩陣鍵盤都是給課程設計打基礎的,課程設計也是將這些基礎知識聯(lián)系起 來,既考驗了你的耐心又考驗你的細心, 一旦錯了一點點小地方最后
21、的結果都出 不來。畢竟小組一起做課程設計能學到課堂學不到的知識, 雖然我們沒有別人那 么多的花樣但是我們也有盡力完成, 也有學到實踐的重要性。 當然在實驗過程中 也出現(xiàn)了很多問題, 這些問題都是值得我們重視的, 比如復位電路忘記接電容導 致我們復位電路反應很慢甚至沒反應, 顯示屏接上不亮, 后來才知道要接滑動變 阻器并調節(jié)才能亮。 中間出現(xiàn)問題也有咨詢過其他人, 他人的幫助對我們也很重 要,總之,最終實物結果能出來,絕不是一個人的結果,小組的配合,他人的幫 助,老師的指導也是至關重要的。 這次單片機課程設計雖然說糾結過煩躁過但是 將單片機的知識系統(tǒng)化學習了一遍,自己的動手能力也培養(yǎng)了, 和小組
22、一起學習, 讓我覺得意義很大。 所以不管做什么都在沉下心來慢慢做動手 做,不管結果怎么樣你也盡力了。_*在學習單片機這門課程之前, 就聽說過這門課程的重要性和學好這門課程的 關鍵,多做單片機實驗。因此對這門課程學之前就特別害怕?,F(xiàn)在單片機課程已 經結束,需要來好好的反思和回顧總結下了。 做實驗中, 遇到問題應該是準備不 充分吧。一開始,由于沒有課前準備的意識,每每都是到了實驗室才開始編程, 完成作業(yè), 導致每次時間都有些倉促。 還有就是自己基礎比較差, 遇到問題是依 賴性也很大, 在團隊下完成實驗。 通過這學期的單片機實驗的學習, 發(fā)現(xiàn)了自己 的問題,需要的的還有很多,包括搭建電路圖和測試硬件
23、電路,需要很大耐心, 培養(yǎng)自己接受新知識的自學能力。 也通過這次學習在以后的生活和學習中相信只要有足夠勇氣和耐心, 遇到的問題總會被解決。 最后感謝老師在我們遇到困難時 的幫助和點播第六章 參考文獻1. 單片機技術 - 課程設計與項目實例 中國電力出版社 作者: 李海濱等 2009.102 Proteus 教程 -電子線路設計、制版與仿真 清華大學出版社 作者:朱清彗 2008.93 51 系列單片機設計實例 (第 2 版) 北京航空航天大學出版社 作者:樓然苗 李光飛附錄:程序第一部分程序:#include#include#include#include#define uchar unsig
24、ned char#define uint unsigned int#define bit(n) (1n)extern unsigned char key_val;uint speed=50;char yellow=5,green=20,red=20;/ 三色定時控制量uchar hour,minute,second;uchar pwmctr; / 占空比控制變量uchar pwmctr_green=5;ucharlxytable=0 xfe,0 xfc,0 xf8,0 xf0,0 xe0,0 xc0,0 x80,0 x00,0 x01,0 x03,0 x07,0 x0f,0 x1f,0 x3f
25、,0 x7f,0 xff;uchar lxyctr=16;bit flag_green=1;bit flag_yellow;bit flag_red;bit flag_lsd=1;bit flag_jtd; bit flag_pwmled;bit flag_lxy;sbit Red=P1A0;sbit yel=P1A1;sbit gre=P1A2;sbit RED=P1A3;sbit YEL=P1A4;sbit GRE=P1A5;sbit buzzer=P0A0;void disp_time()second+;if(second=10)buzzer=1;if(second=60) second
26、=0;minute+;if(minute=60)buzzer=1;minute=0;hour+;if(hour=24)hour=0;L1602_char(2,9,hour/10+0 x30);L1602_char(2,10,hour%10+0 x30);L1602_char(2,12,minute/10+0 x30);L1602_char(2,13,minute%10+0 x30);L1602_char(2,15,second/10+0 x30);L1602_char(2,16,second%10+0 x30);main()buzzer=0;initkeypad();L1602_init();
27、TMOD=0 x11;TH0=(65536-10000)/256;TL0=(65536-10000)%256;TH1=(65536-1000)/256;TL1=(65536-1000)%256;EA=1;ET0=1;ET1=1;TR0=1;TR1=1;L1602_string(1,1,SPD);L1602_string(2,1, );L1602_char(1,5,speed/10+0 x30);L1602_char(1,6, );while(1)kevent();if(key_val=15)if(flag_lsd)L1602_char(1,4,*);L1602_char(1,6,*);init
28、keypad();while(key_val!=15)initkeypad();do kevent();while(key_val=16);if(key_val=3)speed=speed+10;if(key_val=7)speed=speed-10;L1602_char(1,5,speed/10+0 x30);initkeypad();L1602_char(1,4, );L1602_char(1,6, );if(key_val=14)initkeypad();while(key_val!=14)L1602_char(2,11,*);do kevent();initkeypad();while
29、(key_val=16);if(key_val=3) hour+;if(key_val=7) hour-;if(key_val=11)uchar a=0,i=2;L1602_char(2,14,*);while(i-)initkeypad();do kevent();while(key_val=16); a=10*a+key_val;if(i)minute=10*key_val+minute%10;minute=a;L1602_char(2,14, );L1602_char(2,11, );if(key_val=0)L1602_string(1,1,SPD);initkeypad();L160
30、2_string(2,1, );L1602_char(1,5,speed/10+0 x30);L1602_char(1,6, );flag_lsd=1;flag_jtd=0;flag_pwmled=0;flag_lxy=0;initkeypad();if(key_val=1)P1=0 xff;flag_lsd=0;flag_jtd=1;flag_pwmled=0;flag_lxy=0;if(key_val=2)L1602_string(1,1,);L1602_string(2,1,);L1602_string(1,1,pwm);P1=0 xff;flag_lsd=0;flag_jtd=0;fl
31、ag_pwmled=1;flag_lxy=0;initkeypad();if(key_val=3)L1602_string(1,1,);L1602_string(2,1,);L1602_string(1,1,lxy);P1=0 xff;flag_lsd=0;flag_jtd=0;flag_pwmled=0;flag_lxy=1;initkeypad();void t0() interrupt 1 uchar ledcount;uchar timecount;uchar lxycount;uchar i;uchar j;TH0=(65536-10000)/256;TL0=(65536-10000
32、)%256;ledcount+;timecount+; lxycount+; if(timecount=100) timecount=0;buzzer=0;disp_time();if(flag_jtd)if(flag_green)GRE=0;Red=0;L1602_string(1,1,RED:);L1602_char(1,5,green/10+0 x30);L1602_char(1,6,green%10+0 x30);L1602_string(2,1,GRE:);L1602_char(2,5,green/10+0 x30);L1602_char(2,6,green%10+0 x30);gr
33、een-;if(green0)green=20;flag_green=0;flag_yellow=1;GRE=1;YEL=0;Red=1;gre=0;if(flag_yellow)YEL=0;gre=0;L1602_string(1,1,GRE:);L1602_char(1,5,(yellow+15)/10+0 x30);L1602_char(1,6,(yellow+15)%10+0 x30);L1602_string(2,1,YEL:);L1602_char(2,5,yellow/10+0 x30);L1602_char(2,6,yellow%10+0 x30);yellow-;if(yel
34、low5)gre=0;L1602_string(1,1,GRE:);L1602_char(1,5,(red-5)/10+0 x30);L1602_char(1,6,(red-5)%10+0 x30); elseyel=0;L1602_string(1,1,YEL:);L1602_char(1,5,red/10+0 x30);L1602_char(1,6,red%10+0 x30); L1602_string(2,1,RED:);L1602_char(2,5,red/10+0 x30);L1602_char(2,6,red%10+0 x30);red-;if(red=4)gre=1;yel=0;
35、if(red100) ledcount=0;P1=bit(i); i+;if(i=8)i=0;if(flag_lxy)if(lxycount=lxyctr)lxycount=0;P1=lxytablej;j+;if(j=16)j=0;lxyctr-;if(lxyctr=0)lxyctr=16;void t1() interrupt 3 uchar count_pwm,count;TH1=(65536-1000)/256;TL1=(65536-1000)%256; if(flag_pwmled)count_pwm+;count+;if(count_pwm=pwmctr)Red=0;yel=1;
36、if(count_pwm=pwmctr_green) gre=1;if(count_pwm=10)count_pwm=0;Red=1;yel=0;gre=0;if(count=200)count=0;if(pwmctr=10)pwmctr=0;pwmctr+;第二部分程序:#include#define uchar unsigned char#define uint unsigned intsbit rs=P2A0;sbit rw=P2A1;sbit lcden=P2A2;/ 液晶使能端定義變量sbit DATA = P2A3; /DS18B20 接入口uchar FLAG_DIS=0;uch
37、ar bai_18b20,shi_18b20,ge_18b20,num; /bit flag_Negative_number ;/ 負數(shù)標志uchar code table=tempreture: ; /提示語sbit speaker=P2A4;signed char shangxian=35;signed char xiaxian=2;signed char lala;void delay_ms(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void delay(uint num)while(num-) ;void write_lcd_com(
38、uchar com)P0=com;rs=0;rw=0;lcden=0;delay_ms(1);lcden=1;delay_ms(1);lcden=0;void write_lcd_date(uchar date)rs=1;rw=0;lcden=0;P0=date;delay_ms(1);lcden=1;delay_ms(1);lcden=0;void InitDS18B20(void)/ 傳感器初始化void lcd_init()write_lcd_com(0 x38);write_lcd_com(0 x0c);write_lcd_com(0 x06);write_lcd_com(0 x01)
39、;uchar x=0;DATA = 1; /DQ 復位delay(10); / 稍做延時DATA = 0; / 單片機將 DQ 拉低delay(80); / 精確延時 大于 480us /450DATA = 1; / 拉高總線delay(20);x=DATA; / 稍做延時后 如果 x=0 則初始化成功 x=1 則初始化失敗delay(30);給脈沖信號給脈沖信號ReadOneChar(void)uchar i=0;uchar dat = 0; for (i=8;i0;i-) DATA = 0; / dat=1;DATA = 1; / if(DATA) dat|=0 x80;delay(8);
40、return(dat);void WriteOneChar(uchar dat)uchar i=0;for (i=8; i0; i-)DATA = 0;跳過讀序號列號的操作啟動溫度轉換跳過讀序號列號的操作讀取溫度寄存器等 (共可讀 9 個寄存器) 前DATA = dat&0 x01;delay(10);DATA = 1; dat=1;delay(8);int ReadTemperature(void)uchar a=0;uchar b=0;int t=0;float tt=0;Init_DS18B20();WriteOneChar(0 xCC); /WriteOneChar(0 x44); /
41、 Init_DS18B20();WriteOneChar(0 xCC); /WriteOneChar(0 xBE); /兩個就是溫度a=ReadOneChar();/ 低位b=ReadOneChar();/ 高位t=b;t=8;t=t|a;if(b&0 x80)t=t+1;flag_Negative_number = 1;else flag_Negative_number = 0; tt=t*0.0625;t= tt*10+0.5;return(t);void dis_D18B20(void)int temp;temp=ReadTemperature();/ 讀溫度bai_18b20=temp
42、%1000/100;/ 顯示十位shi_18b20=temp%100/10;/ 顯示個位 ge_18b20=temp%10;/ 顯示十分位if(flag_Negative_number)/ 負數(shù)write_lcd_date(0 xDF);if(bai_18b20=0) / 十位為 0 ,則不顯示十位write_lcd_com(0 x80+0 x40);write_lcd_date(0 x2D);write_lcd_date(0 x30+shi_18b20);write_lcd_date(0 x30+ge_18b20);write_lcd_date(0 xDF);write_lcd_date(0
43、 x43);elsewrite_lcd_com(0 x80+0 x40);write_lcd_date(0 x2D);write_lcd_date(0 x30+bai_18b20);write_lcd_date(0 x30+shi_18b20);write_lcd_date(0 x43);write_lcd_date(0 xDF);else / 正數(shù)if(bai_18b20=0) / 十位為 0 ,則不顯示十位write_lcd_com(0 x80+0 x40);write_lcd_date(0 x30+shi_18b20);write_lcd_date(0 x2E);write_lcd_da
44、te(0 x30+ge_18b20);write_lcd_date(0 xDF);write_lcd_date(0 x43);elsewrite_lcd_com(0 x80+0 x40);write_lcd_date(0 x30+bai_18b20);write_lcd_date(0 x30+shi_18b20);write_lcd_date(0 x2E);write_lcd_date(0 x30+ge_18b20);write_lcd_date(0 x43);write_lcd_date(tablenum);lala=ReadTemperature();if(lalashangxian)sp
45、eaker=1;elsespeaker=0;void main()lcd_init();TMOD=0 x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;ET0=1;EA=1; / 開總中斷write_lcd_com(0 x80);for(num=0;num11;num+)delay_ms(10);/ dis_D18B20();while(1)if(FLAG_DIS=1)FLAG_DIS=0;dis_D18B20(); / 讀溫度并顯示 void t0(void) interrupt 1 using 0 /uchar count;TH0=
46、(65536-50000)/256;TL0=(65536-50000)%256;count+;if(count=20)/ 每一秒鐘讀一次溫度傳感器溫度 FLAG_DIS=1;count=0;第三部分程序:#include#include#define bit(n) (10;i-)da1=date1&0 x01;date1=date11;da2=date2&0 x01;date2=date21;da3=date3&0 x01;date3=date31;da4=date4&0 x01;date4=date41;da5=date5&0 x01;date5=date51;da6=date6&0 x01
47、;date6=date61;clk=0;_nop_();_nop_();clk=1;clk=0;_nop_();_nop_();clk=1;main()TMOD=0 x01;TH0=(65536-3000)/256;TL0=(65536-3000)%256;TR0=1;EA=1;ET0=1;while(1);void t0() interrupt 1unsigned char count,count1;TH0=(65536-3000)/256;TL0=(65536-3000)%256;wr595(tablecount1+1,tablecount1,bit(count)%256,bit(coun
48、t)/256, table1count1+1,table1count1);count+;count1=count1+2;if(count=16)count=0;if(count1=32)count1=0;第四部分:電壓表程序:#include#includesbit RS = P3A5;/ 定義端口sbit RW =卩3八6;過量程標志位電壓正負標志位sbit EN = P3A7;sbit k2 = P2A1;sbit UNR = P0A0;sbit OVR = P0A1;/sbit POL = P0A2;/#define RS_CLR RS=0#define RS_SET RS=1#defi
49、ne RW_CLR RW=0#define RW_SET RW=1#define EN_CLR EN=0#define EN_SET EN=1#define DataPort P1#define BCDMA P2#define WEIMA P3unsigned char table6=0,0,0,0,0,0;void DelayUs2x(unsigned char t)sbit k1 = P2A0;/控制繼電器從而控制電壓增益while(-t);void DelayMs(unsigned char t)while(t-)/ 大致延時 1mSDelayUs2x(245);DelayUs2x(245);bit LCD_Check_Busy(void)DataPort= 0 xFF;RS_CLR;RW_SET;EN_CLR;_nop_();EN_SET;return (bit)(DataPort & 0 x80);void LCD_Write_Com(unsigned char com)/ while(LCD_Check_Busy(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版生態(tài)物流綠色包裝合同3篇
- 二零二五年度環(huán)保產品商標使用許可協(xié)議范本3篇
- 科創(chuàng)孵化器項目建設方案
- 音樂舞蹈培訓委托合同三篇
- 二零二五年度個人挖機租賃合同解除條件合同4篇
- 二零二五年度個人與個人房產購置借款協(xié)議2篇
- 2025版高端車庫租賃及個性化定制服務合同范本3篇
- 二零二五年度智能家居裝修設計與施工一體化協(xié)議書2篇
- 酒店餐飲美工的工作總結
- 二零二五年度個人電動車轉讓與充電設施安裝合同3篇
- 2025年公司副總經理述職報告范文
- 冬季道岔除雪作業(yè)
- 湖北省荊州市八縣市2023-2024學年高一上學期期末聯(lián)考數(shù)學試題 含解析
- 中小學校食品安全與膳食經費管理工作指引
- 電商平臺客服人員績效考核手冊
- 2024分布式光伏組件檢測標準
- 2024至2030年中國酒糟行業(yè)市場發(fā)展現(xiàn)狀及潛力分析研究報告
- 獅子王影視鑒賞
- 一年級數(shù)學加減法口算題每日一練(25套打印版)
- 2024年甘肅省武威市、嘉峪關市、臨夏州中考英語真題
評論
0/150
提交評論