NHẬP MÔN VI ĐIỀU KHIỂN

73 665 2
NHẬP MÔN VI ĐIỀU KHIỂN

Đ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

Mail: tranchiendan@yahoo.com Website: atecko.com.vn BÀI 1: NHẬP MÔN VI ĐIỀU KHIỂN PIC I PHẦN LÝ THUYẾT Giới thiệu vi điều khiển PIC 1.1 Giới thiệu vi điều khiển Bộ vi điều khiển viết tắt Micro-controller mạch tích hợp chip lập trình được, dùng để điều khiển hoạt động hệ thống Theo tập lệnh người lập trình, vi điêu khiển tiến hành đọc, lưu trữ thông tin, xử lý thông tin, đo thời gian tiến hành đóng mở cấu Trong thiết bị điện điện tử, vi điều khiển điều khiển hoạt động ti vi, máy giặt, đầu đọc lase, lò vi ba, điện thoại …Trong hệ thống sản xuất tự động, vi điều khiển sử dụng robot, hệ thống đo lường giám sát Các hệ thống thông minh vai trò vi điều khiển ngày quan trọng Hiện thị trường có nhiều họ vi điều khiển như: 6811 Motorola, 8051 Intel, Z8 Zilog, PIC Microchip Technology 1.2 Giới thiệu vi điều khiển PIC PIC bắt nguồn từ chữ viết tắt “Programmable Intelligent Computer” ( Máy tính khả trình thông minh) sản phẩm hãng General Instrument đặt cho dòng sản phẩm họ PIC 1650 Lúc Pic dùng để giao tiếp với thiết bị ngoại vi cho máy chủ 16 bit CP1600, người ta gọi PIC với tên “ Peripheral Interface Controller” ( điều khiển giao tiếp ngoại vi) Năm 1985 General Instrument bán phận vi điện tử họ, chủ sở hữu (Microchip Technology) huỷ bỏ hầu hết dự án – lúc lỗi thời Tuy nhiên PIC bổ sung EEPROM để tạo thành điều khiển vào khả trình Ngày có nhiều dòng PIC sản xuất với hàng loạt modul ngoại vi tích hợp sẵn ( :USART, PWM, ADC…) với nhớ chương trình từ 512 word đến 32k word Mail: tranchiendan@yahoo.com Website: atecko.com.vn PIC sử dụng tập lệnh RISC, với dòng PIC low-end (độ dài mã lệnh 12 Bit ví dụ PIC12Cxxx) mid-range (độ dài mã lệnh 14 bit , ví dụ PIC16Fxxx), tập lệnh bao gồm khoảng 35 lệnh, 70 lệnh dòng PIC high-end( có độ dài mã lệnh 16bit PIC18Fxxxx) Tập lệnh bao gồm lệnh tính toán ghi, số, vị trí ô nhớ, có lệnh điều kiện, nhảy/ gọi hàm, lệnh quay trở về, có chức phần cứng khác ngắt sleep( chế độ hoạt động tiết kiệm điện ) Microchip cung cấp môi trường lập trình MPLAB0, bao gồm phần mềm mô trình dịch ASM Hiện có nhiều dòng PIC có nhiều khác biệt phần cứng, điểm qua vài nét sau : • 8/16/24/32 bit CPU, xây dựng theo kiến trúc Harvard • Flash Rom tuỳ chọn 256 byte đến 256 kbybe • Bộ nhớ nội EEPROM - ghi/ xoá lên tới hàng triệu lần • Các cổng xuất/nhập (mức lôgic thường từ 0v đến 5v, ứng với mức logic 1, dòng khoảng vài chục mA) • 8/16 bit timer • Modun giao tiếp ngoại vi nối tiếp không đồng bộ: USART • Modun giao tiếp ngoại vi song song (kiểu máy in) • Bộ chuyển đổi ADC 10 bit nội gồm kênh đầu vào • Module ngoại vi MSSP dùng cho giao tiếp I2C, SPI • Modul CCP có chức o Comparator (so sánh) o Capture o PWM: dùng điều khiển động Một số dòng vi điều khiển PIC hỗ trợ thêm: • Hỗ trợ điều khiển động pha, pha • Hỗ trợ giao tiếp USB • Hỗ trợ điều khiển Ethernet • Hỗ trợ giao tiếp CAN Mail: tranchiendan@yahoo.com Website: atecko.com.vn • Hỗ trợ giao tiếp LIN • Hỗ trợ giao tiếp IRDA • DSP tính xử lý tín hiệu số 1.3 Các thành phần mạch ứng dụng vi điều khiển PIC: 1.4 Các khái niệm bản: Cổng xuất nhập I/O: Trong vi điều khiển PIC16F877A có cổng: • Cổng A gồm chân: RA0, RA1 RA5 • Cổng B gồm chân: RB0, RB1, RB7 • Cổng C gồm chân: RC0, RC1, RC7 • Cổng D gồm chân: RD0, RD1, RD7 • Cổng E gồm chân: RE0, RE1, RE2 Mỗi cổng thực chất quản lý ghi PORTA, PORTB, PORTC, PORTD, PORTE nằm nhớ RAM vi điều khiển Xem hình sau: Mail: tranchiendan@yahoo.com Website: atecko.com.vn Bộ nhớ RAM vi điều khiển PIC 16F877A gồm bank nhớ Nhìn vào bank nhớ ta thấy ghi đặt tên ghi đa mục đích (General Purpose Register) • Các ghi đặt tên ghi đặc biệt dùng để điều khiển, quản lý thể trạng thái khối chức vi điều khiển ví dụ PORTA Mail: tranchiendan@yahoo.com Website: atecko.com.vn đại diện cho chân cổng A, PORTB đại diện cho chân cổng B v.v Các • ghi có địa xác định không dùng cho mục đích khác Các ghi đa mục đích dùng để đặt biến chương trình ứng dụng vi điều khiển Nhìn vào đồ nhớ RAM, ta thấy biến đặt từ địa 20F đến 7Fh bank nhớ 0, A0h-EFh, 120h-16Fh, 1A0h-1EFh Trở lại vấn đề cổng, tới ta đưa nhận xét: Thanh ghi PORTA phản ánh trạng thái chân cổng A, nghĩa muốn tín hiệu đầu chân cổng A ta việc đưa giá trị vào bit tương ứng ghi PORTA Cũng đọc giá trị ghi PORTA ta biết trạng thái chân cổng A Ví dụ: Muốn RA0 mức logic (mức 5V), RA1 mức logic (mức 0V), RA2 mức logic 1, RA3 mức logic 0, RA4 mức logic 1, RA5 mức logic 1, ta việc gán giá trị 000110101 cho ghi PORTA X X 1 RA5 RA4 RA3 RA2 RA1 RA0 X: không quan tâm Tương tự với PORTB,PORT C,PORTD,PORTE Tính đa chức chân vi điều khiển: Nhìn vào sơ đồ chân vi điều khiển, ta thấy số chân vi điều khiển có tên gồm nhiều phần với dấu gạch chéo Ví dụ: RA0/AN0, RC7/RX/DT, RC6/TX/CK Đây tính đa chức chân vi điều khiển hay gọi dồn kênh Ý nghĩa là: Bình thường không cài đặt tất chân cổng A, B, C, D, E chân vào số I/O Nếu chương trình ta có cài đặt chức RS232, ADC PWM v.v chân tương ứng với chức hoạt động theo chức Khi chân không dùng làm chân vào số bình thường Mail: tranchiendan@yahoo.com Website: atecko.com.vn Ví dụ: bình thường chân RA0/ANO chân vào số RA0, chức ADC với kênh vào tín hiệu analog kênh cài đặt chân RA0 /AN0 chân vào ADC, tức hoạt động theo chức AN0 Tương tự vậy, cài đặt giao tiếp với thiết bị ngoại vi theo chuẩn RS232, chân vào số RC7/RX/DT hoạt động đầu vào liệu RS232 tức chức RX chân Cài đặt vào/ra cho chân vào số cổng: Các chân vào/ra số vi điều khiển PIC phải cài đặt chân vào chân hoạt động chức Việc chân cổng X (X=A,B, E) qui định đầu hay đầu vào phụ thuộc vào bit tương ứng ghi TRISX (X=A,B, E) hay Ví dụ: Muốn chân thấp (bit thấp) cổng B (RB0-RB3) chân vào, chân cao (bit cao) cổng B (RB4-RB7) chân giá trị bit ghi TRISB là: 0 0 1 1 Gợi ý dễ nhớ là: Để chân RB.m (m=0-7) đầu ra, tức Output giá trị TRISB.m Là đầu vào, tức Input giá trị TRISB.m Tương tự chân cổng lại Ngôn ngữ lập trình cho vi điều khiển PIC- CCS: 2.1 Các ngôn ngữ lập trình cho vi điều khiển PIC: Ngôn ngữ lập trình cho vi điều khiển PIC có loại: - Ngôn ngữ lập trình cấp thấp- Hợp ngữ: có phần mềm MPLAB Ngôn ngữ lập trình bậc cao: có nhiều loại, phát triển theo ngôn ngữ C, như: CCS, HTPIC, PIC BASIC v.v Ưu điểm hợp ngữ giúp người học lập trình hiểu rõ cấu trúc bên vi điều khiển PIC, tối ưu hóa nhớ chương trình Tuy nhiên, nhìn chung phương pháp tiếp cận hợp ngữ khó khả phát triển ứng dụng hạn chế, thời gian Vì vậy, khóa học tập trung vào sử dụng ngôn ngữ bậc cao mà cụ thể CCS để nghiên cứu phát triển ứng dụng PIC Ưu điểm CCS là: Mail: tranchiendan@yahoo.com Website: atecko.com.vn - Kế thừa tấc đặc điểm ngôn ngữ C- ngôn ngữ bản, quen thuộc mà sinh - viên đào tạo Xây dựng sẵn hàm phục vụ cho việc sử dụng dễ dàng khối chức đặc - biệt Vi điều khiển PIC khối ADC, PWM, RS232, SPI Có khả kết hợp với ngôn ngữ hợp ngữ, tạo mềm dẻo phát triển ứng - dụng Khả phát triển, nâng cấp ứng dụng dễ dàng Ngày cập nhật với nhiều tính ưu việt hiệu 2.2 Cơ ngôn ngữ lập trình CCS: 2.2.1 Ví dụ chương trình viết ngôn ngữ CCS: // Đây thích chương trình //Bắt đầu thị tiền xử lý chương trình #include // cho file định nghĩa thiết bị 16f877a.h vào chương trình #fuses HS,NOLVP,NOWDT// Cấu hình cho vi điều khiển PIC #use delay (clock=4000000) // dùng thạch anh tần số 4MHz // Khai báo biến byte const MAP[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //=========================================== //=========================================== // Bắt đầu chương trình hiển thị void display(int n) { char b; // khai báo biến b b=((MAP[n/10]) ^ 0x00); if ((n/10)==(0)) b=0xff; output_b(b); // sử dụng hàm xuất giá trị cổng B output_low(PIN_A4);// sử dụng hàm đưa giá trị chân RA4 xuống mức thấp delay_ms(2);// Sử dụng hàm tạo trễ ms output_high(PIN_A4); // sử dụng hàm đưa giá trị chân RA4 lên mức cao output_b((MAP[n%10]) ^ 0x00); output_low(PIN_A5); delay_ms(2); Mail: tranchiendan@yahoo.com Website: atecko.com.vn output_high(PIN_A5); } // Kết thúc chương trình hiển thị //============================================ // Bắt đầu chương trình // Đây nơi vi điều khiển bắt đầu chạy lệnh //============================================ void main() { int i,count; count=0; while(TRUE) { for (i=0;iKBD_DEBOUNCE_FACTOR) { switch (col) { case : output_low(col0); output_high(col1); output_high(col2); output_high(col3); //DELAY_MS(1000); break; case : output_high(col0); output_low(col1); output_high(col2); output_high(col3); break; case : output_high(col0); output_high(col1); output_low(col2); output_high(col3); break; case : output_high(col0); output_high(col1); output_high(col2); output_low(col3); break; } Mail: tranchiendan@yahoo.com Website: atecko.com.vn if(kbd_down)//NEU LAN TRUOC DO DA CO MOT PHIM DUOC BAM { if(!ALL_ROWS())//DOI CHO DEN KHI PHIM DUOC NHA RA { kbd_down=false; kchar=last_key; last_key='\0'; } } else //NEU KHONG CO PHIM NAO BAM TRUOC DO { if(ALL_ROWS())//NEU CO PHIM BAM { if(!input (row0)) row=0; else if(!input (row1)) row=1; else if(!input (row2)) row=2; else if(!input (row3)) row=3; last_key =KEYS[row][col]; kbd_down = true; } else // NEU KHONG CO PHIM NAO BAM, CHUYEN SANG QUET COT TIEP THEO Mail: tranchiendan@yahoo.com Website: atecko.com.vn { ++col; if(col>=4) col=0; } } kbd_call_count=0;//SAU LAN QUET RESET KBD_CALL_COUNT VE 0, DE DOI LAN QUET TIEP } return(kchar); } void main() { INT C; INT16 value; SET_TRIS_D(0X00); SET_TRIS_B(0X0F); lcd_putcmd(0x80); lcd_init(); delay_ms(200); OUTPUT_B(0XF0); PRINTF(LCD_PUTCHAR,"PHIM BAM: "); while( TRUE ) Mail: tranchiendan@yahoo.com Website: atecko.com.vn { C=KBD_GETC(); IF (C!='\0') { LCD_PUTCMD(0X01); PRINTF(LCD_PUTCHAR,"%C",C); } } } Chương trình nhập số: void main() { INT C; INT16 DAT_THU; INT16 value; SET_TRIS_D(0X00); SET_TRIS_B(0X0F); lcd_putcmd(0x80); lcd_init(); delay_ms(200); PRINTF(LCD_PUTCHAR,"PHIM BAM: "); WHILE( TRUE ) Mail: tranchiendan@yahoo.com Website: atecko.com.vn { DAT_THU=0; DO { C=KBD_GETC(); IF (C!='\0'& c!='A'&C!='B'& c!='C'&C!='D'& c!='D'&C!='E'&C!='F') { DAT_THU =DAT_THU*10; DAT_THU=DAT_THU+C-0X30; LCD_PUTCHAR(C); } }WHILE(C!='E'); LCD_PUTCMD(0X01); PRINTF(LCD_PUTCHAR,"GIA TRI PHIM BAM:"); LCD_PUTCMD(0XC2); PRINTF(LCD_PUTCHAR,"%6LU",DAT_THU); Mail: tranchiendan@yahoo.com Website: atecko.com.vn Mail: tranchiendan@yahoo.com Website: atecko.com.vn CHƯƠNG 7: CHUẨN GIAO TIẾP I2C- CHIP ĐỒNG HỒ THỜI GIAN THỰC DS1307 Chuẩn giao tiếp I2C: a Sơ đồ chuẩn giao tiếp I2C: Chuẩn giao tiếp I2C chuẩn giao tiếp dây: gồm tín hiệu SDA(tín hiệu liệu) tín hiệu xung Clock SCL Chuẩn giao tiếp I2C có giao thức kiểu Master/Slaver Trong đó, thiết bị chủ điều khiển hoạt động trình giao tiếp Các ưu điểm: - Đơn giản, tốc độ truyền nhanh - Giao diện nối tiếp - Đồng - Hai chiều I2C giao tiếp đồng bộ: - Dữ liệu truyền theo tín hiệu xung clock (SCL) - Tín hiệu SCL điều khiển liệu thay đổi liệu đọc I2C giao tiếp master/slaver: - Master nơi phát xung clock (SCL), điều khiển trình truyền nhận - Tín hiệu xung clock (SCL) chung cho tấc Slaver - Slaver đưa tín hiệu SCL xuống mức thấp để ngăn chặn truyền I2C giao tiếp chiều: - Cùng thời điểm, hai thiết bị truyền nhận liệu Tuy nhiên, Master qui định luồng liệu truyền b Mức tín hiệu: Chuẩn giao tiếp I2C sử dụng dây tín hiệu : - SDA: Serial DAta, tín hiệu liệu nối tiếp, truyền liệu đến từ Master SCL: Serial Clock, tín hiệu xung đồng hồ qui định liệu đọc liệu ghi Tín hiệu Master điều khiển Các trạng thái đặc biệt tạo nên giao tiếp I2C là: - Start: kí hiệu S Mail: tranchiendan@yahoo.com Website: atecko.com.vn - stop: kí hiệu P - Data: liệu: Mail: tranchiendan@yahoo.com Website: atecko.com.vn - Kết thúc trạng thái stop, SCL SDA lên mức cao cho biết trạng thái đường truyền rỗi c Khung truyền: - Ghi liệu từ Master đến Slaver: - Đọc liệu từ Slaver: Chip đồng hồ thời gian thực: Hình dáng: Sơ đồ kết nối Mail: tranchiendan@yahoo.com Website: atecko.com.vn Các ghi chức năng: Qui trình gửi lệnh để ghi byte từ vi điều khiển đến DS1307: - Tạo trạng thái Start: i2c_start(); Mail: tranchiendan@yahoo.com Website: atecko.com.vn - Gửi địa DS1307: địa mặc định 0xd0 với bit qui đinh hướng truyền liệu, 0: i2c_write(0xd0); - Gửi địa byte nhớ DS1307 cần ghi: i2c_write(address); - Gửi liệu đến DS1307: i2c_write(data); - Tạo trạng thái Stop: i2c_stop(); Qui trình gửi lệnh để đọc byte liệu từ DS1307 lên vi điều khiển: - Tạo trạng thái Start: i2c_start(); - Gửi địa DS1307: địa mặc định 0xd0: i2c_write(0xd0); - Gửi địa byte nhớ DS1307 cần ghi: i2c_write(address); - Tạo lại trạng thái Start: i2c_start(); - Gửi địa DS1307: địa mặc định 0xd0 với bit qui đinh hướng truyền liệu, 1: i2c_write(0xd1); - Dùng lệnh đọc liệu: data=i2c_read(0); - Tạo trạng thái Stop: i2c_stop(); Chương trình mẫu: Chương trình chính: #include #use delay(clock=8000000) #fuses HS,NOWDT,NOPROTECT,NOLVP #include "ds1307.c" #include void main(void) { int8 sec,min,hour,day,date,month,year; char second_digit1, second_digit2, min_digit1, min_digit2,hour_digit1,hour_digit2; Mail: tranchiendan@yahoo.com Website: atecko.com.vn write_ds1307(0,sec & 0x7F); // enable oscillator(bit =0) lcd_init(); //write_ds1307(2,0x15); while(true) { sec=read_ds1307(0); // read second min=read_ds1307(1); // read minute hour=read_ds1307(2); // read hour second_digit2 = (sec / 0x10) ; second_digit1 = (sec % 0x10) ; min_digit2 = (min / 0x10) ; min_digit1 = (min % 0x10); hour_digit2= (hour/0x10); hour_digit1=hour%0x10; lcd_putcmd(0x80); printf(lcd_putchar,"RTC: "); printf(lcd_putchar,"%u",hour_digit2); printf(lcd_putchar,"%u",hour_digit1); printf(lcd_putchar," : "); Mail: tranchiendan@yahoo.com Website: atecko.com.vn printf(lcd_putchar,"%u",min_digit2); printf(lcd_putchar,"%u",min_digit1); printf(lcd_putchar,": "); printf(lcd_putchar,"%u",second_digit2); printf(lcd_putchar,"%u",second_digit1); delay_ms(500); } } Chương trình DS1307.c #define DS1307_SDA PIN_C4 #define DS1307_SCL PIN_C3 #use i2c(master, sda=DS1307_SDA, scl=DS1307_SCL) //========================== // KHOI TAO DS1307 //========================== void init_DS1307() { output_float(DS1307_SCL); output_float(DS1307_SDA); } //========================== // GHI BYTE ĐẾN DS1307 //========================== void write_DS1307(byte address, BYTE data) Mail: tranchiendan@yahoo.com Website: atecko.com.vn { short int status; i2c_start(); i2c_write(0xd0); i2c_write(address); i2c_write(data); i2c_stop(); i2c_start(); status=i2c_write(0xd0); while(status==1) { i2c_start(); status=i2c_write(0xd0); } } //========================== //DOC BYTE TU DS1307 //========================== BYTE read_DS1307(byte address) { BYTE data; i2c_start(); i2c_write(0xd0); i2c_write(address); i2c_start(); i2c_write(0xd1); Mail: tranchiendan@yahoo.com Website: atecko.com.vn data=i2c_read(0); i2c_stop(); return(data);} } [...]... VCC: Chân nguồn • VEE: Chân hiệu chỉnh độ sáng của LCD • RS: – =0: LCD sẽ nhận lệnh từ vi điều khiển Mail: tranchiendan@yahoo.com Website: atecko.com.vn – • =1: LCD sẽ nhận kí tự từ vi điều khiển để hiển thị R/W: – =1: Vi điều khiển đọc dữ liệu từ LCD – =0: Vi điều khiển ghi dữ liệu lên LCD Thông thường Vi điều khiển chủ yếu ghi dữ liệu lên LCD nên chân này thường nối đất • E: Chân cho phép (Enable)... một mạch thực thi vi điều khiển PIC - Hiểu được vi c xuất nhập dữ liệu trên các chân vi điều khiển - Ôn lại tư duy lập trình, thuật toán và cấu trúc một chương trình vi t trên C - Làm quen với một số lệnh cơ bản trong CCS Bài tập 1.1: Dùng phần mềm mô phỏng Proteus thiết kế mạch như hình vẽ sau: Mail: tranchiendan@yahoo.com Website: atecko.com.vn a Vi t chương trình bật đèn led D1 b Vi t chương trình... đầu vào xung của Timer đó Dạng xung được xác định là sườn âm hay sườn dương phụ thuộc vào vi c cài đặt bit chọn dạng xung tương ứng trên thanh ghi của vi điều khiển Nguyên lý hoạt động định thời và bộ đếm này cũng đúng với các bộ vi điều khiển, vi xử lý khác Ta đi vào khảo sát cụ thể 2 Timer0 và Timer1 của vi điều khiển PIC 3.3 Timer 0: 3.3.1 Nguyên lý hoạt động: Timer 0 có độ dài 8 bit – Thanh ghi chứa... quá trình hiển thị một chuỗi kí tự nào đó, ta cần quá trình khởi tạo để cài đặt các chế độ này Vi điều khiển thực hiện quá trình khởi tạo này bắt cách ghi đến LCD một chuỗi các lệnh Căn cứ vào chức năng của các chân vi điều khiển được giới thiệu ở trên, ta đưa ra qui trình của vi c gửi một lệnh từ Vi điều khiển đến LCD: - Cho chân R/W=0 để xác định đây là ghi xuống LCD (thông thường chân này được nối... trên vi điều khiển dùng cho vi c hiển thị led…Không còn chân để giao tiếp với các thiết bị khác như bàn phím, đầu vào số khác v.v Không khả thi! Ta có phương pháp tiết kiệm chân hơn để giải quyết: Mail: tranchiendan@yahoo.com Website: atecko.com.vn Hình 2.5: Hiển thị 2 led 7 đoạn Các chân dữ liệu (chân sẽ nhận mã led từ vi điều khiển) được nối tương ứng với nhau và nối vào 1 cổng của vi điều khiển, ... 2.1: Hiển thị led đơn Các led này sáng khi được cấp áp cỡ 2 V, dòng 10-20mA Nếu dùng một chân ra từ vi điều khiển để bật tắt led, phải dùng thêm điện trở hạn dòng,hạn áp Tính toán như sau: Muốn bật đèn, ta cho chân ra vi điều khiển lên mức cao nối với đầu vào của mạch trên Như ta biết, chân ra vi điều khiển ở mức logic cao có điện áp 5V Cho điện áp rơi trên led là 2V, dòng qua là 15mA Mail: tranchiendan@yahoo.com... thiệu: Trong các ứng dụng của vi điều khiển trong thực tế, vi c định thời (tạo một khoảng thời gian giữa 2 sự kiện) các thao tác là vi c thường xuyên xảy ra Mail: tranchiendan@yahoo.com Website: atecko.com.vn Để thực hiện vi c này, ta có 2 cách: - Dùng các lệnh thực hiện các vòng lặp để tạo ra khoảng thời gian Nguyên tắc tạo ra khoảng thời gian này đơn giản như sau: nếu vi điều khiển mất một khoảng thời... được nối với nguồn Để led đơn sáng đơn giản ta đưa chân vi điều khiển nối với led đó xuống mức thấp Mail: tranchiendan@yahoo.com Website: atecko.com.vn Như trên hình 2.4 trên, để led 7 đoạn hiển thị số 2 thì các led a,b,d,e,g sáng; các led c, f tắt Giá trị sáng tương ứng chân vi điều khiển nối vào ở mức 0, giá trị tắt tương ứng với chân vi điều khiển nối với ở mức 1 Do đó nội dung của thanh ghi PORTB... của 2 loại led 7 đoạn 2.2.2 Hiển thị 1 led 7 đoạn dùng vi điều khiển: Như đã giới thiệu ở phần trên, thực chất led 7 đoạn gồm 8 hoặc 7 led đơn nối với nhau Vì vậy để điều khiển thanh led đơn sáng, cách thực hiện phần cứng như hình 2.1 Cụ thể hơn, như dùng led chung anod như hình vẽ trên Mỗi đầu vào a,b,c,d,e,f,g,h được nối với một chân của vi điều khiển, tương ứng là RB0, RB1, RB7, thông qua các điện... tạo để gửi các lệnh cài đặt chế độ làm vi c cùa LCD, kí tự sẽ được hiển thị lên LCD bất kì khi nào vi điều khiển muốn gửi Quá trình gửi kí tự gồm các bước sau: - Cho chân R/W=0 để xác định đây là ghi xuống LCD (thông thường chân này được nối - đất, nên mặc định chân này ở mức 0, ta không cần quan tâm đến nữa) Cho chân RS=1 để xác định đây là kí tự mà vi điều khiển gửi xuống LCD (phân biệt với - RS=0,

Ngày đăng: 14/06/2016, 20:35

Từ khóa liên quan

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

Tài liệu liên quan