Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 75 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
75
Dung lượng
1,58 MB
Nội dung
UBND TỈNH HẢI PHỊNG TRƯỜNG CAO ĐẲNG CƠNG NGHIỆP HẢI PHỊNG Giáo trình: Kỹ thuật vi xử lý Chun ngành: Kỹ thuật máy lạnh điều hịa khơng khí (Lưu hành nội bộ) HẢI PHÒNG MỤC LỤC LỜI GIỚI THIỆU MỤC LỤC CHƯƠNG TRÌNH MÔ ĐUN Bài 1: Điều khiển I/O với LED đơn Ngôn ngữ lập trình .8 Sơ đồ điều khiển I/O với LED đơn .22 Điều khiển I/O với LED đơn 26 Bài 2: Điều khiển với LED đoạn 36 LED đoạn 36 Sơ đồ điều khiển với LED đoạn 46 Điều khiển với LED đoạn 47 Bài 3: Điều khiển I/O sử dụng phím ấn 55 Sơ đồ điều khiển I/O sử dụng phím ấn .55 Điều khiển I/O sử dụng phím ấn 55 Bài 4: Điều khiển I/O với LCD .60 Sơ đồ điều khiển I/O với LCD 60 Điều khiển I/O với LCD 62 Bài 5: Điều khiển động DC 67 Sơ đồ điều khiển động DC 67 Điều khiển động DC 69 TÀI LIỆU THAM KHẢO 73 CHƯƠNG TRÌNH MƠ ĐUN Tên mô đun: Kỹ thuật Vi xử lý Mã số mơ đun : MĐ 25 Vị trí, ý nghĩa, vai trị mơ đun * Vị trí mơ đun: Mơ đun bố trí dạy cuối chương trình sau học xong mô đun Kỹ thuật Điện tử * Tính chất mơ đun: Là mơ đun bắt buộc Mục tiêu mô đun: Sau học xong mơ đun học viên có lực - Vận hành thiết bị dây chuyền sản xuất dùng vi xử lý - Xác định nguyên nhân gây hư hỏng xảy thực tế - Kiểm tra viết chương trình điều kiển * Về kiến thức: - Trình bày cấu trúc, ứng dụng vi xử lý công nghiệp - Kiểm tra viết chương trình điều kiển * Về kỹ năng: - Vận hành thiết bị dây chuyền sản xuất dùng vi xử lý - Xác định nguyên nhân gây hư hỏng xảy thực tế * Về thái độ: - Rèn luyện cho học sinh thái độ nghiêm túc, cẩn thận, xác học tập thực cơng việc Nội dung mơ đun Bài 1: Điều khiển I/O với LED đơn Bài 2: Điều khiển với LED đoạn Bài 3: Điều khiển I/O sử dụng phím ấn Bài 4: Điều khiển I/O với LCD Bài 5: Điều khiển động DC Bài 1: ĐIỀU KHIỂN I/O VỚI LED ĐƠN Mà BÀI: MĐ25 – 01 GIỚI THIỆU: Lập trình I/O lập trình đơn giản nhất, lại sử dụng nhiều nhất, điều khiển on/off bóng đèn, động cơ, hay thiết bị dạng điều khiển I/O Trong gồm ngơn ngữ lập trình, phần mềm lập trình, điều khiển I/O với LED đơn ATMEGA Mục tiêu: Sau học xong học người học có khả năng: - Kiến thức: Trình bày phương pháp kết nối điều khiển vào I/O với LED đơn - Kỹ năng: Thực sử dụng phần mềm lập trình điều khiển khiển I/0 với LED đơn - Thái độ: Nghiêm túc học, có ý thức tự giác học tập Nội dung chính: NGƠN NGỮ LẬP TRÌNH 1.1 Tập ký tự dùng ngơn ngữ C Mọi ngơn ngữ lập trình xây dựng từ ký tự Các ký tự nhóm lại theo nhiều cách khác để tạo thành từ, từ lại liên kết theo quy tắc để tạo thành câu lệnh Một chương trình bao gồm nhiều câu lệnh biểu diễn thuật toán để giải tốn xác định Ngơn ngữ C xây dựng ký tự sau: • 26 chữ hoa: ABC Z • 26 chữ thường: abc z • 10 chữ số: • Các ký hiệu toán học: + - * / = () • Ký tự gạch nối : _ • Các ký hiệu đặc biệt khác: , ; : [] {} ? ! \ & | % # $, Dấu cách (space) thực khoảng trống dùng để tách từ VD: HA NOI gồm ký tự HANOI có ký tự 1.2 Từ khóa Từ khóa từ có ý nghĩa hoàn toàn xác định, thường dùng để khai báo kiểu liệu, để viết toán tử câu lệnh Sau từ khóa C: asm break case cdecl char const continue default double else enum extern far float for goto huge if int interrupt long near pascal register return short signed sizeof static struct switch typedef union unsigned void 10 volatile while Ý nghĩa cách sử dụng chúng bàn đến phần sau, có hai điểm cần lưu ý, là: • Khơng dùng từ khóa để đặt tên cho hằng, biến hàm • Từ khóa phải viết chữ thường 1.3 Tên Tên khái niệm quan trọng, dùng để xác định đại lượng khác chương trình tên hằng, tên biến, tên hàm… Tên đặt theo cấu trúc sau: Tên dãy ký tự: Chữ, số dấu gạch nối Ký tự đầu tên phải chữ dấu gạch nối, độ dài mặc định tên 32, ví dụ tên: A_1 BETA x1 delta_7_x1 Các tên sau sai 3XYZ_7 (ký tự số) r#3 (sử dụng ký tự #) f(x) (sử dụng dấu ngoặc trịn) case (trùng với từ khóa) be ta (sử dụng khoảng trắng) X-1 (sử dụng dấu gạch ngang) Trong tên có phân biệt chữ hoa chữ thường, tên AB khác tên ab Trong C thường dùng chữ hoa để đặt tên cho chữ thường cho hầu hết đại lượng cịn lại Tuy nhiên, điều khơng bắt buộc 1.4 Kiểu liệu Trong C sử dụng kiểu liệu sau: Số nguyên (int), số thực hay số dấu phẩy động (float), số dấu phẩy động có độ xác kép (double) ký tự (char) Hằng giá trị thông tin cụ thể, biến mảng đại lượng mang tin Mỗi loại biến chứa dạng thơng tin VD biến kiểu int chứa số nguyên, biến kiểu float chứa số thực Để lưu trữ thông tin biến phảI cấp phát nhớ, biến lại chia thành biến tĩnh, biến tự động biến Biến tự động tồn (được cấp phát nhớ) chúng sử dụng, biến tĩnh tồn suốt thời gian hoạt động chương trình Cách tổ chức vừa tiết kiệm nhớ vừa cho phép sử dụng tên cho đối tượng khác mà không gây nhầm lẫn * Kiểu char Một giá trị kiểu char chiếm byte nhớ biểu diễn ký tự thơng qua bảng mã ASCII Ví dụ: Ký tự Mã ASCII 048 049 050 A 065 B 066 a 097 11 b 098 Có hai kiểu char là: Signed char unsigned char Kiểu thứ biểu diễn số nguyên từ -128 đến +127, kiểu thứ hai có giá trị từ đến 255 Có thể chia 256 ký tự thành nhóm: • Nhóm thứ ký tự điều khiển có mã từ đến 31, ký tự nhóm khơng hiển thị hình • Nhóm thứ hai ký tự văn có mã từ 32 đến 126, ký tự đưa hình máy in • Nhóm ba ký tự đồ họa có mã từ 127 đến 255 đưa hình * Kiểu nguyên Trong C cho phép sử dụng số nguyên (int), số nguyên dài (long) số nguyên không dấu (únigned) Kiểu Phạm vi biểu diễn Kích thước Int -32768…+32767 byte byte Unsigned int 65535 Long -2147483648…2147483647 byte Unsigned long 0…4294967295 byte Các kiểu ký tự xem dạng kiểu nguyên * Kiểu dấu phẩy động Trong C cho phép sử dụng ba loại giá trị dấu phẩy động là: Float, double long double trình bày sau: Kiểu Phạm vi biểu diễn Kích thước Float 3.4E-38…3.4E+38 byte Double 1.7E-308 1.7E+308 byte Long double 3.4E-4932…1.1E+4932 10 byte 1.5 BIẾN Mọi biến cần phải khai báo trước sử dụng, mẫu khai báo sau Type var_name; Ví dụ: Main ( ) { int a, b, c; /* biến kiểu integer */ char d, e, f; /* biến kiểu char */ float x, y, z; /* biến kiểu float */ ……………………………… } Biến kiểu int nhận giá trị int, biến kiểu khác cung có đặc tính tương tự, ví dụ biến kiểu char chứa ký tự, để lưu trữ xâu ký tự cần phải dùng mảng kiểu char Các khai báo biến phải đượ đặt sau dấu { thân hàm phải đứng trước câu lệnh khác Các biến khởi gán khai báo cách đặt thêm dấu = kèm theo giá trị Ví dụ: Int a, b = 20, c, d = 40; Kết tương đương câu lệnh gán sau: 12 Int a, b, c, d; b = 20; d = 40; Mỗi biến cung cấp vùng nhớ gồm nhiều byte liên tiếp, địa byte địa biến, địa biến nhận đươc qua phép toán & var_name 1.6 Mảng Mỗi biến biểu diễn giá trị Để biểu diễn dãy số bảng số dùng nhiều biến cách khơng thuận tiện số giá trị nhiều, cách tốt sử dụng mảng trường hợp Mảng tập hợp gồm nhiều phần tử có kiểu liệu có chung tên, phần tử mảng biểu diễn giá trị Có kiểu liệu có nhiêu kiểu mảng, mảng cần khai báo về: • Kiểu mảng (int, char,…) • Tên mảng • Số chiều kích thước chiều Kiểu mảng tên mảng giống kiểu biến tên biến Ví dụ khai báo sau đây: Int a[10], b[4][2]; Float x[5], y[3][3]; Sẽ xác định mảng: a, b, x y sau: - Mảng thứ có kiểu int, tên a, số chiều 1, kích thước 10 Mảng gồm 10 phần tử có số thứ tự là: a[0], a[1], a[2],…,a[9] Mỗi phần tử a[i] chứa giá trị int mảng biểu diễn dãy gồm 10 số nguyên - Mảng thứ hai có kiểu int, tên b, số chiều 2, kích thước chiều Mảng gồm phần tử đánh số xếp sau: b[0][0] b[0][1] b[1][0] b[1][1] b[2][0] b[2][1] b[3][0] b[3][1] Mỗi phần tử b[i][j] chứa giá trị kiểu int, mảng biểu diễn bảng số nguyên gồm hàng cột - Mảng thứ ba có kiểu float, tên x, số chiều 1, kích thước Mảng gồm phần tử đánh số sau: x[0], x[1], x[2], x[3], x[4] Mỗi phần tử x[i] chứa giá trị kiểu float mảng biểu diễn dãy gồm số thực - Mảng thứ tư có kiểu float, tên y, số chiều 2, kích thước chiều 3, mảng gồm phần tử đánh số xếp sau: y[0][0] y[0][1] y[0][2] y[1][0] y[1][1] y[1][2] y[2][0] y[2][1] y[2][2] Mỗi phần tử y[i][j] chứa giá trị kiểu float mảng y biểu diễn 13 bảng số thực hàng cột Chú ý: Các phần tử mảng cấp phát khoảng nhớ liên tiếp có nghĩa địa chúng liên tiếp Trong mảng hai chiều phần tử mảng xếp theo hàng Một phần tử mảng xác định nhờ số nó, số mảng phải có giá trị int khơng vượt kích thước chiều tương ứng Số số phải số chiều mảng Giả sử a, b, x, y khai báo giả sử I, j biến nguyên Trong I = 2; j = a[j+i-1] a[2] b[j+i][2-i] b[3][0] x[j/i] x[0] y[i][j] [2][1] Và cách viết sau sai y[j] y mảng chiều cần có số b[i][j][1] b mảng chiều cần số Tuy nhiên, biểu thức dùng làm số số thực, phần nguyên số mảng VD: a[2.4] a[2], a[1.9] a[1] Khi số vượt ngồi kích thước mảng máy vẩn không báo lỗi truy cập đến vùng nhớ ngồi mảng có liệu khơng biết trước Có thể lấy địa phần tử mảng chiều thường không lấy địa phần tử mảng nhiều chiều, phép tính sau lấy địa phần tử mảng chiều & a[i] máy không chấp nhận phép tính & y[i][j] Một lưu ý quan trọng tên mảng địa đầu mảng a = & a[0] 1.7 Toán tử Toán hạng (operand) xem đại lượng có giá trị ví dụ: Hằng, biến, mảng hàm Toán là phép toán tác động lên toán hạng Trong C toán hạng chia thành nhóm sau: - Tốn tử số học (arithmatic operator) - Toán tử quan hệ (relative operator) - Toán tử logic (logical operator) - Toán tử xử lý bít (bitwise operator) Ngồi ra, C cịn giới thiệu thêm tốn tử mối là: - Tốn tử tăng (incrementing operator) - Toán tử giảm (decrementing operator) * Toán tử gán Theo C ký hiệu = khơng có nghĩa bằng, ký hiệu gọi toán tử gán (assignment operator), toán tử gán gọi gán đơn (single assignment) để phân biệt với gán phức hợp (compound assignment) 14 BÀI TẬP Câu 1: Nªu cÊu trúc ch- ơng trình viết ngôn ngữ lp trình C cho vi ®iỊu khiĨn Atmega? Câu 2: Viết chương trình cho ATMEGA thực ấn phím 0, 1, 2, 3, 4, 5, 6, 7, 8, hiển thị LED Anode chung BÀI 4: ĐIỀU KHIỂN I/O VỚI LCD Mà BÀI: MĐ25 – 04 GIỚI THIỆU: LCD thiết bị ngoại vi dùng để giao tiếp với người dùng LCD có ưu điểm hiển thị tất kí tự bảng mã ascci, LCD lại có nhược điểm giá thành cao khoảng cách nhìn gần LCD từ viết tắt Liquid Crystal Display (màn hình tinh thể lỏng) Có nhiều loại hình LCD với kích cỡ khác nhau, LCD 16x1 (16 cột hàng), LCD 16x2 (16 cột hàng) Mục tiêu: Sau học xong học người học có khả năng: - Kiến thức: Trình bày phương pháp kết nối điều khiển vào với LCD - Kỹ năng: Thực sử dụng phần mềm lập trình điều khiển vào với LCD - Thái độ: Nghiêm túc học, có ý thức tự giác học tập Nội dung chính: SƠ ĐỒ ĐIỀU KHIỂN I/O VỚI LCD 65 LCD2 LM016L U1 D0 D1 D2 D3 D4 D5 D6 D7 24 23 51 50 49 48 47 46 45 44 10 11 12 13 14 RS RW E VSS VDD VEE 20 10 11 12 13 14 15 16 17 35 36 37 38 39 40 41 42 62 64 RESET XTAL1 XTAL2 PA0/AD0 PA1/AD1 PA2/AD2 PA3/AD3 PA4/AD4 PA5/AD5 PA6/AD6 PA7/AD7 PB0/SS PB1/SCK PB2/MOSI PB3/MISO PB4/OC0 PB5/OC1A PB6/OC1B PB7/OC2/OC1C PC0/A8 PC1/A9 PC2/A10 PC3/A11 PC4/A12 PC5/A13 PC6/A14 PC7/A15 AREF AVCC PD0/SCL/INT0 PD1/SDA/INT1 PD2/RXD1/INT2 PD3/TXD1/INT3 PD4/ICP1 PD5/XCK1 PD6/T1 PD7/T2 PE0/RXD0/PDI PE1/TXD0/PDO PE2/XCK0/AIN0 PE3/OC3A/AIN1 PE4/OC3B/INT4 PE5/OC3C/INT5 PE6/T3/INT6 PE7/ICP3/INT7 PF0/ADC0 PF1/ADC1 PF2/ADC2 PF3/ADC3 PF4/ADC4/TCK PF5/ADC5/TMS PF6/ADC6/TDO PF7/ADC7/TDI PG0/WR PG1/RD PG2/ALE PG3/TOSC2 PG4/TOSC1 PEN 25 26 27 28 29 30 31 32 61 60 59 58 57 56 55 54 33 34 43 18 19 ATMEGA128 PA Một số đặc điểm LCD - LCD có hai chế độ làm việc: + Chế độ bít: Chế độ th- ờng dùng cho 8051 + Chế độ bít: Cách th- ờng dùng cho loại vi điều khiển cấp cao nh- AVR, PIC hay dsPIC - LCD cã ®- êng ®iỊu khiển + Đ- ờng E khởi tạo trình truyền liệu từ VĐK tới LCD: Nếu E = cho phÐp NÕu E = kh«ng cho phép + Đ- ờng RS quy định gửi lệnh hay gửi liệu lên LCD: RS = liệu (ký tự) đ- ợc viết lên LCD RS = lệnh đ- ợc viết lên LCD + Đ- ờng R/W quy định h- ớng truyền liƯu R/W = vi ®iỊu khiĨn ®ang viÕt liệu lên LCD R/W = vi điều khiển đọc liệu từ LCD - Để viết liệu lên LCD cần thực b- ớc sau: + Đặt R/W = + Đặt RS = hay RS = tùy thuộc vào mục đích gửi lệnh hay gửi liệu + Đặt liệu vào bus liệu (P2) trình trình viết + Đặt E = + Đặt E = + Đọc liệu bus liệu (nếu trình trình đọc) Việc đọc liệu từ LCD thực t- ơng tự nh- nh- ng tr- ờng hợp dùng - Các ký tự hiển thị LCD đ- ợc l- u DDRAM (Display Data RAM) 66 - ViƯc ®äc viÕt ký tự lên LCD tốn khoảng 40us đến 120us Trong khoảng thời gian LCD bận , không giao tiếp với bên Do ch- ơng trình ta cần thực delay để chờ LCD thực công việc - D- ới bảng m· lƯnh cđa LCD M· HEXA A C E F 10 14 18 1C 80 C0 38 LƯnh ®Õn ghi LCD Xãa hình hiển thị Trở đầu dòng Dịch trỏ sang trái Dịch trỏ sang phải Dịch hiển thị sang phải Dịch hiển thị sang trái Tắt trỏ, tắt hiển thị Tắt hiển thị, bật trỏ Bật hiển thị tắt trỏ Bật hiển thị nhấp nháy trỏ Tắt hiển thị nhấp nháy trỏ Dịch vị trí trỏ sang trái Dịch vị trí trỏ sang trái Dịch toàn hiển thị sang trái Dịch toàn hiển thị sang phải Đ- a trỏ đầu dòng thứ Đ- a trỏ đầu dòng thứ Hai dòng ma trËn 5x7 ĐIỀU KHIỂN VÀO RA VỚI LCD 2.1 Mở phần mềm kết nối 67 Trong cửa sổ CodeWinzard, chọn tab LCD, list mặc định None, bạn chuyển thành PORTB cho phù hợp với phần cứng KIT( thiết kế LCD PORTB) Chọn File Generate, Save and Exit sau: Code cho LCD bạn tham khảo Help cách chọn menu Help Help Topic(hoặc ấn F1) Được cửa sổ Help sau: 68 Trong tab Contents, click đúp chuột vào CodeVisionAVR C Compiller Library Functions bên cạnh Nhấp đúp vào LCD Functions để tham khảo hàm cho LCD Trong vòng while(1) hàm main ta viết câu lệnh sau: while (1) { 69 // Place your code here lcd_gotoxy(0,0);// Dua tro ve goc, dong 0, cot lcd_putsf("DKS-MTC-JACKY");// Hien thi dong chu lcd_gotoxy(0,1);// Dua tro ve dong 1, cot lcd_putsf("Wellcome you"); // Hien thi dong chu delay_ms(3000); // Tre s lcd_gotoxy(0,0); // Dua tro ve dong cot lcd_putsf("embestdks.com"); // Hien thi dong chu delay_ms(3000); // Tre s }; 2.2 Chương trình hiển thị LCD: #include #include #include // Alphanumeric LCD Module functions #asm equ lcd_port=0x15 ;PORTC #endasm #include unsigned char display[16]={0}; // Declare your global variables here void main(void) { PORTA=0xff; DDRA=0x00; PORTB=0x00; DDRB=0x00; PORTC=0x00; DDRC=0xff; PORTD=0x00; DDRD=0x00; PORTE=0x00; DDRE=0x00; PORTF=0x00; 70 DDRF=0x00; PORTG=0x00; DDRG=0x00; // LCD module initialization lcd_init(16); while (1) { lcd_clear(); sprintf(display,"LE THANH BINH C6DT ",); lcd_puts(display); delay_us(10); } } 2.3 Biên dịch nạp ch-ơng trình - Nối mạch nạp AVR 910 USB Programmer với Main AVR qua đ- ờng ISP - Trên c«ng Mét cưa sỉ míi hiƯn ra, ta chän vào Tab After Make, đánh dấu chọn vào ô Program the chip, nhấn OK để chấp nhận Quay trở lại với giao diện làm việc, ta tiến hành dịch nạp ch- ơng trình - Window có thông báo sau: 71 Báo lỗi Cảnh báo - Nếu ch- ơng trình có lỗi đựơc thông báo - Click vào Program the chip để nạp ch- ơng trình - Nếu trình dịch thành công window có thông báo nh- sau BI TP: Cõu hỏi: Giải thích chức chân LCD 16? 72 BÀI 5: ĐIỀU KHIỂN ĐỘNG CƠ DC Mà BÀI: MĐ25 – 05 GIỚI THIỆU: Động chiều loại động có cấu tạo cách điều khiển đơn giản nhất, tốc độ động điều khiển thông qua điện áp cấp vào đầu động Động chiều ứng dụng rộng rãi hệ thống tự động Trong gồm có sơ đồ điều khiển động DC ATMEGA Mục tiêu: Sau học xong học người học có khả năng: - Kiến thức: Trình bày phương pháp kết nối điều khiển động DC - Kỹ năng: Thực sử dụng phần mềm lập trình điều khiển động DC - Thái độ: Nghiêm túc học, có ý thức tự giác học tập Nội dung chính: Sơ đồ điều khiển động DC Giới thiệu động chiều Động chiều loại động có cấu tạo cách điều khiển đơn giản nhất, tốc độ động điều khiển thông qua điện áp cấp vào đầu động Động chiều ứng dụng rộng rãi hệ thống tự động Mạch cầu H Mạch cầu H mạch phổ biến để điều khiển động chiều, gọi mạch cầu H mạch có hình chữ H Sơ đồ ngun lí mạch cầu H sau : Có khóa chuyển 1,2,3,4 Tại thời điểm ln ln có khóa mở khóa đóng Giả sử khóa khóa đóng, dịng điện chạy qua động chạy từ trái qua phải, động quay theo chiều 73 Nếu khóa đóng, dịng điện qua động có chiều từ phải qua trái, động quay theo chiều ngược lại Tránh để hai khóa khóa đóng, gây tượng đoản mạch Như với việc thay đổi việc đóng mở van, thay đổi chiều quay động Trong thực tế, khóa chuyển hình dùng transistor, hay Mostfet, khơng nên dùng relay, relay có tốc độ đóng mở thấp Sơ đồ 1: U1 R1 20 10k RESET 24 23 XTAL1 XTAL2 51 50 49 48 47 46 45 44 PA0/AD0 PA1/AD1 PA2/AD2 PA3/AD3 PA4/AD4 PA5/AD5 PA6/AD6 PA7/AD7 10 11 12 13 14 15 16 17 +88.8 c1 Q1 c1 NPN PB0/SS PB1/SCK PB2/MOSI PB3/MISO PB4/OC0 PB5/OC1A PB6/OC1B PB7/OC2/OC1C 35 36 37 38 39 40 41 42 PC0/A8 PC1/A9 PC2/A10 PC3/A11 PC4/A12 PC5/A13 PC6/A14 PC7/A15 62 64 PD0/SCL/INT0 PD1/SDA/INT1 PD2/RXD1/INT2 PD3/TXD1/INT3 PD4/ICP1 PD5/XCK1 PD6/T1 PD7/T2 PE0/RXD0/PDI PE1/TXD0/PDO PE2/XCK0/AIN0 PE3/OC3A/AIN1 PE4/OC3B/INT4 PE5/OC3C/INT5 PE6/T3/INT6 PE7/ICP3/INT7 PF0/ADC0 PF1/ADC1 PF2/ADC2 PF3/ADC3 PF4/ADC4/TCK PF5/ADC5/TMS PF6/ADC6/TDO PF7/ADC7/TDI PG0/WR PG1/RD PG2/ALE PG3/TOSC2 PG4/TOSC1 AREF AVCC PEN 25 26 27 28 29 30 31 32 61 60 59 58 57 56 55 54 33 34 43 18 19 ATMEGA128 Sơ đồ 2: Thực ấn phím QUAY PHAI động quay phải ấn phím QUAY TRAI động quay trái ấn phím DUNG động dừng 5VDC 24 23 R2 R3 10k 10k 10k DUNG R1 QUAY TRAI QUAY PHAI 12VDC U1 20 51 50 49 48 47 46 45 44 10 11 12 13 14 15 16 17 c1 35 c2 36 37 38 39 40 41 42 62 64 RESET XTAL1 XTAL2 PA0/AD0 PA1/AD1 PA2/AD2 PA3/AD3 PA4/AD4 PA5/AD5 PA6/AD6 PA7/AD7 PB0/SS PB1/SCK PB2/MOSI PB3/MISO PB4/OC0 PB5/OC1A PB6/OC1B PB7/OC2/OC1C PC0/A8 PC1/A9 PC2/A10 PC3/A11 PC4/A12 PC5/A13 PC6/A14 PC7/A15 PD0/SCL/INT0 PD1/SDA/INT1 PD2/RXD1/INT2 PD3/TXD1/INT3 PD4/ICP1 PD5/XCK1 PD6/T1 PD7/T2 PE0/RXD0/PDI PE1/TXD0/PDO PE2/XCK0/AIN0 PE3/OC3A/AIN1 PE4/OC3B/INT4 PE5/OC3C/INT5 PE6/T3/INT6 PE7/ICP3/INT7 PF0/ADC0 PF1/ADC1 PF2/ADC2 PF3/ADC3 PF4/ADC4/TCK PF5/ADC5/TMS PF6/ADC6/TDO PF7/ADC7/TDI PG0/WR PG1/RD PG2/ALE PG3/TOSC2 PG4/TOSC1 AREF AVCC PEN ATMEGA128 74 25 26 27 28 29 30 31 32 61 60 59 58 57 56 55 54 33 34 43 18 19 c1 Q1 c2 NPN Q2 NPN DONG CO DC +88.8 c2 Q3 NPN Q4 c1 NPN Điều khiển động DC 2.1 Cấu trúc điều kiện: if else if (condition 1) { Khối lệnh } else if (codition 2) { Khối lệnh } else { Khối lệnh khác } 2.2 Phân tích sơ đồ kết nối a gii phỏp: Mô tả: Bình th- ờng chân PORT.A mức cao, nhấn nút điện áp chân chuyển xuống mức thấp Và nhiệm vụ ch- ơng trình kiểm tra xem lúc điện áp hai chân xuống mức Mô tả: Bình th- ờng chân PORT.C mức thp, nhấn nút điện áp chân nµy chun møc cao 2.3 Chương trình điều khiển động DC Atmega Sơ đồ 1: #include #include void main(void) { PORTA=0xff; DDRA=0x00; PORTC=0x00; DDRC=0xff; while (1) { if (PINA.0==0) {PORTC.0=1; delay_us(5); if(PINA.1==0) {PORTC.0=0; delay_us(5); } } } Sơ đồ 2: #include #include void main(void) 75 { PORTA=0xff; DDRA=0x00; PORTC=0x00; DDRC=0xff; while (1) { if (PINA.0==0) {PORTC.0=1; PORTC.1=0; delay_us(5); if(PINA.1==0) {PORTC.0=0; PORTC.1=1; delay_us(5); if(PINA.2==0) {PORTC.0=0; PORTC.1=0; delay_us(5); } } } 2.4 Biên dịch nạp ch-ơng trình - Nối mạch nạp AVR 910 USB Programmer với Main AVR qua đ- ờng ISP - Trên c«ng Mét cưa sỉ míi hiƯn ra, ta chọn vào Tab After Make, đánh dấu chọn vào ô Program the chip, nhÊn OK ®Ĩ chÊp nhËn Quay trë lại với giao diện làm việc, ta tiến hành dịch nạp ch- ơng trình 76 - Window có thông báo sau: Báo lỗi Cảnh báo - Nếu ch- ơng trình có lỗi đựơc thông báo - Click vào Program the chip để nạp ch- ơng trình - Nếu trình dịch thành công window có thông báo nh- sau BI TP: Câu hỏi: Nêu giải thích cú pháp lệnh If ngơn ngữ lập trình C viết cho vi điều khiển? 77 78 TÀI LIỆU THAM KHẢO PIC16F8x Data Sheet MICROCHIP Technology Inc Giáo trình vi điều khiển họ PIC - Trần văn Trọng 8051 Mikrocontroller erfolgreich anwenden - Jurgen Maier-Wolf Kỹ thuật lập trình C - Phạm Văn Ất AT90S8535 Data Sheet ATMEL Kỹ thuật vi điều khiển AVR - Ngô Diên Tập Giáo trình vi điều khiển 80c51 - Nguyễn Xuân Phú 79 ... thức: - Trình bày cấu trúc, ứng dụng vi xử lý công nghiệp - Kiểm tra vi? ??t chương trình điều kiển * Về kỹ năng: - Vận hành thiết bị dây chuyền sản xuất dùng vi xử lý - Xác định nguyên nhân gây hư... 73 CHƯƠNG TRÌNH MƠ ĐUN Tên mơ đun: Kỹ thuật Vi xử lý Mã số mô đun : MĐ 25 Vị trí, ý nghĩa, vai trị mơ đun * Vị trí mơ đun: Mơ đun bố trí dạy cuối chương trình sau học xong mơ đun Kỹ thuật Điện... chia chương trình lớn thành chương trình nhỏ nhằm dể quản lý làm đơn giản hóa cơng vi? ??c lập trình Ngồi ra, hàm hoạt động tốt chương trình ghép vào chương trình khác mà khơng cần phải vi? ??t lại từ