Mã nguồn của một số MODUL

Một phần của tài liệu 27656 (Trang 99 - 102)

Khởi tạo LCD, khởi tạo I2C, khởi tạo EPROM

5.1.2.Mã nguồn của một số MODUL

+ Khởi tạo giao tiếp với LCD

Việc khởi tạo giao tiếp giữa PIC MASTER và LCD phải tuân thủ theo đúng nguyên tắc, quy định của nhà sản xuất (Đã đƣợc trình bày ở chƣơng 2).

Đoạn mã nguồn dƣới đây sẽ tiến hành khởi tạo PIC MASTER và LCD theo giao tiếp 4 BIT dữ liệu.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

BYTE const LCD_INIT_STRING[4] = {0x20 | (lcd_type << 2), 0xf, 1, 6}; struct lcd_PIN_map const LCD_WRITE = {0,0,0,0,0};

//========================================================== void lcd_send_nibble( BYTE n )

{ lcd.data = n; delay_cycles(1); lcd.enable = 1; delay_us(2); lcd.enable = 0; } //========================================================== void lcd_send_BYTE( BYTE address, BYTE n )

{ lcd.rs = 0; while ( BIT_test(lcd_read_BYTE(),7) ) ; lcd.rs = address; delay_cycles(1); lcd.rw = 0; delay_cycles(1); lcd.enable = 0; lcd_send_nibble(n >> 4); lcd_send_nibble(n & 0xf); } //========================================================== void lcd_init() { BYTE i;

set_tris_d(LCD_WRITE); // đặt PORT về chế độ xuất dữ liệu ra LCD lcd.rs = 0; //chân RS của LCD = 0.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

lcd.enable = 0; //chân Enable của LCD=0 delay_ms(15); //đợi 15 ms

for(i=1;i<=3;++i) //Đƣa LCD về giao thức 8 BIT 3 lần {lcd_send_nibble(3); //B7-B4=0011.

delay_ms(5); }

lcd_send_nibble(2); // Chuyển LCD về chế độ 4 BIT B7-B4=0010 for(i=0;i<=3;++i) //Gửi các chuỗi khởi tạo tiếp theo đến LCD {

lcd_send_BYTE(0, LCD_INIT_STRING[i]); }

}

+ Khởi tạo EPROM 65535 BYTES

Việc khởi tạo EPROM đƣợc tiến hành đơn giản hơn, so với khởi tạo LCD. Đầu tiên chúng ta phải xác định chân của PIC MASTER nối với EPROM, kèm theo chức năng của các chân.

Sau đó phải đặt chân của PIC MASTER giao tiếp với EPROM, thành dạng ở mức cao nhƣ một cực thu hở ( Thiết lập ngõ vào trở kháng cao).

Đoạn mã nguồn dƣới đây, sẽ khởi tạo EPROM 65535 BYTES làm việc với PIC MASTER theo giao tiếp I2C. Với PIN B0 của PIC MASTER đƣợc chỉ định là chân SDA, PIN B1 đƣợc chỉ định là chân SCL.

//========================================================== #define EEPROM_SDA PIN_B0

#define EEPROM_SCL PIN_B1 #define EEPROM_ADDRESS long int #define EEPROM_SIZE 65535 void init_ext_eepROM()

{

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

output_float(EEPROM_SDA); }

+ Khởi tạo giao tiếp I2C giữa PIC MASTER và các PIC SLAVE

Khởi tạo giao tiếp I2C giữa PIC MASTER và các PIC SLAVE, do cả hai PIC MASTER và PIC SLAVE thực hiện.

Đầu tiên phải khai báo quyền điều khiển BUS là MASTER hay SLAVE, các PIN dùng cho giao tiếp I2C, sau đó là đến các tham số khác nhƣ:

- Tốc độ truyền DATA.

- Có sử dụng MODUL giao tiếp I2C có sẵn trong PIC hay không.

Đoạn mã lệnh dƣới đây dùng để khai báo giao tiếp I2C, với 1 PIC MASTER và 4 PIC SLAVE. (adsbygoogle = window.adsbygoogle || []).push({});

//==================Khai báo ở PIC MASTER====================== #use i2c (MASTER,SDA=PIN_B0,SCL=PIN_B1,FORCE_HW)

// MASTER = chế độ MASTER.

// SDA=PIN_B0 = PIN B0 là chân SDA (Truyền, nhận dữ liệu) // SCL=PIN_B1 = PIN B1 là chân duy trì xung Clock)

//Tốc độ ngầm định

// FORCE_HW = Sử dụng MODUL I2C tiếp hợp sẵn trong PIC.

//===================Khai bao ở các PIC

SLAVE====================

#use i2c(SLAVE, SDA=PIN_B0, SCL=PIN_B1, address=0x40) //SLAVE = chế độ SLAVE

// SDA=PIN_B0 = PIN B0 là chân SDA (Truyền, nhận dữ liệu) // SCL=PIN_B1 = PIN B1 là chân duy trì xung Clock)

// address=0x40 = địa chỉ là 0x40.

Một phần của tài liệu 27656 (Trang 99 - 102)