Ví dụ như: Việc sử dụng những biển quảng cáo, những thiết bị đèn chiếu sáng, hay việc chạy các dòng chữ trên biển quảng cáo,… Hiện nay, trên thị trường có rất nhiều họ vi điều khiển như:
Trang 2KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC
Người hướng dẫn khoa học:
ThS PHÙNG CÔNG PHI KHANH
HÀ NỘI, 2014
Trang 3LỜI CẢM ƠN
Sau một thời gian nghiên cứu, em đã hoàn thành khóa luận tốt nghiệp
với đề tài “Điều khiển LCD dùng PIC 18F4520” Em xin được bày tỏ lòng
biết ơn sâu sắc và lời cảm ơn chân thành đến ThS.Phùng Công Phi Khanh đã hướng dẫn và chỉ bảo em tận tình trong suốt quá trình nghiên cứu để hoàn thành khóa luận tốt nghiệp của mình
Em xin chân thành cảm ơn trường ĐHSP Hà Nội 2, ban chủ nhiệm khoa Vật lý, tổ Sư phạm Kỹ thuật và các thầy cô giáo trong khoa đã giúp đỡ
em trong suốt quá trình học tập tại khoa
Đồng thời, em cũng gửi lời cảm ơn tới gia đình, bạn bè đã luôn bên em, giúp đỡ, động viên em trong suốt quá trình học tập và hoàn thành bài khóa luận tốt nghiệp
Em xin chân thành cảm ơn!
Hà Nội, tháng 5 năm 2014
Sinh viên
Tống Thị Ánh
Trang 4LỜI CAM ĐOAN
Em xin cam đoan rằng số liệu và kết quả nghiên cứu trong khóa luận này là trung thực và không trùng lặp với các đề tài khác Em xin cam đoan rằng mọi sự giúp đỡ cho việc thực hiện khóa luận này đã được cảm ơn và các thông tin trích dẫn trong khóa luận này đã được chỉ rõ nguồn gốc
Hà Nội, tháng 5 năm 2014
Sinh viên
Tống Thị Ánh
Trang 5MỤC LỤC
Trang Phần I: Mở đầu 5
1 Lí do chọn đề tài 5
2 Mục đích và nhiệm vụ nghiên cứu 6
3 Đối tượng và phạm vi nghiên cứu 6
4 Phương pháp nghiên cứu 6
5 Kết cấu khóa luận 7
Phần II: Nội dung 8
Chương I: Tổng quan về vi điều khiển PIC 8
1.1 PIC là gì? 8
1.2 Các dòng PIC và cách lựa chọn vi điều khiển PIC 8
1.2.1 Các dòng PIC 8
1.2.2 Cách lựa chọn một vi điều khiển PIC 9
1.3 Ngôn ngữ lập trình cho PIC 9
1.4 Mạch nạp cho PIC 9
Chương II: Tổng quan về vi điều khiển PIC 18F4520 11
2.1 Sơ đồ chân vi điều khiển PIC 18F4520 11
2.2 Các thông số về vi điều khiển PIC 18F4520 11
2.3 Sơ đồ khối của vi điều khiển PIC 18F4520 13
Chương III: Tổng quan về LCD 16x2 14
3.1 Các chân điều khiển LCD 15
3.2 Chức năng các chân của LCD 17
3.3 Kết nối màn hình LCD 18
3.4 Các thanh ghi và tổ chức bộ nhớ LCD 16x2 19
3.4.1 Display Data Ram (DDRAM) 20
Trang 63.4.2 Character Generator Ram (CGRAM) 20
3.4.3 Bộ nhớ CGROM 21
3.5 Các lệnh cơ bản của LCD 22
3.6 Kết nối LCD với vi điều khiển PIC 18F4520 27
3.7 Khởi tạo LCD 29
3.7.1.Mạch khởi tạo bên trong chíp HD44780 30
3.7.2 Khởi tạo bằng lệnh 30
Chương IV: Ứng dụng của vi điều khiển PIC 18F4520 34
4.1 Yêu cầu 34
4.2 Thiết kế mạch điện mô phỏng 35
4.2.1 Thiết kế phần cứng 35
4.2.2 Thiết kế phần mềm 36
Phần III: Kết luận 43 Tài liệu tham khảo
Trang 7PHẦN I: MỞ ĐẦU
1 Lí do chọn đề tài
Ngày nay, với sự phát triển vượt bậc của khoa học kĩ thuật và điện tử
thì việc sử dụng các thiết bị điện tử có ý nghĩa rất quan trọng trong đời sống sinh hoạt cũng như sản xuất Ngày càng có nhiều sản phẩm kĩ thuật ra đời đáp ứng được nhiều nhu cầu và lợi ích của con người Hòa cùng xu hướng đó vi điều khiển đã khẳng định được vị thế vững chắc của mình trong nhiều ứng dụng
Các thiết bị vi điều khiển có nhiều ứng dụng rộng rãi với ưu điểm nhỏ gọn, linh hoạt và có thể điều khiển dễ dàng Vi điều khiển ngày càng chiếm lĩnh và đóng vai trò cực kì quan trọng trong kĩ thuật điều khiển và tự động hóa Ví dụ như: Việc sử dụng những biển quảng cáo, những thiết bị đèn chiếu sáng, hay việc chạy các dòng chữ trên biển quảng cáo,…
Hiện nay, trên thị trường có rất nhiều họ vi điều khiển như: 8051, Motorola 68HC, AVR, ARM,… Ngoài họ 8051 đã được hướng dẫn cơ bản ở môi trường đại học thì việc lựa chọn vi điều khiển PIC để mở rộng kiến thức
và phát triển các ứng dụng trên công cụ này là vô cùng hợp lí vì họ vi điều khiển này có thể tìm mua dễ dàng ở Việt Nam, giá thành không quá đắt, có đầy đủ tính năng của một vi điều khiển hoạt động độc lập,… Số lượng người
sử dụng vi điều khiển PIC hiện nay tại Việt Nam cũng như trên thế giới ngày càng nhiều
Ngày nay, thiết bị hiển thị LCD (Liquid Crystal Display) được sử dụng trong rất nhiều các ứng dụng của vi điều khiển LCD có rất nhiều ưu điểm so với các dạng hiển thị khác: Nó có khả năng hiển thị kí tự đa dạng, trực quan (chữ, số và kí tự đồ họa), dễ dàng đưa vào mạch ứng dụng theo nhiều giao thức giao tiếp khác nhau, tốn rất ít tài nguyên hệ thống và giá thành rẻ,…
Trang 8Vì vậy sau một thời gian học tập và nghiên cứu về vi điều khiển PIC,
em đã lựa chọn đề tài “ĐIỀU KHIỂN LCD DÙNG PIC 18F4520”
2 Mục đích và nhiệm vụ nghiên cứu
+ Học cách lập trình C cho vi điều khiển PIC 18F4520
+ Biết cách lập trình hiển thị trên LCD dùng PIC 18F4520
3 Đối tượng và phạm vi nghiên cứu
- Đối tượng nghiên cứu:
+ Lập trình C cho vi điều khiển PIC 18F4520 điều khiển LCD
+ Họ vi điều khiển PIC
+ Màn hình tinh thể lỏng LCD 16x2
- Phạm vi nghiên cứu:
+ Vi điều khiển dòng PIC 18F4520
+ Màn hình tinh thể lỏng LCD 16x2
4 Phương pháp nghiên cứu
- Phương pháp nghiên cứu lí thuyết
- Thảo luận và đánh giá
- Phương pháp thực nghiệm
Trang 95 Kết cấu khóa luận
* Cấu trúc khóa luận gồm 4 chương:
Chương I: Tổng quan về vi điều khiển PIC
Giới thiệu chung về vi điều khiển PIC: Hiểu được các dòng PIC và cách lựa chọn vi điều khiển PIC; ngôn ngữ lập trình cho PIC và mạch nạp PIC Chương II: Tổng quan về vi điều khiển PIC 18F4520
Tìm hiểu những nét cơ bản về vi điều khiển PIC 18F4520: Tìm hiểu về
sơ đồ chân, sơ đồ khối và các thông số của vi điều khiển PIC 18F4520
Tìm hiểu cơ bản về LCD 16x2: Chức năng các chân của LCD, các thanh ghi và tổ chức bộ nhớ LCD; các lệnh cơ bản của LCD; việc kết nối LCD với vi điều khiển PIC 18F4520
Chương IV: Ứng dụng của vi điều khiển PIC 18F4520
Giới thiệu ứng dụng cụ thể của vi điều khiển PIC 18F4520 trong việc điều khiển LCD 16x2
Trang 10PHẦN II: NỘI DUNG CHƯƠNG I: TỔNG QUAN VỀ VI ĐIỀU KHIỂN PIC 1.1 PIC là gì?
- PIC là viết tắt của “Programable Intelligent Computer”, có thể tạm dịch
là “máy tính thông minh khả trình” do hãng Genenral Instrument đặt tên cho
vi điều khiển đầu tiên của họ
- PIC 1650 được thiết kế để dùng làm các thiết bị ngoại vi cho vi điều khiển CP 1600 Vi điều khiển này sau đó được nghiên cứu phát triển thêm và
từ đó hình thành nên dòng vi điều khiển PIC ngày nay
1.2 Các dòng PIC và cách lựa chọn vi điều khiển PIC
1.2.1 Các dòng PIC
- Các kí hiệu của vi điều khiển PIC:
+ PIC 12xxxx: Độ dài lệch 12 bit
+ PIC 16xxxx: Độ dài lệch 14 bit
+ PIC 18xxxx: Độ dài lệch 16 bit
+ C: PIC có bộ nhớ EPROM (chỉ có 16C84 là EEPROM)
+ F: PIC có bộ nhớ flash
+ LF: PIC có bộ nhớ flash hoạt động ở điện áp thấp
+ LV: Tương tự như LF, đây là kí hiệu cũ
- Bên cạnh đó một số vi điều khiển có kí hiệu xxFxxx là EEPROM, nếu
có thêm chữ A ở cuối là flash (ví dụ PIC 16F877 là EEPROM, còn PIC 16F877A là flash)
- Ngoài ra còn có thêm một dòng vi điều khiển PIC mới là dsPIC Ở Việt Nam phổ biến nhất là các họ vi điều khiển PIC do hãng Microchip sản xuất
Trang 11
1.2.2 Cách lựa chọn một vi điều khiển PIC
- Trước hết cần chú ý đến số chân của vi điều khiển cần thiết cho ứng dụng Có nhiều vi điều khiển PIC với số lượng chân khác nhau, thậm chí có vi điều khiển chỉ có 8 chân, ngoài ra còn có các vi điều khiển 28, 40, 44,…chân
- Cần chọn vi điều khiển PIC có bộ nhớ flash để có thể nạp xóa chương trình được nhiều lần hơn
- Tiếp theo cần chú ý đến các khối chức năng được tích hợp sẵn trong
vi điều khiển, các chuẩn giao tiếp bên trong
- Sau cùng cần chú ý đến bộ nhớ chương trình mà vi điều khiển cho phép
- Ngoài ra mọi thông tin về cách lựa chọn vi điều khiển PIC có thể được tìm thấy trong cuốn sách “Select PIC guide” do nhà sản xuất Microchip cung cấp
1.3 Ngôn ngữ lập trình cho PIC
- Trình dịch cho PIC rất đa dạng, từ các trình dịch sử dụng ngôn ngữ lập trình cấp thấp như MPLAB ASM (được cung cấp miễn phí bởi nhà sản xuất Microchip) đến các trình dịch sử dụng các ngôn ngữ lập trình cấp cao hơn như C, Basic, Pascal,… Ngoài ra còn có một số trình dịch sử dụng ngôn ngữ lập trình được phát triển dành riêng cho PIC như PICBasic, MikroBasic,…
- Ở đề tài này tôi đã tìm hiểu những tính năng và công cụ chính của MPLAB Cxx, đây là trình dịch sử dụng ngôn ngữ lập trình C
1.4 Mạch nạp cho PIC
- Đây là một dòng sản phẩm rất đa dạng dành cho vi điều khiển PIC Có
thể sử dụng các mạch nạp được cung cấp bởi nhà sản xuất là hãng Microchip như: PICSTART plus, MPLAB ICD2, MPLAB PM3, PRO MATE
- Có thể dùng các sản phẩm này để nạp cho vi điều khiển khác thông qua chương trình MPLAB Dòng sản phẩm chính thống này có ưu thế là nạp
Trang 12được cho tất cả các vi điều khiển PIC, tuy nhiên giá thành rất cao và thường gặp rất nhiều khó khăn trong quá trình mua sản phẩm Ngoài ra do tính năng cho phép nhiều chế độ nạp khác nhau, còn có rất nhiều mạch nạp được thiết
kế dành cho vi điều khiển PIC
- Có thể sơ lược một số mạch nạp cho PIC như sau:
+ JDM programmer: Mạch nạp này dùng chương trình nạp Icprog cho phép nạp các vi điều khiển PIC có hỗ trợ tính năng nạp chương trình điện áp thấp ISCSP (In Circuit Serial Programming) Hầu hết các mạch nạp đều hỗ trợ tính năng nạp chương trình này
+ WARP-13A và MCP-USB: Hai mạch này giống với mạch nạp PICSTARTPLUS do nhà sản xuất Microchip cung cấp, tương thích với trình biên dịch MPLAB, nghĩa là ta có thể trực tiếp dùng chương trình MPLAB để nạp cho vi điều khiển PIC mà không cần sử dụng một chương trình nạp khác, chẳng hạn như Icprog
+ P16PRO40: Mạch nạp này do Nigel thiết kế và cũng khá nổi tiếng Ông còn thiết kế cả chương trình nạp, tuy nhiên ta cũng có thể sử dụng chương trình nạp Icprog
+ Mạch nạp Universal của Williem: Đây không phải là mạch nạp chuyên dụng dành cho PIC như P16PRO40
- Các mạch nạp kể trên có ưu điểm rất lớn là đơn giản, rẻ tiền, hoàn toàn có thể tự lắp ráp một cách dễ dàng, và mọi thông tin về sơ đồ mạch nạp, cách thiết kế, thi công, kiểm tra và chương trình nạp đều dễ dàng tìm được và download miễn phí thông qua mạng Internet Tuy nhiên các mạch nạp trên có nhược điểm là hạn chế về số vi điều khiển được hỗ trợ, bên cạnh đó mỗi mạch nạp cần được sử dụng với một chương trình nạp thích hợp
Trang 13CHƯƠNG II: TỔNG QUAN VỀ VI ĐIỀU KHIỂN PIC 18F4520 2.1 Sơ đồ chân vi điều khiển PIC 18F4520
Hình 2.1 Sơ đồ chân vi điều khiển PIC 18F4520
2.2 Các thông số về vi điều khiển PIC 18F4520
- CPU tốc độ cao có 75 cấu trúc lệnh, nếu được cho phép có thể kéo dài đến 83 cấu trúc lệnh
- Hầu hết các cấu trúc lệnh chỉ mất một chu kỳ máy, ngoại trừ lệnh rẽ nhánh chương trình mất hai chu kỳ máy
- Tốc độ làm việc: Xung clock đến 40MHz, tốc độ thực thi lệnh 125ns
- Bộ nhớ chương trình (flash program memory) là 32 kbyte
- Bộ nhớ dữ liệu SRAM là 1536 byte
- Bộ nhớ dữ liệu EEPROM là 256 byte
- 5 port vào hoặc ra
- 4 bộ timer
- 1 capture/compare/PWM modules
- 1 enhanced capture/compare/PWM modules
Trang 14- Giao tiếp nối tiếp: MSSP, enhanced USART
- Cổng giao tiếp song song
- 13 bộ Analog to Digital module 10 bit
- POR, BOR
Bên cạnh đó là một vài đặc tính khác của vi điều khiển như:
+ Bộ nhớ Flash có khả năng ghi xóa được 100.000 lần
+ Bộ nhớ EEPROM với khả năng ghi xóa được 1.000.000 lần + Flash/Dữ liệu bộ nhớ EEPROM có thể lưu trữ hàng 100 năm + Khả năng tự nạp chương trình với sự điều khiển của phần mềm + Watchdog timer với bộ dao động trong
+ Chức năng bảo mật mã chương trình
+ Chế độ SLEEP
+ Có thể hoạt động với nhiều dạng Oscillator khác nhau
Trang 152.3 Sơ đồ khối của vi điều khiển PIC 18F4520
Trang 16CHƯƠNG III: TỔNG QUAN VỀ LCD 16x2
“hiện” các chấm này sẽ tạo thành một kí tự cần hiển thị Trong các Text LCD, các mẫu kí tự được định nghĩa sẵn LCD 16x2 là loại có 2 dòng và mỗi dòng
có thể hiển thị tối đa 16 kí tự
- Text LCD có hai cách giao tiếp cơ bản là nối tiếp và song song Trong phạm vi bài này tôi chỉ giới thiệu loại giao tiếp song song, cụ thể là LCD 16x2 điều khiển bởi chip HD44780 của hãng Hitachi
- Khi sản xuất LCD, nhà sản xuất đã tích hợp chíp điều khiển (HD44780) bên trong lớp vỏ và chỉ đưa các chân giao tiếp cần thiết Các chân này được đánh số thứ tự và đặt tên như hình 3.2 :
Trang 17Hình 3.2 Các chân của LCD HD44780
3.1 Các chân điều khiển LCD
- Các chân điều khiển việc đọc và ghi LCD bao gồm RS, R/W và EN:
+ RS (chân số 4): Chân lựa chọn thanh ghi (Select Register), chân này
cho phép lựa chọn một trong hai thanh ghi IR hoặc DR để làm việc Vì cả hai thanh ghi này đều được kết nối với các chân Data của LCD nên cần một bit để lựa chọn giữa chúng Nếu RS=0, thanh ghi IR được chọn và nếu RS=1 thanh ghi DR được chọn Chúng ta đều biết thanh ghi IR là thanh ghi chứa mã lệnh cho LCD, vì thế nếu muốn gửi một mã lệnh đến LCD thì chân RS phải được reset về 0 Ngược lại, khi muốn ghi mã ASCII của kí tự cần hiển thị lên LCD thì chúng ta sẽ set RS=1 để chọn thanh ghi DR Hoạt động của chân RS được
mô tả trong hình 3.3
Hình 3.3 Hoạt động của chân RS
Trang 18+ R/W (chân số 5): Chân lựa chọn giữa việc đọc và ghi Nếu R/W=0
thì dữ liệu sẽ được ghi từ bộ điều khiển ngoài (vi điều khiển 18F4520 chẳng hạn) vào LCD Nếu R/W=1 thì dữ liệu sẽ được đọc từ LCD ra ngoài Tuy nhiên, chỉ có duy nhất một trường hợp mà dữ liệu có thể đọc từ LCD ra, đó là đọc trạng thái LCD để biết LCD có đang bận hay không (cờ Busy Flag- BF)
Do LCD là một thiết bị hoạt động tương đối chậm (so với vi điều khiển), vì thế một cờ BF được dùng để báo LCD đang bận, nếu BF=1 thì chúng ta phải chờ cho LCD xử lí xong nhiệm vụ hiện tại, đến khi nào BF=0 một thao tác mới sẽ được gán cho LCD Vì thế khi làm việc với Text LCD chúng ta nhất thiết phải có một chương trình con tạm gọi là wait_LCD để chờ cho đến khi LCD rảnh Có hai cách để viết chương trình wait_LCD Cách 1 là đọc bit BF
về kiểm tra và chờ BF=0, cách này đòi hỏi lệnh đọc từ LCD về bộ điều khiển ngoài, do đó chân R/W cần được nối với bộ điều khiển ngoài Cách 2 là viết một hàm delay một khoảng thời gian cố định nào đó (tốt nhất là trên 1 ms)
Ưu điểm của cách 2 là sự đơn giản vì không cần đọc LCD, dó đó chân R/W không cần sử dụng và luôn được nối với GND Tuy nhiên, nhược điểm của cách 2 là khoảng thời gian delay cố định nếu quá lớn sẽ làm chậm quá trình thao tác LCD, nếu quá nhỏ sẽ gây ra lỗi hiển thị
+ EN (chân số 6): Chân cho phép LCD hoạt động (Enable), chân này
cần được kết nối với bộ điều khiển để cho phép thao tác LCD Để đọc và ghi data từ LCD chúng ta cần tạo một “xung cạnh xuống” trên chân EN Nói theo cách khác, muốn ghi dữ liệu vào LCD trước hết cần đảm bảo rằng chân EN=0, tiếp đến xuất giữ liệu các chân D0:7, sau đó set chân EN lên 1 và cuối cùng là xóa EN về 0 để tạo một xung cạnh xuống
Trang 193.2 Chức năng các chân của LCD 16x2
- LCD thường sử dụng 14 chân, chế độ 16 chân khi cần điều khiển đèn nền Chức năng của các chân như sau:
Chân Ký
hiệu
Mô tả
với GND của mạch điều khiển
này với VCC=5V của mạch điều khiển
logic “0” (GND) hoặc logic “1” (VCC) để chọn thanh ghi: + Logic “0”: Bus DB0-DB7 sẽ nối với thanh ghi lệnh IR của LCD (ở chế độ “ghi” - write) hoặc nối với bộ đếm địa chỉ của LCD (ở chế độ “đọc” - read)
+ Logic “1”: Bus DB0-DB7 sẽ nối với thanh ghi dữ liệu
DR bên trong LCD
logic “0” để LCD hoạt động ở chế độ ghi, hoặc nối với logic “1” để LCD ở chế độ đọc
bus DB0-DB7, các lệnh chỉ được chấp nhận khi có 1 xung cho phép của chân E:
+ Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD chuyển vào(chấp nhận) thanh ghi bên trong nó khi phát hiện một xung (high-to-low transition) của tín hiệu chân E
Trang 21- Hình trên mô tả kết nối LCD với chế độ 16 chân, hai chân K và A dùng để kết nối với đèn nền
- 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 một biến trở chia áp như trong hình 3.4 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, R/W, 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
3.4 Các thanh ghi và tổ chức bộ nhớ LCD 16x2
- LCD 16x2 có 2 thanh ghi 8 bit 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 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ả hai thanh ghi đều được nối với các đường dữ liệu D0D7 của Text LCD và được lựa chọn tùy theo các chân điều khiển RS,
RW Trên thực tế để điều khiển Text LCD chúng ta không cần quan tâm tới cách thức hoạt động của hai thanh ghi này Vì thế cũng không cần khảo sát chi tiết chúng
- LCD 16x2 có 3 loại bộ nhớ, đó là bộ nhớ RAM dữ liệu cần hiển thị DDRAM (Display 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
Trang 223.4.1 Display Data RAM (DDRAM)
- DDRAM là bộ nhớ tạm chứa các kí tự cần hiển thị lên LCD Mã này
giống với mã ASCII Có tất cả 80 ô nhớ DDRAM, mỗi ô được chia thành hai hàng, mỗi ô có độ rộng 8 bit và được đánh số từ 0 đến 39 cho dòng thứ nhất;
từ 64 đến 103 cho dòng thứ hai Mỗi ô nhớ tương ứng với một ô trên màn hình LCD Như chúng ta đã biết LCD loại 16x2 có thể hiển thị tối đa 32 kí tự (có 32 ô hiển thị), vì thế có một số ô nhớ của DDRAM không được sử dụng làm các ô hiển thị Vùng hiển thị tương ứng với cửa sổ gồm 16 ô nhớ hàng thứ hai Chúng ta có thể tạo hiệu ứng dịch chữ bằng cách sử dụng lệnh dịch Khi đó cửa sổ hiển thị sẽ dịch đem lại hiệu ứng dịch chữ
- Chỉ có 16 ô nhớ có địa chỉ từ 0 đến 15 ô địa chỉ từ 64 đến 79 là được hiển thị trên LCD 16x2 Vì thế muốn hiển thị một kí tự nào đó lên LCD chúng
ta cần viết kí tự đó vào DDRAM ở một trong 32 địa chỉ trên Các kí tự nằm ngoài 32 ô nhớ trên sẽ không được hiển thị
- Lưu ý là để truy cập vào DDRAM thì ta phải cũng cấp địa chỉ cho AC theo mã HEX
3.4.2 Character Generator RAM (CGRAM)
- CGRAM là vùng nhớ chứa các symbol do người dùng tự định nghĩa,
mỗi symbol được có kích thước 5x8 và được dành cho 8 ô nhớ 8 bit Các symbol thường được định nghĩa trước và gọi hiển thị khi cần thiết Vùng này
có tất cả 64 ô nhớ nên có tối đa 8 symbol có thể được định nghĩa Lưu trữ tám mẫu kí tự do người dùng định nghĩa Tám mẫu kí tự này tương ứng với các
mã kí tự D7-D0 = 000*D2D1D0 (* mang giá trị tùy định 0 hay 1)
Trang 233.4.3 Bộ nhớ CGROM
- CGROM là vùng nhớ cố định chứa định nghĩa font cho các kí tự
Chúng ta không trực tiếp truy xuất vùng nhớ này mà chip HD44780 sẽ tự thực hiện khi có yêu cầu đọc font để hiển thị Một số điều đáng lưu ý là địa chỉ font của mỗi kí tự vùng nhớ CGROM chính là mã ASCII của kí tự đó Ví dụ kí tự
“a” có mã ASCII là 97, tham khảo tổ chức của vùng nhớ CGROM trong hình 3.5 bạn sẽ nhận thấy địa chỉ font của “a” có 4 bit thấp là 0001 và 4 bit cao là
0110, địa chỉ tổng hợp là 01100001 = 97
- CGROM và DDRAM được tự động phối hợp trong quá trình hiển thị
của LCD Giả sử chúng ta muốn hiển thị kí tự “a” tại vị trí đầu tiên, dòng thứ hai của LCD thì các bước thực hiện sẽ như sau: Trước hết chúng ta biết rằng
vị trí đầu tiên của dòng hai có địa chỉ là 64 trong bộ nhớ DDRAM (xem hình 3.5), vì thế chúng ta sẽ ghi vào ô nhớ có địa chỉ 64 một giá trị là 97 (mã ASCII của kí tự “a”) Tiếp theo, chip HD44780 đọc giá trị 97 này và coi như
là địa chỉ của vùng nhớ CGROM, nó sẽ tìm đến vùng nhớ CGROM có địa chỉ
97 và đọc bảng font đã được định nghĩa sẵn ở đây Sau đó xuất bản font này
ra các “chấm” trên màn hình LCD tại vị trí đầu tiên của dòng hai trên LCD Đây chính là cách mà hai bộ nhớ DDRAM và CGROM phối hợp với nhau để hiển thị các kí tự Như mô tả, công việc của người lập trình điều khiển LCD tương đối đơn giản, đó là viết mã ASCII vào bộ nhớ DDRAM tại đúng vị trí được yêu cầu, bước tiếp theo sẽ do HD44780 đảm nhiệm