Tài liệu nghiên cứu về vi xu lý

55 294 0
Tài liệu nghiên cứu về vi xu lý

Đ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

Chân 1 và chân 2 là các chân nguồn, được nối với GND và nguồn 5V. Chân 3 là chân chỉnh độ tương phản (contrast), chân này cần được nối với 1 biến trở chia áp như trong hình 2.Trong khi hoạt động, chỉnh để thay đổi giá trị biến trở để đạt được độ tương phản cần thiết, sau đó giữ mức biến trở này. Các chân điều khiển RS, RW, EN và các đường dữ liệu được nối trực tiếp với vi điều khiển. Tùy theo chế độ hoạt động 4 bit hay 8 bit mà các chân từ D0 đến D3 có thể bỏ qua hoặc nối với vi điều khiển, chúng ta sẽ khảo sát kỹ càng hơn trong các phần sau. 2. Thanh ghi và tổ chức bộ nhớ. HD44780U có 2 thanh ghi 8 bits là INSTRUCTION REGISTER (IR) và DATA REGISTER (DR). Thanh ghi IR chứa mã lệnh điều khiển LCD và là thanh ghi “chỉ ghi” (chỉ có thể ghi vào thanh ghi này mà không đọc được nó). Thanh ghi DR chứa các các loại dữ liệu như ký tự cần hiển thị hoặc dữ liệu đọc ra từ bộ nhớ LCD…Cả 2 thanh ghi đều được nối với các đường dữ liệu D0:7 của Text LCD và được lựa chọn tùy theo các chân điều khiển RS, RW. Thực tế để điều khiển Text LCD chúng ta không cần quan tâm đến cách thức hoạt động của 2 thanh ghi này, vì thế cũng không cần khảo sát chi tiết chúng. HD44780U có 3 loại bộ nhớ, đó là bộ nhớ RAM dữ liệu cần hiển thị DDRAM (Didplay Data RAM), bộ nhớ chứa ROM chứa bộ font tạo ra ký tự CGROM (Character Generator ROM) và bộ nhớ RAM chứa bộ font tạo ra các symbol tùy chọn CGRAM (Character Generator RAM). Để điều khiển hiển thị Text LCD chúng ta cần hiểu tổ chức và cách thức hoạt động của các bộ nhớ này:

1 Chân Kí Hiệu Vss Mức Logic I/O Chức Năng - - Nguồn (GND) Vcc - - Nguồn (+5V) Vee - - Chỉnh độ tương phản RS 0/1 I 0=Nhập lệnh 1=Nhập liệu R/W 0/1 I 0=Ghi liệu 1=Đọc liệu E DB0 1,1 I Tín hiệu cho phép 0/1 I/O Bít liệu DB1 0/1 I/O Bít liệu DB2 0/1 I/O Bít liệu 10 DB3 0/1 I/O Bít liệu 11 DB4 0/1 I/O Bít liệu 12 DB5 0/1 I/O Bít liệu 13 DB6 0/1 I/O Bít liệu 14 DB7 0/1 I/O Bít liệu 15 Lamp- - - Đèn LCD 16 Lamp+ - - Đèn LCD Chân chân chân nguồn, nối với GND nguồn 5V Chân chân chỉnh độ tương phản (contrast), chân cần nối với biến trở chia áp hình 2.Trong hoạt động, chỉnh để thay đổi giá trị biến trở để đạt độ tương phản cần thiết, sau giữ mức biến trở Các chân điều khiển RS, R/W, EN đường liệu nối trực tiếp với vi điều khiển Tùy theo chế độ hoạt động bit hay bit mà chân từ D0 đến D3 bỏ qua nối với vi điều khiển, khảo sát kỹ phần sau Thanh ghi tổ chức nhớ HD44780U có ghi bits INSTRUCTION REGISTER (IR) DATA REGISTER (DR) Thanh ghi IR chứa mã lệnh điều khiển LCD ghi “chỉ ghi” (chỉ ghi vào ghi mà không đọc nó) Thanh ghi DR chứa các loại liệu ký tự cần hiển thị liệu đọc từ nhớ LCD…Cả ghi nối với đường liệu D0:7 Text LCD lựa chọn tùy theo chân điều khiển RS, RW Thực tế để điều khiển Text LCD không cần quan tâm đến cách thức hoạt động ghi này, không cần khảo sát chi tiết chúng HD44780U có loại nhớ, nhớ RAM liệu cần hiển thị DDRAM (Didplay Data RAM), nhớ chứa ROM chứa font tạo ký tự CGROM (Character Generator ROM) nhớ RAM chứa font tạo symbol tùy chọn CGRAM (Character Generator RAM) Để điều khiển hiển thị Text LCD cần hiểu tổ chức cách thức hoạt động nhớ này: 2.1 DDRAM DDRAM nhớ tạm chứa ký tự cần hiển thị lên LCD, nhớ gồm có 80 ô chia thành hàng, ô có độ rộng bit đánh số từ đến 39 cho dòng 1; từ 64 đến 103 cho dòng Mỗi ô nhớ tương ứng với ô hình LCD Như biết LCD loại 16x2 hiển thị tối đa 32 ký tự (có 32 ô hiển thị), có số ô nhớ DDRAM không sử dụng làm ô hiển thị Để hiểu rõ tham khảo hình bên Hình Tổ chức DDRAM Chỉ có 16 ô nhớ có địa từ đến 15 16 ô địa từ 64 đến 79 hiển thị LCD Vì muốn hiển thị ký tự LCD cần viết ký tự vào DDRAM 32 địa Các ký tự nằm 32 ô nhớ không hiển thị, nhiên không bị đi, chúng dùng cho mục đích khác cần thiết 2.2 CGROM CGROM vùng nhớ cố định chứa định nghĩa font cho ký tự Chúng ta không trực tiếp truy xuất vùng nhớ mà chip HD44780U tự thực có yêu cầu đọc font để thị Một điều đáng lưu ý địa font ký tự vùng nhớ CGROM mã ASCII ký tự Ví dụ ký tự ‘a’ có mã ASCII 97, tham khảo tổ chức vùng nhớ CGROM hình bạn nhận thấy địa font ‘a’ có bit thấp 0001 bit cao 0110, địa tổng hợp 01100001 = 97 CGROM DDRAM tự động phối hợp trình hiển thị LCD Giả sử muốn hiển thị ký tự ‘a’ vị trí đầu tiên, dòng thứ LCD bước thực sau: trước hết biết vị trí dòng có địa 64 nhớ DDRAM (xem hình 3), ghi vào ô nhớ có địa 64 giá trị 97 (mã ASCII ký tự ‘a’) Tiếp theo, chip HD44780U đọc giá trị 97 coi địa vùng nhớ CGROM, tìm đến vùng nhớ CGROM có địa 97 đọc bảng font định nghĩa sẵn đây, sau xuất font “chấm” hình LCD vị trí dòng LCD Đây cách mà nhớ DDRAM CGROM phối hợp với để hiển thị ký tự Như mô tả, công việc người lập trình điều khiển LCD tương đối đơn giản, viết mã ASCII vào nhớ DDRAM vị trí yêu cầu, bước HD44780U đảm nhiệm Hình Vùng nhớ CGROM 2.3 CGRAM CGRAM vùng nhớ chứa symbol người dùng tự định nghĩa, symbol có kích thước 5x8 dành cho ô nhớ bit Các symbol thường định nghĩa trước gọi hiển thị cần thiết Vùng có tất 64 ô nhớ nên có tối đa symbol định nghĩa Tài liệu không đề cập đến sử dụng nhớ CGRAM nên không chi tiết phần này, bạn tham khảo datasheet HD44780U để biết thêm Điều khiển hiển thị Text LCD 3.1 Các chân điều khiển LCD Các chân điều khiển việc đọc ghi LCD bao gồm RS, R/W EN RS (chân số 3): Chân lựa chọn ghi (Select Register), chân cho phép lựa chọn ghi IR DR để làm việc Vì ghi kết nối với chân Data LCD nên cần bit để lựa chọn chúng Nếu RS=0, ghi IR chọn RS=1 ghi DR chọn Chúng ta biết ghi IR ghi chứa mã lệnh cho LCD, muốn gởi mã lệnh đến LCD chân RS phải reset Ngược lại, muốn ghi mã ASCII ký tự cần hiển thị lên LCD set RS=1 để chọn ghi DR Hoạt động chân RS mô tả hình Hình Hoạt động chân RS R/W (chân số 4): Chân lựa chọn việc đọc ghi Nếu R/W=0 liệu ghi từ điều khiển (vi điều khiển AVR chẳng hạn) vào LCD Nếu R/W=1 liệu đọc từ LCD Tuy nhiên, có trường hợp mà liệu đọc từ LCD ra, đọc trạng thái LCD để biết LCD có bận hay không (cờ Busy Flag - BF) Do LCD thiết bị hoạt động tương đối chậm (so với vi điều khiển), cờ BF dùng để báo LCD bận, BF=1 phải chờ cho LCD xử lí xong nhiệm vụ tại, đến BF=0 thao tác gán cho LCD Vì thế, làm việc với Text LCD thiết phải có chương trình tạm gọi wait_LCD để chờ LCD rảnh Có cách để viết chương trình wait_LCD Cách đọc bit BF kiểm tra chờ BF=0, cách đòi hỏi lệnh đọc từ LCD điều khiển ngoài, chân R/W cần nối với điều khiển Cách viết hàm delay khoảng thời gian cố định (tốt 1ms) Ưu điểm cách đơn giản không cần đọc LCD, chân R/W không cần sử dụng nối với GND Tuy nhiên, nhược điểm cách khoảng thời gian delay cố định lớn làm chậm trình thao tác LCD, nhỏ gây lỗi hiển thị Trong hướng dẫn bạn cách tổng quát cách 1, để sử dụng cách bạn cần thay đổi nhỏ chương trình wait_LCD (sẽ trình bày chi tiết sau) kết nối chân R/W LCD xuống GND EN (chân số 5): Chân cho phép LCD hoạt động (Enable), chân cần kết nối với điều khiển phép thao tác LCD Để đọc ghi data từ LCD cần tạo “xung cạnh xuống” chân EN, nói theo cách khác, muốn ghi liệu vào LCD trước hết cần đảm bảo chân EN=0, tiếp đến xuất liệu đến chân D0:7, sau set chân EN lên cuối xóa EN để tạo xung cạnh xuống 3.2 Tập lệnh LCD Danh sách lệnh tô màu khác nhau, lệnh màu đỏ dùng thường xuyên lúc hiển thị LCD lệnh màu xanh thường dùng lần lúc khởi động LCD, riêng lệnh Read BF dùng không tùy theo cách viết chương trình wait_LCD Phần giải thích ý nghĩ lệnh tham số kèm theo chúng Trước hết nhóm lệnh đỏ: - Clear display – xóa LCD: lệnh xóa toàn nội dung DDRAM xóa toàn hiển thị LCD Vì lệnh ghi Instruction nên chân RS phải reset trước ghi lệnh lên LCD Mã lệnh xóa LCD 0x01(ghi vào D0:D7) - Cursor home – đưa trỏ vị trí đầu, dòng LCD: lệnh thực việc đưa trỏ vị trí nhớ DDRAM, sau lệnh biến ghi vào DDRAM biến nằm vị trí (1;1) RS phải trước ghi lệnh Mã lệnh 0x02 0x03(chọn mã lệnh, tùy ý) - Set DDRAM address – định vị trí trỏ cho DDRAM: di chuyển trỏ đến vị trí tùy ý DDRAM dùng để chọn vị trí cần hiển thị LCD Để thực lệnh cần reset RS=0 Bit MSB mã lệnh (D7) phải 1, bit lại mã lệnh địa DDRAM muốn di chuyển đến Ví dụ muốn di chuyển trỏ đến vị trí thứ dòng LCD (địa 42) cần ghi mã lệnh 0xAA 0xAA=10101010 (binary) bit MSB 1, bảy bit lại 0101010=42, địa ô nhớ muốn đến - Write to CGRAM or DDRAM – ghi liệu vào CGRAM DDRAM: lệnh ghi instruction mà lệnh ghi liệu nên chân RS cần set lên trước ghi lệnh vào LCD Lệnh cho phép ghi mã ASCII ký tự cần hiển thị vào ghi DDRAM Trường hợp ghi vào CGRAM không khảo sát Kế đến nhóm lệnh màu xanh: nhóm lệnh thường thực lần (ít học này) thường viết chung chương trình khởi động LCD ( gọi init_LCD học này) - Entry mode set – xác lập thị liên tiếp cho LCD: nói cách dễ hiểu, lệnh cách mà bạn muốn hiển thị ký tự ký tự trước Ví dụ bạn muốn thị ký tự liên tiếp AB, trước hết bạn viết A vị trí 5, dòng Sau bạn ghi B vào LCD, lúc có cách mà LCD hiển thị B sau: hiển thị B bên phải A vị trí số (cách 1); B hiển thị bên trái A, vị trí số 4(cách 2); LCD tự dịch chuyển A bên trái đến vị trí sau hiển thị B bên phải A, vị trí 5(cách 3); khả cuối LCD dịch chuyển A bên phải đến vị trí sau hiển thị B bên trái A, vị trí 5(cách 4) Chúng ta chọn cách hiển thị thông qua lệnh Entry mode set Đây lệnh ghi Instruction nên RS=0, bit cao D7:3=00000, bit D2=1, hai bit lại D1:0 chứa mã lệnh để lựa chọn cách hiển thị Xem lại bảng 2, bit D1 chứa giá trị I/D D0 chứa S Trong I/D nghĩa tăng giảm (Increment or Decrement) I/D= hiển thị tăng tức ký tự sau hiển thị bên phải ký tự trước, I/D=0 hiển thị giảm, tức ký tự sau hiển thị bên trái ký tự trước S giá trị Shift, S=1 ký tự trước “đẩy” đi, ký tự sau chiếm chỗ ký tự trước, ngược lại S=0 vị trí hiển thị ký tự trước không thay đổi Có thể tóm tắt mode hiển thị ứng với mã lệnh sau: + D7:0 = 0x04 (00000100) : hiển thị giảm không shift (như cách ví dụ) + D7:0 = 0x05 (00000101) : hiển thị giảm shift (như cách ví dụ) + D7:0 = 0x06 (00000110) : hiển thị tăng không shift (như cách 1, khuyến khích) + D7:0 = 0x07 (00000111) : hiển thị tăng shift (như cách ví dụ) - Display on/off control – xác lập cách thị cho LCD: lệnh bao gồm thông số cho phép LCD hiển thị, cho phép hiển thị cursor mở/tắt blinking Đây lệnh ghi Instrcution nên RS phải Mã lệnh cho lệnh có dạng 00001DCB D (Display) cho phép hiển thị LCD mang giá trị 1, C (Cursor) cursor hiển thị B blinking cho cursor vị trí hiển thị (blinking dạng ô đen nhấp nháy vị trí ký tự hiển thị) Mã lệnh dùng phổ biến cho lệnh 0x0E (00001110 - hiển thị cursor không hiển thị blinking) - Function set – xác lập chức cho LCD: lệnh thiết lập phương thức giao tiếp với LCD, kích thước font chữ số lượng line LCD RS phải sử dụng lệnh Mã lệnh function set có dạng 001D¬¬LNFxx Trong DL=1 (DL: Data Length) mode giao tiếp bit dùng, lúc tất chân từ D0 đến D7 phải kết nối với điều khiển Nếu DL=0 mode bit dùng, trường hợp có chân D4:7 dùng để truyền nhận liệu kết nối với điều khiển ngoài, chân D0:3 để trống N quy định số dòng LCD, khảo sát LCD loại hiển thị dòng nên N=1 (N=0 cho trường hợp LCD dòng) F kích thước font chữ hiển thị, LCD có font chữ có sẵn CGROM nên cần lựa chọn thông qua bit F, F=1 font 5x10 sử dụng F=0 font 5x8 hiển thị bit thấp mã lệnh gán giá trị tùy ý Mã lệnh dùng phổ biến cho lệnh function set 0x38 (00111000 – giao tiếp bit, dòng với font 5x8 ) 0x28 (00101000 – giao tiếp bit, dòng với font 5x8 ) Ví dụ sử dụng mã lệnh 3.3 Giao tiếp bit bit Như trình bày lệnh function set, có mode để ghi đọc liệu vào LCD mode bit mode bit: - Mode bit: Nếu bit DL lệnh function set mode bit dùng Để sử dụng mode bit, tất lines liệu LCD từ D0 đến D7 (từ chân đến chân 14) phải nối với PORT chip điều khiển bên (ví dụ PORTC ATmega32 ví dụ này) hình Ưu điểm phương pháp giao tiếp liệu ghi đọc nhanh đơn giản chip điều khiển cần xuất nhận liệu PORT Tuy nhiên, phương pháp có nhược điểm tổng số chân dành cho giao tiếp LCD nhiều, tính chân điều khiển cần đến 11 đường cho giao tiếp LCD - Mode bit: LCD cho phép giao tiếp với điều khiển theo chế độ bit Trong chế độ này, chân D0, D1, D2 D3 LCD không sử dụng (để trống), có chân từ D4 đến D7 kết nối với chip điều khiển Các instruction data bit ghi đọc cách chia thành phần, gọi Nibbles, nibble gồm bit giao tiếp thông qua chân D7:4, nibble cao xử lí trước nibble thấp sau Ưu điểm lớn phương pháp tối thiểu số lines dùng cho giao tiếp LCD Tuy nhiên, việc đọc ghi nibble tương đối khó khăn đọc ghi liệu bit Trong học này, trình bày chương trình viết riêng để ghi đọc nibbles gọi Read2Nib Write2Nib III AVR Text LCD Trình tự giao tiếp Text LCD Trình tự giao tiếp với LCD trình bày flowchart hình Hình Trình tự giao tiếp với Text LCD Để sử dụng LCD cần khởi động LCD, sau khởi động LCD sẵn sàng để hiển thị Quá trình khởi động cần thực lần đầu chương trình Trong này, trình khởi động viết chương trình tên int_LCD, khởi động LCD thường bao gồm xác lập cách giao tiếp, kích thước font, số dòng LCD (funcstion set), cho phép hiển thị LCD, sursor…(Display control), chế độ hiển thị tăng/giảm, shift (Entry mode set) Các thủ tục khác xóa LCD, viết ký tự lên LCD, di chuyển trỏ…được sử dụng liên tục trình hiển thị LCD trình bày đoạn chương trình riêng AVR giao tiếp với Text LCD WinAVR Phần trình bày cách điều khiển hiển thị Text LCD vi điều khiển AVR môi trường C WinAVR Hình thức thư viện hàm giao tiếp Text LCD file header có tên myLCD.h Các hàm thư viện bao gồm (chú ý phần code List không nằm file myLCD.h) List Các hàm có thư viện myLCD char Read2Nib(); //đọc nibbles từ LCD void Write2Nib(uint8_t chr); //ghi nibbles vào LCD void Write8Bit(uint8_t chr); //ghi trự tiếp bit LCD 10 void wait_LCD(); //chờ LCD rảnh void init_LCD(); //khởi động LCD void clr_LCD(); //xóa LCD void home_LCD(); //đưa cursor home void move_LCD(uint8_t y, uint8_t x); //di chuyển cursor đế vị trí mong muốn (dòng, cột) void putChar_LCD(uint8_t chr); //ghi ký tự lên LCD 10 void print_LCD(char* str, unsigned char len); //hiển thị chuỗi ký tự Tuy nhiên, trước viết hàm giao tiếp LCD cần định nghĩa số macro biến Hãy tạo file Header có tên myLCD.h viết đoạn code bên vào file (bắt đầu từ List 1) List Định nghĩa biến thay 01 #include 02 #define sbi(sfr,bit) sfr|=_BV(bit) 03 #define cbi(sfr,bit) sfr&=~(_BV(bit)) 04 #define EN 05 #define RW 06 #define RS 07 #define CTRL PORTB 08 #define DDR_CTRL DDRB 09 PORTB 10 #define DATA_O PINB 11 #define DATA_I DDRB 12 #define DDR_DATA 13 /* 14 #define LCD8BIT PORTD 15 #define DATA_O PIND 16 #define DATA_I DDRD 17 #define DDR_DATA 18 */ cbi sbi macro dụng để xóa set bit ghi Ví dụ cbi(PORTA, 5) xóa bit ghi PORT Do WinAVR không hỗ trợ xuất trực tiếp bit nên cần định nghĩa macro hỗ trợ Các biến EN, RW RS định nghĩa số thứ tự chân PORT AVR dùng để kết nối với chân EN, R/W RS LCD CTRL biến cho biết PORT AVR dùng để kết nối với chân điều khiển LCD DDR_CTRL ghi điều khiển hướng PORT kết nối với chân điều khiển, DDR_CTRL phụ thuộc vào biến CTRL Trong trường hợp 10 41 } void set_clock(void) { bit_8 temp; DISABLE_INT command(0x01); command(0x80); data_in("set date"); command(0x0f);//bat hien thi ,bat tro ,bat nhap nhay command(0xc4); date_in(date); command(0xc6); data_in("/"); if(month[...]... hiện thêm vi c di chuyển 4 bit thấp của chr qua trái rồi gán cho biến LNib Như vậy sau 2 dòng này các biến HNib và LNib được mô tả như sau: Do dữ liêu đã được sắp xếp sẵn sàng ở các vị trí cao (ứng với các chân D4:7) nên công vi c tiếp theo chỉ đơn giản là xu t 2 biến HNib và LNib ra đường DATA_O, cần phải tạo 1 “xung cạnh xu ng” ở chân EN mỗi lần xu t dữ liệu (dòng 9, 10) Chú ý là phải xu t nibble... LCD, vi c ghi vào LCD có thể làm ảnh hưởng đến các chân của PORT dùng làm đường dữ liệu nhất là khi các đường điều khiển và dữ liệu dùng chung 1 PORT (PORTB) Biến temp_data dùng trong giải thuật mặt nạ để không làm ảnh hưởng đến các bit khác khi ghi LCD Dòng 3 đọc dữ liệu từ PORT DATA_O và che đi các bit cao, chỉ lưu lại các bit thấp vào biến temp_data vì các bit thấp này không được dùng xu t nhập dữ liệu. .. trị về Trong dòng 10, kiểm tra bit thứ 7 của DATA_I, DATA_I chính là giá trị đọc về và bit thứ 7 trong giá trị nhận về chính là cờ Busy Flag Nếu BF=0 (bit_is_clear(DATA_I,7)) thì kết thúc quá trình lặp chờ với lệnh break; Trong trường hợp mode 4 bit được sử dụng (#else), quá trình kiểm tra cờ BF cũng tương tự, điểm khác nhau duy nhất là cách đọc dữ liệu về có khác, chúng ta dùng hàm Read2Nib đã được vi t... trị thời gian mặc định mà ta thiết lập sẵn; còn bình thường đã có thời gian cài đặt trước đó vi điều khiển đọc dữ liệu thời gian từ IC thời gian thực, xử lý và hiển thị kết quả lên màn hình LCD  Cài đặt thời gian: khi xu t hiện ngắt ngoài 0, vi điều khiển bắt đầu thực hiện cài đặt ngày giờ Trên LCD, theo lần xu t hiện ngắt ngoài 0 mà lần lượt vị trí con trỏ của nó sẽ nhảy tới giá trị thời gian lần lượt... Hàm này thực hiện vi c đọc dữ liệu từ LCD ra ngoài, đọc theo từng nibble 4 bit, kết quả trả về là 1 số 8 bit Hàm này chỉ được dùng duy nhất khi đọc cờ Busy (BF) trong chương trình chờ LCD rảnh (wait_LCD) ở mode 4 bit Trước hết cần định nghĩa 1 biến tạm HNib (high nibble) và LNib (Low nibble) để chứa 2 nibbles đọc về (dòng 2, List 2) Dòng 5 set chân EN lên mức 1 để chuẩn bị cho LCD làm vi c Chúng ta cần... bị cho LCD làm vi c Chúng ta cần đổi hướng của PORT dữ liệu trên AVR để sẵn sàng nhận dữ liệu về, do chỉ có 4 bit cao của PORT data kết nối với các đường data của LCD (vì đây là mode 4 bit) nên chỉ cần set hướng cho 4 bit này trên AVR, dòng 6 thực hiện vi c set hướng Trong chế độ 4 bit, LCD sẽ truyền và nhận nibble cao trước vì thế dòng 7 đọc dữ liệu từ LCD thông qua các chân DATA_I vào biến HNib, chú... R/W nối với chân 1 PORTB (PB1) và chân RS nối với chân 0 PORTB (PB0) Vi c chọn các PORT giao tiếp và thứ tự chân phụ thuộc vào kết nối thật trong mạch điện giao tiếp, bạn phải thay đổi các định nghĩa này cho phù hợp với thiết kế mạch điện của bạn Lý do cho vi c định nghĩa các biến thay thế kiểu này là nhằm tạo ra tính tổng quát cho thư vi n hàm Ví dụ, một người không muốn dùng PORTB để điều khiển LCD... để truyền dữ liệu) và chế độ 8 bit (dùng cả 8 chân dữ liệu từ D0 đến D7), ở chế độ 4 bit, khi truyền 1 byte, chúng ta sẽ truyền nửa cao của byte trước, sau đó mới truyền nửa thấp của byte Trước khi truyền các kí tự ra màn hình LCD ta cần thiết lập cho LCD như chọn chế độ 4 bit hoặc 8 bit, 1 dòng hay 2 dòng ,bật/tắt con trỏ  Để đọc thanh ghi lệnh,ta phải đặt RS=0 và R/W =1 và xung cao xu ng thấp cho... tên thay thế là CTRL và DDR_CTRL Tương tự, tôi định nghĩa 3 biến thay thế là DATA_O nghĩa là PORT xu t dữ liệu, DATA_I là PORT nhập dữ liệu và DDR_DATA là thanh ghi điều khiển hướng DATA_O và DATA_I là PORT nối với các chân D0:7 (mode 8 bit) hoặc D4:7 (mode 4 bit) của LCD, đây là các đường truyền và nhận dữ liệu Trong ví dụ trên, tôi dùng chính PORTB làm đường data vì đây là trường hợp giao tiếp 4 bit,... dòng 9 và 10 vi t lệnh function set vào LCD theo mode 8 bit Giá trị 0x38, tức 00111000 là một lệnh xác lập mode 8 bit, LCD 2 dòng và font 5x8 Nếu mode 4 bit được dùng, chúng ta cần vi t hàm function set khác đi một chút Theo mặc định, khi vừa khởi động LCD thì mode 8 bit sẽ được chọn, vì thế nếu một hàm 16 17 nào đó đươc ghi vào LCD đầu tiên, LCD sẽ cố gắng đọc hết các chân D0:7 để lấy dữ liệu, do trong

Ngày đăng: 11/05/2016, 13:34

Từ khóa liên quan

Mục lục

  • Chân

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

Tài liệu liên quan