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

正文內(nèi)容

基于單片機步進式pwm信號輸出畢業(yè)設(shè)計(編輯修改稿)

2025-07-24 19:59 本頁面
 

【文章內(nèi)容簡介】 10。 //SPWM模式 KeyValue=0。 LCD_cls()。 } break。 case 2: if(KeyValue==2) //設(shè)置f {Delay1ms(20)。 freq++,KeyValue=0。} if(KeyValue==3) {Delay1ms(20)。 freq,KeyValue=0。} DcConf(freq)。 if(KeyValue==4) {Delay1ms(20)。 script=1,KeyValue=0。 LCD_cls()。} if(KeyValue==1) {Delay1ms(20)。 script=3。 KeyValue=0。 LCD_cls()。 } break。 case 3: if(dcac) { if(KeyValue==2) //設(shè)置rac {Delay1ms(20)。 rac+=10,KeyValue=0。} if(KeyValue==3) {Delay1ms(20)。 rac=10,KeyValue=0。} DcConr(rac)。 } else { if(KeyValue==2) //設(shè)置k {Delay1ms(20)。 k+=1,KeyValue=0。} if(KeyValue==3) {Delay1ms(20)。 k=1,KeyValue=0。} DcConr(k)。 } if(KeyValue==4) {Delay1ms(20)。 script=2,KeyValue=0。 LCD_cls()。} if(KeyValue==1) {Delay1ms(20)。 script=4,KeyValue=0。 LCD_cls()。} break。 case 4: if(KeyValue==2) //設(shè)置Tout {Delay1ms(20)。 Tout+=10,KeyValue=0。} if(KeyValue==3) {Delay1ms(20)。 Tout=10,KeyValue=0。} DcCont(Tout)。 if(KeyValue==4) {Delay1ms(20)。 script=3,KeyValue=0。 LCD_cls()。} if(KeyValue==1) {Delay1ms(20)。 script=5,KeyValue=0。 LCD_cls()。} break。 LCD1602編程1602 液晶模塊內(nèi)部的字符發(fā)生存儲器(CGROM)已經(jīng)存儲了 160 個不同的點陣字符圖形,這些字符有:阿拉伯數(shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是 01000001B(41H),顯示時模塊把地址 41H 中的點陣字符圖形顯示出來,我們就能看到字母“A”。液晶顯示模塊是一個慢顯示器件,所以在執(zhí)行每條指令之前一定要確認模塊的忙標志為低電平,表示不忙,否則此指令失效。1602 液晶模塊內(nèi)部的控制器共有11條控制指令。它的讀寫操作、屏幕和光標的操作都是通過指令編程來實現(xiàn)的。要顯示字符時要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符。下表為LCD1602的顯示地址。因為寫入顯示地址時要求最高位 D7 恒定為高電平 1 所以實際寫入的數(shù)據(jù)應該是字符地址加上80H。下表為LCD1602的顯示地址。如要在第二行第一個位置顯示數(shù)據(jù),則在寫入的數(shù)據(jù)應該是40H+80H=C0H。為了使用方便我們把LCD1602的常用操作寫成函數(shù),需要時直接調(diào)用函數(shù)即可。常用操作有:LCD是否忙檢測,LCD清屏,寫指令,光標定位,顯示字符及字符串,LCD初始化。由于1602無法直接顯示數(shù)據(jù),需要先把數(shù)據(jù)轉(zhuǎn)換為字符串,再送到1602顯示。轉(zhuǎn)換后的字符串要注意清除前面的0。字符串轉(zhuǎn)換函數(shù)和數(shù)據(jù)顯示函數(shù)如下:void DataToChar(int dat) //數(shù)據(jù)字符串轉(zhuǎn)換函數(shù)。{DataArray[3]=dat%10。DataArray[2]=((datDataArray[3])/10)%10。DataArray[0]=dat/1000。DataArray[1]=(dat/100)%10。}void DispD(int dat) //數(shù)據(jù)顯示函數(shù){ i=j=0。DataToChar(dat)。 //數(shù)據(jù)字符串轉(zhuǎn)換for(j=0。j3。j++) //清除前面的0 { if(DataArray[j])i=1。 if(i)LCD_write_data(DataArray[j]+48)。 }LCD_write_data(DataArray[j]+48)。}由于LCD1602只有16*2個顯示點,無法在一個界面中完成所有的顯示內(nèi)容這里我們按功能來分顯示界面。界面0:程序啟動時及出錯后的數(shù)據(jù)初始化界面1:模式選擇void Manag(int dat){ LCD_set_position(0)。LCD_prints(MODE:)。LCD_set_position(7)。if(dat)LCD_prints(DC)。else LCD_prints(SPWM)。LCD_set_position(0x40)。LCD_prints(OK)。}界面2:設(shè)置頻率void DcConf(int dat){ LCD_set_position(0)。LCD_prints(f:)。DispD(dat)。if(dcac)LCD_prints(KHz )。 //直流PWM輸出120KHzelse LCD_prints(Hz )。 //SPWM輸出1100HzLCD_set_position(0x40)。LCD_prints(OK)。LCD_set_position(0x4c)。LCD_prints(BACK)。}界面3:設(shè)置占空比或調(diào)幅比void DcConr(int dat){if(dcac) //設(shè)置占空比 { LCD_set_position(0)。 LCD_write_data(0xe0)。 LCD_write_data(39。:39。)。 DispD(dat)。 LCD_prints(% )。 }else //設(shè)置調(diào)幅比{ LCD_set_position(0)。 LCD_prints(k:)。 DispD(dat)。 LCD_prints(/10 )。 }LCD_set_position(0x40)。LCD_prints(OK)。LCD_set_position(0x4c)。LCD_prints(BACK)。}界面4:設(shè)置輸出時間void DcCont(int dat){ LCD_set_position(0)。LCD_prints(Tout:)。DispD(dat)。//LCD_set_position(0x07)。LCD_prints(S )。LCD_set_position(0x40)。LCD_prints(OK)。LCD_set_position(0x4c)。LCD_prints(BACK)。}界面5:啟動輸出void DcConok(void){ LCD_set_position(3)。LCD_prints(OUTPUT NOW?)。LCD_set_position(0x40)。LCD_prints(OK)。LCD_set_position(0x4c)。LCD_prints(BACK)。}界面6:在線監(jiān)控f ,α或k,Tout。輸出完畢后關(guān)閉輸出。void Dcmont(void){ LCD_set_position(0)。LCD_prints(f:)。DispD(freq)。//LCD_set_position(0x06)。if(dcac)LCD_prints(KHz )。else LCD_prints(Hz )。if(dcac){ LCD_write_data(0xe0)。 LCD_write_data(39。:39。)。 DispD(rac)。 LCD_prints(% )。}else{ LCD_prints(k:)。 DispD(k)。 LCD_prints(/10 )。}LCD_set_position(0x40)。LCD_prints(Tout:)。DispD(ToutReal)。//LCD_set_position(0x48)。LCD_prints(S )。//LCD_prints(C:)。//DispD(i)。//LCD_printc(39。S39。)。}界面7:停止輸出并返回到界面1,不停止輸出并返回到界面2,返回到界面6void DcStop(void){ LCD_set_position(0)。LCD_prints(What do you want?)。LCD_set_position(0x40)。LCD_prints(STOP)。LCD_set_position(0x45)。LCD_prints(MODP)。LCD_set_position(0x4c)。LCD_prints(BACK)。}報警void error(void){ LCD_set_position(0)。LCD_prints(WRONG!)。LCD_set_position(0X40)。DispD(script)。} 5 系統(tǒng)調(diào)試系統(tǒng)調(diào)試包括硬件調(diào)試和軟件調(diào)試,而且兩者是密不可分的。我們設(shè)計好的硬件電路和軟件程序,只有經(jīng)過聯(lián)合調(diào)試,才能驗證其正確性;軟硬件的配人情況以及是否達到設(shè)計任務的要求,也只有經(jīng)過調(diào)試,才能發(fā)現(xiàn)問題并加以解決、完善,最終開發(fā)成實用產(chǎn)品。 常見的有硬件調(diào)試和軟件調(diào)試。硬件調(diào)試分單元電路調(diào)試和聯(lián)機調(diào)試,單元電路試驗在硬件電路設(shè)計時已經(jīng)進行,這里的調(diào)試只是將其制成印刷電路板后試驗電路是否正確, 并排除一些加工工藝性錯誤(如錯線、開路、短路等)。軟件調(diào)試一般包括分塊調(diào)試和聯(lián)機調(diào)試兩個階段。 所謂分塊調(diào)試就是將整個系統(tǒng)分為若干部分,先部分后整體的調(diào)試。聯(lián)機調(diào)試也就是在線調(diào)試,上電操作更容易發(fā)現(xiàn)問題。第一步,打開測試軟件,建立原理圖,如圖10所示。圖10 電路仿真原理圖第二步,打開Keil Uvision2,建立工程,輸入程序,調(diào)試,編譯生成HEX文件。這里模塊化編程。如圖11所示。圖11 Keil Uvision工程圖第三步,在Protues中導入HEX文件,運行。如圖12所示。圖12 導入HEX文件第四步,PWM輸出仿真直流斬波PWM輸出如圖13所示。圖13 直流斬波PWMSPWM輸出:圖14中ch A,ch ,ch ,可以認為是SPWM的基波信號。圖14 SPWM輸出 6 結(jié)論通過三個多月的學習和探究,設(shè)計了一個基于單片機的PWM信號輸出系統(tǒng)。PWM技術(shù)應用非常廣泛,這里主要從直流斬波和交流逆變的應用角度,對PWM的多種軟件算法進行了一定的分析研究,最終選擇了工業(yè)上較常用的SPWM方法。本文首先介紹了課題的背景,介紹了PWM的發(fā)展歷史、目前的現(xiàn)狀及國內(nèi)外在這一領(lǐng)域的發(fā)展趨勢;其次簡要闡述了PWM原理及相關(guān)算法;最后選用SPWM中軟件調(diào)制的對稱規(guī)則采樣法設(shè)計一個PWM信號系統(tǒng)。本文詳細闡述了單片機的工作原理,結(jié)構(gòu)和功能。針對本文所設(shè)計開發(fā)的PWM信號輸出系統(tǒng),詳細闡述了其電源電路,時鐘電路,復位電路,顯示電路等單元模塊的設(shè)計。同時也簡要闡述了Protues,KeilUvision2軟件功能及使用方法,詳細介紹了PWM軟件算法,按鍵中斷,LCD顯示等,最后詳細闡述了系統(tǒng)調(diào)試的結(jié)果。通過本次設(shè)計我了解了許多關(guān)于PWM的知識,也查詢了許多的資料,并結(jié)合自己的想法完成了課題。經(jīng)過學習,使我對51單片機有了更進一步的了解,對一個系統(tǒng)的設(shè)計要如何入手有了更加深刻的體會。在整個設(shè)計過程中,也遇到了一些問題,如PWM算法、LCD顯示等,但經(jīng)過努力都一一解決了。在論文的寫作上,主要是以描述系統(tǒng)設(shè)計思想為主,由于本人的水平和能力有限,對該課題的許多方面還沒有深入研究。另外,論文難免在某些方面存在一些不成熟和欠妥之處,懇請各位老師大力斧正,不吝賜教。參考文獻[1] 王兆安 電力電子技術(shù)[M] 機械工業(yè)出
點擊復制文檔內(nèi)容
職業(yè)教育相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1