基于MSP430簡(jiǎn)易示波器的設(shè)計(jì)_第1頁(yè)
基于MSP430簡(jiǎn)易示波器的設(shè)計(jì)_第2頁(yè)
基于MSP430簡(jiǎn)易示波器的設(shè)計(jì)_第3頁(yè)
基于MSP430簡(jiǎn)易示波器的設(shè)計(jì)_第4頁(yè)
基于MSP430簡(jiǎn)易示波器的設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、基于MSP430簡(jiǎn)易示波器的設(shè)計(jì)自動(dòng)化1107王詩(shī)雨2013.121. 硬件設(shè)計(jì)1.1 單片機(jī)選用MSP430G2553單片機(jī),該單片機(jī)具有低功耗的特點(diǎn),內(nèi)部自帶8路10位AD轉(zhuǎn)換器(ADC10),最高主頻可達(dá)16Mhz,對(duì)于一個(gè)簡(jiǎn)易示波器來(lái)說(shuō)這些特點(diǎn)足夠我們使用。1.2 程控放大電路程控放大電路的作用是對(duì)大信號(hào)進(jìn)行衰減,對(duì)小信號(hào)進(jìn)行放大,保證輸入到AD轉(zhuǎn)換器的信號(hào)幅度在要求的輸入電壓范圍內(nèi),以達(dá)到最好的測(cè)量與觀察效果。采用模擬開關(guān)CD4051,配合精密電位器實(shí)現(xiàn)多擋垂直分辨率。在MSP430單片機(jī)中使用寄存器模塊設(shè)置通道號(hào),通過(guò)寫入通道號(hào)控制模擬開關(guān)選通不同的反饋電阻,從而實(shí)現(xiàn)不同的放大倍數(shù)

2、,對(duì)信號(hào)進(jìn)行不同程度的放大(衰減)。電路圖如下:1.3 簡(jiǎn)易調(diào)理電路由于示波器觀察信號(hào)大多是正負(fù)電壓信號(hào),考慮到ADC10一般使用的是單極性參考電壓(也可以使用寄存器設(shè)置雙極性參考電壓,這樣就不需要調(diào)理電路了,但最好加一級(jí)緩沖)。為了采樣到信號(hào)的負(fù)電壓,就需要給該信號(hào)疊加直流量,將負(fù)電壓部分信號(hào)抬高至零電平以上,因此采用信號(hào)調(diào)理電路。電路圖如下:1.4 LCD顯示電路和按鍵電路利用LCD的SPI通信模式與MSP430單片機(jī)連接,這樣可以得到不錯(cuò)的通信速度,并且可以盡可能的減少M(fèi)SP430引腳的占用,具體電路這里就不給出了。(按照spi連接)利用簡(jiǎn)單獨(dú)立按鍵實(shí)現(xiàn)放大倍數(shù)調(diào)節(jié),采樣頻率設(shè)置等功能即

3、可。2.軟件設(shè)計(jì)2.1 單片機(jī)初始化對(duì)P2口初始化,打開P2口的中斷;將通信方式設(shè)置為硬件spi通信模式(注意spi通信在上升沿還是在下降沿開始)。WDTCTL=WDTPW+WDTHOLD; /關(guān)看門狗P1OUT = 0x00; / P1 setup for LED & reset output P1DIR |= BIT0 + BIT2 + BIT3 + BIT4 + BIT5; P1SEL = BIT1 + BIT2 + BIT4; P1SEL2 = BIT1 + BIT2 + BIT4; P2REN |= 0x38; P2DIR = 0x07; P2OUT = 0; P2IE |= 0x3

4、8; / P1.4 interrupt enabled P2IFG &= 0x38; will=0; UCA0CTL0 |= UCCKPL + UCMSB + UCMST + UCSYNC + UCCKPH ; / 3-pin, 8-bit SPI master UCA0CTL1 |= UCSSEL_2; / SMCLK UCA0BR0 |= 0x04; / /2 UCA0BR1 = 0; / UCA0MCTL = 0; / No modulation UCA0CTL1 &= UCSWRST; / *Initialize USCI state machine* P1OUT &= BIT5; /

5、 Now with SPI signals initialized, P1OUT |= BIT5; / reset slaveADC10初始化,開啟參考源和中斷。ADC10CTL0 = ADC10SHT_0 + REFON + ADC10ON + ADC10IE;ADC10CTL1 = INCH_6;ADC10AE0 |= 0x40; 顯示初始化,對(duì)LCD的界面顯示初始化。Initial_ILI9340C();Delay_ms(300);LCD_TEST_SingleColor(Black);LCD_TEST_SingleColor(Black);LCD_TEST_PartColor(Blue

6、);for(wh=22; wh220 ;wh+=10)LCD_draw_Line(wh,39,White);LCD_draw_Line(wh,79,White);LCD_draw_Line(wh,119,White);LCD_draw_Line(wh,159,White);LCD_draw_Line(wh,199,White);LCD_draw_Line(wh,239,White);LCD_draw_Line(wh,279,White);Delay_ms(100);for(co=2; co2 & key1key2 & key2key3) /(key1-100)/2)=(key2-100) te

7、mp0=key1; temp1=key2; temp2=key3; tempcir=ADC10MEM/5; ADC10CTL0 &= ENC;2.5 顯示刷新程序示波器是一個(gè)動(dòng)態(tài)顯示過(guò)程,因此在過(guò)程中可能會(huì)引起初始界面被部分覆蓋,以此需要定時(shí)刷新初始界面。trig+;if(trig%20=0)for(wh=22; wh220 ;wh+=10)LCD_draw_Line(wh,39,White);LCD_draw_Line(wh,79,White);LCD_draw_Line(wh,119,White);LCD_draw_Line(wh,159,White);LCD_draw_Line(wh,1

8、99,White);LCD_draw_Line(wh,239,White);LCD_draw_Line(wh,279,White);Delay_ms(300);for(co=2; co0;j-);void Delay_us(int value)/延時(shí)函數(shù)_uswhile (value)value-;void Delay_ms(int value)/延時(shí)函數(shù)_mswhile (value)Delay_us(999);value-;void LCD_Writ_Bus(char a) /數(shù)據(jù)寫入函數(shù) 8位 C_S0; UCA0TXBUF = a; _delay_cycles(50); while (

9、!(IFG2 & UCA0TXIFG); C_S1;void LCD_WRITE_CMD(char cmd)/8 bit C_D0; LCD_Writ_Bus(cmd);void LCD_WRITE_COM_DATA(char com_data)/8 bit C_D1; LCD_Writ_Bus(com_data);void LCD_WRITE_DATA(int a)/16位數(shù)據(jù),分兩次,每次送8位 C_D1; LCD_Writ_Bus(a8); LCD_Writ_Bus(a);/設(shè)置繪點(diǎn)窗口,x=0239,y=0319void Address_set(unsigned int x1,unsi

10、gned int x2,unsigned int y1,unsigned int y2) LCD_WRITE_CMD(0x2a); /x軸 LCD_WRITE_DATA(x1); LCD_WRITE_DATA(x2); LCD_WRITE_CMD(0x2b); /y軸 LCD_WRITE_DATA(y1); LCD_WRITE_DATA(y2); LCD_WRITE_CMD(0x2c);void LCD_TEST_SingleColor(int Discolor) int i,j;Address_set(0,239,0,319);for (i=0;i320;i+)for (j=0;j240;j

11、+)LCD_WRITE_DATA(Discolor);void LCD_TEST_PartColor(int Discolor) int i,j;Address_set(0,19,0,319);for (i=0;i320;i+)for (j=0;j20;j+)LCD_WRITE_DATA(Discolor);Address_set(220,239,0,319);for (i=0;i320;i+)for (j=220;j240;j+)LCD_WRITE_DATA(Discolor);/畫一條橫線void LCD_draw_Line(unsigned int x,unsigned int y,un

12、signed int color)int i;Address_set(x,x+4,y,y);for (i=0;i5;i+)LCD_WRITE_DATA(color);void LCD_draw_Col(unsigned int x,unsigned int y,unsigned int color)int i;Address_set(x,x,y,y+4);for (i=0;i5;i+)LCD_WRITE_DATA(color);/液晶主控初始化void Initial_ILI9340C(void) LCD_WRITE_CMD(0xCB); LCD_WRITE_COM_DATA(0x39); L

13、CD_WRITE_COM_DATA(0x2C); LCD_WRITE_COM_DATA(0x00); LCD_WRITE_COM_DATA(0x34); LCD_WRITE_COM_DATA(0x02); LCD_WRITE_CMD(0xCF); LCD_WRITE_COM_DATA(0x00); LCD_WRITE_COM_DATA(0XC1); LCD_WRITE_COM_DATA(0X30); LCD_WRITE_CMD(0xE8); LCD_WRITE_COM_DATA(0x85); LCD_WRITE_COM_DATA(0x00); LCD_WRITE_COM_DATA(0x78);

14、 LCD_WRITE_CMD(0xEA); LCD_WRITE_COM_DATA(0x00); LCD_WRITE_COM_DATA(0x00); LCD_WRITE_CMD(0xED); LCD_WRITE_COM_DATA(0x64); LCD_WRITE_COM_DATA(0x03); LCD_WRITE_COM_DATA(0X12); LCD_WRITE_COM_DATA(0X81); LCD_WRITE_CMD(0xF7); LCD_WRITE_COM_DATA(0x20); LCD_WRITE_CMD(0xC0); /Power control LCD_WRITE_COM_DATA

15、(0x23); /VRH5:0 LCD_WRITE_CMD(0xC1); /Power control LCD_WRITE_COM_DATA(0x10); /SAP2:0;BT3:0 LCD_WRITE_CMD(0xC5); /VCM control LCD_WRITE_COM_DATA(0x3e); /對(duì)比度調(diào)節(jié) LCD_WRITE_COM_DATA(0x28); LCD_WRITE_CMD(0xC7); /VCM control2 LCD_WRITE_COM_DATA(0x86); /- LCD_WRITE_CMD(0x36); / Memory Access Control LCD_WR

16、ITE_COM_DATA(0xC8); LCD_WRITE_CMD(0x3A); LCD_WRITE_COM_DATA(0x55); LCD_WRITE_CMD(0xB1); LCD_WRITE_COM_DATA(0x00); LCD_WRITE_COM_DATA(0x18); LCD_WRITE_CMD(0xB6); / Display Function Control LCD_WRITE_COM_DATA(0x08); LCD_WRITE_COM_DATA(0x82); LCD_WRITE_COM_DATA(0x27); LCD_WRITE_CMD(0xF2); / 3Gamma Func

17、tion Disable LCD_WRITE_COM_DATA(0x00); LCD_WRITE_CMD(0x26); /Gamma curve selected LCD_WRITE_COM_DATA(0x01); LCD_WRITE_CMD(0xE0); /Set Gamma LCD_WRITE_COM_DATA(0x0F); LCD_WRITE_COM_DATA(0x31); LCD_WRITE_COM_DATA(0x2B); LCD_WRITE_COM_DATA(0x0C); LCD_WRITE_COM_DATA(0x0E); LCD_WRITE_COM_DATA(0x08); LCD_

18、WRITE_COM_DATA(0x4E); LCD_WRITE_COM_DATA(0xF1); LCD_WRITE_COM_DATA(0x37); LCD_WRITE_COM_DATA(0x07); LCD_WRITE_COM_DATA(0x10); LCD_WRITE_COM_DATA(0x03); LCD_WRITE_COM_DATA(0x0E); LCD_WRITE_COM_DATA(0x09); LCD_WRITE_COM_DATA(0x00); LCD_WRITE_CMD(0XE1); /Set Gamma LCD_WRITE_COM_DATA(0x00); LCD_WRITE_CO

19、M_DATA(0x0E); LCD_WRITE_COM_DATA(0x14); LCD_WRITE_COM_DATA(0x03); LCD_WRITE_COM_DATA(0x11); LCD_WRITE_COM_DATA(0x07); LCD_WRITE_COM_DATA(0x31); LCD_WRITE_COM_DATA(0xC1); LCD_WRITE_COM_DATA(0x48); LCD_WRITE_COM_DATA(0x08); LCD_WRITE_COM_DATA(0x0F); LCD_WRITE_COM_DATA(0x0C); LCD_WRITE_COM_DATA(0x31);

20、LCD_WRITE_COM_DATA(0x36); LCD_WRITE_COM_DATA(0x0F); LCD_WRITE_CMD(0x11); /Exit Sleep Delay_ms(120); LCD_WRITE_CMD(0x29); /Display on LCD_WRITE_CMD(0x2c);/LCD進(jìn)入休眠狀態(tài)void LCD_Sleep_ILI9340C(void) LCD_WRITE_CMD(0x28);/Display off Delay_ms(20); LCD_WRITE_CMD(0x10);/Enter Sleep mode/LCD退出休眠狀態(tài)void LCD_Exit

21、Sleep_ILI9340C(void) LCD_WRITE_CMD(0x11);/Exit Sleep Delay_ms(120); LCD_WRITE_CMD(0x29);/Display on LCD_WRITE_CMD(0x2c);void main()WDTCTL=WDTPW+WDTHOLD; /關(guān)看門狗P1OUT = 0x00; / P1 setup for LED & reset output P1DIR |= BIT0 + BIT2 + BIT3 + BIT4 + BIT5; P1SEL = BIT1 + BIT2 + BIT4; P1SEL2 = BIT1 + BIT2 +

22、BIT4; P2REN |= 0x38; P2DIR = 0x07; P2OUT = 0; P2IE |= 0x38; / P1.4 interrupt enabled P2IFG &= 0x38; will=0; UCA0CTL0 |= UCCKPL + UCMSB + UCMST + UCSYNC + UCCKPH ; / 3-pin, 8-bit SPI master UCA0CTL1 |= UCSSEL_2; / SMCLK UCA0BR0 |= 0x04; / /2 UCA0BR1 = 0; / UCA0MCTL = 0; / No modulation UCA0CTL1 &= UC

23、SWRST; / *Initialize USCI state machine* P1OUT &= BIT5; / Now with SPI signals initialized, P1OUT |= BIT5; / reset slave _delay_cycles(75); / Wait for slave to initializeInitial_ILI9340C();Delay_ms(300);LCD_TEST_SingleColor(Black);LCD_TEST_SingleColor(Black);LCD_TEST_PartColor(Blue);for(wh=22; wh220

24、 ;wh+=10)LCD_draw_Line(wh,39,White);LCD_draw_Line(wh,79,White);LCD_draw_Line(wh,119,White);LCD_draw_Line(wh,159,White);LCD_draw_Line(wh,199,White);LCD_draw_Line(wh,239,White);LCD_draw_Line(wh,279,White);Delay_ms(100);for(co=2; co320 ;co+=10)LCD_draw_Col(69,co,White);LCD_draw_Col(119,co,White);LCD_dr

25、aw_Col(169,co,White);Delay_ms(100);ADC10CTL0 = ADC10SHT_0 + REFON + ADC10ON + ADC10IE; ADC10CTL1 = INCH_6; ADC10AE0 |= 0x40; / PA.1 ADC option selectwhile(1)for(cir=0;cir2 & key1key2 & key2key3) /(key1-100)/2)=(key2-100) temp0=key1; temp1=key2; temp2=key3; tempcir=ADC10MEM/5; ADC10CTL0 &= ENC; switc

26、h(chan)case 0: ADC10CTL1 = INCH_6; break;case 1: ADC10CTL1 |= ADC10DIV0 + ADC10DIV1; break;case 2: ADC10CTL1 |= ADC10DIV0 + ADC10DIV2; break;case 3: ADC10CTL1 |= ADC10DIV0 + ADC10DIV1 + ADC10DIV2; break;for(cir=0;cir320;cir+)Address_set(20+tempcir,20+tempcir,cir,cir);LCD_WRITE_DATA(Yellow);Delay_ms(300);for(cir=0;cir320;cir+)Address_set(20+tempcir,20+tempcir,cir,cir);LCD_WRITE_DATA(Yellow);Delay_ms(300);for(cir=0;cir320;cir+)Address_set(20+tempcir,20+tempcir,cir,cir);LCD_WRITE_DATA(Yellow);Delay_ms(300);for(cir=0;cir320;cir+)Address_set(20+tempcir,20+tempcir,cir,cir);LCD_WRITE

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論