欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      單片機課程設計報告LCD顯示溫度

      時間:2019-05-15 09:40:16下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關的《單片機課程設計報告LCD顯示溫度》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《單片機課程設計報告LCD顯示溫度》。

      第一篇:單片機課程設計報告LCD顯示溫度

      《單片機原理與應用》

      課程設計報告

      題 目:LCD數字式溫度濕度測量計 專 業(yè):自動化 班 級:A1332 學 號:10 姓 名:曾志勇 指導老師:查兵

      2016-06-08

      目 錄

      1.設計題目、要求及分工..................................1 1.1.設計要求.........................................1 1.2.分工.............................................1 2.系統(tǒng)設計方案論證與選擇................................1 3.系統(tǒng)硬件電路設計......................................1 3.1.單片機的選擇......................................1 3.2.溫度傳感器電路的設計..............................2 3.3.LCD1602顯示設計..................................3 4.系統(tǒng)軟件設計..........................................4 4.1.主程序...........................................4 4.2.讀出溫度子程序....................................6 5.系統(tǒng)仿真調試結果記錄及分析...........................11 6.總結.................................................13 參考文獻................................................14

      設計題目、要求及分工

      1.1.設計要求

      (1)熟悉掌握單片機的中斷,定時器及各并行口的應用;(2)熟悉掌握單片機溫度濕度的測量方法;(3)利用溫度傳感器及單片機完成對溫度的檢測;(4)掌握將檢測的溫度信號轉換為數碼管顯示的數字信號;

      (5)設計一個簡單數字溫度計,能夠測量通常環(huán)境下的溫度,能夠實現零下溫度的測量,能夠測量小數,精度為0.01度。

      1.2.分工

      經過我和隊友的商討,為了能最大發(fā)揮各自的長處。我主要負責程序的編寫與單片機的調試。他主要負責一些相關資料文獻的查找與課程設計報告。

      1.系統(tǒng)設計方案論證與選擇

      在日常生活和生產中,我們經常要測量環(huán)境的溫度濕度,傳統(tǒng)的測量方式采用水銀溫度計和干濕球濕度計查算法,存在著誤差大,操作使用不便等問題,采用工業(yè)級測量儀表價格昂貴。采用AT89C51和溫度傳感器等構成的LCD數字式溫度濕度測量計精度高且價格便宜。

      由于本設計是測溫電路,可以使用一只溫度傳感器DS18B20,此傳感器,可以很容易直接讀取被測溫度值,進行A/D轉換,將數據傳入80C51單片機中,單片機處理后,通過LED顯示出當前實測溫度。

      2.系統(tǒng)硬件電路設計

      2.1.單片機的選擇

      單片80C51具有低電壓供電和體積小等特點,四個端口只需要兩個口就能滿足電路系統(tǒng)的設計需要,很適合便攜手持式產品的設計使用系統(tǒng)。

      本次設計需要注意的幾個端口: P0口(39—32):是一組8位漏極開路行雙向I/O口,也既地址/數據總線復用口??勺鳛檩敵隹谑褂脮r,每位可吸收電流的方式驅動8個TTL邏輯電路,對端口寫“1”可作為高阻抗輸入輸入端用。在訪問外部數據存儲器時,這組口線分時轉換地址(低8位)和數據總線復用,在訪問期間激活內部上拉電阻。在Flash編程時,PO口接收指令字節(jié),而在程序校驗時,輸出指令字節(jié),校驗時,要求接上拉電阻。P3口(10—17):是一組帶有內部上拉電阻的8位雙向I/O口,P1的輸入緩沖級可驅動(吸收或輸出電流)4個TTL邏輯門電路。對P3口寫入“1”時,它們被內部上拉電阻拉高并可作為輸出端口。作輸出端口時,被外部拉低的P3口將用上拉電阻輸出電流。

      2.2.溫度傳感器電路的設計

      DS18B20溫度傳感器是美國DALLAS半導體公司最新推出的一種改進型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據實際要求通過簡單的編程實現9~12位的數字值讀數方式。

      64位ROM的結構開始8位是產品類型的編號,接著是每個器件的惟一的序號,共有48位,最后8位是前面56位的CRC檢驗碼,這也是多個DS18B20可以采用一線進行通信的原因。溫度報警觸發(fā)器TH和TL,可通過軟件寫入戶報警上下限。DS18B20溫度傳感器的內部存儲器還包括一個高速暫存RAM和一個非易失性的可電擦除的EERAM。高速暫存RAM的結構為8字節(jié)的存儲器,結構如圖2.3所示。頭2個字節(jié)包含測得的溫度信息,第3和第4字節(jié)TH和TL的拷貝,是易失的,每次上電復位時被刷新。第5個字節(jié),為配置寄存器,它的內容用于確定溫度值的數字轉換分辨率。DS18B20工作時寄存器中的分辨率轉換為相應精度的溫度數值。該字節(jié)各位的定義:低5位一直為1,TM是工作模式位,用于設置DS18B20在工作模式還是在測試模式,DS18B20出廠時該位被設置為0,用戶要去改動,R1和R0決定溫度轉換的精度位數,來設置分辨率S18B20溫度轉換的時間比較長,而且分辨率越高,所需要的溫度數據轉換時間越長。因此,在實際應用中要將分辨率和轉換時間權衡考慮。溫度傳感器18B20匯編程序,采用器件默認的12位轉化,最大轉化時間750微秒,可以將檢測到的溫度直接顯示到80C51的兩個數碼管上。

      高速暫存RAM的第6、7、8字節(jié)保留未用,表現為全邏輯1。第9字節(jié)讀出前面所有8字節(jié)的CRC碼,可用來檢驗數據,從而保證通信數據的正確性。

      當DS18B20接收到溫度轉換命令后,開始啟動轉換。轉換完成后的溫度值就以16位帶符號擴展的二進制補碼形式存儲在高速暫存存儲器的第1、2字節(jié)。單 片機可以通過單線接口讀出該數據,讀數據時低位在先,高位在后,數據格式以0.0625℃/LSB式表示。

      當符號位S=0時,表示測得的溫度值為正值,可以直接將二進制位轉換為十進制;當符號位S=1時,表示測得的溫度值為負值,要先將補碼變成原碼,再計算十進制數值。表2是一部分溫度值對應的二進制溫度數據。

      DS18B20完成溫度轉換后,就把測得的溫度值與RAM中的TH、TL字節(jié)內容作比較。若T>TH或T<TL,則將該器件內的報警標志位置位,并對主機發(fā)出的報警搜索命令做出響應。因此,可用多只DS18B20同時測量溫度并進行報警搜索。

      在64位ROM的最高有效字節(jié)中存儲有循環(huán)冗余檢驗碼(CRC)。主機ROM的前56位來計算CRC值,并和存入DS18B20的CRC值作比較,以判斷主機收到的ROM數據是否正確。

      另外,由于DS18B20單線通信功能是分時完成的,它有嚴格的時隙概念,因此讀寫時序很重要。系統(tǒng)對DS18B20的各種操作按協(xié)議進行。操作協(xié)議為:初使化DS18B20(發(fā)復位脈沖)→發(fā)ROM功能命令→發(fā)存儲器操作命令→處理數據。

      圖 2-1 溫度傳感器電路

      2.3.LCD1602顯示設計

      圖 2-2 LCD顯示電路圖

      LCD1602顯示流程:

      圖3-3 流程圖

      3.系統(tǒng)軟件設計

      3.1.主程序

      主程序的主要功能是負責溫度的實時顯示、讀出并處理DS18B20的測量溫度值。溫度測量每1s進行一次。主程序流程圖如圖4.1所示:

      #include #include“l(fā)cd.h” #include“temp.h” void LcdDisplay(int);void main(){ LcdInit();

      //初始化LCD1602

      //寫地址 80表示初始地址 LcdWriteCom(0x88);LcdWriteData('C');while(1){ LcdDisplay(Ds18b20ReadTemp());Delay1ms(1000);//1s鐘刷一次 // } }

      /* 函數名 : LcdDisplay()* 函數功能

      : LCD顯示讀取到溫度/ void LcdDisplay(int temp)//lcd顯示

      { unsigned char datas[] = {0, 0, 0, 0, 0};//定義數組

      float tp;if(temp< 0)

      //當溫度值為負數

      {

      LcdWriteCom(0x80);

      //寫地址 80表示初始地址 LcdWriteData('-');//顯示負

      temp=temp-1;

      temp=~temp;

      tp=temp;

      temp=tp*0.0625*100+0.5;} else {

      LcdWriteCom(0x80);

      LcdWriteData('+');

      tp=temp;

      temp=tp*0.0625*100+0.5;

      } datas[0] = temp / 10000;datas[1] = temp % 10000 / 1000;datas[2] = temp % 1000 / 100;datas[3] = temp % 100 / 10;datas[4] = temp % 10;LcdWriteCom(0x82);

      //寫地址 80表示初始地址

      LcdWriteData('0'+datas[0]);//百位 LcdWriteCom(0x83);

      //寫地址 80表示初始地址

      LcdWriteData('0'+datas[1]);//十位 LcdWriteCom(0x84);

      //寫地址 80表示初始地址

      LcdWriteData('0'+datas[2]);//個位 LcdWriteCom(0x85);

      //寫地址 80表示初始地址 //顯示 ‘.’

      //寫地址 80表示初始地址 LcdWriteData('.');LcdWriteCom(0x86);

      LcdWriteData('0'+datas[3]);//顯示小數點 LcdWriteCom(0x87);

      //寫地址 80表示初始地址

      } LcdWriteData('0'+datas[4]);//顯示小數點

      圖 3-1主程序流程圖

      3.2.讀出溫度子程序

      讀出溫度子程序的主要功能是讀出RAM中的9字節(jié)。在讀出時必須進行CRC 校驗,校驗有錯時不能進行溫度數據的改寫。讀出溫度子程序流程圖如下圖所示:

      #include“temp.h” void Delay1ms(uint y){ uint x;

      } uchar Ds18b20Init(){

      uchar i;DSPORT = 0;i = 70;

      //將總線拉低480us~960us for(;y>0;y--){ for(x=110;x>0;x--);} while(i--);//延時642us DSPORT = 1;

      //然后拉高總線,如果DS18B20做出反應會將在15us~60us后總線拉低

      } void Ds18b20WriteByte(uchar dat)i = 0;while(DSPORT)//等待DS18B20拉低總線 {

      } return 1;//初始化成功 i++;if(i>5)//等待>5MS { } Delay1ms(1);return 0;//初始化失敗 { uint i, j;for(j=0;j<8;j++)

      {

      DSPORT = 0;i++;DSPORT = dat & 0x01;//然后寫入一個數據,從最低位開始 i=6;while(i--);//延時68us,持續(xù)時間最少60us DSPORT = 1;

      //然后釋放總線,至少1us給總線恢復時間才能接 //每寫入一位數據之前先把總線拉低1us 著寫入第二個數值

      } uchar Ds18b20ReadByte(){

      uchar byte, bi;uint i, j;for(j=8;j>0;j--){

      DSPORT = 0;//先將總線拉低1us i++;DSPORT = 1;//然后釋放總線 i++;i++;//延時6us等待數據穩(wěn)定

      bi = DSPORT;//讀取數據,從最低位開始讀取

      /*將byte左移一位,然后與上右移7位后的bi,注意移動之后移掉 } dat >>= 1;那位補0。*/ byte =(byte >> 1)|(bi << 7);

      } i = 4;//讀取完之后等待48us再接著讀取下一個數

      while(i--);

      }

      return byte;void Ds18b20ChangTemp(){

      Ds18b20Init();Delay1ms(1);Ds18b20WriteByte(0xcc);

      //跳過ROM操作命令

      Ds18b20WriteByte(0x44);//溫度轉換命令

      //等待轉換成功,而如果你是一直刷著的話,就不// Delay1ms(100);用這個延時了 } void Ds18b20ReadTempCom(){ Ds18b20Init();

      } int Ds18b20ReadTemp(){ int temp = 0;

      命令

      tml = Ds18b20ReadByte();tmh = Ds18b20ReadByte();temp = tmh;temp <<= 8;Delay1ms(1);Ds18b20WriteByte(0xcc);//跳過ROM操作命令 Ds18b20WriteByte(0xbe);//發(fā)送讀取溫度命令

      uchar tmh, tml;Ds18b20ChangTemp();Ds18b20ReadTempCom();

      //先寫入轉換命令

      //然后等待轉換完后發(fā)送讀取溫度

      //讀取溫度值共16位,先讀低字節(jié) //再讀高字節(jié)

      } temp |= tml;return temp;讀出溫度子程序 讀出溫度子程序的主要功能是讀出RAM中的9字節(jié)。在讀出時須進行CRC校驗,校驗有錯時不進行溫度數據的改寫。得出溫度子程序流程圖如下圖所示。

      圖 3-2

      溫度轉換命令子程序 溫度轉換命令子程序主要是發(fā)溫度轉換開始命令。當采用12位分辨率時,轉換時間約為750ms。在本程序設計中,采用1s顯示程序延時法等待轉換的完成。溫度轉換命令子程序流程圖如下圖所示。

      圖 3-2

      4.系統(tǒng)仿真調試結果記錄及分析

      硬件調試比較簡單,首先檢查電感的焊接是否正確,然后可用萬用表測試或通電檢測。軟件調試可以先編寫顯示程序并進行硬件的正確性檢驗,然后分別進行主程序、讀出溫度子程序、溫度轉換命令子程序、計算溫度子程序和現實數據刷新子程序等的編程及調試 由于DS18B20與單片機采用串行數據傳送,因此,對DS18B20進行讀/寫編程時必須嚴格地保證讀/寫時序;否則將無法讀取測量結果。

      電路Isis仿真測試

      燒寫程序至單片機:

      液晶顯示室溫為+28.06度 用手觸摸DS18B20,發(fā)現溫度上升為+32.75度,證明溫度傳感正常工作。

      5.總結

      這次課程設計,主要是以STC89C51單片機為核心的,對溫度的檢測與顯示進行了簡單的設計與闡述。因沒有濕度傳感器模塊,所以未進行濕度檢測。本次課程設計可以說是軟硬結合,又以硬件為主。當今科技發(fā)展迅速,單片機開發(fā)有著光明的前景。由于單片機經濟實用、開發(fā)簡便等特點依然在工業(yè)控制、家電等領域占據了廣泛的市場。所以我選擇這樣的設計課題,并且能通過此次設計來提高自己軟件編制和硬件電路設計的能力。在我完成這次課程設計的過程中,當看到自己將專業(yè)知識用于解決實際的問題時,那份成就感和喜悅感是難以形容的。在這次實際的編程以及調試程序過程中,我發(fā)現自己學很多課本以外的東西。光靠自己在書本上所學過的這點知識是遠遠不夠的,真正地認識到了工作就是學習的道理。尤其是對于編程來說,需要硬件的功底,也需要軟件的能力。當程序有一點點錯誤時,將使整個程序無效,需要自己靜下心來發(fā)現錯誤,改正錯誤,一次又一次得進行調試,鍛煉了沉著踏實的心態(tài)。

      通過這次對數字溫度計的設計與制作,讓我們了解了設計電路的程序,也讓我們了解了關于數字溫度計的原理與設計理念,要設計一個電路總要先用仿真,仿真成功之后才實際接線的。

      但是最后的成品卻不一定與仿真時完全一樣,因為,在實際接線中有著各種各樣的條件制約著。并且,在仿真中無法成功的電路接法,在實際中因為芯片本身的特性而能夠成功。所以,在設計時應考慮兩者的差異,從中找出最適合的設計方法。

      通過這次學習,讓我們對各種電路都有了大概的了解,所以說,坐而言不如立而行,對于這些電路還是應該自己動手實際操作才會有深刻理解。從這次的課程設計中,我真正的意識到,在以后的學習中,要理論聯系實際,把我們所學的理論知識應用到實際當中,學習單機片機更是如此,程序只有在經常寫和讀的過程中才能提高,這就是我在這次課程設計中的最大收獲。這次課程設計對我來說是一次比較全面的、富有創(chuàng)造性和探索性的鍛煉,令我深有感觸,對于我今后的學習、工作和生活都將是受益非淺。

      參考文獻

      (1)江世明.單片機原理與應用.上海交通大學出版社.2013;(2)朱清慧.電子線路設計、制版與仿真.清華大學出版社.2011.6;

      (3)黃同成.程序設計基礎與教程(C語言).湖南人民出版社.2011.12;

      (4)王東峰等.單片機C語言應用100例[M].北京電子工業(yè)出版社,2009;

      (5)陳海宴.51單片機原理及應用[M].北京航空航天大學出版社.2010;

      (6)胡漢才.單片機原理及接口技術[M].北京清華大學出版社.1996;

      (7)高稚允,高岳.光電檢測技術[M].北京國防工業(yè)出版社.1983;

      第二篇:單片機數碼管顯示課程設計

      單片機數碼管顯示課程設計

      目錄引言...............設計任務和要求.............1

      2.1 設計目的............1

      2.2 設計意義............1總原理圖及主要模塊的流程圖......1

      3.1 總原理圖及元器件清單..............1

      3.2 主要流程圖..........1性能測試與分析.............35 結論與心得..........4致謝...........4

      參考文獻.............4

      單片機數碼管顯示課程設計引言

      從上世紀70年代第一批單片機問世,短短二三十年時間,單片機技術已經成為計算機技術的一個重要分支,廣泛運用到工業(yè)控制、儀器、儀表、消費產品,汽車、辦公自動化和通信等領域。因此,單片機技術已經成為電子、測控、自動化、通信等許多工科專業(yè)學生的必備技能。

      我用AT89C51芯片來設計一個簡單的數碼管顯示。此設計給出了源代碼,通過仿真測試,其性能指標達到了設計要求。

      關鍵詞:單片機,AT89C51,數碼管設計任務和要求

      2.1 設計目的1.學習基本理論在實踐中綜合運用的初步經驗,掌握模擬電路設計的基本方法、設計步驟,培養(yǎng)綜合設計與調試能力。

      2.了解AT89C51這個芯片的使用和性能指標測試方法。

      3.培養(yǎng)實踐技能,提高分析和解決實際問題的能力。

      2.2 設計意義

      為了更好地熟悉和掌握單片機的基本功能和編程,掌握數碼管動態(tài)掃描顯示原理及實現方法。自我動態(tài)掃描顯示電路驅動程序的編寫方法。通過課程設計,達到理論與實際應用相結合,提高學生對微機硬件結構的軟件設計方法的理解,使學生能夠根據實際應用,初步實現硬件及軟件的設計,對硬件開發(fā)有更深層的認識,為今后打軟硬件開發(fā),打下堅實的基礎??傇韴D及及主要模塊的流程圖

      3.1 總原理圖及元器件清單

      (1)我用Proteus 7 professional來畫出我設計的總原理圖,如圖3-1。

      如圖3-1

      此電路圖就用到AT89C51這個芯片,和一個數碼管。

      3.2 主要流程圖(四號宋體加粗)

      1.主程序的流程圖

      圖3.2-1主流程圖

      2.子程序的流程圖

      圖3.2-2子流程圖性能測試與分析

      主程序和子程序都存放在AT89C51單片機中。主程序的功能是:顯示數字。子程序的功能有:延時。程序代碼:

      ORG 0000H;初始化

      LJMP START;轉入主程序

      ORG 0010H;初始化

      START:

      CLR P2.7;P2.7←00H

      MOVR0,#00H;R0←00H

      MOV R2,#10;R2←10

      MAIN:

      MOV DPTR,#TAB;DPTR←TAB

      MOV A,R0;A←(RO)

      MOVC A,@A+DPTR;A←((A)+(DPTR))

      MOV P0,A;P0←(A)

      LCALL DELAY;調用延時程序

      INC R0;RO←(R0)+1

      DJNZR2,MAIN;判斷

      JMP START;循環(huán)

      DELAY:;延時程序

      MOV R3,#11

      D1: MOV R4,#100

      D2: MOV R5,#100

      DJNZ R5,$

      DJNZ R4,D2

      DJNZ R3,D1

      RET

      TAB:

      DB 00101000B;0

      DB 11101011B;1

      DB 00110010B;2

      DB 10100010B;3

      DB 11100001B;4

      DB 10100100B;5

      DB 00100100B;6

      DB 11101010B;7

      DB 00100000B;8

      DB 10100000B;9

      END

      我用Proteus 7 professional 軟件來測試我設計的電路圖。當運行時,數碼管顯示0。如圖4-1。

      圖4-1

      當221ms后,數碼管顯示1。如圖

      4-2.圖4-2

      我的程序是一個循環(huán)的,一直到顯示9,之后又重新開始顯示0。在此不一一列出來。

      為了能在實際在到應用,我用開發(fā)板來驗證我所設計的電路圖。其結果如下:

      圖4-3顯示1

      圖4-4顯示8

      從仿真的結果可以看出,我的設計是滿足我設計的要求的。結論與心得

      通過單片機課程設計,我不僅加深了對單片機理論的理解,將理論很好地應用到實際當中去,而且我還學會了如何去培養(yǎng)我們的創(chuàng)新精神,從而不斷地戰(zhàn)勝自己,超越自己。創(chuàng)新,是要我們學會將理論很好地聯系實際,并不斷地去開動自己的大腦,從為人類造福的意愿出發(fā),做自己力所能及的,別人卻沒想到的事。使之不斷地戰(zhàn)勝別人,超越前人。同時,更重要的是,我在這一設計過程中,學會了堅持不懈,不輕易言棄。設計過程,也好比是我們人類成長的歷程,常有一些不如意,也許這就是在對我們提出了挑戰(zhàn),勇敢過,也戰(zhàn)勝了,勝利的鐘聲也就一定會為我們而敲響。

      這個設計過程中,我遇到過許多次失敗的考驗,就比如,我在軟件上仿真軟件上能實現其功能,但是把它寫進開發(fā)板就無法運行,我不停地找原因。最后我找到了答案,這樣我明白,做設計不但是軟件可以運行,用在硬件上一樣是那么重要的。我做的這個設計主要是用AT89C51這個芯片來實現,這個芯片具有很多優(yōu)點,程序簡單易讀,結構清楚,最重要的是成本低。很適合我們學生用來學生。在做這個設計的過程中,我也了解到了自己的不足,在日后的學習中,我還需加倍努力學習。

      參考文獻)

      [1]梁炳東.單片機原理與應用。北京:人民郵電出版社,2009

      [2]

      [3]http://wenku.baidu.com/album/view/702db2c7aa00b52acfc7cae7

      致謝(小三號 宋體 加粗)

      在此次課程設計中,我遇到不懂的問題,老師和同學都幫我,讓我把問題順利地得到解決,最后完成此次課程設計報告。從中我學到了很多東西,在此,謝謝我的老師和同學,感謝你們在我遇到難題的時候幫我解答。

      第三篇:LCD電子鐘程序(廣工單片機課程設計)

      #include

      #define uchar unsigned char

      #define uint unsigned int

      #define KEY_IO P3

      #define LCD_IO P0

      sbit LCD_RS = P2^0;

      sbit LCD_RW = P2^1;

      sbit LCD_EN = P2^2;

      sbit SPK = P1^2;

      sbit LED = P2^4;

      sbit KEY_0 = P3^7;

      sbit KEY_1 = P3^6;

      sbit KEY_2 = P3^5;

      sbit KEY_3 = P3^4;

      bit new_s, modify = 0;

      char t0, sec = 0, min = 0, hour = 0;

      char code LCD_line1[] = “I LOVE U”;

      char code LCD_line2[] = “Timer: 00:00:00 ”;char Timer_buf[] = “00:00:00”;

      char a,b,c,k = 0;

      //--------------------void delay(uint z)

      {

      uintx, y;

      for(x = z;x > 0;x--)

      for(y = 100;y > 0;y--);

      }//--------------------void W_LCD_Com(uchar com)//寫指令 {

      LCD_RS = 0;

      LCD_IO = com;// LCD_RS和R/W都為低電平時,寫入指令

      LCD_EN = 1;delay(5);LCD_EN = 0;//用EN輸入一個高脈沖 }

      //--------------------void W_LCD_Dat(uchar dat)//寫數據

      {LCD_RS = 1;LCD_IO = dat;// LCD_RS為高、R/W為低時,寫入數據LCD_EN = 1;delay(5);LCD_EN = 0;//用EN輸入一個高脈沖 }

      //--------------------void W_LCD_STR(uchar *s)//寫字符串 {while(*s)W_LCD_Dat(*s++);}

      //--------------------

      void W_BUFF(void)//填寫顯示緩沖區(qū)

      {Timer_buf[7] = sec % 10 + 48;Timer_buf[6] = sec / 10 + 48;Timer_buf[4] = min % 10 + 48;Timer_buf[3] = min / 10 + 48;Timer_buf[1] = hour % 10 + 48;Timer_buf[0] = hour / 10 + 48;W_LCD_STR(Timer_buf);}

      //--------------------

      uchar read_key(void){ucharx1, x2;KEY_IO = 255;x1 = KEY_IO;if(x1!= 255){delay(100);x2 = KEY_IO;if(x1!= x2)return 255;while(x2!= 255)x2 = KEY_IO;if else if(x1 == 0xbf)return 1;else if(x1 == 0xdf)return 2;else if(x1 == 0xef)return 3;else if(x1 == 0xf7)return 4;}return 255;} //--------------------

      void Init(){LCD_RW = 0;W_LCD_Com(0x38);delay(50);W_LCD_Com(0x0c);W_LCD_Com(0x06);W_LCD_Com(0x01);W_LCD_Com(0x80);W_LCD_STR(LCD_line1);W_LCD_STR(LCD_line2);

      TMOD = 0x01;//T0定時方式1TH0 = 0x4c;TR0 = 1;//啟動T0

      PT0 = 1;//高優(yōu)先級, 以保證定時精度

      ET0 = 1;EA = 1;}

      //--------------------

      void main(){uint i, j;uchar Key;Init();while(1){//

      if(new_s){ //如果出現了新的一秒, 修改時間

      new_s = 0;sec++;sec %= 60;if(!sec){min++;min %= 60;if(!min){ hour++;hour %= 24;}}W_BUFF();//寫顯示

      W_LCD_Com(0xc0 + 7);(x1 == 0x7f)return 0;W_LCD_Com(0xC0);

      //

      if(!sec &&!min){ //整點報時

      for(i = 0;i < 200;i++){SPK = 0;for(j = 0;j < 100;j++);SPK = 1;for(j = 0;j < 100;j++);} }} //Key = read_key();//讀出按鍵

      switch(Key){//分別處理四個按鍵

      case0: if(KEY_0){min++;min %= 60;W_BUFF();break;}case1: if(KEY_1){hour++;hour %= 24;W_BUFF();break;}case2: if(KEY_2){ a=sec;b=min;c=hour;sec = 0, min = 0, hour = 0;}case3: if(KEY_3){sec=a+sec;if(sec>60){sec=sec-60;min++;}min=b+min;if(min>60){min=min-60;hour++;}hour=c+hour;if(hour>24){hour=hour-24;} }} }} //--------------------

      void timer0(void)interrupt 1//T0中斷函數, 50ms執(zhí)行一次{TH0 = 0x4c;t0++;t0 %= 20;//20, 一秒鐘if(t0 == 0){new_s = 1;LED = ~LED;}if(modify)LED = 0;} K0分加一 K1時加一 K2秒表開始

      K3秒表結束,恢復正常時間!

      第四篇:單片機16點陣漢字顯示課程設計

      一、前言

      1.1設計制作產品的背景、目的及設計要求

      本項目為16x16點陣漢字顯示“新年快樂”的設計,首先將本次實訓的電路圖在仿真軟件上繪制完成,將點陣文件存入ROM,形成漢字編碼,再進行相關轉換,以新編碼提取相應的點陣漢字顯示。將相應編碼代入運行程序,進行調試和準備。

      1.2分工情況、工作計劃及本人所承擔工作

      1.周一 1~4 進行分組,選題 和軟件的安裝 2.周二 1~4 進行電路的設計及程序編寫 3.周三 1~4 進行電路的設計及程序編寫 4.周四 1~4 進行說明書的填寫 5.周五 1~4 答辯

      本人在本次課程設計中承擔電路圖的繪制及相關程序的編寫與調試。

      1.3本課題的設計重點及難點

      本次課程設計重點在于單片機控制系統(tǒng)程序采用單片機匯編語言進行編輯,通過編程控制各顯示點對應LED陽極和陰極端的電平,就可以有效的控制各顯示點的亮滅。而其中的難點就在于運行程序的編寫及相關漢字的點陣數據,這種顯示字符的點陣數據可以自行編寫,也可以標準字庫中提取。

      在進行課題設計時需要熟練掌握相關電路軟件及編程軟件的使用,編寫程序時需掌握一定的C語言邏輯關系的運用。在電路圖的繪制時需要清楚的了解各個電路設備的功能及用途。

      二、實訓內容

      2.1實訓原理

      本設計應用的掃描方法為水平方向(X方向)掃描。

      每一個字由16行16列的點陣形成顯示,即每個字均由256個點陣來表示,我們可以把每一個點理解為一個像素。一般我們使用的16×16的點陣宋體字庫,即所謂的16×16,是每一個漢字在縱橫各16點的區(qū)域內顯示的。漢字庫從該位置起的32字節(jié)信息記錄了該字的字模信息。事實上這個漢字屏不僅可以顯示漢字,也可以顯示在256像素范圍內的任何圖形。

      上半部分第一列完成之后,繼續(xù)掃描下半部分的第一列,為了接線的方便,我們仍設計成由上往下的掃描方式,即從A8向A15方向掃描,按照這個方法,繼續(xù)進行下面的掃描,一共掃描32個8位,可以得出漢字。

      2.2硬件設計 2.3軟件設計

      #include #define uint unsigned int #define uchar unsigned char code uchar seg[]={ 0x02,0x04,0x22,0x48,0x2A,0x52,0xA6,0x41,0x63,0xFE,0x26,0x40,0x2A,0x50,0x22,0x49,0x00,0x06,0x3F,0xF8,0x22,0x00,0x22,0x00,0x23,0xFF,0x42,0x00,0x02,0x00,0x00,0x00,/*“新”,0*/ 0x00,0x20,0x04,0x20,0x18,0x20,0xE3,0xE0,0x22,0x20,0x22,0x20,0x22,0x20,0x22,0x20,0x3F,0xFF,0x22,0x20,0x22,0x20,0x22,0x20,0x22,0x20,0x20,0x20,0x00,0x20,0x00,0x00,/*“年”,1*/ 0x00,0x80,0x07,0x00,0x00,0x00,0xFF,0xFF,0x08,0x00,0x04,0x81,0x10,0x82,0x10,0x8C,0x10,0xB0,0xFF,0xC0,0x10,0xB0,0x10,0x8C,0x1F,0x82,0x00,0x81,0x00,0x81,0x00,0x00,/*“快”,2*/ 0x00,0x00,0x00,0x04,0x07,0x08,0x39,0x10,0x21,0x60,0x21,0x02,0x21,0x01,0x2F,0xFE,0x41,0x00,0x41,0x00,0xC1,0x40,0x41,0x20,0x01,0x10,0x01,0x0C,0x00,0x00,0x00,0x00,/*“樂”,3*/ };Const uchar sm[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,};void delay(uint n){ uint i;for(i=0;i

      for(j=q;j<32+q;j++)

      { P1=sm[t];

      P0=seg[j];

      j++;

      P2=seg[j];

      delay(50);t--;

      if(t==0)

      t=16;}

      q=q+32;

      if(q==128)

      q=0;} } 三.結論

      3.1 實訓過程中遇到的問題及解決措施

      在本次實驗中,我組在制作的16x16點陣顯示漢字“新年快樂”的課程設計中,首先在使用單片機仿真軟件找尋相關設備時沒有找到16x16的點陣設備,繼而用四個8x8的點陣排列組合予以替代。

      依據相關教材及指導教師的參考和建議,我組對于本次設計的電路圖采用了通用模板設計。

      此次課程設計的運行程序是我組在設計中的最大難點,后經多方查資料及參考詢問,我組找到了相應漢字在點陣中的排序規(guī)律,順利編寫出代碼。

      3.2 今后的學習展望

      經過這次的單片機課程設計,從產生設計想法到實際操作,到最終的設計完成,中間遇到的困難及困難的解決,讓我更進一步了解了單片機,讓我不再僅僅局限于書本上。

      本次的設計經驗對于我們日后的學習工作有非常重要的作用,在遇到困難時可以不僅僅從書本上找解決方案,還可以自己親自動手實踐來驗證相關問題及找到解決方法。

      這次難得的課程設計過程中我鍛煉了自己的思考能力和動手能力。通過題目選擇和設計電路的過程中,加強了我思考問題的完整性和實際生活聯系的可行性。在方案設計選擇和芯片的選擇上,培養(yǎng)了我們綜合應用單片機的能力,對單片機的各個管腳的功能也有了進一步的認識。還鍛煉我們個人的查閱技術資料的能力,動手能力,發(fā)現問題,解決問題的能力。并且我們熟練掌握了有關器件的性能及測試方法。

      四、心得體會

      本次的設計經驗對于我們日后的學習工作有非常重要的作用,在遇到困難時可以不僅僅從書本上找解決方案,還可以自己親自動手實踐來驗證相關問題及找到解決方法。

      單片機這門課是一科非常重視動手實踐的科目,不能總是看書,但是也不能完全不看書。單片機并不象傳統(tǒng)的數字電路或模擬電路那樣比較直觀,原因是除了“硬件”之外還存在一個“軟件”的因素。正是這個“軟件”的原因使得許多初學者怎么也弄不懂單片機的工作過程,怎么也不明白為什么將幾個數送來送去就能讓數碼管顯示一串字符或控制一個電機的變速。對初學單片機的人來說,需要從書中大概了解一下單片機的各個功能寄存器,如果看的多了反而容易搞亂,現在市場上大多數講單片機的書一開始就講解較復雜的內存、地址、存儲器什么的,更讓初學者感到不知所云、難以入門。如果按教科書式的學法,上來就是一大堆指令、名詞,學了半天還搞不清這些指令起什么作用,能夠產生什么實際效果,那么也許用不了幾天就會覺得枯燥乏味而半途而廢。簡單的說,使用單片機實際上就是用我們自己編寫的軟件去控制單片機的各個功能寄存器。再簡單些,就是控制單片機哪些引腳的電平什么時候輸出高電平,什么時候輸出低電平。由這些高低變化的電平來控制外圍電路,實現我們需要的各個功能。

      經過這次的單片機課程設計,從產生設計想法到實際操作,到最終的設計完成,中間遇到的困難及困難的解決,讓我更進一步了解了單片機,讓我不再僅僅局限于書本上。

      第五篇:單片機課程設計報告

      單片機課程設計報告

      ? 課程名稱:單片機原理及接口課程設計

      ? 題目:基于

      ? 學院:電氣信息學院

      ? 專業(yè)班級:測控技術與儀器

      ? 姓名:江讓

      ? 學號:

      ? 指導老師:劉升老師

      ? 時間:

      C51單片機的ADC0809數模轉換103班1090640772013/1/16

      下載單片機課程設計報告LCD顯示溫度word格式文檔
      下載單片機課程設計報告LCD顯示溫度.doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內容由互聯網用戶自發(fā)貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發(fā)現有涉嫌版權的內容,歡迎發(fā)送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

      相關范文推薦

        單片機課程設計報告

        單片機課程設計報告題目:小直流電機調速實驗教學單位: 機 電 工 程 系專業(yè): 機械設計制造及其自動化班級: 0803班學號: 0811050342姓名: 程懷虎2011 年 11月(以下內容用宋體,五號,單......

        單片機課程設計報告

        DS18B20測溫及按鍵控制 課 程 設 計 課程名稱 單片機基礎課程設計 題目名稱 18B20測溫及按鍵控制 學生學院 **** 專業(yè)班級 **** 班號 **** 學生組員 ****** 指導教師 *****......

        單片機課程設計報告

        課程設計報告 題 目: 自動滴灌系統(tǒng)設計 課程名稱: 單片機原理及應用 學 院: 信息工程學院專 業(yè): 計算機科學與技術 班 級: 2014 級計本 1 班學生姓名: *** 學 號: 201403031......

        單片機課程設計報告

        《單片機原理與接口技術》 課程設計報告 設計題目: 基于80C51單片機系統(tǒng)實驗板的制作 與程序設計專業(yè):應用電子專業(yè)班級: 11應電班姓名: 丁文俊指導教師: 余靜老師2013 年 5 月2......

        單片機課程設計實習報告

        單片機課程設計實習報告 課程 2009-06-09 23:23:55 閱讀1900 評論2 字號:大中小 訂閱 實訓任務: 做單一燈的左移右移,八個發(fā)光二極管L1-L8分別接在單片機的P1.0→P1.2→P1.3......

        單片機課程設計報告[5篇]

        《單片機課程設計報告》 學校:專業(yè):班級: 姓名: 學號: 指導教師: 摘要 由于單片機體積小、成本低、使用方便,所以被廣泛地應用于儀器儀表、現場數據的采集和控制。通過本次課程......

        單片機計算器課程設計報告

        大連民族學院2007級電子信息工程專業(yè)單片機系統(tǒng)課程設計報告 機電信息工程學院 單片機系統(tǒng)課程設計報告 完成日期:2010年5月31日 系: 專業(yè): 班級: 設計題目: 學生姓名: 指導教師:......

        單片機課程設計報告(范文)

        片 機 課 程 設 計 報學號、姓名:年級、專業(yè):培養(yǎng)層次:課程名稱:授課學時學分:考試成績:授課或主講教師簽字:單 告1 單片機最小系統(tǒng)功能說明單片機的最小系統(tǒng)是由組成單片機系統(tǒng)必......