东方亚洲欧a∨人在线观看|欧美亚洲日韩在线播放|日韩欧美精品一区|久久97AV综合

        單片機(jī)實習(xí)報告

        發(fā)布時間:2020-11-06 來源: 調(diào)研報告 點擊:

         實

         習(xí)

         報

         告

         實習(xí)名稱 :

          嵌入式系統(tǒng) 實習(xí)

         系部名稱 :

          信科院

         專業(yè)班級:

         :

         計本 08 -5

          學(xué)生姓名:

         :

         陳鵬任

         學(xué)

         號:

        。

         3080417907

          指導(dǎo)教師:

        。

         陳小琴 金紅 楊光杰

          日 日

         期:

         2010.12.18

         一. 引言

          目前,嵌入式技術(shù)已成為通信和消費類產(chǎn)品的共同發(fā)展方向。嵌入式系統(tǒng)幾乎包括了生活中的所有電器設(shè)備,如掌上PDA、移動計算設(shè)備、電視機(jī)頂盒、手機(jī)上網(wǎng)、數(shù)字電視、多媒體、汽車、微波爐、數(shù)字相機(jī)、家庭自動化系統(tǒng)、電梯、空調(diào)、安全系統(tǒng)、自動售貨機(jī)、蜂窩式電話、消費電子設(shè)備、工業(yè)自動化儀表與醫(yī)療儀器等。

         嵌入式系統(tǒng)是先進(jìn)的計算機(jī)技術(shù)、半導(dǎo)體技術(shù)、電子技術(shù)和各個行業(yè)的具體應(yīng)用相結(jié)合的產(chǎn)物,這就決定了它必然是一個技術(shù)密集、資金密集、高度分散、不斷創(chuàng)新的知識集成系統(tǒng)。嵌入式系統(tǒng)一般指非PC系統(tǒng)。它是以應(yīng)用為中心、軟硬件可裁減的、能適應(yīng)應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、功耗等綜合性要求的專用計算機(jī)系統(tǒng)。簡單地說,嵌入式系統(tǒng)是集系統(tǒng)的應(yīng)用軟件與硬件于一體,類似于PC中BIOS的工作方式,具有軟件代碼小、高度自動化、響應(yīng)速度快等特點,因此特別適合于要求實時和多任務(wù)的系統(tǒng)。嵌入式系統(tǒng)主要由嵌入式處理器、相關(guān)支撐硬件、嵌入式操作系統(tǒng)及應(yīng)用軟件系統(tǒng)等組成。

         通過這次實訓(xùn),老師讓我們了解最基本的嵌入式系統(tǒng)設(shè)計,開發(fā)的流程,結(jié)合掌握所學(xué)的知識,做出一個單片機(jī)與上位機(jī)通信的簡單嵌入式系統(tǒng)。

         二.課題設(shè)計 1 .基本原理

          MCS-51 單片機(jī)串行口發(fā)送/接收數(shù)據(jù)時,通過 2 個串行緩沖器 SBUF 進(jìn)行,這 2 個緩沖器采用一個地址(98H),但在物理上是獨立的。其中接收緩沖器只能讀出不能寫入,發(fā)送緩沖器只能寫入不能讀出。

         ① 發(fā)送過程,由指令 MOV SBUF,A 啟動,此時待傳送的數(shù)據(jù)由 A 累加器傳入串行發(fā)送緩沖器 SBUF,由硬件自動在發(fā)送字符的始、末加上起始位(低電平)、停止位(高電子)及其它控制位(如奇偶位等),而后在移位脈沖的控制下,低位在前,高位在后,逐位從 TXD 端(方式 0 除外)發(fā)出。

          ② 接收過程,串行口的接收與否受制于允許接收位 REN 的狀態(tài),當(dāng) REN 被軟件置“1”后,允許接收器接收。串口的接收器以所選波特率的 16 倍速對 RXD線進(jìn)行監(jiān)視。當(dāng)“1”到“0”跳變時,檢測器連續(xù)采樣到 RXD 線上低電平時。便認(rèn)定 RXD 端出現(xiàn)起始位,繼而接收控制器開始工作。在每位傳送時間的第 7、8、9 三個脈沖狀態(tài)采樣 RXD 線,決定所接收的值為“0”或“1”。當(dāng)接收完停止位后,控制電路使中斷標(biāo)志 R1 置為“1”,此時程序可通過 MOV

         A,SBUF指令將接收到的字符從 SBUF 送入累加器 A,從而完成一幀數(shù)據(jù)的接收工作。

         2. 原理框架

         3. 硬件電路原理 圖,對各模塊進(jìn)行分別介紹

         單

         片

         機(jī) LCD 顯示電路 復(fù)位電路 時鐘電路 電源電路 串行口通信電路

         3.1 液晶顯示模塊

          1602LCD 采用標(biāo)準(zhǔn)的 14 腳(無背光)或 16 腳(帶背光)接口,各引腳接口如下所示

         接口信號說明 編號 符號 引腳說明 編號 符號 引腳說明 1 VSS 電源地 9 D2 Data I/O 2 VDD 電源正極 10 D3 Data I/O 3 VL 液晶顯示偏壓信號 11 D4 Data I/O 4 RS 數(shù)據(jù)/命令選擇端(H/L)

         12 D5 Data I/O 5 R/W 讀/寫選擇端(H/L)

         13 D6 Data I/O 6 E 使能信號 14 D7 Data I/O 7 D0 Data I/O 15 BLA 背光源正極 8 D1 Data I/O 16 BLK 背光源負(fù)極 用 LCD1602 液晶顯示模塊顯示字符或字符串之前必須對其進(jìn)行初始化,LCD1602 液晶顯示模塊的初始化流程如下:

         ? 5.0 初始化過程(復(fù)位過程)

         ? 5.1 延時 15ms ? 5.2 寫指令 38H(不檢測忙信號)

         ? 5.3 延時 5ms ? 5.4 寫指令 38H(不檢測忙信號)

         ? 5.5 延時 5ms ? 5.6 寫指令 38H(不檢測忙信號)

         ? 5.7(以后每次寫指令、讀/寫數(shù)據(jù)之前均需檢測忙信號)

         ? 5.8 寫指令 38H:顯示模式設(shè)置 ? 5.9 寫指令 38H:顯示關(guān)閉 ? 5.10 寫指令 01H:顯示清屏 ? 5.11 寫指令 06H:顯示光標(biāo)移動設(shè)置 ? 5.12 寫指令 0CH:顯示開關(guān)及光標(biāo)位置

         表 8 LCD1602 液晶模塊內(nèi)部的控制器控制指令 指令 指令碼

         說明

         RS

         R/W D0

         D1

         D2

         D3

         D4

         D5

         D6

         D7

         清屏

         0 0 0 0 0 0 0 0 0 1 清顯示,光標(biāo)回位

         光標(biāo)返回

         0 0 0 0 0 0 0 0 1 * ADD=0 時,回原位

         輸入方式

         0 0 0 0 0 0 0 1 I/D S 決定是否移動以及移動方向

         顯示開關(guān)

         0 0 0 0 0 0 1 D C B D-顯示,C-光標(biāo),B-光標(biāo)閃爍

         移位

         0 0 0 0 0 1 S/C R/L * * 移動光標(biāo)及整體顯示

         功能設(shè)置

         0 0 0 0 1 DL N F * * DL-數(shù)據(jù)位數(shù),L-行數(shù),F-字體

         CGRAM 地址設(shè)置

         0 0 0 1 A5 A4 A3 A2 A1 A0 設(shè)置 CGRAM 的地址 DDRAM 地址設(shè)置

         0 0 1 A6 A5 A4 A3 A2 A1 A0 設(shè)置 DDRAM 的地址 忙標(biāo)志/讀地址計數(shù)器

         0 1 BF AC6 AC5 AC4 AC3 AC2 AC1 AC0 讀出忙標(biāo)志位(BF)及 AC 值 CGRAM/DDRAM 數(shù)據(jù)寫

         1 0 寫數(shù)據(jù) 將內(nèi)容寫入 RAM 中 CGRAM/DDRAM 數(shù)據(jù)讀

         1 1 讀數(shù)據(jù) 將內(nèi)容從 RAM 中讀出

         LCD1602 液晶顯示模塊可以和單片機(jī) AT89C51 直接接口,電路如下圖所示。

         RP110KGND1VDD2VO3RS4RW5E6DB07DB18DB29DB310DB411DB512DB613DB714BL115BL216U2LCD1620X119X218RESET9RD17WR16INT012INT113T014T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSEN29ALE/P30TXD11RXD10GND20VCC40EA/VP31nPSENRXDTXDALEU1AT89S51P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7+5VP0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7RWRSE+5VnWRVCCnWRnRD

         AT89S52 和 LCD1602 液晶模塊連接電路 液晶顯示模塊是一個慢顯示器件,所以在執(zhí)行每條指令之前一定要確認(rèn)模塊的忙標(biāo)志為低電平,表示不忙,否則此指令失效。要顯示字符時要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符,表 9 是 LCD1602 的內(nèi)部顯示地址。即第 1 行的顯示地址應(yīng)為 80H+顯示位置,第 2 行的顯示地址應(yīng)為 40H+顯示位置。

         表 9

         LCD1602 的內(nèi)部顯示地址

          3.2 串口通信模塊 RS-232C 標(biāo)準(zhǔn)(協(xié)議)的全稱是 EIA-RS-232C 標(biāo)準(zhǔn),其中 EIA(Electronic Industry Association)代表美國電子工業(yè)協(xié)會,RS(recommended standard)代表推薦標(biāo)準(zhǔn),232 是標(biāo)識號,C 代表 RS232 的最新一次修改,在這之前,有 RS232B、RS232A,它規(guī)定連接電纜和機(jī)械、電氣特性、信號功能及傳送過程。RS-232C 適合于數(shù)據(jù)傳輸速率在 0~20000b/s 范圍內(nèi)的通信。

         PC 機(jī)常用 DB-9 連接器作為提供多功能 I/O 卡或主板上 COM1 和 COM2 兩個串行接口的連接器,它只提供異步通信的 9 個信號,9 針串口功能見表 10,并且對電纜長度也有要求:

         RS-232C 標(biāo)準(zhǔn)規(guī)定,若不使用 MODEM,在碼元畸變小于 4%的情況下,DTE 和 DCE 之間最大傳輸距離為 15m(50 英尺)。可見這個最大的距離是在碼元畸變小于 4%的前提下給出的,為了保證碼元畸變小于 4%的要求,接口標(biāo)準(zhǔn)在電氣特性中規(guī)定,驅(qū)動器的負(fù)載電容應(yīng)小于 2500pF。

         表 10

         9 針串口功能一覽表 針腳 功能 針腳 功能 1 載波檢測 6 數(shù)據(jù)準(zhǔn)備完成 2 接收數(shù)據(jù) 7 發(fā)送請求 3 發(fā)送數(shù)據(jù) 8 發(fā)送清除 4 數(shù)據(jù)終端準(zhǔn)備完成 9 振鈴指示 5 信號地線

          本方案對 RS-232-C 接口采用 3 線制(RXD、TXD、GND)軟握手的零 MODEM 方式進(jìn)行單片機(jī)和 PC 之間的數(shù)據(jù)通信,即 PC 機(jī)和單片機(jī)的發(fā)送數(shù)據(jù)線(TXD)與接收數(shù)據(jù)(RXD)交叉連接,二者的地線(GND)直接相連,其它信號線如握手信號線均不用,而采用軟件握手。但由于 RS-232-C 的邏輯電對地是對稱的,與 TTL、MOS 邏輯電平完全不同,邏輯 0 電平規(guī)定為+5~ +15V 之間,邏輯 1 是電平為-5~ -15V 之間,因此利用 MAX232芯片進(jìn)行電平轉(zhuǎn)換,電路連接如圖 11。

         C1-3V+2C2+4C2-5V-6R209D2110VCC16GND15D1014R1113R1012D1111R218D207C1+1IC2MAX232C13C12C11C10VCC162738495J232DB9 圖 RS-232-C 通信連接電路

         3.3 電源模塊 +220PFC5C60.1uFS12Vin+5VGNDU37805R81.5KD0LED123POWCON3SPD2

         充電電路

         4. 軟件設(shè)計 ( (1 )流程圖

         ( (2 )代碼附錄 //示 接收電腦送過來的數(shù)據(jù),并且顯示 16 進(jìn)制數(shù),并將數(shù)據(jù)回傳到電腦 腦 #include <reg52.h> //LCD 的口線 sbit E=P2^5; sbit RW=P3^6; sbit RS=P2^6; unsigned char recdata[28];//定義 RS232 數(shù)組 unsigned char recv_p; unsigned char bdata myflag; sbit recokbit = myflag^0; void Delay(unsigned int t); void SendCommandByte(unsigned char ch);//傳送命令 void SendDataByte(unsigned char ch);//傳送數(shù)據(jù) void InitLcd(void);//LCD 顯示 void disprec(void); //顯示 void rs232(void); void main(void)//主函數(shù) {

         InitLcd();//初始化 LCD

         myflag=0x00;//標(biāo)志痊

          SendCommandByte(0x80);//調(diào)用發(fā)送命令

         Delay(2);

         SendDataByte("c"); //初始化顯示 CPR:

         SendDataByte("p");

         SendDataByte("r");

         SendDataByte(":");

         TMOD=0x20;//定時器的設(shè)置

         TH1=0xf3;//計時器

         TL1=0xf3;

         SCON=0x50;//設(shè)定串行工作方式

         TR1=1;

         REN=1;//允許中斷

         IE=0x90;//中斷允許標(biāo)志

         while(1)

         {

          if(recokbit==1)//接收數(shù)據(jù)

         {

          recokbit=0;

          disprec();

          }

         } }

         //以下為串口中斷程序 void rs232(void) interrupt 4//中斷串行口

         {

         if(RI==1)//控制電路使中斷標(biāo)志 R1 置為“1 此時程序可通過 MOV

         A,SBUF 指令將接收到的字符從 SBUF 送入累加器 A,從而完成一幀數(shù)據(jù)的接收工作

         {

          RI=0;

          recdata[recv_p]=SBUF;

          SBUF=recdata[recv_p];

          recv_p++; if(recv_p>27) recv_p=0;//

          recokbit=1;//接受完成

         }

          } void Delay(unsigned int t)

          // delay 40us {

         for(;t!=0;t--); } //============================================= void SendCommandByte(unsigned char ch) {

          RS=0;

         RW=0;

         P0=ch;

         E=1;//使能端口為 1,接收命令

         Delay(1);

         E=0;

         Delay(100);

         //delay 40us }

         //=============================================

         //------------------------------------------------------- void SendDataByte(unsigned char ch) {

         TI=0;//開始發(fā)送數(shù)據(jù)

         SBUF=ch;

         while(!TI);

         RS=1;//輸入數(shù)據(jù)

         RW=0;//為 0 時寫,1 時讀

         P0=ch;

         E=1;

         Delay(1);

          E=0;//使能信號為 0 時,不能輸入

         Delay(100); //delay 40us } //------------------------------------------------- void InitLcd(void) { unsigned char i; for(i=0;i<28;i++) recdata[i]=0x30;//初始化數(shù)組 0 recv_p=0;

         SendCommandByte(0x30);

         SendCommandByte(0x30);

         SendCommandByte(0x30);

         SendCommandByte(0x38); //設(shè)置工作方式

         SendCommandByte(0x0c); //顯示狀態(tài)設(shè)置

         SendCommandByte(0x01); //清屏

         SendCommandByte(0x06); //輸入方式設(shè)置 } void disprec(void) {

         unsigned char i;

         for(i=0;i<12;i++)

          {

         SendCommandByte(0x84+i);

          SendDataByte(recdata[i]);

         }

         for(i=0;i<16;i++)

          {

          SendCommandByte(0xc0+i);

          SendDataByte(recdata[i+12]);

         }

          }

          5. 調(diào)試過程 ( (1 )測試數(shù)據(jù)

         采用 RS232 把 PC 機(jī)與單片機(jī)連接起來,運行上位機(jī)程序如下圖所示:

         向單片機(jī)發(fā)送信息時,PC 機(jī)顯示信息重復(fù)了。

          ( (2)

        。

         數(shù)據(jù)分析

          PC 機(jī)發(fā)送的數(shù)據(jù)給單片機(jī)能正常顯示,但單片機(jī)返回給 PC 機(jī)的信息重復(fù)了,經(jīng)過反復(fù)檢查,原來是 recdata[recv_p]=SBUF; SBUF=recdata[recv_p];這語句重寫了,刪了,就恢復(fù)正常通信顯示了。

         三. 結(jié)論 經(jīng)過這次嵌入式系統(tǒng)實訓(xùn),熟悉了單片機(jī)設(shè)計,開發(fā)的流程,在楊琴老師,金紅老師,楊光杰老師的辛勤指導(dǎo)下,在和組員龐卡努力下,從最初的元件領(lǐng)取,電路焊接,利用 PROTEL99 畫電路原理圖,到代碼的編寫,我負(fù)責(zé)下位機(jī)程序,龐卡負(fù)責(zé)上位機(jī)的程序,經(jīng)過我們的共同努力,加上各位老師的指導(dǎo),終于在老師規(guī)定的時間內(nèi)完成了單片機(jī)與上位機(jī)的通信。

         這次嵌入式系統(tǒng)實訓(xùn),學(xué)習(xí)了嵌入式系統(tǒng)簡單開發(fā)流程,加深所學(xué)知識的理解。

        相關(guān)熱詞搜索:單片機(jī) 實習(xí)報告

        版權(quán)所有 蒲公英文摘 smilezhuce.com