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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

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

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

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

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

9、t;b>  三、絲杠的平均載荷</b></p><p><b>  四、預期額定動載荷</b></p><p>  (1)按預期工作時間估計</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ù)所選定的導程=10mm以及動載荷選用FFZD型絲杠,型號FFZD3210,其主要參數(shù)如下:</p><p>

11、<b>  公稱直徑32mm</b></p><p><b>  導程10mm</b></p><p><b>  絲杠大徑30mm</b></p><p>  軸端直徑<=24mm</p><p><b>  動負荷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>  許用壓強在18 MPa -25 MPa之間 ,選取[p]為22 MPa</p><p>  許用壓強[p]為:22MPa</p><p><

14、b>  七、驗算自鎖</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ù)得出當量摩擦角</b></p><p><b>  =5.21</b></p><p><b>  八、計算驅動轉矩</b></p><p><b>  、為軸承摩擦力矩</b></p><p>  驅動轉矩T為:258

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

17、 十、螺紋牙強度計算</b></p><p><b>  螺桿</b></p><p><b>  螺母</b></p><p><b>  螺桿</b></p><p><b>  螺母</b></p><p>  螺

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

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

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

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

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

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>  所以查表選電機型號為:75BF001 </p><p><b>  電機參數(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>  最大靜轉矩/(N·m): 0.392</p><p>  空載起動頻率/(step/s): 1750</p><p>  空載運行頻率/(step/s): </p><p>  電感/mH:

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

27、<p>  查表采用固定式E型、F型軸承、軸承型號為7602020TVP,主要參數(shù)如下:</p><p><b>  內徑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>  動負荷Ca=19600N</p><p>  預加負載F0=2300N</p><p>  極限轉速nm=3000r/min</p><p>  重量m=0.123kg</p><

29、;p><b>  4.4軸承校核</b></p><p> ?。?)由設計條件知,負載很小G=mg=500N<19600,因此軸承承載能力能完全滿足要求。</p><p><b>  (2)壽命設計:</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ù)軸頸的圓周速度,軸承可以用潤滑脂和潤滑油潤滑,由于齒輪的轉速根據(jù)以知是大于2m/s,所以潤滑可以靠機體的飛濺直接潤滑軸承。</p>

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

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

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

34、AVR單片機便于升級。AVR程序寫入是直接在電路板上進行程序修改、燒錄等操作,這樣便于產品升級。</p><p>  再次,AVR單片機費用低廉。學習AVR單片機可使用ISP在線下載編程方式(即把PC機上編譯好的程序寫到單片機的程序存儲器中),不需購買仿真器、編程器、擦抹器和芯片適配器等,即可進行所有AVR單片機的開發(fā)應用,這可節(jié)省很多開發(fā)費用。程序存儲器擦寫可達10000次以上,不會產生報廢品。</p&g

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

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

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

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

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

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

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

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

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

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

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

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

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

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

49、V0 對比度調整端。 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,模塊復位(低電平有效)PIN18 ----------NC,</p><p>  下圖是12864的驅動電路:&l

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

52、節(jié)后 單片機接收到返回,</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>  七、參考文獻</b></p><p>  [1]康永澤,論機電一體化的發(fā)展。(論文)</p><p>  [2]上海電器科

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

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

64、lt;/p><p>  [13]肖興明,機電控制及自動化。</p><p>  [14]李朝青,單片機原理及接口技術。</p><p>  [15]路敦民,機電傳動及控制。</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晶振下,通過軟件仿真反復實驗得到的數(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屏幕驅動程序:</p><p>  //////////////////////////////////////////////////////////////////////////////</p><p>  ///////////////////// LCD 12864 漢

114、字屏 ////////////////////////////</p><p>  ///////////////////// 運行環(huán)境: ICC AVR ////////////////////////////</p><p>  ///////////////////// 目標系統(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); /*光標的移動方向*/</p><p>  wr_lcd (comm,0x0c); /*開顯示,關游標*/</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>  點陣顯示函數(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)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論