Bác nào viết được cái này rùi post lên cho mọi người tham khảo nhé!
Thông báo
Collapse
No announcement yet.
LCD và tiếng việt
Collapse
X
-
;------------------------;
; BẠN "ryan_mu " ĐÃ VIẾT:
;------------------------;
Em đang làm lập trình Tiếng Việt trên LCD JA-16202A(loại 16 x 2 ) trong nó có tích hợp con HD-44780;em dùng con 89S52 như trên diễn đàn đã khuyên và em dùng ASM để lập trình .Em thì đã làm được hiển thị được Tiếng Việt trên LCD .Hôm nay quên mang hình nó để post lên .
Nhưng mà hình như cái thuật toán của em gọi Tiếng Việt ra của em chưa tối ưu .Các nác xem hộ em cái có cách nào hay thì chỉ bảo giùm .Em gọi Tiếng Việt theo kiểu 1 xâu ký tự hiển thị :"trường đại học Bách Khoa " thì trong ROM ,em để xâu :" truwowfng ddaji hojc Basch Khoa " .Chính vì gọi cái kiểu này nên việc xử lý của em nó dài dòng lắm các bác à .ROM viết đã trên 6 Kb rồi.Các bác có thuật toán tối ưu chỉ bảo giùm em .
Comment
-
Em nhớ không nhầm thì CGRAM của Character LCD chỉ có 8 kí tự thui mà? Sao đủ bộ font tiếng việt được. ROM của nó không dùng mã ascii mà vì phải đưa thêm bộ mã tiếng Nhật. Đúng là đồ Nhật!PNLab
Mạch nạp/debug ULink2, Jlink ARM USB
Mạch nạp AVR, PIC, 8051, MSP430 USB
Mạch phát triển STM32, ARM9, ARM11
more...www.pnlabvn.com
Comment
-
Em xin lỗi mọi người vì lên lần đầu vào box không thấy chủ đề đã có nên tạo nên topic lặp lại .Thành thật xin lỗi mọi người.
Em thấy đúng như bạn sphinx đã nói .Cái con HD-44780 của Hitachi chế tạo đúng là không hỗ trợ Tiếng Việt nên không khỏi nhiều hạn chế.Sau đây em xin trình bày việc hiển thị Tiếng Việt ,em mới làm quen vi điều khiển được 3 tháng nay có gì mong mọi người góp ý .
Để hiển thị Tiếng Việt trên LCD JA-16202(loại 16 x 2) có 2 cách:
1)Phần cứng :tức là IC HD-44780 hỗ trợ Tiếng Việt trong ROM .Theo như em đọc datasheet thì con HD-44780 có 2 phiên bản ROM.Một dành cho thị trường Tây Âu và châu Mỹ nên hỗ trợ Tiếng La tinh trong đó có các ký tự Tiếng Việt có dấu , mọt dành cho thị trường Nhật Bản nên hỗ trợ Tiếng Nhật trong bảng mã ASCII mở rộng.Mà em thấy mua chủ yếu gặp loại dành cho thị trường Nhật nên không hỗ trợ Tiếng Việt .Trong datasheet hướng dẫn cách có thể ghi ROM của IC này để nó hỗ trợ Tiếng Việt .Nhưng em thấy cách này trong hoàn cảnh của em thì đúng là pó tay.
Comment
-
2) Phần mềm:
Đúng là con IC HD-44780 có CGRAM (bộ tạo ký tự do người dùng định nghĩa ) nên giúp cho việc tạo font Tiếng Việt.Tuy nhiên CGRAM của HD-44780 chỉ có 64 bytes nên chúng ta chỉ max tạo được hay nói chính xác là cho hiển thi đồng thời 8 ký tự trên màn hình LCD .Tuy nhiên 1 xâu ký tự mà có 8 ký tự Tiếng Việt đã là khá nhiều rồi.Ví dụ như "Trường đại học Bách Khoa " thì có 6 ký tự Tiếng Việt là :ư ,ờ ,ạ ,đ, ọ ,á .Chính vì thế em cố làm thử .Đầu tiên em định nghĩa tất cả các ký tự Tiếng Việt có thể có chủ yếu là các nguyên âm và kết hợp đấu của nó để trong ROM:
Code:;DEFINE CHARACTER CHUAHUYEN :DB 04h,02h,0Eh,01h,0Fh,11h,0Fh,00h CHUASAC :DB 04h,08h,0Eh,01h,0Fh,11h,0Fh,00h CHUAHOI :DB 06h,04h,0Eh,01h,0Fh,11h,0Fh,00h CHUANGA :DB 05h,0Ah,0Eh,01h,0Fh,11h,0Fh,00h CHUANANG :DB 00h,00h,0Eh,01h,0Fh,11h,0Fh,04h CHUAW :DB 0Ah,04h,0Eh,01h,0Fh,11h,0Fh,00h CHUAWHUYEN :DB 02h,0Dh,04h,0Eh,01h,0Fh,11h,0Fh CHUAWSAC :DB 08h,1Ah,04h,0Eh,01h,0Fh,11h,0Fh CHUAWHOI :DB 06h,0Eh,04h,0Eh,01h,0Fh,11h,0Fh CHUAWNGA :DB 0Ch,1Eh,04h,0Eh,01h,0Fh,11h,0Fh CHUAWNANG :DB 0Ah,04h,0Eh,01h,0Fh,11h,0Fh,04h CHUAA :DB 04h,0Ah,0Eh,01h,0Fh,11h,0Fh,00h CHUAAHUYEN :DB 02h,06h,04h,0Eh,01h,0Fh,11h,0Fh CHUAASAC :DB 08h,14h,04h,0Eh,01h,0Fh,11h,0Fh CHUAAHOI :DB 03h,06h,04h,0Eh,01h,0Fh,11h,0Fh CHUAANGA :DB 05h,0Eh,04h,0Eh,01h,0Fh,11h,0Fh CHUAANANG :DB 04h,0Ah,0Eh,01h,0Fh,11h,0Fh,04h CHUDD :DB 02h,07h,02h,0Eh,12h,12h,0Eh,00h CHUEHUYEN :DB 00h,04h,02h,0Eh,11h,1Eh,0Eh,00h CHUESAC :DB 00h,04h,08h,0Eh,11h,1Eh,0Eh,00h CHUEHOI :DB 00h,06h,04h,0Eh,11h,1Eh,0Eh,00h CHUENGA :DB 00h,05h,0Ah,0Eh,11h,1Eh,0Eh,00h CHUENANG :DB 04h,02h,0Eh,11h,1Eh,0Eh,04h,00h CHUEE :DB 00h,04h,0Ah,0Eh,11h,1Eh,0Eh,00h CHUEEHUYEN :DB 04h,06h,0Ah,0Eh,11h,1Eh,0Eh,00h CHUEESAC :DB 04h,0Ch,0Ah,0Eh,11h,1Eh,0Eh,00h CHUEEHOI :DB 03h,06h,0Ah,0Eh,11h,1Eh,0Eh,00h CHUEENGA :DB 05h,0Eh,0Ah,0Eh,11h,1Eh,0Eh,00h CHUEENANG :DB 04h,0Ah,0Eh,11h,1Eh,0Eh,04h,00h CHUIHUYEN :DB 00h,04h,02h,04h,04h,04h,0Eh,00h CHUISAC :DB 00h,04h,0Ch,04h,04h,04h,0Eh,00h CHUIHOI :DB 00h,06h,04h,04h,04h,04h,0Eh,00h CHUINGA :DB 00h,05h,0Ah,04h,04h,04h,0Eh,00h CHUINANG :DB 00h,04h,04h,0Ch,04h,0Eh,04h,00h CHUOHUYEN :DB 00h,04h,02h,0Eh,11h,11h,0Eh,00h CHUOSAC :DB 00h,04h,08h,0Eh,11h,11h,0Eh,00h CHUOHOI :DB 00h,06h,04h,0Eh,11h,11h,0Eh,00h CHUONGA :DB 00h,050,0Ah,0Eh,11h,11h,0Eh,00h CHUONANG :DB 00h,00h,0Eh,11h,11h,0Eh,04h,00h CHUOO :DB 00h,04h,0Ah,0Eh,11h,11h,0Eh,00h CHUOOHUYEN :DB 02h,05h,0Ah,0Eh,11h,11h,0Eh,00h CHUOOSAC :DB 04h,0Ch,0Ah,0Eh,11h,11h,0Eh,00h CHUOOHOI :DB 03h,06h,0Ah,0Eh,11h,11h,0Eh,00h CHUOONGA :DB 05h,0Eh,0Ah,0Eh,11h,11h,0Eh,00h CHUOONANG :DB 04h,0Ah,0Eh,11h,11h,0Eh,04h,00h CHUOW :DB 00h,00h,03h,0Eh,11h,11h,0Eh,00h CHUOWHUYEN :DB 04h,02h,03h,0Eh,11h,11h,0Eh,00h CHUOWSAC :DB 04h,08h,03h,0Eh,11h,11h,0Eh,00h CHUOWHOI :DB 06h,04h,03h,0Eh,11h,11h,0Eh,00h CHUOWNGA :DB 05h,0Ah,03h,0Eh,11h,11h,0Eh,00h CHUOWNANG :DB 00h,03h,0Eh,11h,11h,0Eh,04h,00h CHUUHUYEN :DB 00h,08h,04h,11h,11h,11h,0Eh,00h CHUUSAC :DB 00h,02h,04h,11h,11h,11h,0Eh,00h CHUUHOI :DB 00h,06h,04h,11h,11h,11h,0Eh,00h CHUUNGA :DB 00h,05h,0Ah,11h,11h,11h,0Eh,00h CHUUNANG :DB 00h,00h,11h,11h,11h,0Eh,04h,00h CHUUW :DB 00h,00h,03h,12h,12h,12h,0Ch,00h CHUUWHUYEN :DB 04h,02h,03h,12h,12h,12h,0Ch,00h CHUUWSAC :DB 04h,08h,03h,12h,12h,12h,0Ch,00h CHUUWHOI :DB 06h,04h,03h,12h,12h,12h,0Ch,00h CHUUWNGA :DB 05h,0Ah,03h,12h,12h,12h,0Ch,00h CHUUWNANG :DB 00h,03h,12h,12h,12h,0Ch,04h,00h CHUYHUYEN :DB 04h,02h,11h,11h,0Fh,01h,0Eh,00h CHUYSAC :DB 04h,08h,11h,11h,0Fh,01h,0Eh,00h CHUYHOI :DB 06h,04h,11h,11h,0Fh,01h,0Eh,00h CHUYNGA :DB 05h,0Ah,11h,11h,0Fh,01h,0Eh,00h CHUYNANG :DB 00h,11h,11h,0Fh,01h,0Eh,04h,00h
Comment
-
ngoài ra có địa chỉ vùng nhớ CGRAM cần phải lưu lại nhất là các địa chỉ đầu của vùng nhớ của mỗi ký tự được tạo :
CGRAM B 40h,48h,50h,58h,60h,68h,70h,78h
Sau đấy là xâu Tiếng Việt em sẽ gọi Tiếng Việt :
MYDATA1:
DB 'Truwowfng ddaji hojc Basch Khoa ',0; ký tự 0 kết thúc chuỗi
Thuật giải của em thì đơn giản như bộ gõ Tiếng Việt ,xét lần lượt từng ký tự trong xâu đấy sau đó xet ký tự liền kề với ký tự cần xét nhờ cấu trúc kiểu case of sau đó nếu gặp phải ký tự Tiếng Việt đúng thì em sẽ đưa ký tụ đấy vào CGRAM rồi gọi mã tương ứng với vũng nhớ CGRAM đó.Sau đây là thử tục đưa ký tự vào CGRAM và thủ tục xét xâu Tiếng Việt cần hiển thị :
Code:RAM 30h--38h se chua cac thanh phan cua ki tu va lan luot ;chuyen CGRAM SET_CGRAM: MOV DPTR,#CGRAM MOV A,R0 MOVC A,@A+DPTR ACALL WRITE_COMMAND INC A PUSH ACC MOV A,30h ACALL WRITE_DATA POP ACC ACALL WRITE_COMMAND INC A PUSH ACC MOV A,31h ACALL WRITE_DATA POP ACC ACALL WRITE_COMMAND INC A PUSH ACC MOV A,32h ACALL WRITE_DATA POP ACC ACALL WRITE_COMMAND INC A PUSH ACC MOV A,33h ACALL WRITE_DATA POP ACC ACALL WRITE_COMMAND INC A PUSH ACC MOV A,34h ACALL WRITE_DATA POP ACC ACALL WRITE_COMMAND INC A PUSH ACC MOV A,35h ACALL WRITE_DATA POP ACC ACALL WRITE_COMMAND INC A PUSH ACC MOV A,36h ACALL WRITE_DATA POP ACC ACALL WRITE_COMMAND INC A PUSH ACC MOV A,37h ACALL WRITE_DATA POP ACC ;MOV A,R1 ;ACALL GOTOLINE1 MOV A,R0 ADD A,#08H RET ;************************************************************************* ;MOV DPTR,#MYDATA ;thiet lap 30h--38h chu thanh phan cua ki tu Tieng viet duoc ;doc ra tu trong ROM READ_ROM: CLR A MOVC A,@A+DPTR MOV 30h,A INC DPTR CLR A MOVC A,@A+DPTR MOV 31h,A INC DPTR CLR A MOVC A,@A+DPTR MOV 32h,A INC DPTR CLR A MOVC A,@A+DPTR MOV 33h,A INC DPTR CLR A MOVC A,@A+DPTR MOV 34h,A INC DPTR CLR A MOVC A,@A+DPTR MOV 35h,A INC DPTR CLR A MOVC A,@A+DPTR MOV 36h,A INC DPTR CLR A MOVC A,@A+DPTR MOV 37h,A INC DPTR RET ;*************************************************************************
Comment
-
Sau đấy là đoạn Main nhỏ để gọi 1 dòng chữ chạy :
DEMO THU DOAN CHU CHAY
MAIN:
LCALL INIT_LCD
MOV DPTR,#MYDATA1 ;Dua con tro du lieu toi bang
MOV R0,#0
MOV A,#0
LCALL GOTOLINE1
DONG1: CLR A
MOVC A,@A+DPTR
JZ THOAT1 ;Neu A=0 thi thi thoat
LCALL TIENGVIET1
MOV R6,A
MOV A,#80H
ADD A ,R1
LCALL WRITE_COMMAND
;LCALL GOTOLINE1
MOV A,R6
LCALL WRITE_DATA
INC R1
LCALL DELAY100MS
INC DPTR
SJMP DONG1
THOAT1:
Các hàm và thủ tục khác thì em làm theo kiểu như của bạn manhfd đã làm về LCD trên diễn đàn ,Ai muốn biết chi tiết có thể tham khảo topic đó .
Tuy nhiên em thấy cách gọi như trên của em là khá dài .Mong các bác giúp đỡ để em có thể có cách gọi tốt hơn
được không ạ.
Comment
-
Hihi... cái này hay quá, bởi nó có thể viết được tiếng Việt lên LCD, cảm ơn bạn về điều này. Em có làm LCD rồi mà lại ko để ý đến nó.
BẠn có thể post cả sch lên để biết được kết nối chân của LCD và uC được ko?(nếu được thì post bằng ảnh kiểu GIF,JPEF)?
Có ai có mã nguồn = C không nhỉ? để đỡ thời gian dò chuyên từ ASM-->C..hihi...
Comment
-
Về vấn đề hiển thị tiếng việt trên LCD text thật sự là không tối ưu lắm vì con Eprom trong nó chỉ hổ trợ tiếng Anh va Nhật thôi . Nhưng nếu hoàn cảnh bắt thì vẫn làm được . Thứ nhất là các bạn phải tạo một bảng tra trong 89c51 chứa tất cả các ký tự từ A->Z (chử hoa ) và a->z chử thường sau đó lá bảng tra các dấu sau đó viết tiếp một chương trình dấu hiển thị . Khâu cuối cùng là kết hợp hai bảng chử cái và dấu lại với nhau , thế là bạn có thể hiện thị được TV rồi . Nhưng nói chung font chữ lúc này thì khônng được đẹp cho lắm . Nhưng nói chung là hiển thị được là tốt rồi !!! ~o^o~Mạch nạp Little Programmer
MSC-51,AVR,EEPROM ... etc
Site Fukusei shop :
Comment
-
Nguyên văn bởi thaithutrangHihi... cái này hay quá, bởi nó có thể viết được tiếng Việt lên LCD, cảm ơn bạn về điều này. Em có làm LCD rồi mà lại ko để ý đến nó.
BẠn có thể post cả sch lên để biết được kết nối chân của LCD và uC được ko?(nếu được thì post bằng ảnh kiểu GIF,JPEF)?
Có ai có mã nguồn = C không nhỉ? để đỡ thời gian dò chuyên từ ASM-->C..hihi.
Nguyên văn bởi MicroDuyphiNói 8 kí tự là đối với FONT 5x7 thui! FONT 5x10 dường như ít hơn! Mà bộ FONT việt vẫn kế thừa bộ FONT assci, nên kí tự nào thiếu thiếu thì bỗ sung!
Comment
-
Tại hạ xin được tóm tắt lại quá trình để hiển thị tiếng việt trên LCD như sau:
- Tạo bộ phông lưu vào trong ROM của 8051 ( mỗi ký tự 8 byte )
Ví dụ chữ ư như hình vẽ phải khai báo là:
CHUUW: DB 02H,01H,13H,12H,12H,12H,0CH,00H
- khi cần hiển thị một ký tự thì lấy ra khỏi ROM của 8051 rồi ghi vào CGRAM của LCD như ghi ký tự vào DDRAM, chỉ việc thay địa chỉ bắt đầu là
ký tự thứ 1 = 40h; ký tự thứ 2 = 48h; ... ;ký tự thứ 8 = 78h
mỗi ký tự ghi 8 byte ( ví dụ ký tự thứ nhất là từ 40h -> 47h )
- Hiển thị ký tự ra màn hình bằng cách ghi lên DDRAM với dữ liệu như sau:
ký tự thứ 1 = 00h; ký tự thứ 2 = 01h ; ... ; ký tự thứ 8 = 07hLast edited by ng2mat; 04-03-2006, 21:15.
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Năm mới dientuvietnam.netbởi mèomướpDạ năm mới cháu xin kính chúc ông, bà, cô, dì, chú, bác, anh, chị, em, các bạn, các cháu... trong diễn đàn sức khỏe dồi dào, gặp nhìu may mắn và thành công...
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 05:42 -
-
Trả lời cho Năm mới dientuvietnam.netbởi nhathung1101Chúc cả nhà ăn no mặc ấm, quần lúc có lúc không.
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 00:02 -
-
Trả lời cho Năm mới dientuvietnam.netbởi vandong1111Năm mới 2025 cháu chúc các chú, các bác mạnh khỏe, vui vẻ, gặp nhiều may mắn.
-
Channel: Tâm tình dân kỹ thuật
29-01-2025, 20:59 -
-
Trả lời cho tìm mua đồng hồ vạn năngbởi bqvietNói một cách xây dựng thì kiểu đồng hồ kiêm kẹp dòng NJTY3266 mà bạn Mèo đề cập là đúng nhu cầu người hỏi rồi. Một số cửa hàng bán trên 200ng, vài sàn thương mại điện tử bán dưới - thế là đúng nhu cầu về giá. Nếu khéo săn...
-
Channel: Điện tử dành cho người mới bắt đầu
27-01-2025, 20:02 -
-
Trả lời cho tìm mua đồng hồ vạn năngbởi nhathung1101Đa năng còn chưa dùng hết, nếu không biết cách dùng.
200k thì hơi khó mua, nhưng 50k chắc là có. Cứ bảo bán cho tôi cái đồng hồ hỏng.-
Channel: Điện tử dành cho người mới bắt đầu
26-01-2025, 23:21 -
-
Trả lời cho Sửa bộ nguồn DC 60V 45Abởi nhathung1101Lão Đinh Vặn học giải phương trình hồi đi trẻ mà. Mẫu giáo học lập trình AI rồi. Lớp lão ấy gần lớp em nên em biết....
-
Channel: Điện tử công suất
26-01-2025, 23:11 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi nhathung1101Vậy chú đã hỏi hãng SIEMEN chưa? Tại sao cái PLC S7-200 cổ lỗ mà họ vẫn thiết kế riêng cho thị trường TQ với chữ SMART? Thậm chí phần mềm riêng để đọc file ngu.smart?
Vấn đề không còn là công nghệ "cốt lõi" nữa, mà là giá thành quyết định. Ham rẻ là trả giá mà....-
Channel: Điện tử công suất
26-01-2025, 23:01 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi vi van phamĐồng ý với Bqv.
50 năm làm nghề, tôi đã chứng kiến 3 lần máy x quang mới nhập từ nước ngoài về bị lỗi.
- Lần thứ 1 máy xq của Pháp được ks Pháp lằp đặt bị lỗi 1 con didode, đưa cho ks Pháp con didode khác cùng mã số, ông...-
Channel: Điện tử công suất
26-01-2025, 08:09 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi mèomướpDạ chú dinh... muốn sửa lỗi cho hãng thì chú cứ gửi những hình ảnh, video cho họ đi ạ, chú có thể tìm thông tin của những lãnh đạo bên ấy để gửi thì sẽ hiệu quả hơn ạ. Về tổng quan thì họ sẽ ko phản hồi rõ ràng đâu ạ, vì nhận...
-
Channel: Điện tử công suất
26-01-2025, 06:19 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi bqvietCuối năm bàn thêm chuyện to hơn chút, đấy là 2 vụ rơi đám 737 đời mới và trục trặc ở cả tá chiếc khác. Ngay cả những thứ tưởng như cao siêu sang xịn thật thì vẫn có thể gặp trường hợp oái oăm như thường. Từ hồi đó bqv đã thấy khó hiểu làm sao lại đẻ ra đám MCAS quái thai đến thế được. Rồi...
-
Channel: Điện tử công suất
24-01-2025, 19:40 -
Comment