freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

畢業(yè)論文設計:基于單片機的pwm信號輸出系統(tǒng)設計-資料下載頁

2024-11-14 21:10本頁面

【導讀】隨著電力電子技術的飛速發(fā)展,PWM技術應用越來越廣泛。迅速,各種新理論層出不窮。PWM技術結合了電力電子技術、計算機技術、現(xiàn)代控制理論,首先對系統(tǒng)結構和PWM軟件算法進行了研究和分析,包括對各種PWM產生方法的對。比分析和對稱規(guī)則采樣法的仔細研究以及系統(tǒng)的功能分區(qū)和總體結構。在總體設計完成后。又設計了硬件電路各個單元模塊。然后采用C語言編程實現(xiàn)了系統(tǒng)功能,完成設計目標。的SPWM信號,并在LCD1602上實時設置參數(shù)及輸出狀態(tài)監(jiān)視。

  

【正文】 A 1 326P 2 .6 /A 1 427U1A T 8 9 C5 1C13 0 p FC23 0 p FX1CR Y S T A LC32 0 u FR11k+5V 圖 8 時鐘復位電路 按鍵中斷 AT89C52 共有 2個外部中斷, INT0 和 INT1 為兩天外部中斷請求輸入線,都允許外部中斷源以低電平或下降沿觸發(fā)。為了能在線修改參數(shù)而不影響 PWM 輸出,我們選用優(yōu)先級低的 INT1。 本電路中設計有 4個按鍵,因此需要進行中斷 擴充。按鍵中斷的電路 如圖。 工作原理:上電后對 、 、 、 及 置高位,持續(xù)掃描, 如果有按鍵按下,如 對應的按鍵按下,則 接地, 檢測到低電壓, 則通過 正向二極管接地,也可認為是低電平。 其余 、 、 由于與 有反向二極管隔離, 仍懸空,認為還是高電平,因而能判斷哪個按鍵按下。 P 2 . 3P 2 . 4P 2 . 5P 2 . 6P 3 . 3D1DI O DED2DI O DED3DI O DED4DI O DE 圖 9 中斷擴展 顯示電路 LCD1602 的 引腳輸入時的電流很小,當 VDD=5V 時,高低電平標準和單片機的 P1 口兼容,所以這里不需要為 LCD 提供 額外驅動電路 ,可與單片機直接相連。 LCD1602 采用標準的 16 腳接口,其中: 第 1 腳: VSS 為電源地 第 2 腳: VDD 接 5V 電源正極 第 3 腳: V0為液晶顯示器對比度調整端,接正電源時對比度最弱,接地電源時對比度最高(對比度過高時會 產生 “ 鬼影 ” ,這里 通過一個 10K 的電位器調整對比度)。 第 4 腳: RS為寄存器選擇,高電平 1 時選擇數(shù)據(jù)寄存器、低電平 0時選擇指令寄存器。 這里與 連接。 第 5 腳: RW為讀寫信號線,高電平 (1)時進行讀操作,低電平 (0)時進行寫操 作。 這里與 連接。 第 6 腳: E(或 EN)端為使能 (enable)端。 這里與 連接。 第 7~ 14 腳: D0~ D7為 8位雙向數(shù)據(jù)端。 這里與 8 位并行口 P1連接。 第 15~ 16 腳:空腳或背燈電源。 15 腳背光正極, 16 腳背光負極。 P2.1P2.0P2.2P10P17P16P15P14P13P12P11D714D613D512D411D310D29D18D07E6RW5RS4VSS1VDD2VEE3L C D 1L M 0 1 6 L+5VR V 11 0 k 圖 10 顯示 輸出電路 這里以單片機 和 作為 PWM 的輸出口。 這兩個 I/O 口能驅動一個 TTL 門電路,作為信號輸出可以滿足要求故不再添加額外驅動電路。 SPWM 測試 電路 在 SPWM 模式下, 作為正向輸出端口, 為負向輸出端口。為了把兩路信號疊加到一塊,我們設計了一個加法電路。由于單片機無法輸出負電壓,所以需要把 的信號經過一個反向比例放大電路處理后,再和 疊加。 后面再添加一個一階濾波電路,這樣就可以分析逆變的正弦波基本分量。 為了 減少運放對濾波電路的負載效應 ,同時便于調整 ,現(xiàn)選用 LF412。這是一種具有JFET 作輸入級的低失調、高輸入阻抗運放。同時為了 使放大電路不產生飽和失真,需把單片機輸出的信號進行縮放。 Va = Vb = ( + )/5 這里逆變的正弦信號頻率為 0~ 50Hz,所以一階濾波電路里截止頻率 Wc設為 50Hz。 Wc = 2π f = 1/RC 令 C= 可以求得: R=200k 。 電路圖如下: P 3 . 0P 3 . 1R21 0 0 kC81 0 0 n FR31 5 kR41 0 k32184U 1 : AL F 4 1 2U1: A ( V + )U1: A ( V )32184U 2 : AL F 4 1 2U2: A ( V + )U2: A ( V )R51 0 kR61 0 kR71 0 kR81 0 k567U 2 : BL F 4 1 2R92kR 1 01 0 kR 1 12kVV+VaVbVo 圖 11 SPWM 仿真電路 4 軟件設計 軟件總流程 模 式 選 擇設 置 參 數(shù)錯 誤 檢 查運 行結 束顯 示外 部 中 斷 圖 12 軟件總流程圖 直流斬 波 PWM 軟件計算法 AT89C52 單片機每個機器周期由 6個狀態(tài)組成,每個狀態(tài)又有兩個時鐘周期,這樣一個機器周期就等于 12 個時鐘周期,即機器頻率為時鐘頻率的 12分頻。 因此一個定時脈沖周期為 1uS。 我們用 T0 來產生 PWM 波。由于需要改變定時初值,所以這里我們采用方式 1。在本方式下,定時器按 16 位加 1計數(shù)器工作的,該計數(shù)器由高 8位 TH 和低 8位 TL組成。 設 PWM 輸出頻率為 f kHz,占空比為α , PWM 的周期: T=1/f*10^(3) S=1000/f uS 由于 AT89C52 無法處理浮點數(shù),在單片機內占空比 取值為( 0~ 100),則在一個 PWM周期內 ,高電平的時間: tHigh=T*α /100=1000/f*α /100 uS; 定時器初值: TH0=( 65536tHigh) /256; TL0=( 65536tHigh) %256; 低電平的時間: tLow =T*( 100α) /100=1000/f*α /100 uS; 定時器初值: TH0=( 65536tLow) /256; TL0=( 65536tLow) %256; 生成 直流斬波 PWM 的軟件流程圖: 設 置 參 數(shù)開 始 輸 出P 3 . 0 = 0 ?定 時 高 電 平 時 間P 3 . 0 = 1輸 出 時 間 到 ?定 時 低 電 平 時 間P 3 . 0 = 0停 止 輸 出是否是否是 否 修 改 參 數(shù)是 否 停 止是否否是 圖 13 直流斬波 PWM 流程圖 SPWM 軟件計算法 這里以對稱三角波為載波。 為了減少 AT89C52 計算時間,我們把正弦值和三角波以數(shù)組形式保存在程序空間里。 正弦波和三角波均采樣 32 點,數(shù)值均為 0100。因為單片機主頻低,我們采用載波比為 32。在一個三角波周期內,可以認為正弦值不變。 設輸出頻率為 f,三角波頻率則為 32f。一個三角波周期分為 32段。一個定時周期 : T=1/(32f)/32 S=10^6/( 32*32f)μ S=1953/f μ S SPWM 的程 序流程圖如下 : 設 置 參 數(shù)開 始 輸 出F L A G = 1 ?調 制 波 大 于 載波 ?正 半 周 結 束 ?P 3 . 0 = 0調 制 波 大 于 載波 ?P 3 . 0 = 0負 半 周 結 束 ?P 3 . 0 = 1P 3 . 1 = 1F L A G = 0 F A G = 1輸 出 時 間 到 ?停 止 輸 出是否是 否 停 止 輸 出是 否 修 改 參 數(shù)是否否是是否是否是否否是是否 圖 14 SPWM 流程圖 直流斬波 PWM 和 SPWM 程序流程圖如下: /**********************T0 中斷服務程序 *******************/ void timer0(void)interrupt 1 using 1 { if(dcac) { tjump=1tjump。 if(tjump==0) { TH0=tempt0。//tempt0=(655361000/freq*rac/100)/256。 TL0=tempt1。//tempt1=(655361000/freq*rac/100)%256。 OUTPUT0=1。 } if(tjump) { TH0=tempt2。//tempt2=(655361000/freq*(100rac)/100)/256。 TL0=tempt3。//tempt3=(655361000/freq*(100rac)/100)%256。 OUTPUT0=0。 } } else { TH0=tempt0,TL0=tempt1。 aci++。 if(FLAG) { if(sjb[aci]tempt4)OUTPUT0=0。 else OUTPUT0=1。 } else { if(sjb[aci]tempt4)OUTPUT1=0。 else OUTPUT1=1。 } if(aci==31) { aci=0,acj++。 tempt4=((long unsigned int)sine[acj])*k/10。 if(acj==31)acj=0,OUTPUT0=0,OUTPUT1=0,FLAG=1FLAG。 } } } if(tjump){ TH0=tempt2。 //tempt2=(655361000/freq*(100rac)/100)/256。 TL0=tempt3。 //tempt3=(655361000/freq*(100rac)/100)%256。 OUTPUT=0。 } } 輸出時間控制 這里我們用定時器 1,同樣工作在方式 1。最大定時時間: Tmax=2^16*10^(6)s=65536 uS 而我們希望輸出時間以秒記,因此需要進行定時擴充。為方便計算,定時時間設為 50000 uS。這樣: TH1=( 6553650000) /256=60; TL1=( 6553650000) %256=176; 輸出時間到時關閉 PWM 輸出。 輸出時間控制程序如下: /**********************T1 中斷服務程序 *******************/ void timer1(void)interrupt 3 using 1 { count1++。 //定時擴充 TH1=60。 TL1=176。 if(count1==20) //定時一秒 {count1=0。 ToutReal。 if(ToutReal==0)TR0=TR1=0,OUTPUT=0。 //關閉 PWM 輸出,停止計時。 } 按鍵中斷 為了減少硬件開銷少占用單片機的 I/O 口,這里只設計了 4 個按鍵。 按鍵動作時的典型波形 如圖??梢钥吹綄嶋H波形中電壓抖動現(xiàn)象,影響單片機判斷。消抖有硬件和軟件兩 種方式。硬件消抖 可以采用 RC 電路或 RS 觸發(fā)器。 但是在按鍵多時增加硬件開銷,所以我們采用軟件消抖的方式。 按鍵抖動時間一般為 1020ms,所以可以延時 20ms 后判斷按鍵是否真的動作(包括按下和松開)。 圖 15 按鍵動作電壓波形 C51 編譯器支持在 C語言源程序中直接編寫 89C52 單片機的中斷服務函數(shù)程序 。 C51編譯器對函數(shù)的定義進行了擴展 , 增加了一個擴展關鍵字 interrupt。 關鍵字 interrupt是函數(shù)定義時的一個選項 , 加上這個選項就可以將一個函數(shù) 定義 成中斷服務函數(shù)。定義中斷服務函數(shù)的一般形式為 中斷表 函數(shù)類型 函數(shù)名 ( 形式參數(shù)表 )[interrupt n] [using n] 關鍵 字 interrupt 后面的 n 是中斷號 ,n 的取值范圍為 0 ~ 3 1 編譯器從 8 n + 3 處產生中斷向量。 具體的中斷號 n和中斷向量取決于不同的單片機芯片: 89C52 單 片機的常 用中斷源 和中斷向量如表 1所示 89C52 系列單片機可以在內部 R A M 中使用 4個不同的工作寄存器組 , 每個寄存器組中包含 8 個工作寄存 器 ( R0~ R7) 。 C51 編譯器擴展了一個關鍵宇 using, 專門用來選擇單片機中不同的工作寄存器組。 using后面的 n是一個 0— 3 的常整數(shù), 分別選中 4 個不同的工作寄存器組。在定義一個函 數(shù)時 using 是一個選項 , 如果不用該選項 , 則
點擊復制文檔內容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1