Bài 8: BÀI TOÁN TỔNG QUÁT

27 281 0
Tài liệu đã được kiểm tra trùng lặp
Bài 8: BÀI TOÁN TỔNG QUÁT

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài 8: BÀI TOÁN TỔNG QUÁT I>Điều Khiển Động Cơ Nâng Cao: Ở bài trước các bạn đã biết cách điều khiển động cơ với một tốc độ cố định (động cơ chỉ chạy với một tốc độ hoặc nếu có thay đổi tốc độ thì hoàn toàn phụ thuộc vào chương trình trên vđk) .Như vậy với một bài toán thực tế :tốc độ động cơ thay đổi tùy thuộc vào môi trường bên ngoài(cảm biến…) thì nó chưa giải quyết được vấn đề . Ở bài này ta sẽ đi giải quyết vấn để trên. Bài 8: BÀI TOÁN TỔNG QUÁT THUẬT TOÁN ĐIỀU KHIỂN: Giả sử ta cần có 10 cấp tốc độ cho ĐC, và muốn động cơ quay ở cấp tốc độ v vơi T = 0,001s(f=1kHz), tốc độ v này được thay đổi qua việc thiết lập bằng phím bấm , qua giao tiếp máy tính , hay qua tính toán từ việc thu thập giư liệu từ các cảm biến ….ta sẽ có giải thuật cho hàm PWM như sau : Để có được 10 cấp tốc độ thì ta sẽ chia T thành 10 lần ngắt BĐT. Như vậy với T=0,001s=1000chu kỳ máy thì ta phải tạo BĐT 100 chu kỳ sẽ ngắt một lần(kiến thức bài 6).Như vậy có thể coi mỗi lần ngắt sẽ tương đương với một cấp tốc độ , và việc còn lại là so sánh số lần ngắt với v để tạo xung thich hợp Bài 8: BÀI TOÁN TỔNG QUÁT Giải thuật chương trình tạo xung Bài 8: BÀI TOÁN TỔNG QUÁT B1 :Dùng bộ đếm Counter0 để đếm số lần nhấn phím ở chân P3_4 ,băm xung đk động cơ băng T0,mỗi lần bấm thì tốc độ động cơ sẽ tăng lên 1 cấp(10 cấp như trên).(tham khảo B1 của bài số 7). Dùng cả ngắt ngoài để thay đổi chiều quay của động cơ(INT0) B2 : Vẫn dùng Counter0 như trên(hoặc hàm phím bấm) và 20 cấp tốc độ. Tốc độ động cơ sẽ thay đổi tùy thuộc vào việc bạn bấm nhanh hay chậm (bấm càng nhanh thì tốc độ đc càng cao) .Hiển thị cấp tốc độ ra Led 7 thanh. Bài 8: BÀI TOÁN TỔNG QUÁT II>PHÍM MA TRẬN: Sơ Đồ Nguyên Lý: 5V 5V C1 33p C2 33p + C3 10uF/25V R1 10K 5VDC 5V5V5V EA/VP 31 X1 19 X2 18 RESET 9 P2.0 21 P2.1 22 P2.2 23 P2.3 24 P2.4 25 P2.5 26 P2.6 27 VCC 40 VSS 20 P3.1 11 P3.2 12 P3.3 13 P3.4 14 P3.5 15 P3.6 16 P3.7 17 P3.0 10 U3 8051 R3 10K 12Mhz C B A E D G F P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 5V LED 7 THANH HANG 2 HANG 1 COT 4 COT 3 COT 2 COT 1 HANG 4 HANG 3 P3.2 R21 R R22 R R23 R R24 R R25 R R26 10Kx8 R27 R R28 R P3.0 P3.1 1 2 PHIM 1 1 2 PHIM 2 1 2 PHIM 3 1 2 PHIM 4 1 2 PHIM 5 P3.3 1 2 PHIM 6 P3.4 1 2 PHIM 7 1 2 PHIM 8 1 2 PHIM 9 1 2 PHIM 10 1 2 PHIM 11 1 2 PHIM 12 P3.5 1 2 PHIM 13 P3.6 1 2 PHIM 14 1 2 PHIM 15 1 2 PHIM 16 P3.7 Bài 8: BÀI TOÁN TỔNG QUÁT Bài 8: BÀI TOÁN TỔNG QUÁT // Ban phim ma tran ------------------------------------ // chuong trinh lam quen voi ban phim matran 4*4 // Hien thi phim an tren LCD /*-------------Ban phim matran--------------- =============== | 0 | 1 | 2 | 3 | =============== | 4 | 5 | 6 | 7 | =============== | 8 | 9 | + | - | Cac phim chuc nang voi ten dinh truoc. =============== | * | / | D | = | =============== -------------------------------------------*/ #include <REGX51.H> long codeLCD, hienthi ; sbit co1 = P1^3; sbit co2 = P1^2; sbit co3 = P1^1; sbit co4 = P1^0; sbit ha1 = P1^7; sbit ha2 = P1^6; sbit ha3 = P1^5; sbit ha4 = P1^4; #include < string.h> sfr LCDdata = 0xA0;// Cong 2 , 8 bit du lieu P0 co dia chi 0x80, P1 0x90 , P2 0xA0 sbit BF = 0xA7; // Co ban bit 7 cua p2 sbit RS = P3^7; sbit RW = P3^6; sbit EN = P3^5; Bài 8: BÀI TOÁN TỔNG QUÁT /*------chuyen sang ma ASCII cho LCD--------*/ void decode_LCD(unsigned char number2) { switch (number2) { case 0: {codeLCD='0';break;} case 1: {codeLCD='1';break;} case 2: {codeLCD='2';break;} case 3: {codeLCD='3';break;} case 4: {codeLCD='4';break;} case 5: {codeLCD='5';break;} case 6: {codeLCD='6';break;} case 7: {codeLCD='7';break;} case 8: {codeLCD='8';break;} case 9: {codeLCD='9';break;} case 10: {codeLCD='+';break;} case 11: {codeLCD='-';break;} case 12: {codeLCD='*';break;} case 13: {codeLCD='/';break;} case 14: {codeLCD='D';break;} case 15: {codeLCD='=';break;} } } Bài 8: BÀI TOÁN TỔNG QUÁT /*---------Cac chuong trinh con cua lcd ------*/ //---------------Chuong trinh con kiem tra su san sang cua lcd----------------; void wait(void) { long n = 0; EN=1;// Dua chan cho fep len cao RS=0;// Chon thanh ghi lenh RW=1;// Doc tu LCD LCDdata=0xff;// Gia tri 0xFF while(BF){n++; if(n>110) break;}// Kiem tra co ban // Neu ban dem n den 100 roi thoat khoi while EN=0;// Dua xung cao xuong thap de chot RW=0;// Doc tu LCD } Bài 8: BÀI TOÁN TỔNG QUÁT [...]... khiển Giả sử với thuật toán quét hàng như trên ta sẽ phải dùng tới 64 chân vđk để quét cột Có một cách để giải quyết vấn đề trên là dùng thêm vào các linh kiên khác nhằm mở rộng cổng của vđk Linh kiện hay được dùng với Led matrix là IC595 Bài 8: BÀI TOÁN TỔNG QUÁT U1 14 12 11 10 13 SDI RCLK SRCLK CLR G 74HC595 SDO QA QB QC QD QE QF QG QH 9 15 1 2 3 4 5 6 7 Bài 8: BÀI TOÁN TỔNG QUÁT THE END NGUYỄN NGỌC... codeLCD='D'; Bài 8: BÀI TOÁN TỔNG QUÁT // main program >> main() { ha1=ha2=ha3=ha4=co1=co2=co3=co4=1; // thiet lap cot dau vao vdk LCDinit(); LCDwrite('P'); LCDwrite('h'); LCDwrite('i'); LCDwrite('m'); LCDwrite(' '); LCDwrite('a'); LCDwrite('n'); LCDwrite(' '); LCDwrite('l'); LCDwrite('a'); LCDwrite(':'); while(1){ quetphim(); LCDcontrol(0x8c); LCDwrite(codeLCD); } Bài 8: BÀI TOÁN TỔNG QUÁT III>Led... H ang 6 C o t8 H ang 3 Bài 8: BÀI TOÁN TỔNG QUÁT #include /* Cot tu P0.0 den P0.7 Hang tu P2.0 den P2.7 De quet dua muc logic 0 lan luot ra cong 0 */ /* Ham tre */ void delay(long time) { long n; for(n=0; nLed Matrix: 8 7 6 5 4 3 2 1 14 15 16 L E D M A T R IX 1 8x8 9 10 11 12 13 Bài 8: BÀI TOÁN TỔNG QUÁT 1 VCC R3 10uF R2 10K H ang1 C o t6 C o t7 H ang2 H ang4 C o t4 15 16 C o t1 H ang3 P 3 0 /R X D P 3 1 /T XD P 3 2 /IN T 0 P 3 3 /IN T 1 P 3 4 /T 0 P 3 5 /T 1 P 3 6 /W R P 3 7 /R D X1 X2... ky tu dua ra cac hang (Cong 2) P0=cot[n]; // Day gia tri 0V ra cong 0 (cac cot) P2=kytu1[n+m];// Day cac gia tri cac hang (ma hoa ky tu) ra cong 2(cac hang) delay(45);// Tre du de led sang } Bài 8: BÀI TOÁN TỔNG QUÁT if((n+m) > 7)// Neu n+m >7 hien thi ky tu 2 { mahoa(k+1);// Nap gia tri ma hoa ky tu tiep de dua ra cac hang(Cong 2) P0=cot[n];// Day gia tri logic 0V ra cong 0(cac cot) P2=kytu1[n+m-8];//... 7 /A H ang8 19 18 P P P P P P P P GND 39 38 37 36 35 34 33 32 20 9 8 7 6 5 4 3 2 o t1 o t2 o t3 o t4 o t5 o t6 o t7 o t8 1 2 3 4 5 6 7 8 + C1 33p 8 U1 C C C C C C C C Y1 1 H ang7 H ang6 10K Bài 8: BÀI TOÁN TỔNG QUÁT D 2 H ang 1 D 3 D 4 D 5 D 6 D 7 D 8 D 8 LED LED LED LED LED LED LED LED D 2 D 3 D 4 D 5 D 6 D 7 D 8 D 8 LED LED LED LED LED LED LED LED D 2 H ang 2 D 3 D 4 D 5 D 6 D 7 D 8 D 8 LED LED LED... dulieu cho LCD ; void LCDwrite(unsigned char c) { EN=1;// Cho fep muc cao RS=1;// Ghi du lieu RW=0;// Ghi len LCD LCDdata=c;// Gia tri C EN=0;// Xung cao xuong thap wait();// Cho } Bài 8: BÀI TOÁN TỔNG QUÁT /* -Chuong trinh con quet phim */ void quetphim (void) { ha1=0; ha2=ha3=ha4=1; if ( co1==0) codeLCD='0'; if ( co2==0) codeLCD='1'; if ( co3==0) codeLCD='2'; if ( co4==0) codeLCD='3'; . PHIM 13 P3.6 1 2 PHIM 14 1 2 PHIM 15 1 2 PHIM 16 P3.7 Bài 8: BÀI TOÁN TỔNG QUÁT Bài 8: BÀI TOÁN TỔNG QUÁT // Ban phim ma tran ------------------------------------. quetphim(); LCDcontrol(0x8c); LCDwrite(codeLCD); } } Bài 8: BÀI TOÁN TỔNG QUÁT Bài 8: BÀI TOÁN TỔNG QUÁT III>Led Matrix: 12345678 9 1 0 1 1 1 2 1 3 1

Ngày đăng: 06/11/2013, 04:15

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan