2.5.1. KHỐI ĐIỀU KHIỂN PIC 16F877a a. Đặc điểm pic 16f877a:
• Công nghệ CMOS có đặc tính : công suất thấp, công nghệ bộ nhớ Flash/EEPROM tốc độ cao. Điện áp hoạt động từ 2V đến 5,5V và tiêu tốn năng nượng thấp. phù hợp với nhiệt độ làm việc trong công nghiệp và trong thương mại.
Trường ĐHKTCN Thái Nguyên --- Đồ án môn học: Hệ Thống Nhúng
o Bộ nhớ dữ liệu EEPROM cho phép xóa và ghi 1.000.000 lần.
o Bộ nhớ EEPROM có thể lưu giữ dữ liệu hơn 40 năm và có thể tự lập trình lại được dưới sự điều khiển của phần mềm.
Trường ĐHKTCN Thái Nguyên --- Đồ án môn học: Hệ Thống Nhúng
b. Các công vào ra của PIC 16F877a:
Việc điều khiển các cổng vào ra của pic dựa trên việc điều khiển các File thanh ghi. Vì trong đề tài chỉ sử dụng 3 cổng vào ra là PORTB, PORTC, PORTD nên chúng tôi xin đưa ra đặc điểm của các chân.
PORTB và thanh ghi TRISB:
Portb (RPB) gồm 8 pin I/O. thanh ghi điều khiển xuất nhập tương ứng là TRISB. Bên cạnh đó một số chân của PORTB còn được sử dụng trong quá trình nạp chường trình cho vi điều khiển với các chế độ nào khác nhau. PORTB còn liên quan dến ngắt ngoại vi và bộ Timer0. PORTB còn được tích hợp chức năng điện trở kéo lên được điều khiển bởi chương trình.
Ba chân của PORTB được đa hợp với mạch điện gỡ rối bên trong và chức năng lập trình điện áp thấp RB3/PGM, RB6/PGC và RB7PGD.
Mỗi chân của PORTB có điện trở kéo lên. Bit điều khiển RBPU (OPTION_REG<7>) =0 thì có thể mở tất cả các điện trở kéo lên . khi portb được thiết
Trường ĐHKTCN Thái Nguyên --- Đồ án môn học: Hệ Thống Nhúng
lập là ngõ ra thì sẽ tự động ngắt chức năng điện trở kéo lên , cũng tương tự khi CPU bị reset lúc mới cấp điện.
Bốn chân của portb RB4:RB7 có cấu chúc ngắt thay đổi, chỉ có những chân được thiết lập ở cấu hình là ngõ vào thì mới có chức năng ngắt. các chân ngõ vào là (RB4:RB7) được so sánh với giá trị cũ đã được chốt trong lần đọc trước của portb. Các ngõ ra không trùng nhau của các chân RB4:RB7 được OR lại với nhau để tao ra ngắt ở PORTB với bít cờ báo ngắt RBIF<INTCON<0>>.
Ngắt này có thể kích hoạt vi điều khiển trở lại trạng thái hoạt động khi nó đang ở chế độ SLEEP. Trong chương trình phục vụ ngắt thì người dùng có thể xóa ngắt bằng các cách khác nhau:
Trường ĐHKTCN Thái Nguyên --- Đồ án môn học: Hệ Thống Nhúng
Điều kiện không tương thích sẽ tiếp tục làm cờ báo ngắt RBIF bằng 1. Khi đọc PORTB sẽ chấm dứt điều kiện không tương thích và cho phép xóa bít cờ báo ngắt RBIF.
Cấu trúc ngắt thay đổi dùng để thoát khỏi chế độ nghỉ khi có nhấn phím và các hoạt động mà PORTB chỉ được dùng cho cấu trúc thay đổi ngắt.
PORTC và thanh ghi TRISC:
PORTC là port 2 chiều 8 bít. Thanh ghi định hướng là TRISC. Khi bit TRISC=1 thì portc là nhập, khi TRISC=0 thì portc là xuất.
Portc được đa hợp với vài chức năng ngoại vi. Các chân của portc có mạch đệm Schmit Trigger ở ngõ vào. Khi khối I2C được cho phép thì các chân PORTC (3,4) có thể được định cấu hình ở các mức I2C hoặc mức SMBUS bằng cách sử dụng bít CKE (SSPSTAT<6>).
Khi cho phép chức năng ngoại vi, nên chú ý đến các bít TRIS cho mỗi chân của PORTC. Một vài thiết bị ngoại vi ghi lên bít TRIS để làm một chân như là 1 ngõ ra, trong khi đó các thiết bị ngoại vi ghi lên bít TRIS để làm như một chân ngõ vào.
Trường ĐHKTCN Thái Nguyên --- Đồ án môn học: Hệ Thống Nhúng
Khi ghi đè bít TRIS thì không ảnh hưởng đến các thiets bị đã cho phép, các kệnh đọc – hiệu chỉnh – ghi (BSF,BCF,XORWF) với TRISC là đích đến phải tránh dùng. Người sử dụng tham chiếu tới phần thiết bị ngoại vi tướng ứng để thiếp lập cho đúng bít TRIS
PORTD và thanh ghi TRISD:
PORTD là port 8 bít với ngõ vào có mạch Schmitt Trigger. Mỗi chân có thể được cấu hình độc lập là ngõ vào hoặc ngõ ra. PORTD có thể định cấu hình như là port của vi sử lũ 8 bít bằng cách thiết lập bít điều khiển PSPMODE(TRISE<4>). Trong mode này thì các bộ đến ngõ vào dạng TTL. PORTD và TRISD không được
Trường ĐHKTCN Thái Nguyên --- Đồ án môn học: Hệ Thống Nhúng
Hai BANK thanh ghi : BANK 0 và BANK 1 thuộc địa chỉ từ 0x5 đến 0x09 là địa chỉ của PORTA đến PORTE dùng để xuất nhập dữ liệu. địa chỉ từ 0x85 đến 0x89 là địa chỉ của các thanh ghi định hướng TRISA đến TRISE.
Khi chọn BANK thanh ghi ta thiết lập các giá trị của RP0 và RP1 thuộc thanh ghi STATUS như sau:
• Bank 0 : RP0=0, RP1=0.
• Bank 1 : RP0=1, RP1=0.
• Bank 2 : RP0=0, RP1=1.
Trường ĐHKTCN Thái Nguyên --- Đồ án môn học: Hệ Thống Nhúng
Hình 2.5: Sơ đồ File thanh ghi.
Với phần mềm CCS để viết chương trình C cho PIC, khi truy xuất các dữ liệu từ các cổng thì ta không cần chọn BANK thanh ghi phức tạp như trên. Ta chỉ cần dùng các lệnh : SET_TRIS_X và OUTPUT_X là có thể xuất nhập. Nhưng khi nhập dữ liệu với các cổng ta không nên dùng lệnh OUTPUT_X vì trước khi thực hiện xuất một dữ liệu thì mặc định nó đã SET_TRIS_X. Ta nên khai báo địa chỉ ban đầu của thanh ghi ví dụ:
#BYTE PORTB =0x06, #BYTE PORTC=0x07.
Trường ĐHKTCN Thái Nguyên --- Đồ án môn học: Hệ Thống Nhúng
c. chọn cổng vào ra kết nối với thiết bị ngoại vi :
• Do trong phần mềm CCS có hỗ chợ file LCD.C mặc định dùng ở cổng PORTD nên ta dùng cổng RD để kết nối với LCD. Điều khiển LCD dùng PORTD với thiết lập ban đầu là cổng xuất dữ liệu để điều khiển LCD nên ta thiết lập ban đầu là SET_TRIS_D(0x00).
o Các chân từ RD4 => RD7 của PIC nối với các chân dữ liệu D4 => D7 của LCD
o Chân RD0 của pic nối với chân cho phép E (enable) của LCD.
o Chân RD1 nối với chân RS – chân chọn thanh ghi của LCD
o Chân RD2 nối với chân RW – chân chọn chế độ đọc/ ghi của LCD.
• Chọn cổng quét 16 phím: ma trận phím nối với cổng RC.
• Chọn cổng điều khiển động cơ , công tắc hành trình và báo động : cổng RB
o Chân RB0, RB1 nối với công tắc hành trình để dừng động cơ khi điều khiển cửa
o Chọn chân RB6,RB7 để điều khiển động cơ thông qua mạch cầu.
Trường ĐHKTCN Thái Nguyên --- Đồ án môn học: Hệ Thống Nhúng
d. Bộ nhớ EEPROM:
Dữ liệu EEPROM và bộ nhớ chương trình Fláh có thể đọc và ghi trong suốt quá trình hoạt động bình thường. Bộ nhớ này không được thiết lập trực tiếp trong không gian file thanh ghi đặc biệt. Có 6 thanh ghi FSR được sử dụng để đọc và ghi bộ nhớ này: EECON1 EECON2 EEDATA EEDATH EEADR EEADRH
Trường ĐHKTCN Thái Nguyên --- Đồ án môn học: Hệ Thống Nhúng
FFh. Với PIC 16f877a có 256 byte bộ nhớ nên EEPROM nằm trong khoảng từ 00h đến FFh.
Khi giao tiếp với bộ nhớ chương trình thì hai thanh ghi EEDATA và EEDATH kết hợp với nhau lại thành thanh ghi 16 bit để lưu trữ dữ liệu 14bit cho lệnh đọc/ghi và hai thanh ghi EEADR và EEADRH kết hợp lại thành thanh ghi 16 bít để lưu địa chỉ 13 bit của ô nhớ đang truy suất . Với pic có dung lượng bộ nhớ chương trình là 8k wỏd thì địa chỉ trong khoảng từ 0000h đến 1FFFh . Nếu truy suất ô nhớ có địa chỉ lớn hơn thì sẽ bị cuộn nằm trong vùng nhớ thực
Bộ nhớ dữ liệu EEPROM cho phép đọc và ghi 1 byte bộ nhớ chương trình Flash cho phép đọc 1 word và ghi khối 4 word . Hoạt động ghi của bộ nhớ chương trình sẽ tự động thực hiện xóa trước khi ghi vào khối 4 word . Một byte ghi vào bộ nhớ dữ liệu EEPROM sẽ tự động xóa ô nhớ rồi mới ghi dữ liệu mới – xóa trước khi ghi
Khi chip có mã bảo bbệ thì CPU có thể đọc và ghi dữ liệu bộ nhớ EEPROM. Tùy thuộc vào cách thiết lập các bít bảo vệ chống ghi, PIC có thể cho hoặc không cho
Trường ĐHKTCN Thái Nguyên --- Đồ án môn học: Hệ Thống Nhúng
ghi dữ liệu vào một vài khối bộ nhớ chương trình ; tuy nhiên cho phép đọc bộ nhớ chương trình. Khi PIC coa mã bảo vệ thì người dung không còn được truy cập bộ nhớ dữ liệu hoặc bộ nhớ chương trình.
Thanh ghi EEADR và EEADRH
Cặp thanh ghi EEADRH:EEADR có thể định địa chỉ tối đa 256 byte của bộ nhớ dữ liệu EEPROM hoặc tối đa 8k word của bộ nhớ chương trình EEPROM
Khi truy xuất bộ nhớ dữ liệu thì chỉ dung thanh ghi EEADR đẻ lưu byte địa chỉ thâp
Trường ĐHKTCN Thái Nguyên --- Đồ án môn học: Hệ Thống Nhúng
EEPGD sẽ cho phép truy suất bộ nhớ dữ liệu. khi bit EEPGD bằng 1 thì truy xuất bộ nhớ chương trình.
Thanh ghi EECON1
• Bit 7: EEPGD bit lựa chọn bộ nhớ dữ liệu/ chương trình EEPROM
o EEPGD=1 truy xuất bộ nhớ chương trình
o EEPGD=0 truy xuất bộ nhớ dữ liệu.
• Bit 6 => 4 chưa sử dụng
• Bit 3 WRERR : bít cờ lỗi EEPROM
o WRERR =1 việc ghi thực hiện xong sớm
o WRERR = 0 việc ghi đã được hoàn thành.
• Bit 2: WREN bit cho phép ghi eeprom
o WREN=1 cho phép ghi.
o WREN=0 không cho ghi.
• Bit 1: WR bit điều khiển ghi
o WR=1 bắt đầu chu kỳ ghi. Bit WR được xóa bằng phần cứng sau mỗi lần ghi xong
Trường ĐHKTCN Thái Nguyên --- Đồ án môn học: Hệ Thống Nhúng
• Bit 0 :RD bit điều khiển đọc
o RD=1 bắt đầu chi kỳ đọc eeprom . bit RD được xóa bằng phần cứng .bit RD chỉ có thể được set trong phần mềm
o RD=0 không khởi động chu kỳ đọc eeprom.
Đọc dữ liệu từ bộ nhớ EEPROM:
Để đọc dữ liệu của một ô nhớ người sử dụng phải ghi địa chỉ vào thanh ghi EEADR, xóa bit điều khiển EEPGD (EECON1,7) và sau đó set bit điều khiển RD (EECON1<1>) . Dữ liệu sẽ xuất hiện trong thanh ghi EEDATA ở chu kỳ kế. EEDATA sẽ lưu giá trị này cho đến khi xuất hiện lần đọc kế hoặc bị thay đỏi bởi
Trường ĐHKTCN Thái Nguyên --- Đồ án môn học: Hệ Thống Nhúng
Các bước trên khi dung với ngôn ngữ ASM thì ta phải tuân thủ đúng quy tắc. nhưng khi dung với ngôn ngữ C thì ta chỉ cần dung với một lệnh read_eeprom(address) trong đó address là địa chỉ của EEPROM mà ta cần đọc, địa chỉ này với dòng pic 16f877a từ 00h đến FFh.
Ghi dữ liệu vào bộ nhớ EEPROM:
Để ghi dữ liệu vào EEPROM thì người sử dụng phải ghi địa chỉ vào thanh ghi EEADR và dữ liệu vào thanh ghi EEDATA . sau đó phải thực hiện ghi theo trình tự chỉ định để ghi cho mỗi byte.
Quá trình ghi sẽ không được khởi động nếu thứ tự ghi không được thực hiện chính xác cho mỗi byte . phải cấm tất cả các yêu cầu ngắt khi thực hiện quá trình ghi này .
Ngoài ra bit WREN trong thanh ghi EECON2 phải được set để cho phép ghi. Cơ chế này ngăn chặn các hoạt động ghi ngẫu nhiên vào EEPROM liên quan đến sai sót mã bảo bệ . Người sử dụng nên giữ bit WREN ở trạng thái Clear , ngoại trừ khi
Trường ĐHKTCN Thái Nguyên --- Đồ án môn học: Hệ Thống Nhúng
truy cập dữ liệu vào bộ nhớ dữ liệu EEPROM. Bit WREN không được xóa bằng phần cứng.
Sau khi quá trình ghi đã được khởi đọng thì nếu ta xóa bit WREN sẽ không ảnh hưởng đến chu kỳ này. Bit WR sẽ bị chặn không cho lên 1 trừ khi bit WREN được set.
Khi hoàn tất chu kỳ ghi bit WR được xóa bởi phần cứng và bit cờ báo ngắt hoàn thành xong quá trình ghi EEIF được set. Người dung có thể cho phép sự ngắt hoặc kiểm tra bit này để biết quá trình ghi kết thúc . bit EEIF phải được xóa bằng phần mềm.
Trường ĐHKTCN Thái Nguyên --- Đồ án môn học: Hệ Thống Nhúng
2.5.2. KHỐI HIỂN THỊ a. Hình dáng và kích thước:
Có rất nhiều loại LCD với nhiều hình dáng và kích thước khác nhau, trên hình 1 là hai loại LCD thông dụng.
Trường ĐHKTCN Thái Nguyên --- Đồ án môn học: Hệ Thống Nhúng