機(jī)電傳動單向數(shù)控平臺課程設(shè)計_第1頁
已閱讀1頁,還剩41頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p><b>  教學(xué)目的</b></p><p>  通過課程設(shè)計培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識和能力、提高分析和解決實(shí)際問題能力的一個重要環(huán)節(jié),專業(yè)課程設(shè)計時建立的專業(yè)基礎(chǔ)課程和專業(yè)方向課的基礎(chǔ)上的,是學(xué)生根據(jù)所學(xué)課程進(jìn)行的工程基本訓(xùn)練,課程設(shè)計的目的在于:</p><p>  培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)的基礎(chǔ)理論和專業(yè)知識,獨(dú)立進(jìn)行機(jī)電控制系統(tǒng)(產(chǎn)品)的初步設(shè)計

2、工作,并結(jié)合設(shè)計或試驗(yàn)研究課題進(jìn)一步鞏固和擴(kuò)大知識領(lǐng)域。</p><p>  培養(yǎng)學(xué)生搜索、閱讀和綜合分析參考資料,運(yùn)用各種標(biāo)準(zhǔn)和工具書籍一集編寫技術(shù)文件的能力、提高計算、繪圖等基本能力。</p><p>  培養(yǎng)學(xué)生掌握機(jī)電產(chǎn)品設(shè)計的一半程序和方法,進(jìn)行工程師基本素質(zhì)的訓(xùn)練。</p><p>  樹立正確的設(shè)計思想及嚴(yán)肅認(rèn)真的工作作風(fēng)。</p>&l

3、t;p><b>  設(shè)計要求</b></p><p>  電機(jī)驅(qū)動方式:步進(jìn)電機(jī)。</p><p>  機(jī)械傳動方式:螺旋絲杠。</p><p>  電氣控制方式:單片微機(jī)控制。</p><p>  功能控制要求:速度控制。</p><p>  主要設(shè)計參數(shù):單向工作行程1000mm,移動負(fù)

4、載質(zhì)量50kg,負(fù)載移動阻力50N,移動速度控制3m/min。</p><p><b>  總體方案設(shè)計</b></p><p><b>  2.1方案概述:</b></p><p>  本系統(tǒng)將采用ATMEL公司生產(chǎn)的MEGA-16L系列產(chǎn)品作為控制單元。通過控制單片機(jī)的引腳發(fā)送的脈沖信號控制步進(jìn)電機(jī)的速度然后將步進(jìn)電機(jī)

5、產(chǎn)生的力矩通過減速器進(jìn)行一級減速之后輸入螺旋絲杠端驅(qū)動工作平臺的移動。同時該系統(tǒng)將采用實(shí)時控制系統(tǒng)通過按鍵的控制調(diào)整當(dāng)前的速度值并將速度值顯示在顯示系統(tǒng)中,顯示系統(tǒng)由12864屏幕承擔(dān)工作任務(wù),可以顯示中文字符,通過將當(dāng)前的速度值顯示在屏幕上可以方便控制者對系統(tǒng)的操作。</p><p><b>  2.2方案特點(diǎn):</b></p><p>  本系統(tǒng)與其他同類產(chǎn)品相比

6、具有以下的特點(diǎn):</p><p>  單片機(jī)控制具有較強(qiáng)的靈活性,可以處理多種可能發(fā)生的情況。</p><p>  響應(yīng)速度快,提高控制的實(shí)時性。</p><p>  造價比較便宜,系統(tǒng)擴(kuò)展方便。</p><p>  可視化程度高,方便控制。</p><p><b>  機(jī)械傳動系統(tǒng)設(shè)計</b>&

7、lt;/p><p><b>  給定參數(shù):</b></p><p>  單向工作行程:1000mm</p><p>  移動負(fù)載質(zhì)量:50kg</p><p>  負(fù)載移動阻力:50N</p><p>  移動速度控制:3m/min</p><p>  4.1滑動螺旋傳動計算&

8、lt;/p><p><b>  一、確定絲杠的導(dǎo)程</b></p><p>  查手冊知導(dǎo)程為10MM的絲杠其公稱直徑范圍最大,且在這個公稱直徑范圍內(nèi)的絲杠其優(yōu)先腿腳選用的稻城也為10MM,因此,確定選用導(dǎo)程Ph=10MM的絲杠。</p><p><b>  二、絲杠的轉(zhuǎn)速</b></p><p>&l

9、t;b>  三、絲杠的平均載荷</b></p><p><b>  四、預(yù)期額定動載荷</b></p><p> ?。?)按預(yù)期工作時間估計</p><p>  查表:輕微沖擊=1.2</p><p>  精度等級1-3,取=1.0</p><p>  可靠性96%,取=0.53

10、</p><p>  已知:壽命=15000h</p><p><b>  得:</b></p><p><b>  五、絲杠副的型號</b></p><p>  根據(jù)所選定的導(dǎo)程=10mm以及動載荷選用FFZD型絲杠,型號FFZD3210,其主要參數(shù)如下:</p><p>

11、<b>  公稱直徑32mm</b></p><p><b>  導(dǎo)程10mm</b></p><p><b>  絲杠大徑30mm</b></p><p>  軸端直徑<=24mm</p><p><b>  動負(fù)荷32KN</b></p&g

12、t;<p><b>  靜載荷70KN</b></p><p>  剛度1170N/um</p><p><b>  六、耐磨性計算</b></p><p><b>  選擇梯形螺紋</b></p><p><b>  ξ的值為:0.8</b>

13、;</p><p>  整體式螺母的φ值在1.2-2.5之間選取φ值為1.8</p><p><b>  φ的值為:1.8</b></p><p>  許用壓強(qiáng)在18 MPa -25 MPa之間 ,選取[p]為22 MPa</p><p>  許用壓強(qiáng)[p]為:22MPa</p><p><

14、b>  七、驗(yàn)算自鎖</b></p><p>  螺旋副摩擦系μs在0.08-0.1之間,選取螺旋摩擦系數(shù)為0.088</p><p>  螺旋副摩擦系數(shù)μs為:0.088</p><p><b>  根據(jù)得出螺紋升角</b></p><p>  螺紋升角為:1.658°</p>

15、<p><b>  根據(jù)得出當(dāng)量摩擦角</b></p><p><b>  =5.21</b></p><p><b>  八、計算驅(qū)動轉(zhuǎn)矩</b></p><p><b>  、為軸承摩擦力矩</b></p><p>  驅(qū)動轉(zhuǎn)矩T為:258

16、(N*mm)</p><p><b>  九、計算螺桿強(qiáng)度</b></p><p>  []取71-118.333Mpa</p><p>  螺桿當(dāng)量應(yīng)力σ的值為:0.043MPa</p><p><b>  < [] 合格</b></p><p><b> 

17、 十、螺紋牙強(qiáng)度計算</b></p><p><b>  螺桿</b></p><p><b>  螺母</b></p><p><b>  螺桿</b></p><p><b>  螺母</b></p><p>  螺

18、紋牙底寬度為:5.2mm</p><p>  螺桿抗剪強(qiáng)度為:0.008MPa</p><p>  螺桿抗彎強(qiáng)度為:0.018MPa</p><p>  螺母抗剪強(qiáng)度為:0.077MPa</p><p>  螺母抗彎強(qiáng)度為:0.178MPa</p><p>  十一、螺桿的穩(wěn)定性計算</p><p&

19、gt;  螺桿的最大工作長度l為:1300mm</p><p>  兩端固定長度系數(shù)μ為:0.5</p><p>  螺桿材料的彈性模量E為:207000MPa</p><p>  應(yīng)使 (不能滿足此條件應(yīng)該加大)</p><p>  臨界載荷Fc的值為:326929.962N</p><p>  十二、螺桿的剛度計

20、算</p><p>  螺桿材料的切變模量G為:83000MPa</p><p>  軸向載荷使導(dǎo)程產(chǎn)生的變形量δLF為:0mm</p><p>  轉(zhuǎn)矩使導(dǎo)程產(chǎn)生的變形量δLT為:0mm</p><p>  導(dǎo)程的總變形量δL為:0mm</p><p><b>  十三、計算橫向振動</b>&l

21、t;/p><p>  螺桿兩支承間的最大距離lc為:1000mm</p><p>  兩端固定的系數(shù)μ1為:4.730</p><p>  臨界轉(zhuǎn)速nc為: 5255.678(r/min)</p><p><b>  十四、計算效率</b></p><p>  軸承效率為:0.99</p>

22、<p>  效率為:0.26678</p><p><b>  4.2電動機(jī)的選擇</b></p><p><b>  選用步進(jìn)電機(jī):</b></p><p>  工作機(jī)所需輸入功率:=(50+50N)*3m/min=5w</p><p><b>  電機(jī)所需功率:</

23、b></p><p><b>  其中,</b></p><p>  為高速級聯(lián)軸器效率,0.99</p><p>  為滾動軸承效率,0.99</p><p>  為閉式圓柱齒輪效率,0.97(按8級精度)</p><p>  為螺旋傳動效率,0.26678</p><

24、p>  所以查表選電機(jī)型號為:75BF001 </p><p><b>  電機(jī)參數(shù): </b></p><p>  型號: 75BF001</p><p><b>  相數(shù): 3</b></p><p>  步距角(°): 1.5</p><p

25、>  電壓/V: 24</p><p>  相電流/A: 3</p><p>  最大靜轉(zhuǎn)矩/(N·m): 0.392</p><p>  空載起動頻率/(step/s): 1750</p><p>  空載運(yùn)行頻率/(step/s): </p><p>  電感/mH:

26、 19</p><p>  電阻/Ω: 0.62</p><p>  分配方式: 三相六拍</p><p>  外形尺寸/mm: φ75×53</p><p>  質(zhì)量/kg: 1.1</p><p><b>  4.3軸承選擇</b></p>

27、<p>  查表采用固定式E型、F型軸承、軸承型號為7602020TVP,主要參數(shù)如下:</p><p><b>  內(nèi)徑d=20mm</b></p><p><b>  外徑D=47mm</b></p><p><b>  寬度B=14mm</b></p><p>

28、  球徑Dw=5.953mm</p><p><b>  球數(shù)Z=15</b></p><p>  動負(fù)荷Ca=19600N</p><p>  預(yù)加負(fù)載F0=2300N</p><p>  極限轉(zhuǎn)速nm=3000r/min</p><p>  重量m=0.123kg</p><

29、;p><b>  4.4軸承校核</b></p><p> ?。?)由設(shè)計條件知,負(fù)載很小G=mg=500N<19600,因此軸承承載能力能完全滿足要求。</p><p><b>  (2)壽命設(shè)計:</b></p><p><b>  =1.1</b></p><p&

30、gt;<b>  =1</b></p><p><b>  4.6潤滑與密封</b></p><p><b>  軸承的潤滑:</b></p><p>  根據(jù)軸頸的圓周速度,軸承可以用潤滑脂和潤滑油潤滑,由于齒輪的轉(zhuǎn)速根據(jù)以知是大于2m/s,所以潤滑可以靠機(jī)體的飛濺直接潤滑軸承。</p>

31、<p><b>  齒輪的潤滑:</b></p><p>  采用浸油潤滑,由于低速級周向速度為2.87m/s,所以浸油高度約為六分之一大齒輪半徑</p><p>  齒輪與軸承用同種潤滑油較為便利,考慮到該裝置用于小型設(shè)備,選用L-AN15潤滑油。</p><p><b>  密封:</b></p&g

32、t;<p>  采用迷宮式密封件,圓周速度小于等于10m/s,環(huán)境溫度低于潤滑脂溶點(diǎn)</p><p>  五、電氣控制系統(tǒng)設(shè)計</p><p><b>  5.1控制芯片選擇</b></p><p>  本系統(tǒng)將采用ATMEL公司生產(chǎn)的AVR系列MEGA-16L產(chǎn)品作為控制單元。其具有以下優(yōu)點(diǎn):</p><p&

33、gt;  一、簡便易學(xué),費(fèi)用低廉</p><p>  首先,對于非專業(yè)人員來說,選擇AVR單片機(jī)的最主要原因,是進(jìn)入AVR單片機(jī)開發(fā)的門檻非常低,只要會操作電腦就可以學(xué)習(xí)AVR單片機(jī)的開發(fā)。單片機(jī)初學(xué)者只需一條ISP下載線,把編輯、調(diào)試通過的軟件程序直接在線寫入AVR單片機(jī),即可以開發(fā)AVR單片機(jī)系列中的各種封裝的器件。AVR單片機(jī)因此在業(yè)界號稱“一線打天下”。</p><p>  其次,

34、AVR單片機(jī)便于升級。AVR程序?qū)懭胧侵苯釉陔娐钒迳线M(jìn)行程序修改、燒錄等操作,這樣便于產(chǎn)品升級。</p><p>  再次,AVR單片機(jī)費(fèi)用低廉。學(xué)習(xí)AVR單片機(jī)可使用ISP在線下載編程方式(即把PC機(jī)上編譯好的程序?qū)懙絾纹瑱C(jī)的程序存儲器中),不需購買仿真器、編程器、擦抹器和芯片適配器等,即可進(jìn)行所有AVR單片機(jī)的開發(fā)應(yīng)用,這可節(jié)省很多開發(fā)費(fèi)用。程序存儲器擦寫可達(dá)10000次以上,不會產(chǎn)生報廢品。</p&g

35、t;<p>  二、高速、低耗、保密</p><p>  首先,AVR單片機(jī)是高速嵌入式單片機(jī):</p><p>  1、AVR單片機(jī)具有預(yù)取指令功能,即在執(zhí)行一條指令時,預(yù)先把下一條指令取進(jìn)來,使得指令可以在一個時鐘周期內(nèi)執(zhí)行。</p><p>  2、多累加器型,數(shù)據(jù)處理速度快。AVR單片機(jī)具有32個通用工作寄存器,相當(dāng)于有32條立交橋,可以快速通

36、行。</p><p>  3、中斷響應(yīng)速度快。AVR單片機(jī)有多個固定中斷向量入口地址,可快速響應(yīng)中斷。</p><p>  其次,AVR單片機(jī)耗能低。對于典型功耗情況,WDT關(guān)閉時為100nA,更適用于電池供電的應(yīng)用設(shè)備。有的器件最低1.8 V即可工作。</p><p>  再次,AVR單片機(jī)保密性能好。它具有不可破解的位加密鎖Lock Bit技術(shù),保密位單元深藏于

37、芯片內(nèi)部,無法用電子顯微鏡看到。</p><p>  三、I/O口功能強(qiáng),具有A/D轉(zhuǎn)換等電路</p><p>  1. AVR單片機(jī)的I/O口是真正的I/O口,能正確反映I/O口輸入/輸出的真實(shí)情況。工業(yè)級產(chǎn)品,具有大電流(灌電流)10~40 mA,可直接驅(qū)動可控硅SCR或繼電器,節(jié)省了外圍驅(qū)動器件。</p><p>  2. AVR單片機(jī)內(nèi)帶模擬比較器,I/O口

38、可用作A/D轉(zhuǎn)換,可組成廉價的A/D轉(zhuǎn)換器。ATmega48/8/16等器件具有8路10位A/D。</p><p>  3. 部分AVR單片機(jī)可組成零外設(shè)元件單片機(jī)系統(tǒng),使該類單片機(jī)無外加元器件即可工作,簡單方便,成本又低。</p><p>  4. AVR單片機(jī)可重設(shè)啟動復(fù)位,以提高單片機(jī)工作的可靠性。有看門狗定時器實(shí)行安全保護(hù),可防止程序走亂(飛),提高了產(chǎn)品的抗干擾能力。</p

39、><p>  四、有功能強(qiáng)大的定時器/計數(shù)器及通訊接口</p><p>  定時/計數(shù)器T/C有8位和16位,可用作比較器。計數(shù)器外部中斷和PWM(也可用作D/A)用于控制輸出,某些型號的AVR單片機(jī)有3~4個PWM,是作電機(jī)無級調(diào)速的理想器件。</p><p>  AVR單片機(jī)有串行異步通訊UART接口,不占用定時器和SPI同步傳輸功能,因其具有高速特性,故可以工作在

40、一般標(biāo)準(zhǔn)整數(shù)頻率下,而波特率可達(dá)576K。</p><p>  5.2.電機(jī)驅(qū)動芯片選擇</p><p>  在電機(jī)驅(qū)動芯片我選用L298n,它能驅(qū)動的最高電壓為50V,單向電流最大可達(dá)5A</p><p>  L298n芯片采用以下接線方式:</p><p>  5.3穩(wěn)壓電源芯片的選擇</p><p>  在穩(wěn)壓電

41、源上我選擇三端穩(wěn)壓集成電路7805為單片機(jī)供電。</p><p>  電子產(chǎn)品中,常見的三端穩(wěn)壓集成電路有正電壓輸出的78 ×× 系列和負(fù)電壓輸出的79××系列。顧名思義,三端IC是指這種穩(wěn)壓用的集成電路,只有三條引腳輸出,分別是輸入端、接地端和輸出端。它的樣子象是普通的三極管,TO- 220 的標(biāo)準(zhǔn)封裝,也有9013樣子的TO-92封裝。</p><p

42、>  用78/79系列三端穩(wěn)壓IC來組成穩(wěn)壓電源所需的外圍元件極少,電路內(nèi)部還有過流、過熱及調(diào)整管的保護(hù)電路,使用起來可靠、方便,而且價格便宜。該系列集成穩(wěn)壓IC型號中的78或79后面的數(shù)字代表該三端集成穩(wěn)壓電路的輸出電壓,如7806表示輸出電壓為正6V,7909表示輸出電壓為負(fù)9V。</p><p>  因?yàn)槿斯潭煞€(wěn)壓電路的使用方便,電子制作中經(jīng)常采用。</p><p>  

43、在實(shí)際應(yīng)用中,應(yīng)在三端集成穩(wěn)壓電路上安裝足夠大的散熱器(當(dāng)然小功率的條件下不用)。當(dāng)穩(wěn)壓管溫度過高時,穩(wěn)壓性能將變差,甚至損壞。</p><p>  當(dāng)制作中需要一個能輸出1.5A以上電流的穩(wěn)壓電源,通常采用幾塊三端穩(wěn)壓電路并聯(lián)起來,使其最大輸出電流為N個1.5A,但應(yīng)用時需注意:并聯(lián)使用的集成穩(wěn)壓電路應(yīng)采用同一廠家、同一批號的產(chǎn)品,以保證參數(shù)的一致。另外在輸出電流上留有一定的余量,以避免個別集成穩(wěn)壓電路失效時導(dǎo)

44、致其他電路的連鎖燒毀。</p><p>  在78 ** 、79 ** 系列三端穩(wěn)壓器中最常應(yīng)用的是TO-220 和TO-202 兩種封裝。這兩種封裝的圖形以及引腳序號、引腳功能如附圖所示。</p><p>  圖中的引腳號標(biāo)注方法是按照引腳電位從高到底的順序標(biāo)注的。這樣標(biāo)注便于記憶。引腳①為最高電位,③腳為最低電位,②腳居中。從圖中可以看出,不論正壓還是負(fù)壓,②腳均為輸出端。對于78**

45、正壓系列,輸入是最高電位,自然是①腳,地端為最低電位,即③腳,如附圖所示。對與79**負(fù)壓系列,輸入為最低電位,自然是③腳,而地端為最高電位,即①腳,如附圖所示。 </p><p><b>  5.3串行通訊設(shè)計</b></p><p>  在本系統(tǒng)中我設(shè)計了串行通訊的模塊,可以使單片機(jī)接受上位電腦發(fā)送過來的數(shù)據(jù)進(jìn)而控制電機(jī)的轉(zhuǎn)動,實(shí)時的通訊系統(tǒng)

46、方便了對該平臺的控制,同時能實(shí)現(xiàn)遠(yuǎn)程控制。</p><p>  在串行通訊中我設(shè)計使用的是MAX232N芯片,以下是其接線電路與引腳配置圖。</p><p><b>  5.4控制電路設(shè)計</b></p><p>  首先設(shè)計的部分是ATmega16單片機(jī)的最小外圍電路,包括:晶振電路、復(fù)位電路、ISP下載電路、供電電源電路。</p>

47、;<p><b>  晶振電路圖如下:</b></p><p><b>  復(fù)位電路如下:</b></p><p><b>  穩(wěn)壓電源電路:</b></p><p>  ISP下載電路如圖:</p><p><b>  5.5顯示系統(tǒng)設(shè)計</b&

48、gt;</p><p>  改系統(tǒng)的顯示部分我采用12864屏幕作為顯示元件,它作為漢字屏幕能顯示4*8個漢字。同時能使用穿行方式與單片機(jī)進(jìn)行通信接受單片機(jī)發(fā)送的數(shù)據(jù)并顯示</p><p>  工作于串行模式時的引腳定義:PIN1------------ GND  電源-, 一般接0V。 PIN2------------VDD 電源+, 一般接5V。 PIN3------------

49、V0 對比度調(diào)整端。 PIN4------------CS,片選PIN5------------SID,數(shù)據(jù)PIN6------------SCK,脈沖 PIN7------------NC,不連接PIN8------------NC,不連接 PIN9------------NC,不連接PIN10-----------NC,不連接 PIN11-----------NC,不連接 PIN12-----------NC,不連

50、接 PIN13-----------NC,不連接 PIN14-----------NC,不連接PIN15-----------PSB  并行:PSB=1,可以接VCC;  串行:PSB=0,一般接GND PIN16 ----------NC,不連接 PIN17-----------RST,模塊復(fù)位(低電平有效)PIN18 ----------NC,</p><p>  下圖是12864的驅(qū)動電路:&l

51、t;/p><p>  12864屏幕的指令集:</p><p><b>  六、部分程序</b></p><p>  // 串口通訊 </p><p>  // 芯片: Mega16</p><p>  // 晶振: 16M</p><p>  //計算機(jī)串口發(fā)送字

52、節(jié)后 單片機(jī)接收到返回,</p><p>  #include <iom16v.h></p><p>  #include <MACROS.h></p><p>  unsigned char temp,shu=0;</p><p>  /****************************************

53、**************************************/</p><p>  void uart0_init(void)</p><p><b>  {</b></p><p>  UCSRB = 0x00; //disable while setting baud rate</p><p>  U

54、CSRA = 0x00;</p><p>  UCSRC = BIT(URSEL) | 0x06;</p><p>  UBRRL = 0x67; //set baud rate lo</p><p>  UBRRH = 0x00; //set baud rate hi</p><p>  UCSRB = 0x98;</p>&

55、lt;p><b>  }</b></p><p>  //tansmit-------------------------------串口發(fā)-----</p><p>  void uart_t( unsigned char datax )</p><p><b>  {</b></p><p&g

56、t;  while ( !( UCSRA & (1<<UDRE)) );</p><p>  UDR = datax;</p><p><b>  }</b></p><p>  /* 字符輸入函數(shù) */</p><p>  unsigned int uart_r(void)</p

57、><p><b>  {</b></p><p>  while(!(UCSRA& (1<<RXC)));</p><p>  return UDR;</p><p><b>  }</b></p><p>  /*字符串輸出函數(shù) */&

58、lt;/p><p>  void main()</p><p><b>  {</b></p><p>  DDRD=0xff;</p><p>  uart0_init();</p><p>  SREG=0x80; //開總中斷 </p><p><b>  

59、while(1);</b></p><p><b>  }</b></p><p>  #pragma interrupt_handler uart0_rx_isr:12 //串口接收中斷</p><p>  void uart0_rx_isr(void) </p><p><b>  {

60、 </b></p><p>  //uart has received a character in UDR </p><p><b>  temp=UDR;</b></p><p>  uart_t(temp); //送什么發(fā)什么</p><p>  PORTD=temp;</p><p

61、>  ////////////////////////////////這里可以收到串口助手發(fā)來的數(shù)據(jù) </p><p><b>  }</b></p><p><b>  七、參考文獻(xiàn)</b></p><p>  [1]康永澤,論機(jī)電一體化的發(fā)展。(論文)</p><p>  [2]上海電器科

62、學(xué)研究所,電機(jī)與控制應(yīng)用(期刊)。</p><p>  [3]計時鳴,機(jī)電一體化控制技術(shù)與系統(tǒng)。</p><p>  [4]尚濤,機(jī)電控制技術(shù)。</p><p>  [5]尹志強(qiáng),機(jī)電一體化系統(tǒng)設(shè)計課程設(shè)計指導(dǎo)書。</p><p>  [6]劉同法,單片機(jī)外圍接口電路與工程實(shí)踐。</p><p>  [7]龍威林,單片

63、機(jī)應(yīng)用入門:AT89S51和AVR 。</p><p>  [8]陳忠平,單片機(jī)基礎(chǔ)和最小系統(tǒng)實(shí)踐。</p><p>  [9]白靜,數(shù)字電路與邏輯設(shè)計。</p><p>  [10]董景新,控制工程基礎(chǔ)。</p><p>  [11]程志紅,機(jī)械設(shè)計。</p><p>  [12]程志紅,機(jī)械設(shè)計課程上機(jī)與設(shè)計。&

64、lt;/p><p>  [13]肖興明,機(jī)電控制及自動化。</p><p>  [14]李朝青,單片機(jī)原理及接口技術(shù)。</p><p>  [15]路敦民,機(jī)電傳動及控制。</p><p><b>  八、程序附頁</b></p><p><b>  主程序:</b></p

65、><p>  #include <iom16v.h> //頭文件定義</p><p>  #include <macros.h></p><p>  #pragma data:code </p><p>  #define uchar unsigned char</p><p>  #defin

66、e uint unsigned int</p><p>  #include "12864.c"</p><p>  unsigned char data=0;</p><p>  uint speed=0;</p><p>  uchar turn=0;</p><p>  /**********

67、*********************************</p><p>  函數(shù)名稱: Delayus</p><p>  功 能: 延時指定微秒(8M晶振)</p><p>  參 數(shù): US--延時的微秒數(shù)</p><p><b>  返回值 : 無</b></p><p

68、>  /********************************************/</p><p>  void delay_us(uint US) </p><p><b>  {</b></p><p><b>  uint i;</b></p><p>  US=U

69、S*10/4; </p><p>  for( i=0;i<US;i++); </p><p><b>  }</b></p><p>  void delay_ms(uint MS) </p><p><b>  {</b></p><p><b&

70、gt;  uint i,j;</b></p><p>  for( i=0;i<MS;i++)</p><p>  for(j=0;j<1141*2;j++);//1141是在8MHz晶振下,通過軟件仿真反復(fù)實(shí)驗(yàn)得到的數(shù)值</p><p><b>  }</b></p><p>  /*****

71、***************************************/</p><p>  void port_init(void)////////端口初始化</p><p><b>  {</b></p><p>  DDRA = 0xFF; </p><p>  DDRB = 0xFF; </

72、p><p>  DDRC = 0xFF; </p><p>  DDRD = 0x00;</p><p><b>  }</b></p><p>  //************************************T1初始化</p><p>  void timer1_init(vo

73、id)</p><p><b>  {</b></p><p>  TCCR1B = 0x00; //stop </p><p>  TCNT1H = 0xFF; ////////////////////setup 初值</p><p>  TCNT1L = 0x30;</p><p>  TCC

74、R1A = 0x00;/////////tart Timer</p><p>  TCCR1B = 0x02; </p><p><b>  }</b></p><p>  /********************************************</p><p>  函數(shù)名稱: KeyPress<

75、;/p><p>  參 數(shù): 掃描鍵值</p><p>  返回值 : 1,2,3,4</p><p>  /********************************************/</p><p>  unsigned char KeyPress()</p><p><b>  {&l

76、t;/b></p><p>  uchar i=0;</p><p>  DDRD&=0xf0;</p><p>  PIND|=0xf0;</p><p>  PORTD=0xff;</p><p>  switch PIND</p><p><b>  {</b

77、></p><p>  case 0xef:</p><p><b>  {</b></p><p>  // delay_ms(1);</p><p>  if(PIND==0xef)</p><p><b>  {</b></p><p>

78、;<b>  i=1;</b></p><p><b>  return i;</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p>

79、;<p>  case 0xdf:</p><p><b>  {</b></p><p>  // delay_ms(1);</p><p>  if(PIND==0xdf)</p><p><b>  {</b></p><p><b>  i

80、=2;</b></p><p><b>  return i;</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p> 

81、 case 0xbf:</p><p><b>  {</b></p><p>  // delay_ms(1);</p><p>  if(PIND==0xbf)</p><p><b>  {</b></p><p><b>  i=3;</b>&

82、lt;/p><p><b>  return i;</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  case 0x7f:<

83、;/p><p><b>  {</b></p><p>  // delay_ms(1);</p><p>  if(PIND==0x7f)</p><p><b>  {</b></p><p><b>  i=4;</b></p><

84、;p><b>  return i;</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  case 0xff:</p><p

85、><b>  {</b></p><p>  // delay_ms(1);</p><p>  if(PIND==0xff)</p><p><b>  {</b></p><p><b>  i=0;</b></p><p><b>

86、;  return i;</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>

87、<b>  }</b></p><p>  void init_devices()</p><p><b>  {</b></p><p><b>  CLI();</b></p><p>  port_init();</p><p>  timer1_

88、init();</p><p><b>  SEI();</b></p><p><b>  }</b></p><p>  void speedup()</p><p><b>  {</b></p><p><b>  speed++;&l

89、t;/b></p><p><b>  }</b></p><p>  void speeddown()</p><p><b>  {</b></p><p><b>  speed--;</b></p><p><b>  }<

90、/b></p><p>  void speeddown()</p><p><b>  {</b></p><p><b>  CLI();</b></p><p><b>  }</b></p><p>  void back()</p&

91、gt;<p><b>  {</b></p><p>  if(turn==0) turn=1;</p><p>  if(turn==1) turn=0;</p><p><b>  }</b></p><p>  /*********************************

92、***********/</p><p>  void main()</p><p><b>  {</b></p><p>  init_devices();</p><p><b>  while(1)</b></p><p><b>  {</b>

93、</p><p>  write_12864(0,0,1/speed*1.5*60/360+48);</p><p>  write_12864(6,0,"r/min");</p><p>  data=KeyPress();</p><p>  if(data==1) speedup();</p><

94、p>  if(data==2) speeddown();</p><p>  if(data==3) stop();</p><p>  if(data==4) back();</p><p><b>  }</b></p><p><b>  }</b></p><p&g

95、t;  #pragma interrupt_handler timer1_ovf_isr:9</p><p>  void timer1_ovf_isr(void) //TIMER1 has overflowed</p><p><b>  { </b></p><p>  TCNT1H = speed; //reload counter h

96、igh value</p><p>  TCNT1L = 0xF8; //reload counter low value</p><p><b>  flag++;</b></p><p><b>  flag%=9;</b></p><p>  if(turn==0)</p>&l

97、t;p><b>  {</b></p><p>  switch(flag)</p><p><b>  {</b></p><p><b>  case 0:</b></p><p>  PORTB|=BIT(0);</p><p>  PORT

98、B&=~BIT(1);</p><p>  PORTB&=~BIT(2);</p><p><b>  case 1:</b></p><p>  PORTB|=BIT(0);</p><p>  PORTB|=BIT(1);</p><p>  PORTB&=~BIT(2

99、);</p><p><b>  case 2:</b></p><p>  PORTB|=BIT(1);</p><p>  PORTB&=~BIT(2);</p><p>  PORTB&=~BIT(0);</p><p><b>  case 3:</b>

100、;</p><p>  PORTB|=BIT(1);</p><p>  PORTB|=BIT(2);</p><p>  PORTB&=~BIT(0);</p><p><b>  case 4:</b></p><p>  PORTB|=BIT(2);</p><p

101、>  PORTB&=~BIT(0);</p><p>  PORTB&=~BIT(1);</p><p><b>  case 5:</b></p><p>  PORTB|=BIT(2);</p><p>  PORTB|=BIT(0);</p><p>  PORTB&a

102、mp;=~BIT(1);</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(turn==1)</p><p><b>  {</b></p><p>  switch(flag)</p>

103、<p><b>  {</b></p><p><b>  case 0:</b></p><p>  PORTB|=BIT(0);</p><p>  PORTB&=~BIT(1);</p><p>  PORTB&=~BIT(2);</p><p

104、><b>  case 1:</b></p><p>  PORTB|=BIT(0);</p><p>  PORTB|=BIT(1);</p><p>  PORTB&=~BIT(2);</p><p><b>  case 2:</b></p><p>  

105、PORTB|=BIT(1);</p><p>  PORTB&=~BIT(2);</p><p>  PORTB&=~BIT(0);</p><p><b>  case 3:</b></p><p>  PORTB|=BIT(1);</p><p>  PORTB|=BIT(2)

106、;</p><p>  PORTB&=~BIT(0);</p><p><b>  case 4:</b></p><p>  PORTB|=BIT(2);</p><p>  PORTB&=~BIT(0);</p><p>  PORTB&=~BIT(1);</p&

107、gt;<p><b>  case 5:</b></p><p>  PORTB|=BIT(2);</p><p>  PORTB|=BIT(0);</p><p>  PORTB&=~BIT(1);</p><p><b>  }</b></p><p&g

108、t;<b>  }</b></p><p><b>  }</b></p><p>  void uart0_init(void)</p><p><b>  {</b></p><p>  UCSRB = 0x00; //disable while setting baud

109、rate</p><p>  UCSRA = 0x00;</p><p>  UCSRC = BIT(URSEL) | 0x06;</p><p>  UBRRL = 0x67; //set baud rate lo</p><p>  UBRRH = 0x00; //set baud rate hi</p><p>

110、  UCSRB = 0x98;</p><p><b>  }</b></p><p>  //tansmit-------------------------------串口發(fā)-----</p><p>  void uart_t( unsigned char datax )</p><p><b>  {&

111、lt;/b></p><p>  while ( !( UCSRA & (1<<UDRE)) );</p><p>  UDR = datax;</p><p><b>  }</b></p><p>  /* 字符輸入函數(shù) */</p><p>  uns

112、igned int uart_r(void)</p><p><b>  {</b></p><p>  while(!(UCSRA& (1<<RXC)));</p><p>  return UDR;</p><p><b>  }</b></p><p

113、>  /*字符串輸出函數(shù) */</p><p>  12864屏幕驅(qū)動程序:</p><p>  //////////////////////////////////////////////////////////////////////////////</p><p>  ///////////////////// LCD 12864 漢

114、字屏 ////////////////////////////</p><p>  ///////////////////// 運(yùn)行環(huán)境: ICC AVR ////////////////////////////</p><p>  ///////////////////// 目標(biāo)系統(tǒng): Atmega16L ////////////////

115、////////////</p><p>  ///////////////////// 編輯時間: 2010-1-8 ////////////////////////////</p><p>  ///////////////////// 編輯人 : zhanggan </p><p>  #include <iom16v.h>

116、; //頭文件定義</p><p>  #include <macros.h></p><p>  #define uint unsigned int</p><p>  #define uchar unsigned char</p><p>  #define x1 0x80</p>&

117、lt;p>  #define x2 0x88</p><p>  #define y 0x80</p><p>  #define comm 0</p><p>  #define dat 1</p><p><b>  端口操作定義</b></p><p>  #def

118、ine LCD_RS_CLR PORTC&=~0X01;delay(5)</p><p>  #define LCD_RW_CLR PORTC&=~0X02;delay(5) </p><p>  #define LCD_E_CLR PORTC&=~0X04;delay(5)</p><p>  #define L

119、CD_RS_SET PORTC|= 0X01;delay(5)</p><p>  #define LCD_RW_SET PORTC|= 0X02;delay(5) </p><p>  #define LCD_E_SET PORTC|= 0X04;delay(5)</p><p>  #define LCD_OUT DDRA =

120、 0XFF;delay(5)</p><p>  #define LCD_IN DDRA = 0X00;delay(5)</p><p>  #define LCD_Data PORTA</p><p><b>  通用延時函數(shù) </b></p><p>  void delay(uint us)

121、//delay time</p><p><b>  {</b></p><p>  while(us--);</p><p><b>  }</b></p><p>  void delay_nms(uint ms)</p><p><b>  {</b&g

122、t;</p><p><b>  uint i,j;</b></p><p>  for(i=0;i<ms;i++)</p><p>  for(j=0;j<700;j++);</p><p><b>  }</b></p><p><b>  忙檢測函

123、數(shù) </b></p><p>  void chk_busy (void)</p><p><b>  {</b></p><p>  LCD_Data=0xff;</p><p>  LCD_RS_CLR;</p><p>  LCD_RW_SET;</p><

124、;p>  LCD_E_SET;</p><p><b>  LCD_IN;</b></p><p>  while(PINA&0X80);</p><p><b>  LCD_OUT;</b></p><p>  LCD_E_CLR;</p><p><b

125、>  }</b></p><p>  字節(jié)數(shù)據(jù)寫入函數(shù) </p><p>  void wr_lcd (uchar dat_comm,uchar content)</p><p><b>  {</b></p><p>  chk_busy ();</p><p><b&

126、gt;  LCD_OUT;</b></p><p>  if(dat_comm)</p><p><b>  {</b></p><p>  LCD_RS_SET; //data</p><p>  LCD_RW_CLR; //write</p><p><b

127、>  }</b></p><p><b>  else </b></p><p><b>  {</b></p><p>  LCD_RS_CLR; //command</p><p>  LCD_RW_CLR; //write</p><p

128、><b>  }</b></p><p>  LCD_Data=content; //output data or comm</p><p>  LCD_E_SET;</p><p>  LCD_E_CLR;</p><p><b>  }</b></p><p> 

129、 清DDRAM-函數(shù) </p><p>  void clrram (void)</p><p><b>  {</b></p><p>  wr_lcd (comm,0x30);</p><p>  wr_lcd (comm,0x01);</p><p><b>  }</b

130、></p><p>  液晶屏初始化函數(shù) </p><p>  void init_lcd (void)</p><p><b>  {</b></p><p>  wr_lcd (comm,0x30); /*30---基本指令動作*/ </p><p>  wr_lcd (comm

131、,0x01); /*清屏,地址指針指向00H*/</p><p>  wr_lcd (comm,0x06); /*光標(biāo)的移動方向*/</p><p>  wr_lcd (comm,0x0c); /*開顯示,關(guān)游標(biāo)*/</p><p><b>  }</b></p><p>  全屏字符顯示函數(shù) </p&g

132、t;<p>  void chn_disp (uchar const *chn)</p><p><b>  {</b></p><p>  uchar i,j;</p><p>  uchar add[]={0,2,1,3};</p><p>  wr_lcd (comm,0x30);</p>

133、<p>  wr_lcd (comm,0x80);</p><p>  for (j=0;j<4;j++)</p><p><b>  {</b></p><p>  for (i=0;i<16;i++)</p><p>  wr_lcd (dat,chn[add[j]*16+i]);</

134、p><p><b>  }</b></p><p><b>  }</b></p><p>  顯示圖形函數(shù) </p><p>  void img_disp (uchar const *img)</p><p><b>  {</b></p

135、><p>  uchar i,j;</p><p>  for(j=0;j<32;j++)</p><p><b>  {</b></p><p>  for(i=0;i<8;i++)</p><p><b>  {</b></p><p> 

136、 wr_lcd (comm,0x34);</p><p>  wr_lcd (comm,y+j);</p><p>  wr_lcd (comm,x1+i);</p><p>  wr_lcd (comm,0x30);</p><p>  wr_lcd (dat,img[j*16+i*2]);</p><p>  wr

137、_lcd (dat,img[j*16+i*2+1]);</p><p><b>  }</b></p><p><b>  }</b></p><p>  for(j=32;j<64;j++)</p><p><b>  {</b></p><p>

138、;  for(i=0;i<8;i++)</p><p><b>  {</b></p><p>  wr_lcd (comm,0x34);</p><p>  wr_lcd (comm,y+j-32);</p><p>  wr_lcd (comm,x2+i);</p><p>  wr_l

139、cd (comm,0x30);</p><p>  wr_lcd (dat,img[j*16+i*2]);</p><p>  wr_lcd (dat,img[j*16+i*2+1]);</p><p><b>  }</b></p><p><b>  }</b></p><p

140、>  wr_lcd (comm,0x36);</p><p><b>  }</b></p><p>  點(diǎn)陣顯示函數(shù) </p><p>  void lat_disp (uchar data1,uchar data2)</p><p><b>  {</b></p>&l

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論