PWM控制就是產生一定周期,占空比不同的方波信號,當占空比較大時,電機轉速較高,否則電機轉速較低。當采用FPGA產生PWM波形時,只需FPGA內部資源就可以實現,數字比較器的一端接設定值輸出,另一端接線性遞增計數器輸出。當線性計數器的計數值小于設定值時輸出低電平,當計數器大于設定值時輸出高電平,這樣就可通過改變設定值,產生占空比不同的方波信號,從而達到控制直流電機轉速的目的。 直流電機控制電路主要由2部分組成,如圖1所示: FPGA中PWM脈寬調制信號產生電路; FPGA中正/反轉方向控制電路
上傳時間: 2017-05-19
上傳用戶:colinal
L3_1.m: 純量量化器的設計(程式) L3_2.m: 量化造成的假輪廓(程式) L3_3.m: 向量量化器之碼簿的產生(程式) L3_4.m: 利用LBG訓練三個不同大小與維度的碼簿並分別進行VQ(程式) gau.m: ML量化器設計中分母的計算式(函式) gau1.m: ML量化器設計中分子的計算式(函式) LBG.m: LBG訓練法(函式) quantize.m:高斯機率密度函數的非均勻量化(函式) VQ.m: 向量量化(函式) L3_2.bmp: 影像檔 lena.mat: Matlab的矩陣變數檔
上傳時間: 2013-12-26
上傳用戶:jiahao131
飛思卡爾12的定時器功能,能實現周期的定時,12定時器的基本功能
上傳時間: 2013-11-30
上傳用戶:linlin
5/8分頻器,實現分頻功能,受外部周期信號激勵的震蕩,其頻率恰為激勵信號頻率的純分數,都叫做分頻。
標簽: 分頻器
上傳時間: 2017-08-22
上傳用戶:zwei41
詳細分析了一種新穎的Boost 軟開關變換器,在傳統的Boost 變換器基礎上加上緩沖元件電感和電容,從而實現開關管的零電流開通和零電壓關斷。提出了基于DSP 的新型控制算法,該算法僅需在一個開關周期內采樣負載電流和輸入電壓來計算占空比,實現功率因數校正(PFC)的目的,控制簡單,實時性好。實驗結果表明,該新型的變換器工作在軟開關模式下,并且實現輸入側的單位功率因數。
上傳時間: 2016-04-27
上傳用戶:CAmuxue
/****************temic*********t5557***********************************/ #include <at892051.h> #include <string.h> #include <intrins.h> #include <stdio.h> #define uchar unsigned char #define uint unsigned int #define ulong unsigned long //STC12C2051AD的SFR定義 sfr WDT_CONTR = 0xe1;//stc2051的看門狗?????? /**********全局常量************/ //寫卡的命令 #define write_command0 0//寫密碼 #define write_command1 1//寫配置字 #define write_command2 2//密碼寫數據 #define write_command3 3//喚醒 #define write_command4 4//停止命令 #define TRUE 1 #define FALSE 0 #define OK 0 #define ERROR 255 //讀卡的時間參數us #define ts_min 250//270*11.0592/12=249//取近似的整數 #define ts_max 304//330*11.0592/12=304 #define t1_min 73//90*11.0592/12=83:-10調整 #define t1_max 156//180*11.0592/12=166 #define t2_min 184//210*11.0592/12=194 #define t2_max 267//300*11.0592/12=276 //***********不采用中斷處理:采用查詢的方法讀卡時關所有中斷****************/ sbit p_U2270B_Standby = P3^5;//p_U2270B_Standby PIN=13 sbit p_U2270B_CFE = P3^3;//p_U2270B_CFE PIN=6 sbit p_U2270B_OutPut = P3^7;//p_U2270B_OutPut PIN=2 sbit wtd_sck = P1^7;//SPI總線 sbit wtd_si = P1^3; sbit wtd_so = P1^2; sbit iic_data = P1^2;//lcd IIC sbit iic_clk = P1^7; sbit led_light = P1^6;//測試綠燈 sbit led_light1 = P1^5;//測試紅燈 sbit led_light_ok = P1^1;//讀卡成功標志 sbit fengmingqi = P1^5; /***********全局變量************************************/ uchar data Nkey_a[4] = {0xA0, 0xA1, 0xA2, 0xA3};//初始密碼 //uchar idata card_snr[4]; //配置字 uchar data bankdata[28] = {1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7}; //存儲卡上用戶數據(1-7)7*4=28 uchar data cominceptbuff[6] = {1,2,3,4,5,6};//串口接收數組ram uchar command; //第一個命令 uchar command1;// //uint temp; uchar j,i; uchar myaddr = 8; //uchar ywqz_count,time_count; //ywqz jishu: uchar bdata DATA; sbit BIT0 = DATA^0; sbit BIT1 = DATA^1; sbit BIT2 = DATA^2; sbit BIT3 = DATA^3; sbit BIT4 = DATA^4; sbit BIT5 = DATA^5; sbit BIT6 = DATA^6; sbit BIT7 = DATA^7; uchar bdata DATA1; sbit BIT10 = DATA1^0; sbit BIT11 = DATA1^1; sbit BIT12 = DATA1^2; sbit BIT13 = DATA1^3; sbit BIT14 = DATA1^4; sbit BIT15 = DATA1^5; sbit BIT16 = DATA1^6; sbit BIT17 = DATA1^7; bit i_CurrentLevel;//i_CurrentLevel BIT 00H(Saves current level of OutPut pin of U2270B) bit timer1_end; bit read_ok = 0; //緩存定時值,因用同一個定時器 union HLint { uint W; struct { uchar H;uchar L; } B; };//union HLint idata a union HLint data a; //緩存定時值,因用同一個定時器 union HLint0 { uint W; struct { uchar H; uchar L; } B; };//union HLint idata a union HLint0 data b; /**********************函數原型*****************/ //讀寫操作 void f_readcard(void);//全部讀出1~7 AOR喚醒 void f_writecard(uchar x);//根據命令寫不同的內容和操作 void f_clearpassword(void);//清除密碼 void f_changepassword(void);//修改密碼 //功能子函數 void write_password(uchar data *data p);//寫初始密碼或數據 void write_block(uchar x,uchar data *data p);//不能用通用指針 void write_bit(bit x);//寫位 /*子函數區*****************************************************/ void delay_2(uint x) //延時,時間x*10us@12mhz,最小20us@12mhz { x--; x--; while(x) { _nop_(); _nop_(); x--; } _nop_();//WDT_CONTR=0X3C;不能頻繁的復位 _nop_(); } ///////////////////////////////////////////////////////////////////// void initial(void) { SCON = 0x50; //串口方式1,允許接收 //SCON =0x50; //01010000B:10位異步收發,波特率可變,SM2=0不用接收到有效停止位才RI=1, //REN=1允許接收 TMOD = 0x21; //定時器1 定時方式2(8位),定時器0 定時方式1(16位) TCON = 0x40; //設定時器1 允許開始計時(IT1=1) TH1 = 0xfD; //FB 18.432MHz 9600 波特率 TL1 = 0xfD; //fd 11.0592 9600 IE = 0X90; //EA=ES=1 TR1 = 1; //啟動定時器 WDT_CONTR = 0x3c;//使能看門狗 p_U2270B_Standby = 0;//單電源 PCON = 0x00; IP = 0x10;//uart you xian XXXPS PT1 PX1 PT0 PX0 led_light1 = 1; led_light = 0; p_U2270B_OutPut = 1; } /************************************************/ void f_readcard()//讀卡 { EA = 0;//全關,防止影響跳變的定時器計時 WDT_CONTR = 0X3C;//喂狗 p_U2270B_CFE = 1;// delay_2(232); //>2.5ms /* // aor 用喚醒功能來防碰撞 p_U2270B_CFE = 0; delay_2(18);//start gap>150us write_bit(1);//10=操作碼讀0頁 write_bit(0); write_password(&bankdata[24]);//密碼block7 p_U2270B_CFE =1 ;// delay_2(516);//編程及確認時間5.6ms */ WDT_CONTR = 0X3C;//喂狗 led_light = 0; b.W = 0; while(!(read_ok == 1)) { //while(p_U2270B_OutPut);//等一個穩定的低電平?超時判斷? while(!p_U2270B_OutPut);//等待上升沿的到來同步信號檢測1 TR0 = 1; //deng xia jiang while(p_U2270B_OutPut);//等待下降沿 TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1;//定時器晚啟動10個周期 //同步頭 if((324 < a.W) && (a.W < 353)) ;//檢測同步信號1 else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } //等待上升沿 while(!p_U2270B_OutPut); TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1;//b.N1<<=8; if(a.B.L < 195);//0.5p else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } //讀0~7塊的數據 for(j = 0;j < 28;j++) { //uchar i; for(i = 0;i < 16;i++)//8個位 { //等待下降沿的到來 while(p_U2270B_OutPut); TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1; if(t2_max < a.W/*)&&(a.W < t2_max)*/)//1P { b.W >>= 2;//先左移再賦值 b.B.L += 0xc0; i++; } else if(t1_min < a.B.L/*)&&(a.B.L < t1_max)*/)//0.5p { b.W >>= 1; b.B.L += 0x80; } else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } i++; while(!p_U2270B_OutPut);//上升 TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1; if(t2_min < a.W/*)&&(a.W < t2_max)*/)//1P { b.W >>= 2; i++; } else if(t1_min < a.B.L/*a.W)&&(a.B.L < t1_max)*/)//0.5P //else if(!(a.W==0)) { b.W >>= 1; //temp+=0x00; //led_light1=0;led_light=1;delay_2(40000); } else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } i++; } //取出奇位 DATA = b.B.L; BIT13 = BIT7; BIT12 = BIT5; BIT11 = BIT3; BIT10 = BIT1; DATA = b.B.H; BIT17 = BIT7; BIT16 = BIT5; BIT15 = BIT3; BIT14 = BIT1; bankdata[j] = DATA1; } read_ok = 1;//讀卡完成了 read_error: _nop_(); } } /***************************************************/ void f_writecard(uchar x)//寫卡 { p_U2270B_CFE = 1; delay_2(232); //>2.5ms //psw=0 standard write if (x == write_command0)//寫密碼:初始化密碼 { uchar i; uchar data *data p; p = cominceptbuff; p_U2270B_CFE = 0; delay_2(31);//start gap>330us write_bit(1);//寫操作碼1:10 write_bit(0);//寫操作碼0 write_bit(0);//寫鎖定位0 for(i = 0;i < 35;i++) { write_bit(1);//寫數據位1 } p_U2270B_CFE = 1; led_light1 = 0; led_light = 1; delay_2(40000);//測試使用 //write_block(cominceptbuff[4],p); p_U2270B_CFE = 1; bankdata[20] = cominceptbuff[0];//密碼存入 bankdata[21] = cominceptbuff[1]; bankdata[22] = cominceptbuff[2]; bankdata[23] = cominceptbuff[3]; } else if (x == write_command1)//配置卡參數:初始化 { uchar data *data p; p = cominceptbuff; write_bit(1);//寫操作碼1:10 write_bit(0);//寫操作碼0 write_bit(0);//寫鎖定位0 write_block(cominceptbuff[4],p); p_U2270B_CFE= 1; } //psw=1 pssword mode else if(x == write_command2) //密碼寫數據 { uchar data*data p; p = &bankdata[24]; write_bit(1);//寫操作碼1:10 write_bit(0);//寫操作碼0 write_password(p);//發口令 write_bit(0);//寫鎖定位0 p = cominceptbuff; write_block(cominceptbuff[4],p);//寫數據 } else if(x == write_command3)//aor //喚醒 { //cominceptbuff[1]操作碼10 X xxxxxB uchar data *data p; p = cominceptbuff; write_bit(1);//10 write_bit(0); write_password(p);//密碼 p_U2270B_CFE = 1;//此時數據不停的循環傳出 } else //停止操作碼 { write_bit(1);//11 write_bit(1); p_U2270B_CFE = 1; } p_U2270B_CFE = 1; delay_2(560);//5.6ms } /************************************/ void f_clearpassword()//清除密碼 { uchar data *data p; uchar i,x; p = &bankdata[24];//原密碼 p_U2270B_CFE = 0; delay_2(18);//start gap>150us //操作碼10:10xxxxxxB write_bit(1); write_bit(0); for(x = 0;x < 4;x++)//發原密碼 { DATA = *(p++); for(i = 0;i < 8;i++) { write_bit(BIT0); DATA >>= 1; } } write_bit(0);//鎖定位0:0 p = &cominceptbuff[0]; write_block(0x00,p);//寫新配置參數:pwd=0 //密碼無效:即清除密碼 DATA = 0x00;//停止操作碼00000000B for(i = 0;i < 2;i++) { write_bit(BIT7); DATA <<= 1; } p_U2270B_CFE = 1; delay_2(560);//5.6ms } /*********************************/ void f_changepassword()//修改密碼 { uchar data *data p; uchar i,x,addr; addr = 0x07;//block7 p = &Nkey_a[0];//原密碼 DATA = 0x80;//操作碼10:10xxxxxxB for(i = 0;i < 2;i++) { write_bit(BIT7); DATA <<= 1; } for(x = 0;x < 4;x++)//發原密碼 { DATA = *(p++); for(i = 0;i < 8;i++) { write_bit(BIT7); DATA >>= 1; } } write_bit(0);//鎖定位0:0 p = &cominceptbuff[0]; write_block(0x07,p);//寫新密碼 p_U2270B_CFE = 1; bankdata[24] = cominceptbuff[0];//密碼存入 bankdata[25] = cominceptbuff[1]; bankdata[26] = cominceptbuff[2]; bankdata[27] = cominceptbuff[3]; DATA = 0x00;//停止操作碼00000000B for(i = 0;i < 2;i++) { write_bit(BIT7); DATA <<= 1; } p_U2270B_CFE = 1; delay_2(560);//5.6ms } /***************************子函數***********************************/ void write_bit(bit x)//寫一位 { if(x) { p_U2270B_CFE = 1; delay_2(32);//448*11.0592/120=42延時448us p_U2270B_CFE = 0; delay_2(28);//280*11.0592/120=26寫1 } else { p_U2270B_CFE = 1; delay_2(92);//192*11.0592/120=18 p_U2270B_CFE = 0; delay_2(28);//280*11.0592/120=26寫0 } } /*******************寫一個block*******************/ void write_block(uchar addr,uchar data *data p) { uchar i,j; for(i = 0;i < 4;i++)//block0數據 { DATA = *(p++); for(j = 0;j < 8;j++) { write_bit(BIT0); DATA >>= 1; } } DATA = addr <<= 5;//0地址 for(i = 0;i < 3;i++) { write_bit(BIT7); DATA <<= 1; } } /*************************************************/ void write_password(uchar data *data p) { uchar i,j; for(i = 0;i < 4;i++)// { DATA = *(p++); for(j = 0;j < 8;j++) { write_bit(BIT0); DATA >>= 1; } } } /*************************************************/ void main() { initial(); TI = RI = 0; ES = 1; EA = 1; delay_2(28); //f_readcard(); while(1) { f_readcard(); //讀卡 f_writecard(command1); //寫卡 f_clearpassword(); //清除密碼 f_changepassword(); //修改密碼 } }
標簽: 12345
上傳時間: 2017-10-20
上傳用戶:my_lcs
首先下載軟件,解壓軟件,安裝在程序中找到SEGGER,選里面的J-FLASH,進入界面,剛開始的那個界面可以忽略,不用建project也可以;單擊菜單欄的“Options---Project settings”打開設置,進行jlink配置;正在General選項,選擇“USB”,一般都是默認配置,確認一下即可;然后在CPU選項,選擇芯片型號,先選擇“Device”才能選擇芯片型號,芯片型號,要根據你使用的芯片進行選擇;在Target interface選項 里面選擇SWD模式;首先Target里面選“Connection”連接目標芯片,然后 Target--Auto進行程序燒寫;首先Target里面選擇“Connection”連接目標芯片,然后 Target--Auto進行程序燒寫.SEGGER J-Links are the most widely used line of debug probes available today. They've proven their value for more than 10 years in embedded development. This popularity stems from the unparalleled performance, extensive feature set, large number of supported CPUs, and compatibility with all popular development environments.
標簽: JLINK
上傳時間: 2022-03-22
上傳用戶:
近年來,便攜式設備如掌上電腦、個人通信設備等電子消費產品得到了飛速發展,這些電子產品均采用鋰電池供電。鋰離子電池的電壓隨著充放電狀態的改變會發生很大變化,使得電池電壓可能高于、也可能低于系統所需電源電壓,需要升壓/降壓DCDC轉換器將變化的電池電壓轉換為穩定的直流電壓,實現升壓模式與降壓模式之間的平滑過渡和提高過渡模式的效率是升壓/降壓DC-DC轉換器研究的熱點和難點。本文首先介紹了H橋升壓降壓轉換器的工作原理與存在的問題。系統在升壓和降壓轉換過程中,會發生跳周期現象,產生較大輸出紋波,因此本文提出在該轉換模式下,增加H橋非反相工作模式作為過渡模式,以減小系統的輸出紋波。在過渡模式下為了得到高的轉換效率,因此本文改進H橋非反相工作模式,來提高系統的轉換效率。其次,本文推導出H橋升壓/降壓轉換器的三種工作模式包括升壓模式、過渡模式、降壓模式的小信號模型,用 sisotool工具搭建系統頻域模型,確定系統的補償方案,再用 simulink搭建整個H橋升壓降壓轉換器系統,在三種工作模式下驗證補償方案。最后,本論文采用035 um TSMCCMOS工藝設計H橋升壓/降壓DCDC轉換器,可輸入電壓范圍是2.7-52V,VFB為1.2V,開關頻率范圍為300KHz-2MHz,輸出最大電流為600mA。提取電路網表,在開關頻率為1MH條件下,Hspice仿真與分析,從仿真結果上看,當輸出電阻分別為R=5.59和R=339重載情況下下,系統在升壓模式的轉換效率為91%和94%、在升壓降壓模式的轉換效率為75%和83%、在降壓模式下轉換效為73%和79%,過渡模式下的紋波為30mV:當輸出電阻R=509輕載條件下,輸入電壓分別為2.7V、3.3V、4.2V,系統的轉換效率分別為79%、65%、73%以上結果表明本文所實現的DC電路達到高效、紋波小的要求
標簽: DC-DC轉換器
上傳時間: 2022-04-08
上傳用戶:kingwide
1.1首先安裝J-Link驅動>開發軟件\Setup_JLinkARM_V468,雙擊要安裝的“Setup JLinkARMV468.exe",>安裝過程全選“next”直到安裝成功,>將JLINK插接到電腦的USB口,即可在我的電腦\管理\設備管理器\通用串行總線控制器中看到一個J-Link driver。舵機是一種位置(角度)伺服的驅動器,適用于需要角度不斷變化并可以保持的控制系統。舵機是一種俗稱,其實是一種伺服馬達。控制信號由接收機的通道進入信號調制芯片,獲得直流偏置電壓。內部有一個基準電路,產生周期為20ms,寬度為1.5ms的基準信號,將獲得的直流偏置電壓與電位器的電壓比較,獲得電壓差輸出。電壓差的正負輸出到電機驅動芯片決定電機的正反轉。當電機轉速一定時,通過級聯減速齒輪帶動電位器旋轉,使得電壓差為0,電機停止轉動。
上傳時間: 2022-07-05
上傳用戶:
電力電子系統的計算機仿真已經成為其產品設計研發過程中一個很重要的環節,MATLAB、Pspice和SABER是目前國際上最為流行的三大電力電子系統仿真軟件。SABER軟件以其強大的功能、開放的軟件環境日益成為電力電子系統仿真的首選,跟另外兩種軟件相比其仿真速度更快、收效性更好、仿真結果的準確性更高。為了降低逆變器輸出電壓的諧波,簡單且實用的方法是在逆變器的交流輸出側加裝L.C濾波器。LC濾波器是低通濾波電路,它可以有效地抑制高次諧波。但它不能消除交流電壓中的低次諧波,尤其是在LC濾波器的轉折頻率附近的諧波還被放大了。不同的LC濾波參數對輸出電壓的諧波含量影響很大,濾波參數選取不當會使濾波效果不能滿足設計要求。以前,為了選擇濾波參數人們需要重復試驗并反復比較,耗時耗力。計算機仿真為人們提供了一種研究電力電子電路的方法,通過仿真可以加深人們對電路與系統工作原理的理解、加速設計周期和節約開發成本。建模和計算機仿真并對比不同參數下的濾波效果和差異,在兼顧濾波環節重量的同時,可以得到合適的濾波效果,為產品設計研發提供參考。本文結合鐵科院機輛所研制DC600V客車空調逆變電源,采用SABER軟件進行仿真,具體分析了影響逆變器輸出電壓諧波的諸因素及特點,本文還定量分析了不同載波頻率、不同互鎖時間以及不同負載工況下線電壓諧波含量的變化。最后通過仿真得到客車逆變電源不同的LC濾波參數與逆變器輸出電壓諧波含量的關系。
上傳時間: 2022-07-06
上傳用戶: