數(shù)字電壓表設(shè)計課程設(shè)計報告_第1頁
數(shù)字電壓表設(shè)計課程設(shè)計報告_第2頁
數(shù)字電壓表設(shè)計課程設(shè)計報告_第3頁
數(shù)字電壓表設(shè)計課程設(shè)計報告_第4頁
數(shù)字電壓表設(shè)計課程設(shè)計報告_第5頁
免費預覽已結(jié)束,剩余44頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、2015-2016學年第一學期微機原理(單片機)課程設(shè)計總結(jié)報告項目名稱:數(shù)字電壓表設(shè)計 班級: 姓名: 學號:45 / 49文檔可自由編輯打印微機原理(單片機)課程設(shè)計任務書項目名稱:數(shù)字電壓表設(shè)計內(nèi)容與要求: 上位機:完成界面設(shè)計與通訊程序(1)能夠顯示采集的電壓值,及16進制數(shù)值。當超出設(shè)定閾值時,電壓值有提示字母。(2)能夠設(shè)定電壓閾值(3)繪制電壓變化曲線,時間軸單位1秒,電壓精度0.01V(4)可以對串口進行設(shè)置下位機:完成電路設(shè)計與控制程序(1)將A/D由電位器采集的10進制電壓值及16進制數(shù)值,顯示在LCD屏上面,電壓值保留小數(shù)點后2位。(2)通過串口與上位機通訊,并傳輸電壓值

2、,接受閾值設(shè)置。(3)將閾值保存至外部存儲器,重新復位上電后,閾值不變。(4)當超出電壓閾值時,相應指示燈提示,將當前電壓值顯示在LCD上,當電壓高于電壓閾值時,數(shù)值后顯示“-HIGH”,當電壓值低于電壓閾值時,數(shù)值后顯示“-NORMAL”。項目組任務分擔評價表姓名分擔任務組內(nèi)評價時逸菲選題,設(shè)計方案。使用C#編寫上位機程序,界面美化。4邱鐸冠焊接電路,調(diào)試下位機程序,測試各模塊功能。6課程設(shè)計報告評分表內(nèi)容總體方案硬件設(shè)計軟件設(shè)計結(jié)果分析明細清單問題分析心得體會參考文獻程序代碼格式規(guī)范總分時逸菲得分邱鐸冠得分 目錄Contents一、總體方案1二、硬件設(shè)計1三、軟件設(shè)計3四、結(jié)果分析或項目所

3、實現(xiàn)的功能、指標23五、明細清單27六、設(shè)計調(diào)試中遇到的疑難問題及解決方法27七、心得體會與建議28八、參考文獻29一、總體方案系統(tǒng)結(jié)構(gòu)如圖1-1所示。A/D轉(zhuǎn)換模塊LCD顯示模塊控 制 器上位機外部存儲器模塊圖1-1 數(shù)字電壓表總體功能模塊示意圖 圖中,A/D轉(zhuǎn)換模塊采用TLC1549芯片,LCD顯示模塊采用1602液晶屏。外部存儲器為X5045(作EEPROM使用),上位機為微型計算機,控制器為基于STC89C52芯片的單片機開發(fā)板(含LED)。二、硬件設(shè)計TLC1549 A/D轉(zhuǎn)換芯片原理如圖所示:X5045原理如圖所示:相關(guān)硬件設(shè)計電路設(shè)計只需參照相應手冊上典型應用電路圖即可。根據(jù)開發(fā)

4、板的原理圖,確定可用的I/O口,并合理分配給1602,X5045,TLC1549三個外設(shè)。具體管腳分配可參見下位機程序或最終原理圖。最終原理圖如下:最終方案如圖所示,該原理圖只包含本項目所需外設(shè)的鏈接信息,省略了開發(fā)板上已有內(nèi)容。其中P0口應接上拉電阻,如圖所示。P22口連接LED用于指示電壓與閾值的關(guān)系。LCD1602的硬件電路無需自己設(shè)計,直接采用開發(fā)板上的20孔排針插座即可,X5045和TLC1549硬件連接則根據(jù)相關(guān)手冊和開發(fā)板自身原理圖確定。三、軟件設(shè)計下位機程序設(shè)計:波特率設(shè)置:9600 一位起始位,8位數(shù)據(jù)位,1位停止位,無校驗位。串口通信方式1下,波特率由計數(shù)器1的計數(shù)頻率和P

5、CON的SMOD位決定,校驗,計數(shù)器工作在方式2下,為8位自動重裝初值計數(shù)器。其中計數(shù)器計數(shù)頻率為,八位自動重裝計數(shù)器向上溢出頻率為經(jīng)計算,為了讓計數(shù)器1產(chǎn)生9600波特率,TH,TL應賦初值0xFD。串口通信宏定義和相關(guān)初始化代碼如下:void InitUART (void) SCON = 0x50;/ SCON: 模式 1, 8-bit UART, 使能接收 TMOD |= 0x20; / TMOD: timer 1, mode 2, 8-bit 重裝 TH1 = 0xFD; / TH1: 重裝值 9600 波特率 晶振 11.0592MHz TR1 = 1; / TR1: timer 1

6、開始計數(shù) EA= 1; /打開總中斷 ES = 1; /打開串口中斷 控制1602液晶屏:1602液晶屏輸入信號包括8位數(shù)據(jù),讀寫信號,選通信號,指令/數(shù)據(jù)選擇信號等。根據(jù)手冊所給的寫數(shù)據(jù),寫指令的時序圖,編寫基本操作函數(shù)如下:#define uint unsigned int sbit lcden=P12;/定義液晶使能端sbit lcdrs=P10;/定義液晶RS端sbit rw=P11;/定義液晶RW端void delay(uint z) uint x,y; for(x=z;x0;x-) for(y=110;y0;y-); /*/void write_com(uchar com) /液晶

7、寫命令函數(shù) lcdrs=0; P0=com; delay(5); lcden=1; delay(5); lcden=0; void write_data(uchar dat) /液晶寫數(shù)據(jù)函數(shù) lcdrs=1; P0=dat; delay(5); lcden=1; delay(5); lcden=0; 1602寫操作時序圖液晶屏使用前應對其進行初始化,初始化設(shè)置為不顯示光標,光標不閃爍,地址自增,寫操作屏顯不產(chǎn)生位移,最后進行一次清屏操作,代碼如下:void init() rw=0; lcden=0; write_com(0x38);/初始化1602液晶 write_com(0x0c); wr

8、ite_com(0x06); write_com(0x01);/清屏 write_com(0x80);/設(shè)置顯示初始坐標,第一行,第一列 delay(1000);1602相關(guān)指令說明X5045程序設(shè)計:本項目中X5045作為EEPROM使用,用于保存電壓閾值,實現(xiàn)掉電后不丟失閾值設(shè)置的功能。根據(jù)手冊上所給的時序圖,編寫基本操作函數(shù)如下:#define WREN 0x06 /寫使能鎖存器允許#define WRDI 0x04 /寫使能鎖存器禁止#define WRSR 0x01 /寫狀態(tài)寄存器#define READ 0x03 /讀出#define WRITE 0x02 /寫入/*函數(shù)功能:從X

9、5045的當前地址讀出數(shù)據(jù)出口參數(shù):x*/unsigned char ReadCurrent(void) unsigned char i; unsigned char x=0x00; /儲存從X5045中讀出的數(shù)據(jù) SCK=1; /將SCK置于已知的高電平狀態(tài) for(i=0;i8;i+) SCK=1; /拉高SCK SCK=0; /在SCK的下降沿輸出數(shù)據(jù) x=1; /將x中的各二進位向左移一位,因為首先讀出的是字節(jié)的最高位數(shù)據(jù) x|=(unsigned char)SO; /將SO上的數(shù)據(jù)通過按位或運算存入 x return(x); /將讀取的數(shù)據(jù)返回 /*函數(shù)功能:寫數(shù)據(jù)到X5045的當前

10、地址入口參數(shù):dat*/void WriteCurrent(unsigned char dat) unsigned char i; SCK=0; /將SCK置于已知的低電平狀態(tài) for(i=0;i8;i+) / 循環(huán)移入8個位 SI=(bit)(dat&0x80); /通過按位與運算將最高位數(shù)據(jù)送到S /因為傳送時高位在前,低位在后 SCK=0; SCK=1; /在SCK上升沿寫入數(shù)據(jù) dat=1; /將y中的各二進位向左移一位,因為首先寫入的是字節(jié)的最高位 /*函數(shù)功能:寫狀態(tài)寄存器 ,可以設(shè)置看門狗的溢出時間及數(shù)據(jù)保護入口參數(shù):rs; /儲存寄存器狀態(tài)值*/void WriteSR(uns

11、igned char rs) CS=0; /拉低CS,選中X5045 WriteCurrent(WREN); /寫使能鎖存器允許 CS=1; /拉高CS CS=0; /重新拉低CS,否則下面的寫寄存器狀態(tài)指令將被丟棄 WriteCurrent(WRSR); /寫狀態(tài)寄存器 WriteCurrent(rs); /寫入新設(shè)定的寄存器狀態(tài)值 CS=1; /拉高CS/*函數(shù)功能:寫數(shù)據(jù)到X5045的指定地址入口參數(shù):addr*/void WriteSet(unsigned char dat,unsigned char addr)SCK=0; /將SCK置于已知狀態(tài)CS=0; /拉低CS,選中X5045

12、WriteCurrent(WREN); /寫使能鎖存器允許CS=1; /拉高CSCS=0; /重新拉低CS,否則下面的寫入指令將被丟棄WriteCurrent(WRITE); /寫入指令WriteCurrent(addr); /寫入指定地址WriteCurrent(dat); /寫入數(shù)據(jù)CS=1; /拉高CSSCK=0; /將SCK置于已知狀態(tài)/*函數(shù)功能:從X5045的指定地址讀出數(shù)據(jù)入口參數(shù):addr出口參數(shù):dat*/unsigned char ReadSet(unsigned char addr) unsigned char dat; SCK=0; /將SCK置于已知狀態(tài) CS=0;

13、/拉低CS,選中X5045 WriteCurrent(READ); /開始讀 WriteCurrent(addr); /寫入指定地址 dat=ReadCurrent(); /讀出數(shù)據(jù) CS=1; /拉高CS SCK=0; /將SCK置于已知狀態(tài) return dat; /返回讀出的數(shù)據(jù)寫狀態(tài)寄存器時序圖EEPROM讀操作時序圖EEPROM寫操作時序圖中斷函數(shù)設(shè)計:由于查詢方式進行串口通信會占用大量CPU時間,本項目串口通信接受一字節(jié)數(shù)據(jù)的功能采用中斷完成,中斷函數(shù)如下:/*- 串口中斷程序-*/void UART_SER (void) interrupt 4 /串行中斷服務程序unsigned

14、 char Temp; /定義臨時變量 if(RI) /判斷是接收中斷產(chǎn)生RI=0; /振鈴信號軟件清零Temp=SBUF; /讀入緩沖區(qū)的值r=Temp; /將閾值賦予變量r /X5045操作WriteSet(unsigned char)r,0x00);/將閾值寫到E2PROM 0x00處 報警燈控制:直接使用開發(fā)板上閑置I/O口所鏈接LED燈。sbit Show_LED = P22;直接對Show_LED進行賦值來對D22進行亮,滅操作。LED鏈接原理圖A/D轉(zhuǎn)換程序設(shè)計:根據(jù)手冊所給時序圖,編寫讀操作函數(shù)#define uint unsigned int /無符號整數(shù)8位/*AD讀入子函

15、數(shù)*/uint ReadTLC1549()uint temp=0,delay=20;uchar i;TLC1549_CS = 0;/片選使能for(i=0;i10;i+) TLC1549_CLK = 0; temp 17usreturn temp;A/D讀時序圖(10個時鐘周期)下位機流程圖開始打開總中斷,串口通信初始化,1602,X5045,TLC1549等外設(shè)初始化對TLC1549進行讀操作,讀取電壓值電壓值與閾值作比較后,在LCD上顯示相關(guān)信息,并向上位機傳輸上位機程序設(shè)計:窗體加載初始化:任務書要求串口可設(shè)置,實際操作中除了串口號,其它參數(shù)如串口的波特率,起始位,數(shù)據(jù)位,校驗位,終止位

16、都是已知的,故可在加載窗口時直接設(shè)置好。同時,用于作圖的Chart控件的屬性也可以在窗體加載時設(shè)置好,編寫窗體初始化函數(shù)如下:using System.IO.Ports;private void Form1_Load(object sender, EventArgs e) RefreshPort(); CCbStopBits.SelectedIndex = 0; / 停止位,初始化 1 CCbBaudrate.SelectedIndex = 0; / 波特率,初始化 9600 CCbCheckBit.SelectedIndex = 0; / 校驗位,初始化 NONE CCbDataBits.S

17、electedIndex = 3; / 數(shù)據(jù)位,初始化 8 /輸入 CChartForPlot.Series0.ChartType = SeriesChartType.Spline; / 圖類型 CChartForPlot.Series0.Color = Color.Green; / 顏色 CChartForPlot.Series0.XValueType = ChartValueType.String; / XY類型名 CChartForPlot.ChartAreas0.AxisX.Maximum = X_NUM; / X軸最大值 CChartForPlot.ChartAreas0.AxisY

18、.Maximum = Y_NUM; / Y軸最大值 串口開關(guān)控制功能實現(xiàn):添加一個Button控件,點擊該按鈕后,程序能夠判斷串口開關(guān)的情況,來進而判斷接下來應該進行打開串口或關(guān)閉串口的操作,同時能改變Button的Text屬性(顯示“打開串口”或“關(guān)閉串口”)。若需打開串口,則先判斷串口是否已經(jīng)處于打開狀態(tài),若是則先關(guān)閉串口,再根據(jù)COMBOBOX控件CCbStopBits.SelectedIndex,CCbBaudrate.SelectedIndex,CCbCheckBit.SelectedIndex,CCbDataBits.SelectedIndex的Index值,對串口各參數(shù)進行符合用

19、戶需求的設(shè)置。 private void CBtnOpenOrClose_Click(object sender, EventArgs e) if (serialPort.IsOpen) try serialPort.Close(); catch (Exception ex) MessageBox.Show(ex.ToString(); else /if serialport is closed serialPort.PortName = CCbPortNo.Text; serialPort.BaudRate = Convert.ToInt32(CCbBaudrate.Text); switc

20、h (CCbStopBits.SelectedIndex) case 0: serialPort.StopBits = StopBits.One; break; case 1: serialPort.StopBits = StopBits.Two; break; default: break; serialPort.DataBits = Convert.ToInt32(CCbDataBits.Text); serialPort.NewLine = rn; int a = CCbCheckBit.SelectedIndex; switch (CCbCheckBit.SelectedIndex)

21、case 0: serialPort.Parity = Parity.None; break; case 1: serialPort.Parity = Parity.Odd; break; case 2: serialPort.Parity = Parity.Even; break; case 3: serialPort.Parity = Parity.Mark; break; case 4: serialPort.Parity = Parity.Space; break; default: break; serialPort.DataReceived += CserialPort_DataR

22、eceived; try serialPort.Open(); catch (Exception ex) MessageBox.Show(ex.ToString(); CBtnOpenOrClose.Text = serialPort.IsOpen ? 關(guān)閉串口 : 打開串口; 刷新串口功能實現(xiàn):由于每次上下位機連接后串口號是不一定相同的,需要編寫代碼實現(xiàn)掃描可用串口的功能,確定通信時對應的串口號。添加一個Button控件,編寫代碼如下。 private void CBtnRefreshPort_Click(object sender, EventArgs e) RefreshPort();

23、private void RefreshPort() / 刷新串口 string ports = SerialPort.GetPortNames(); Array.Sort(ports); CCbPortNo.Items.Clear(); CCbPortNo.Items.AddRange(ports); CCbPortNo.SelectedIndex = CCbPortNo.Items.Count 0 ? 0 : -1; 發(fā)送數(shù)據(jù)功能實現(xiàn):上位機需要對下位機的閾值電壓進行設(shè)置,根據(jù)上下位機之間實現(xiàn)擬定的通信協(xié)議,閾值用一個字節(jié)的無符號數(shù)表示。添加一個Button控件,編寫代碼如下 privat

24、e void buttonSend_Click(object sender, EventArgs e) byte buf = new byte2; buf0 = Convert.ToByte( upper ); /可以在這里對buf進行賦值 serialPort.Write(buf.ToArray(), 0, 1); 接收數(shù)據(jù)后數(shù)據(jù)處理功能的實現(xiàn):根據(jù)任務書要求,上位機應能用十進制和十六進制顯示下位機傳輸?shù)碾妷褐?,并顯示電壓是否超過閾值,同時以1秒為單位實時作圖顯示電壓變化。顯示電壓值等信息可通過若干Label控件實現(xiàn),作圖可由Chart控件和Timer控件實現(xiàn)。定時器設(shè)置1000毫秒間隔,初

25、始化代碼如下 private void InitializeTime() timer1.Interval = 1000; timer1.Enabled = true; timer1.Start(); 接收到一字節(jié)數(shù)據(jù)后的處理,包括電壓值顯示,電壓大小判斷,實時作圖等操作,根據(jù)事先擬定好的上下位機見的通信協(xié)議,編寫如下代碼對改字節(jié)數(shù)據(jù)提供的信息進行處理: private void CserialPort_DataReceived(object sender, SerialDataReceivedEventArgs e) / 接收串口數(shù)據(jù) byte buf = new byte4;/聲明一個臨時數(shù)

26、組存儲當前來的串口數(shù)據(jù) serialPort.Read(buf,0,1); tmpForRecv = buf0; inputVolt = 5.0 * tmpForRecv / 255; outputVolt = inputVolt / ratio; this.Invoke(EventHandler)(delegate CLbInputVolt.Text = inputVolt.ToString(0.00); CLbShowVolt1.Text = (int)(tmpForRecv * 4.0).ToString(X); if (inputVolt = upper) CLbShowVolt.Te

27、xt = H; / /響警報 / else CLbShowVolt.Text = N; ); RealTimePlot(Convert.ToInt32(buf0); private void RealTimePlot(int num) this.Invoke(EventHandler)(delegate CChartForPlot.Series0.Points.AddY(inputVolt); if (CChartForPlot.Series0.Points.Count X_NUM) CChartForPlot.Series0.Points.RemoveAt(0); CChartForPlot

28、.Series1.Points.AddY(outputVolt); if (CChartForPlot.Series1.Points.Count X_NUM) CChartForPlot.Series1.Points.RemoveAt(0); /刷新chart控件 CChartForPlot.Invalidate(); ); 既然已經(jīng)添加了定時器控件,我們不妨利用它實現(xiàn)一個窗體顏色隨機變化的功能,達到美化GUI界面的目的,具體代碼如下: private void timer1_Tick(object sender, EventArgs e) Random a = new Random(); R

29、andom b = new Random(); Random c = new Random(); int x = a.Next(0, 255); int y = b.Next(0, 255); Color c1 = Color.FromArgb(x, 100, y); this.BackColor = c1; 下位機流程圖(通信部分)開始接收一字節(jié)數(shù)據(jù)電壓值換算進制換算閾值判斷10進制顯示電壓值,16進制顯示電壓值,顯示電壓與閾值關(guān)系,實時作圖四、結(jié)果分析或項目所實現(xiàn)的功能、指標本項目已經(jīng)實現(xiàn)了任務書所列全部功能,如圖所示:閾值設(shè)為3V,實際輸出2.9V,下位機工作狀況,LCD顯示電壓狀態(tài)為N

30、ORMAL此時上位機工作情況,閾值設(shè)定為3V,顯示電壓狀況為N(NORMAL)閾值仍為3V,實際電壓3.14V,下位機工作狀況如圖,LCD顯示“HIGH”表明電壓值超過閾值。且掉電后閾值不變。再將電壓值設(shè)為4V,此時上位機的“H”顯示變?yōu)椤癗”下位機收到上位機閾值為4V的設(shè)置,LCD的”HIGH”變?yōu)椤盢ORMAL”將給定電壓提高到4.06V,上位機”N”字樣變?yōu)椤癏”字樣,表明此時電壓大于閾值。下位機的LCD此時也同樣顯示“HIGH”字樣,說明閾值已經(jīng)被成功設(shè)置為4V,掉電后下位機的電壓閾值沒有丟失,如圖所示??偨Y(jié):經(jīng)過測試,本項目已經(jīng)實現(xiàn)了任務書所要求的全部功能。五、明細清單器材名稱成本核

31、算排針CNY70杜邦線5V電源51單片機開發(fā)板沖孔板焊錫芯片插座串口線X5045CNY5TLC1549CNY101602LCDCNY4.8六、設(shè)計調(diào)試中遇到的疑難問題及解決方法時逸菲:1、C#語言優(yōu)勢是其簡單方便性、靈活與兼容性,功能強大,語言簡潔高效,通過對上屆學長和之前進行課設(shè)的同學的咨詢,對這個選題中要求進制轉(zhuǎn)換、串口通訊和繪制電壓變化曲線圖的特點,決定使用C#語言2、在設(shè)計繪制電壓變化曲線圖時,本來使用Scaleview.size設(shè)定Y軸高度,后來發(fā)現(xiàn)Axis.Maximum可以根據(jù)顯示的電壓值自動調(diào)節(jié)到最合適顯示高度,僅僅限制一個比較大的最大值即可,所以一般都使用Axis.Maxim

32、um3、在上位機與下位機通訊過程中,框圖里顯示的電壓值一直是“?”,一直沒有發(fā)現(xiàn)是什么問題,后來發(fā)現(xiàn)是我們倆寫程序時沒有溝通,上位機和下位機傳輸?shù)淖址愋筒灰粯?,都改成CString后通訊成功 邱鐸冠:1、編寫上位機程序之前,需要測試下位機是否能正確通過串口收發(fā)數(shù)據(jù),利用串口調(diào)試助手收發(fā)多個字節(jié),觀察控制器是否正確執(zhí)行,發(fā)送指令,判定是否可終止調(diào)試過程。2、控制器I/O口數(shù)量有限,而開發(fā)板掛載外設(shè)較多,為了避免對原有外設(shè)操作時對新增外設(shè)產(chǎn)生不必要的影響,需要謹慎分配I/O口,查閱開發(fā)板原理圖,確定已被占用的I/O口后,將其它可用I/O口分配給TLC1549,X5045。3、USB供電功率有一定

33、限額,而實驗用開發(fā)板默認掛載外設(shè)很多。另外,供電電壓不足可能導致程序下載失敗,根據(jù)前人經(jīng)驗,某些大功率外設(shè)故障可能會導致大電流經(jīng)過USB口損壞供上位計算機。為了避免不必要的麻煩,直接采用5V穩(wěn)壓電源供電。七、心得體會與建議 邱鐸冠:1602等外設(shè)都屬于常用器件,讀寫時序并不復雜,但是時間都花費在編寫編寫時序上不僅占用大量編寫實現(xiàn)項目主要功能代碼的時間,而且必要性不大,對于此類器件,大可直接提供基本操作函數(shù),提高效率。我本科期間利用業(yè)余時間做過大約20個51單片機的實驗,本次課程設(shè)計的實驗所與我所做過的實驗差別并不大,重復性很強。并且實驗內(nèi)容大多包含了過多重復勞動,對我而言,學到新東西無法和自己

34、的工作量對等 。希望實驗室能夠引進一些新的模塊和外設(shè),供學生選題的時候自主選擇,從而使得不同的學生能按照自己的需要掌握新的知識。本項目為簡易數(shù)字電壓表,改進的方案包括在更新顯示屏前設(shè)定一個電壓跳變范圍,使得電壓小范圍波動時顯示屏顯示內(nèi)容不變,方便用戶讀數(shù)。時逸菲:對于沒有參與過科創(chuàng)項目的同學來說,僅僅依靠課程學過的微機原理、c語言和c+語言完全不能滿足課設(shè)的需求,而網(wǎng)上的教學程序也不可能在5天時間里讓我們完全編出期望結(jié)果的程序,所以我認為可以在選題中設(shè)置不同等級(參考電子技術(shù)實驗課設(shè)),基礎(chǔ)較薄弱的同學可以選擇分數(shù)較低的選題,這些選題提供參考的基礎(chǔ)程序,但需要修改或整理之后才能使用,這樣不至于

35、讓同學之間因為難度過大互相抄襲,用面試的問題也可以考驗是否學會。八、參考文獻 1G.Edward Suh, Charles WODonnell, Srinivas Devadas, Aegis:a single-chip secure processor, IEEE Design and Test of Computers2008,24(6)5705802 Mt. Prospect.MCS 51 Family of Microcontrollers Architectural Overview. September 199附錄上位機程序:using System;using System.Co

36、llections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.IO.Ports;using System.Windows.Forms.DataVisualization.Charting;namespace SerialCom public partial class Form1 : Form private SerialPort ser

37、ialPort = new SerialPort(); / 實例串口 private byte recvByte = new byte4; / 接收數(shù)據(jù) private int X_NUM = 9; / X軸 private int Y_NUM = 5; / Y軸 private double inputVolt = 0.0; / 輸入電壓 private double outputVolt = 0.0; / 輸出電壓 private byte tmpForRecv = 0; private int ratio = 2; / 比例 private double upper = 4.0; / 閾

38、值 public Form1() InitializeComponent(); InitializeTime(); private void InitializeTime() timer1.Interval = 1000; timer1.Enabled = true; timer1.Start(); private void Form1_Load(object sender, EventArgs e) RefreshPort(); CCbStopBits.SelectedIndex = 0; / 停止位,初始化 1 CCbBaudrate.SelectedIndex = 0; / 波特率,初始化 9600 CCbCheckBit.SelectedI

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論