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

正文內(nèi)容

基于單片機(jī)步進(jìn)式pwm信號輸出畢業(yè)設(shè)計-文庫吧資料

2025-07-03 19:59本頁面
  

【正文】 fine LCD_CURSOR_RIGHT_MOVE 0x14 //光標(biāo)右移一位//工作方式設(shè)置define LCD_DISPLAY_DOUBLE_LINE 0x38 //兩行顯示define LCD_DISPLAY_SINGLE_LINE 0x30 //單行顯示void LCD_cls(void)。Sons Inc. 2010, 67104[5] :高等教育出版社,2004,105122[6] :中國礦業(yè)大學(xué)出版社,1998,200206[7] 丁芝琴 基于霍爾傳感器的電機(jī)測速裝置的設(shè)計[J],農(nóng)機(jī)化研究,2010(5),1616[8] :西安電子科技大學(xué)出版社,2004,111[9] 陳伯時 電力拖動自動控制系統(tǒng)[M],上海:機(jī)械工業(yè)出版社,第三版,2124[10] Lee Circuit Designs for Transmittersin Broadband Data Links. IEEE Journal of SolidState Circuits[J]. 2006[11] 潘立民,1990[12] 邵敏權(quán),[13] ,[14] ,[15] 李華. ,1993[16] Lim Kyoohyun,Park Chanhong,Kim Dalsoo,et lownoise phaselocked loop design by loop bandwidth optimization. IEEE Journal of SolidState Circuits. 2000 [17] 楊中華、汪蕙、1999[18] Boerstler D lowjitter PLL clock generator for microprocessors with lock range of 340 ~ 612MHz. IEEE Journal of Solid State Circuits. 1999[19] 劉篤仁、。另外,論文難免在某些方面存在一些不成熟和欠妥之處,懇請各位老師大力斧正,不吝賜教。在整個設(shè)計過程中,也遇到了一些問題,如PWM算法、LCD顯示等,但經(jīng)過努力都一一解決了。通過本次設(shè)計我了解了許多關(guān)于PWM的知識,也查詢了許多的資料,并結(jié)合自己的想法完成了課題。針對本文所設(shè)計開發(fā)的PWM信號輸出系統(tǒng),詳細(xì)闡述了其電源電路,時鐘電路,復(fù)位電路,顯示電路等單元模塊的設(shè)計。本文首先介紹了課題的背景,介紹了PWM的發(fā)展歷史、目前的現(xiàn)狀及國內(nèi)外在這一領(lǐng)域的發(fā)展趨勢;其次簡要闡述了PWM原理及相關(guān)算法;最后選用SPWM中軟件調(diào)制的對稱規(guī)則采樣法設(shè)計一個PWM信號系統(tǒng)。圖14 SPWM輸出 6 結(jié)論通過三個多月的學(xué)習(xí)和探究,設(shè)計了一個基于單片機(jī)的PWM信號輸出系統(tǒng)。圖12 導(dǎo)入HEX文件第四步,PWM輸出仿真直流斬波PWM輸出如圖13所示。圖11 Keil Uvision工程圖第三步,在Protues中導(dǎo)入HEX文件,運(yùn)行。這里模塊化編程。第一步,打開測試軟件,建立原理圖,如圖10所示。 所謂分塊調(diào)試就是將整個系統(tǒng)分為若干部分,先部分后整體的調(diào)試。硬件調(diào)試分單元電路調(diào)試和聯(lián)機(jī)調(diào)試,單元電路試驗在硬件電路設(shè)計時已經(jīng)進(jìn)行,這里的調(diào)試只是將其制成印刷電路板后試驗電路是否正確, 并排除一些加工工藝性錯誤(如錯線、開路、短路等)。我們設(shè)計好的硬件電路和軟件程序,只有經(jīng)過聯(lián)合調(diào)試,才能驗證其正確性;軟硬件的配人情況以及是否達(dá)到設(shè)計任務(wù)的要求,也只有經(jīng)過調(diào)試,才能發(fā)現(xiàn)問題并加以解決、完善,最終開發(fā)成實用產(chǎn)品。DispD(script)。LCD_prints(WRONG!)。LCD_prints(BACK)。LCD_prints(MODP)。LCD_prints(STOP)。LCD_prints(What do you want?)。)。//LCD_printc(39。//LCD_prints(C:)。//LCD_set_position(0x48)。LCD_prints(Tout:)。 LCD_prints(/10 )。}else{ LCD_prints(k:)。 DispD(rac)。:39。if(dcac){ LCD_write_data(0xe0)。if(dcac)LCD_prints(KHz )。DispD(freq)。void Dcmont(void){ LCD_set_position(0)。}界面6:在線監(jiān)控f ,α或k,Tout。LCD_set_position(0x4c)。LCD_set_position(0x40)。}界面5:啟動輸出void DcConok(void){ LCD_set_position(3)。LCD_set_position(0x4c)。LCD_set_position(0x40)。//LCD_set_position(0x07)。LCD_prints(Tout:)。LCD_prints(BACK)。LCD_prints(OK)。 LCD_prints(/10 )。 LCD_prints(k:)。 LCD_prints(% )。)。 LCD_write_data(39。}界面3:設(shè)置占空比或調(diào)幅比void DcConr(int dat){if(dcac) //設(shè)置占空比 { LCD_set_position(0)。LCD_set_position(0x4c)。 //SPWM輸出1100HzLCD_set_position(0x40)。if(dcac)LCD_prints(KHz )。LCD_prints(f:)。LCD_prints(OK)。else LCD_prints(SPWM)。LCD_set_position(7)。界面0:程序啟動時及出錯后的數(shù)據(jù)初始化界面1:模式選擇void Manag(int dat){ LCD_set_position(0)。 }LCD_write_data(DataArray[j]+48)。j++) //清除前面的0 { if(DataArray[j])i=1。 //數(shù)據(jù)字符串轉(zhuǎn)換for(j=0。}void DispD(int dat) //數(shù)據(jù)顯示函數(shù){ i=j=0。DataArray[0]=dat/1000。{DataArray[3]=dat%10。轉(zhuǎn)換后的字符串要注意清除前面的0。常用操作有:LCD是否忙檢測,LCD清屏,寫指令,光標(biāo)定位,顯示字符及字符串,LCD初始化。如要在第二行第一個位置顯示數(shù)據(jù),則在寫入的數(shù)據(jù)應(yīng)該是40H+80H=C0H。因為寫入顯示地址時要求最高位 D7 恒定為高電平 1 所以實際寫入的數(shù)據(jù)應(yīng)該是字符地址加上80H。要顯示字符時要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符。1602 液晶模塊內(nèi)部的控制器共有11條控制指令。 LCD1602編程1602 液晶模塊內(nèi)部的字符發(fā)生存儲器(CGROM)已經(jīng)存儲了 160 個不同的點陣字符圖形,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是 01000001B(41H),顯示時模塊把地址 41H 中的點陣字符圖形顯示出來,我們就能看到字母“A”。 LCD_cls()。} if(KeyValue==1) {Delay1ms(20)。 script=3,KeyValue=0。} DcCont(Tout)。} if(KeyValue==3) {Delay1ms(20)。 case 4: if(KeyValue==2) //設(shè)置Tout {Delay1ms(20)。 LCD_cls()。} if(KeyValue==1) {Delay1ms(20)。 script=2,KeyValue=0。} DcConr(k)。} if(KeyValue==3) {Delay1ms(20)。 } else { if(KeyValue==2) //設(shè)置k {Delay1ms(20)。 rac=10,KeyValue=0。 rac+=10,KeyValue=0。 } break。 KeyValue=0。} if(KeyValue==1) {Delay1ms(20)。 script=1,KeyValue=0。} DcConf(freq)。} if(KeyValue==3) {Delay1ms(20)。 case 2: if(KeyValue==2) //設(shè)置f {Delay1ms(20)。 LCD_cls()。 //直流斬波模式 else script=10。 if(KeyValue==1) {Delay1ms(20)。//模式選擇 while(KeyValue==3)dcac=0,KeyValue=0。}由于只有四個按鍵,因此每個按鍵都是復(fù)用的,有多種的功能,且必須和LCD1602顯示的內(nèi)容配合好。else if(KEY4==0)KeyValue=4。else if(KEY2==0)KeyValue=2。EX1=0。為了方便修改參數(shù),我們采用低電平觸發(fā)。using后面的n是一個0—3的常整數(shù),分別選中4個不同的工作寄存器組。89C52系列單片機(jī)可以在內(nèi)部 R A M 中使用4個不同的工作寄存器組,每個寄存器組中包含 8個工作寄存 器( R0~ R7) 。關(guān)鍵字interrupt是函數(shù)定義時的一個選項,加上這個選項就可以將一個函數(shù)定義成中斷服務(wù)函數(shù)。C51編譯器支持在C語言源程序中直接編寫89C52單片機(jī)的中斷服務(wù)函數(shù)程序。但是在按鍵多時增加硬件開銷,所以我們采用軟件消抖的方式。故需要消抖,常見有硬件和軟件兩種方式。}為滿足系統(tǒng)設(shè)計,這里使用4個按鍵。 if(ToutReal==0)TR0=TR1=0,OUTPUT=0。if(count1==20) //定時一秒 {count1=0。 //定時擴(kuò)充TH1=60。這樣:TH1=(6553650000)/256=60;TL1=(6553650000)%256=176;輸出時間到時關(guān)閉PWM輸出。最大定時時間:Tmax=2^16*10^(6)s=65536 uS而我們希望輸出時間以秒記,因此需要進(jìn)行定時擴(kuò)充。 OUTPUT=0。 TL0=tempt3。 } }}if(tjump){TH0=tempt2。 tempt4=((long unsigned int)sine[acj])*k/10。 else OUTPUT1=1。 else OUTPUT0=1。 aci++。 OUTPUT0=0。 TL0=tempt3。 } if(tjump) { TH0=tempt2。//tempt1=(655361000/freq*rac/100)%256。//tempt0=(655361000/freq*rac/100)/256。一個定時周期:T=1/(32f)/32 S=10^6/(32*32f)μS=1953/f μS 直流斬波PWM和SPWM程序流程圖如下:/**********************T0中斷服務(wù)程序*******************/void timer0(void)interrupt 1 using 1{if(dcac) { tjump=1tjump。設(shè)輸出頻率為f,三角波頻率則為32f。因為單片機(jī)主頻低,我們采用載波比為32。為了減少AT89C52計算時間,我們把正弦值和三角波以數(shù)組形式保存在程序空間里。在本方式下,定時器按16位加1計數(shù)器工作的,該計數(shù)器由高8位TH和低8位TL組成。我們用T0來產(chǎn)生PWM波。電路圖如下:圖9 SPWM仿真電路4 軟件設(shè)計 直流斬波PWM軟件計算法AT89C52單片機(jī)每個機(jī)器周期由6個狀態(tài)組成,每個狀態(tài)又有兩個時鐘周期,這樣一個機(jī)器周期就等于12個時鐘周期,即機(jī)器頻率為時鐘頻率的12分頻。Va = Vb = ( + )/5這里逆變的正弦信號頻率為0~50Hz,所以一階濾波電路里截止頻率Wc設(shè)為50Hz。這是一種具有JFET作輸入級的低失調(diào)、高輸入阻抗運(yùn)放。后面再添加一個一階濾波電路,這樣就可以分析逆變的正弦波基本分量。為了把兩路信號疊加到一塊,我們設(shè)計了一個加法電路。這兩個I/O口能驅(qū)動一個TTL門電路,作為信號輸出可以滿足要求故不再添加額外驅(qū)動電路。液晶與系統(tǒng)的連接如圖8所示。 15~16腳:空腳或背燈電源?! ?腳:E(或EN)端為使能(enable)端?! ?腳:RS為寄存器選擇,高電平1
點擊復(fù)制文檔內(nèi)容
職業(yè)教育相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1