intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Cắt thép part8

Chia sẻ: Vanthi Bichtram | Ngày: | Loại File: PDF | Số trang:10

54
lượt xem
4
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

1 bộ Timer 8 bit và 1 bộ Timer 16 bit với chế độ so sánh và chia tần số tách biệt và chế độ bắt mẫu. + Ba kênh điều chế độ rộng xung PWM + Có đến 13 interrupt ngoài và trong + Bộ định thời Watchdog lập trình được. tự động reset khi treo máy + Bộ so sánh tương tự + Ba chế độ ngủ : chế độ rỗi (Idle), tiết kiệm điện ( Power save) và chế độ Power Down

Chủ đề:
Lưu

Nội dung Text: Cắt thép part8

  1. B¸o c¸o tèt nghiÖp NguyÔn Duy Hoµng + 1 bộ Timer 8 bit và 1 bộ Timer 16 bit với chế độ so sánh và chia tần số tách biệt và chế độ bắt mẫu. + Ba kênh điều chế độ rộng xung PWM + Có đến 13 interrupt ngoài và trong + Bộ định thời Watchdog lập trình được. tự động reset khi treo máy + Bộ so sánh tương tự + Ba chế độ ngủ : chế độ rỗi (Idle), tiết kiệm điện ( Power save) và chế độ Power Down ThiÕt kÕ m¹ch ®iÒu khiÓn vµ hiÓn thÞ chiÒu dµi èng Môc ®Ých : M¹ch ®o chiÒu dµi sÏ nhËn t×n hiÖu xung tõ m¸y ph¸t xung. Trªn m¹ch thiÕt kÕ s½n c¸c nót Ên víi c¸c chøc n¨ng, ban ®Çu ng−êi vËn hµnh sÏ Ên nót ®Ó ®Æt chiÒu dµi cÇn ®o, sau ®ã d÷ liÖu nµy sÏ ®−îc l−u vµo bé nhí Flash cña chÝp AVR. Khi èng ch¹y m¸y ph¸t xung liªn tôc ph¸t xung vµ chÝp sÏ ®Õm nh÷ng xung nµy vµ chuyÓn thµnh cm chiÒu dµi víi 400 xung t−¬ng øng víi 7cm a. ThiÕt kÕ vµ chÕ t¹o m¹ch ®iÒu khiÓn, hiÓn thÞ chiÒu dµi èng Tõ môc ®Ých cña m¹ch ®Õm vµ cÊu tróc cña chÝp vi sö lý AT90S2313 ta ®−a ra s¬ ®å thuËt to¸n ®iÒu khiÓn nh− sau: Tr−êng §H N«ng nghiÖp I T§H K46 - Khoa C¬ §iÖn - 71 -
  2. B¸o c¸o tèt nghiÖp NguyÔn Duy Hoµng Begin Khai b¸o c¸c th− viÖn vµ c¸c biÕn cÇn sö dông trong ch−¬ng tr×nh Hµm quet(void). Hµm nµy chê phÝm ®−îc Ên vµ tr¶ l¹i gi¸ trÞ cña phÝm Ên Hµm ext_int1_isr(void) Hµm nµy ®−îc thùc hiÖn khi mét ng¾t ngoµi x¶y ra. Nã phôc vô viÖc xö lý bµn phÝm Hµm timer1_comp_isr(void) Hµm nµy ®−îc thùc hiÖn khi x¶y ra ng¾t so s¸nh bé ®Þnh thêi 1. Nã kÝch xung ®iÒu khiÓn ®ång thêi chê tÝn hiÖu ®iÒu khiÓn trªn ch©n PortD4. Hµm main(void) §©y lµ hµm chÝnh cña ch−¬ng tr×nh. Nã ®−îc thùc hiÖn khi b¾t ®Çu vµo ch−¬ng tr×nh. KÕt thóc. H×nh 33: S¬ ®å thuËt to¸n xö lý m¹ch ®o chiÒu dµi Tr−êng §H N«ng nghiÖp I T§H K46 - Khoa C¬ §iÖn - 72 -
  3. B¸o c¸o tèt nghiÖp NguyÔn Duy Hoµng ` C¸c th− viÖn ®−îc sö dông trong ch−¬ng tr×nh viÕt cho chÝp: #include // Alphanumeric LCD Module functions #asm .equ __lcd_port=0x18 ;PORTB #endasm #include #include #include #include Th− viÖn 90s2313.h chøa c¸c hµm vÒ phÇn cøng cña chip AT90s2313 nh−: C¸c cæng xuÊt nhËp d÷ liÖu, c¸c thanh ghi cã trong chÝp, dung l−îng c¸c bé nhí vv. Th− viÖn lcd.h chøa c¸c hµm vÒ phÇn cøng cña LCD: Sè dßng, sè ký tù viÕt ®−îc trªn mµn h×nh LCD vv. Th− viÖn stdlib.h th− viÖn chøa c¸c hµm chuÈn trong C++. Th− viÖn nµy ®−îc tÝch hîp thªm mét sè hµm kh¸c n÷a trong phÇn mÒm CodeVisionAVR C Compiler. Th− viÖn delay.h chøa c¸c hµm sö dông cho xö lý ng¾t, vµ c¸c bé ®Þnh thêi t¹o chÔ. Th− viÖn string.h chøa c¸c hµm sö dông xö lý víi ký tù . Sau phÇn khai b¸o c¸c th− viÖn sö dông trong ch−¬ng tr×nh tiÕp ®Õn khèi ch−¬ng tr×nh con xö lý quÐt bµn phÝm S¬ ®å thuËt to¸n cña ch−¬ng tr×nh xö lý quÐt bµn phÝm Tr−êng §H N«ng nghiÖp I T§H K46 - Khoa C¬ §iÖn - 73 -
  4. B¸o c¸o tèt nghiÖp NguyÔn Duy Hoµng ext_int1_isr(void) L−u phÝm ®−îc Ên. ChuyÓn vÞ trÝ con trá LCD ®Õn täa ®é 11, 1 KiÓm tra phÝm Ên NÕu lµ NÕu lµ phÝm NÕu lµ phÝm NÕu lµ phÝm t¨ng gi¶m sang ph¶i phÝm sang tr¸i th× biÕn th× biÕn th× biÕn th× biÕn data_e +10 data_e - 10 data_e *10 data_e /10 NÕu biÕn data_e>999 th× data_e=0 NÕu biÕn data_e
  5. B¸o c¸o tèt nghiÖp NguyÔn Duy Hoµng ®−a vµo chÝp. Cuèi cïng trong ch−¬ng tr×nh chÝnh chÝp xö lý tÝn hiÖu Encoder chuyÓn ®æi c¸c xung thµnh ®é dµi Cm vµ sau khi ®ñ chiÒu dµi chÝp xuÊt ra mét tÝn hiÖu ®−a vµo PLC. Main (void) Chän PortD4 lµm ch©n xuÊt d÷ liÖu Bé ®Þnh thêi 1 ho¹t ®éng víi tÇn sè xung nhÞp trªn ch©n T1 vµ ë chÕ ®é gi¸ trÞ cao nhÊt lµ gi¸ trÞ cña thanh ghi OCR1. Ng¾t lµ ng¾t so s¸nh bé ®Þnh thêi. Ng¾t ngoµi 1 cho phÐp ®−îc ho¹t ®éng. Nã cã tÝch cùc trªn s−ên lªn cña ch©n INT1. Khëi t¹o LCD XuÊt lªn LCD dßng ch÷ “do dai dat Cm” ChuyÓn con trá xuèng dßng 2, xuÊt lªn LCD dßng ch÷ “Do dai do Cm”. §æi data_e tõ ®¬n vÞ cm sang sè xung, råi n¹p vµo thanh ghi OCR1. ChuyÓn data_e sang d¹ng x©u, råi xuÊt lªn LCD ë täa ®é (11,0) ChuyÓn con trá LCD sang täa ®é (11,1) råi xuÊt gi¸ trÞ hiÖn thêi ®o ®−îc lªn LCD. H×nh 35: S¬ ®å khèi ch−¬ng tr×nh chÝnh m¹ch ®Õm Tr−êng §H N«ng nghiÖp I T§H K46 - Khoa C¬ §iÖn - 75 -
  6. B¸o c¸o tèt nghiÖp NguyÔn Duy Hoµng Ch−¬ng tr×nh ®iÒu khiÓn vµ m¹ch ®o cô thÓ nh− sau: #include PhÇn khai b¸o c¸c th− // Alphanumeric LCD Module functions #asm .equ __lcd_port=0x18 ;PORTB viÖn chuÈn #endasm #include #include #include #include flash char *data_f[]={"Do dai do Cm","Do dai dat Cm"}; eeprom int data_e=100; char i; char str[4]; char quet(void) { #asm LOOP: sbis $10,3 rjmp LOOP #endasm return PIND&0x07; } // External Interrupt 1 service routine // §o¹n ch−¬ng tr×nh xö lý quÐt bµn phÝm interrupt [EXT_INT1] void ext_int1_isr(void) { // Place your code here char b; b=quet(); Tr−êng §H N«ng nghiÖp I T§H K46 - Khoa C¬ §iÖn - 76 -
  7. B¸o c¸o tèt nghiÖp NguyÔn Duy Hoµng TCCR1B=0x00; lcd_gotoxy(11,1); while(b!=6) { switch(b){ case 2: data_e*=10; break; case 1: data_e/=10; break; case 4:data_e++; break; case 3: data_e--; } if(data_e999) data_e=0; lcd_gotoxy(11,0); itoa(data_e,str); lcd_puts(str); if(strlen(str)
  8. B¸o c¸o tèt nghiÖp NguyÔn Duy Hoµng // Place your code here PORTD|=0x10; TCCR1B=0x00; delay_ms(1000); PORTD&=0xEF; #asm LOOP1: sbic $10,6 rjmp LOOP1 #endasm TCCR1B=0x0F; } // Declare your global variables here // §o¹n ch−¬ng tr×nh chÝnh void main(void) { DDRD=0x10; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Timer/Counter 1 initialization // Clock source: T1 pin Rising Edge // Mode: CTC top=OCR1A // OC1 output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer 1 Overflow Interrupt: Off Tr−êng §H N«ng nghiÖp I T§H K46 - Khoa C¬ §iÖn - 78 -
  9. B¸o c¸o tèt nghiÖp NguyÔn Duy Hoµng // Input Capture Interrupt: Off // Compare Match Interrupt: On TCCR1B=0x0F; // External Interrupt(s) initialization // INT0: Off // INT1: On // INT1 Mode: Rising Edge GIMSK=0x80; MCUCR=0x0C; GIFR=0x80; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x40; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; // LCD module initialization lcd_init(16); // Global enable interrupts #asm("sei") lcd_putsf(data_f[1]); lcd_gotoxy(0,1); lcd_putsf(data_f[0]); OCR1=data_e*57.14; itoa(data_e,str); lcd_gotoxy(11,0); lcd_puts(str); if(strlen(str)
  10. B¸o c¸o tèt nghiÖp NguyÔn Duy Hoµng for(i=1;i
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2