




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、單片機(jī)課程設(shè)計(jì)單片機(jī)控制直流電動(dòng)機(jī)姓名:xxx 學(xué)號(hào):xxx專業(yè):xxx指導(dǎo)老師:xxx組號(hào):第xxx組單片機(jī)控制直流電機(jī)摘要隨著時(shí)代的進(jìn)步和科技的發(fā)展,電機(jī)調(diào)速系統(tǒng)在工農(nóng)業(yè)生產(chǎn)、交通運(yùn)輸以及日常傷害中起著越來(lái)越重要的作用、由于直流電機(jī)劇院良好的起、制動(dòng)性能,宜與在廣泛范圍內(nèi)平滑調(diào)速。在軋鋼機(jī)、礦井卷機(jī),挖掘機(jī)、金屬切削機(jī)床、金屬切削機(jī)床、造紙機(jī)高層電梯等領(lǐng)域中得到廣泛應(yīng)用。長(zhǎng)期以來(lái),由于直流調(diào)速系統(tǒng)的性能指標(biāo)優(yōu)于交流調(diào)速系統(tǒng)。 PWM控制技術(shù)就是以該結(jié)論為理論基礎(chǔ),使輸出端得到一系列幅值相等而寬度不相等的脈沖,用這些脈沖來(lái)代替正弦波或其他所需要的波形。按一定的規(guī)則對(duì)各種脈沖的寬度進(jìn)行調(diào)制,既
2、可改變逆變電路輸出電壓大小,也可以改變輸出頻率。PWM控制技術(shù)及其控制簡(jiǎn)單、靈活和動(dòng)態(tài)響應(yīng)好的優(yōu)點(diǎn)而成為電子技術(shù)最廣泛應(yīng)用的控制方式,也是人們研究的熱點(diǎn)。由于必須在工作期間改變直流電機(jī)的速度,直流電機(jī)的控制是一個(gè)較困難的問(wèn)題。直流電機(jī)高效運(yùn)行的最常見(jiàn)方法是施加一個(gè) PWM(脈寬調(diào)制)方波,其占空比對(duì)應(yīng)于所需速度。電機(jī)起到一個(gè)低通濾波器作用,將PWM信號(hào)轉(zhuǎn)換為有效直流電平。特別是對(duì)于微處理器驅(qū)動(dòng)的直流電機(jī),由于PWM信號(hào)相對(duì)容易產(chǎn)生,這種驅(qū)動(dòng)方式使用的更為廣泛。設(shè)計(jì)要求 采用單片機(jī)設(shè)計(jì)一個(gè)控制直流電機(jī)并測(cè)量轉(zhuǎn)速的裝置。單片機(jī)擴(kuò)展有A/D轉(zhuǎn)換芯片ADC0809和D/A轉(zhuǎn)換芯片DAC0832。 (1
3、)通過(guò)改變A/D輸入端可變電阻來(lái)改變A/D的輸入電壓,D/A輸入檢測(cè)量大小,進(jìn)而改變直流電機(jī)的轉(zhuǎn)速。 (2)手動(dòng)控制。在鍵盤(pán)上設(shè)置兩個(gè)按鍵直流電動(dòng)機(jī)加速鍵和直流電機(jī)減速鍵。在手動(dòng)狀態(tài)下,每按一次鍵,電機(jī)的轉(zhuǎn)速按照約定的速率改變。(3)鍵盤(pán)列掃描(4 ´ 6)。實(shí)驗(yàn)原理 與步進(jìn)電機(jī)類(lèi)似,直流電機(jī)也可精確地控制旋轉(zhuǎn)速度或轉(zhuǎn)矩。 直流電機(jī)是通過(guò)兩個(gè)磁場(chǎng)的互作用產(chǎn)生旋轉(zhuǎn)。其結(jié)構(gòu)如下頁(yè)圖所示,固定部分(定子)上,裝設(shè)了一對(duì)直流勵(lì)磁的靜止的主磁極N和S,在旋轉(zhuǎn)部分(轉(zhuǎn)子)上裝設(shè)電樞鐵心。定子與轉(zhuǎn)子之間有一氣隙。在電樞鐵心上放置了由A和X 兩根導(dǎo)體連成的電樞線圈,線圈的首端和末
4、端分別連到兩個(gè)圓弧形的銅片上,此銅片稱為換向片。 直流電機(jī)的速度與施加的電壓成正比,輸出轉(zhuǎn)矩則與電流成正比。由于必須在工作期間改變直流電機(jī)的速度,直流電機(jī)的控制是一個(gè)較困難的問(wèn)題。直流電機(jī)高效運(yùn)行的最常見(jiàn)方法是施加一個(gè) PWM(脈寬調(diào)制)方波,其占空比對(duì)應(yīng)于所需速度。電機(jī)起到一個(gè)低通濾波器作用,將PWM信號(hào)轉(zhuǎn)換為有效直流電平。特別是對(duì)于微處理器驅(qū)動(dòng)的直流電機(jī),由于PWM信號(hào)相對(duì)容易產(chǎn)生,這種驅(qū)動(dòng)方式使用的更為廣泛。利用直流電機(jī)的速度與施加電壓成正比的原理,通過(guò)滑動(dòng)變阻器向ADC0809輸入控制電壓信號(hào),經(jīng)AD后,輸入到AT89C51中,AT89C51將此信號(hào)轉(zhuǎn)發(fā)給DAC0832,通過(guò)功放電路放
5、大后,驅(qū)動(dòng)直流電機(jī)。設(shè)計(jì)方案1.系統(tǒng)控制電路采用STC89C52單片機(jī)由軟件產(chǎn)生脈沖調(diào)制信號(hào),來(lái)對(duì)直流電機(jī)進(jìn)行控制。2.電機(jī)控制電路采用由三極管搭成的H型橋電路來(lái)控制電機(jī)的轉(zhuǎn)動(dòng)。3.鍵盤(pán)電路采用行式鍵盤(pán)實(shí)現(xiàn)電機(jī)轉(zhuǎn)速的加速減速以及正反轉(zhuǎn)的控制,在手動(dòng)狀態(tài)下,每按一次,其轉(zhuǎn)速相應(yīng)發(fā)生改變。4.顯示電路采用LM016L對(duì)電機(jī)運(yùn)動(dòng)狀態(tài)進(jìn)行顯示。系統(tǒng)組成框圖系統(tǒng)總組成框圖以STC89C52為主控芯片,采用橋式電路對(duì)直流電機(jī)驅(qū)動(dòng),如下所示:H型橋式驅(qū)動(dòng)電路直流電機(jī)單片機(jī)主控電路鍵盤(pán)控制電路硬件電路設(shè)計(jì)1.鍵盤(pán)控制電路按下DEC按鈕,電機(jī)轉(zhuǎn)速降低;按下INC按鈕,電機(jī)轉(zhuǎn)速增加。2.單片機(jī)主控電路圖該部分電路
6、主要由STC89C52主控芯片和晶振組成。STC89C52芯片是低功耗8位CMOS微處理器,提供串口程序下載口。它主要有以下幾個(gè)特點(diǎn):256字節(jié)的RAM;4KB的ROM;32個(gè)通用I/O口線,為用戶提供了豐富的I/O口資源;32個(gè)通用工作寄存器;2個(gè)定時(shí)器/計(jì)數(shù)器;具有6個(gè)中斷源;4.05.5V的工作電壓等。晶振給單片機(jī)正常工作提供穩(wěn)定的信號(hào)。3.H型橋式電機(jī)驅(qū)動(dòng)電路H橋式電機(jī)驅(qū)動(dòng)電路包括4個(gè)三極管和一個(gè)電機(jī)。要使電機(jī)運(yùn)轉(zhuǎn),只須導(dǎo)通對(duì)角線上的一對(duì)三極管。在此設(shè)計(jì)中用到的完整的驅(qū)動(dòng)電路如下:主控程序程序流程開(kāi)始取反控制方向位減速加速消去TF0,重裝初值方向控制按鍵復(fù)位還原按鍵加速控制按鍵減速控制
7、按鍵主控程序系統(tǒng)初始化總仿真電路圖程序清單1.主程序#include "AT89X51.h"#include <intrins.h>#include <stdio.h>#include "led.h"#include "uart.h"#include "timer0.h"#include "timer1.h"#include "common.h"#include "ADC0831.h"#include "lcd1602.h
8、"#include "keyboard.h"#include "ISR.h"#include "DaType_Change.h"#define DcMotor_Direction_PuChar8 code *String1 = "DC Motor Control"uChar8 code *String2 = "pwm: /100"uChar8 PWM_buff3;void main(void)LCD_Init();timer0_Init();timer1_Init();#ifdef D
9、cMotor_Direction_PDer1=0;#else Der1=1;#endifLED_Run_EN();WrStrLCD(0,0,String1);WrStrLCD(1,0,String2);while(1)key_Process(); /按鍵處理子程序Char_To_Str(PWM_duty, &PWM_buff0); /液晶顯示子程序 WrStrLCD(1,4,&PWM_buff0);2.子程序#include <ADC.h>unsigned char value_converted=0x00; unsigned char value_AN6=0x00
10、; unsigned char value_AN7=0x00; bit end_of_convertion=0; void ADC_Config(void)ADCF = 0xC0;ADCLK = 0x06; ADCON = 0x20; EA = 1; EADC = 1;while(1)ADCON &= 0x07; ADCON |= 0x06;ADCON &= 0x40; ADCON |= 0x08;while(!end_of_convertion); end_of_convertion=0; value_AN6=value_converted;ADCON &= 0x07
11、; ADCON |= 0x07; ADCON &= 0x40; ADCON |= 0x08; while(!end_of_convertion);end_of_convertion=0;value_AN7=value_converted;void it_Adc(void) interrupt 8ADCON &= 0x10;value_converted = ADDH;end_of_convertion=1;.#include "adc0831.h"void ADC_CLK(void) adcclk=1; _nop_(); adcclk=0; _nop_();
12、 uChar8 Read_ADC(void) uChar8 i;bit temp = ADC_Val0;adccs=0;ADC_CLK();while(adcdo); for (i=0; i<8; i+) ADC_CLK();ADC_Val = (ADC_Val<<1)|adcdo; adccs=1;return(ADC_Val);void IntToStr(uInt16 t, uChar8 *str, uChar8 n) uChar8 a5; char i, j; a0=(t/10000)%10; /取得整數(shù)值到數(shù)組 a1=(t/1000)%10; a2=(t/100)%1
13、0; a3=(t/10)%10; a4=(t/1)%10; for(i=0; i<5; i+) /轉(zhuǎn)成ASCII碼 ai=ai+'0' for(i=0; ai='0' && i<=3; i+);/計(jì)算空格(0)數(shù)量 for(j=5-n; j<i; j+) /填充空格 *str=' ' str+; for(; i<5; i+) *str=ai; str+; /加入有效的數(shù)字 *str='0' .#include "beep.h"sbit beep=P14;void Beep
14、Ring(void)beep=0;DelayMS(100);beep=1;DelayMS(100);#include "DaType_Change.h"void Char_To_Str(uChar8 Data, uChar8 *str) uChar8 a4; uChar8 i,j; a0=(Data/100)%10; a1=(Data/10)%10; a2=(Data/1)%10; for(i=0; i<3; i+) /轉(zhuǎn)成ASCII碼 ai=ai+'0' for(i=0; ai='0' && i<3; i+);
15、for(j=0; j<i; j+) /填充空格 *str=' ' str+; for(; i<3; i+) *str=ai; str+; /加入有效的數(shù)字 *str='0' #include"delay.h"void DelayUS(uChar8 ValUS)/精確延時(shí),18uS+(ValUS-1)*8usfor(;ValUS>0;ValUS-);static void Delay1MS(void)uChar8 i=2,j=199;dowhile(-j);while(-i);void DelayMS(uInt16 ValMS
16、)uInt16 uiVal;for(uiVal=0;uiVal<ValMS;uiVal+)Delay1MS();#include"DS18B20.h"sbit DQ=P10;void SendDS18B20(uChar8 SendDat)uChar8 i;for(i=0;i<8;i+)DQ=0;_nop_();_nop_();_nop_();_nop_();/延時(shí)4usif(SendDat&0x01)=0)DQ=0;elseDQ=1;SendDat=SendDat>>1;DelayUS(5);DQ=1;uChar8 Init_DS18B20(
17、void)uChar8 i;DQ=0;DelayUS(61);DQ=1;DelayUS(8);for(i=0;i<100;i+)if(DQ)break;DQ=1;DelayUS(11);return 0xff;uChar8 ReceiveDS18B20(void)uChar8 tmp=0;uChar8 i;for(i=0;i<8;i+)tmp=tmp>>1;DQ=0;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();DQ=1;DelayUS(1);if(DQ)tmp|=0x80;DQ=1;_nop_();_nop_();_n
18、op_();_nop_();_nop_();_nop_();return(tmp);uInt16 ReadDS18B20(void)unionuInt16 Data;uChar8 tmp2;temp;temp.tmp1=ReceiveDS18B20();temp.tmp0=ReceiveDS18B20();return(temp.Data);uInt16 GetTemper(void)uInt16 Temper;DQ=1;Init_DS18B20();SendDS18B20(0xcc);SendDS18B20(0xbe);Temper=ReadDS18B20();return(Temper);
19、.#include "ISR.h"uInt16 ms_Counter;uChar8 ucCounter;uInt16 key_l;/按鍵低電平計(jì)數(shù)器uChar8 key_h;/按鍵高電平計(jì)數(shù)器uChar8 key;uChar8 kpush;bit Update_ADC_Flag=0;void ISR_Ext0(void) interrupt 0void ISR_timer0(void) interrupt 1TH0=(65535-1000)/255;TL0=(65535-1000)%255;if(ms_Counter=PWM_duty)Der2 = 0;ms_Counter
20、+;if(ms_Counter=PWM_cycle)ms_Counter=0;if(PWM_duty) Der2 = 1;void ISR_timer1(void) interrupt 3TH1=0xFB;TL1=0x1E;if(P0&0x0C)=0x0C)if(key_l>30)&&(key_l<800)&&(key_h>30)/釋放按鍵,如果之前按鍵的時(shí)間1s,讀出鍵值key=kpush;if(+key_h)>200) key_h=0;/記錄高電平時(shí)間key_l=0;if(key>0x80) key=0;elsekpus
21、h=P0&0x0C;key_l+;if(key_l>800)&&(key_h>30)key=kpush|0x80;key_h=0;key_l=0;#include "keyboard.h"#include "ISR.h"#include "LED.h"uChar8 PWM_duty = 50;uChar8 PWM_cycle = 100; #include "keyboard.h"#include "ISR.h"#include "LED.h&quo
22、t;uChar8 PWM_duty = 50;uChar8 PWM_cycle = 100;/4*4矩陣式鍵盤(pán)掃描uChar8 Key_Scan(void)uChar8 code_h,code_l;P3=0xF0;if(P3&0xF0)!=0xF0)DelayMS(1);if(P3&0xF0)!=0xF0)code_h=0xFE;while(P3&0xF8)!=0xF0)P3=code_h;if(P3&0xF0)!=0xF0)code_l=(P3&0xF0|0x0F);return(code_h)+(code_l);else code_h=(code_h
23、<<1)|0x01;return(0);/4*4矩陣式鍵盤(pán)譯碼uChar8 Get_Key_Val(uChar8 key_temp)switch(key_temp)case 0x14 : return 1;case 0x24 : return 2;case 0x44 : return 3;case 0x12 : return 4;case 0x22 : return 5;case 0x42 : return 6;case 0x11 : return 7;case 0x21 : return 8;case 0x41 : return 9;default : return 0;/按鍵處
24、理函數(shù)void key_Process(void)switch(key)case 0x08:/KB1鍵按下if(PWM_duty=100) PWM_duty=100;else PWM_duty+;break;case 0x88:/KB1鍵按下if(PWM_duty=100) PWM_duty=100;else if(PWM_duty<=90)PWM_duty=PWM_duty+10;break;case 0x04: /KB2鍵按下if(PWM_duty=0x00) PWM_duty=0x00;else PWM_duty-;break;case 0x84: /KB2鍵按下if(PWM_du
25、ty=0x00) PWM_duty=0x00;else if(PWM_duty>=10)PWM_duty=PWM_duty-10;break;default : break;key = 0x1C;uChar8 Key_Scan(void)uChar8 code_h,code_l;P3=0xF0;if(P3&0xF0)!=0xF0)DelayMS(1);if(P3&0xF0)!=0xF0)code_h=0xFE;while(P3&0xF8)!=0xF0)P3=code_h;if(P3&0xF0)!=0xF0)code_l=(P3&0xF0|0x0F)
26、;return(code_h)+(code_l);else code_h=(code_h<<1)|0x01;return(0);/4*4矩陣式鍵盤(pán)譯碼uChar8 Get_Key_Val(uChar8 key_temp)switch(key_temp)case 0x14 : return 1;case 0x24 : return 2;case 0x44 : return 3;case 0x12 : return 4;case 0x22 : return 5;case 0x42 : return 6;case 0x11 : return 7;case 0x21 : return 8;
27、case 0x41 : return 9;default : return 0;/按鍵處理函數(shù)void key_Process(void)switch(key)case 0x08:/KB1鍵按下if(PWM_duty=100) PWM_duty=100;else PWM_duty+;break;case 0x88:/KB1鍵按下if(PWM_duty=100) PWM_duty=100;else if(PWM_duty<=90)PWM_duty=PWM_duty+10;break;case 0x04: /KB2鍵按下if(PWM_duty=0x00) PWM_duty=0x00;else
28、 PWM_duty-;break;case 0x84: /KB2鍵按下if(PWM_duty=0x00) PWM_duty=0x00;else if(PWM_duty>=10)PWM_duty=PWM_duty-10;break;default : break;key = 0x1C;#include"lcd1602.h"sbit RS=P05;sbit RW=P06;sbit EN=P07;static void DectectBusyBit(void)P2=0xFF;RS=0;RW=1;EN=1;DelayMS(1);while(P2&0x80);EN=0;
29、void WrComLCD(uChar8 ComVal)RS=0;RW=0;EN=1;P2=ComVal;DelayMS(1);EN=0;void WrDatLCD(uChar8 DatVal)RS=1;RW=0;EN=1;P2=DatVal;DelayMS(1);EN=0;void LCD_Init(void)WrComLCD(0x38);/16x2行顯示,5x7點(diǎn)陣,8位數(shù)據(jù)接口DelayMS(1);WrComLCD(0x38);WrComLCD(0x01);/顯示清屏WrComLCD(0x06);/光標(biāo)自增,畫(huà)面不動(dòng)DelayMS(1);WrComLCD(0x0C);/開(kāi)顯示,關(guān)光標(biāo)并不
30、閃爍void ClearDisLCD(void)WrComLCD(0x01);DelayMS(1);void WrStrLCD(bit Row,uChar8 Column,uChar8 *String)if(!Row) WrComLCD(0x80+Column);else WrComLCD(0xC0+Column);while(*String)WrDatLCD(*String);String+;void WrCharLCD(bit Row,uChar8 Column,uChar8 Dat)if(!Row) WrComLCD(0x80+Column);else WrComLCD(0xC0+Col
31、umn);WrDatLCD(Dat);#include "led.h"void LED_Run_EN()LED_Run = 0;void LED_Run_disEN()LED_Run = 1;void LED_Alarm_EN()LED_Alarm = 0;void LED_Alarm_disEN()LED_Alarm = 1;void LED_Flash(void)P01 = 0;DelayMS(1000);P01 = 1;DelayMS(1000);#include "SPI.h"char serial_data;char data_example=
32、0x55;char data_save;bit transmit_completed= 0;void SPI_Config(void)SPCON |= 0x10; /* Master mode */SPCON |= 0x82; /* Fclk Periph/128 */SPCON |= 0x20; /* P1.1 is available as standard I/O pin */SPCON &= 0x08; /* CPOL=0; transmit mode example */SPCON |= 0x04; /* CPHA=1; transmit mode example */IEN
33、1 |= 0x04; /* enable spi interrupt */SPCON |= 0x40; /* run spi */EA=1; /* enable interrupts */void it_SPI(void) interrupt 9 /* interrupt address is 0x004B */switch( SPSTA ) /* read and clear spi status register */case 0x80:serial_data=SPDAT; transmit_completed=1;break;case 0x10:break;case 0x40:break;#include"timer0.h"void timer0_Init(void)TMOD=(TMOD&0xF0)|0x01);/定時(shí)器0工作在模式
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 幕墻施工安裝合同
- 三農(nóng)村社區(qū)公共基礎(chǔ)設(shè)施建設(shè)規(guī)劃方案
- 企業(yè)法律咨詢服務(wù)合同
- 員工年終工作總結(jié)報(bào)告
- 高中語(yǔ)文必修(下)第二單元《竇娥冤》教學(xué)設(shè)計(jì)
- Unit 6 Review Lesson 1(教學(xué)設(shè)計(jì))-2024-2025學(xué)年北師大版(三起)(2024)英語(yǔ)三年級(jí)上冊(cè)
- 第8課 歐洲思想解放運(yùn)動(dòng) 教學(xué)設(shè)計(jì)-2023-2024學(xué)年高一統(tǒng)編版2019必修中外歷史綱要下冊(cè)
- 10 塑料 教學(xué)設(shè)計(jì)-2024-2025學(xué)年科學(xué)一年級(jí)上冊(cè)湘科版
- 高中信息技術(shù)選修3教學(xué)設(shè)計(jì)-3.1 網(wǎng)絡(luò)的功能與構(gòu)造1-教科版
- 崇州北歐風(fēng)格墻布施工方案
- 披薩制作流程
- 2025年湖南九嶷職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 農(nóng)產(chǎn)品貯運(yùn)與加工考試題(附答案)
- 2024年司法考試完整真題及答案
- 【化學(xué)】高中化學(xué)手寫(xiě)筆記
- 2024年執(zhí)業(yè)藥師繼續(xù)教育專業(yè)答案
- 2024年安全員-C證考試題庫(kù)及答案(1000題)
- 膽管惡性腫瘤護(hù)理查房課件
- 電烤箱的使用方法ppt
- 企事業(yè)單位全面風(fēng)險(xiǎn)清單(含內(nèi)控風(fēng)險(xiǎn)-2023版-雷澤佳編制)
- 勾股定理(公開(kāi)課)
評(píng)論
0/150
提交評(píng)論