Hi all! Mình đang nghiên cứu LCD dùng C. Có bạn nào có Code C giao tiếp LCD thì share cho mình và mọi người học hỏi với. Trước kia mình có, viết chương trình giao tiếp với LCD dùng ASM và chạy cũng tương đối. Bạn nào có kinh nghiệm hoặc có Code C về LCD thì giúp mình nhé. Thanks all!
Thông báo
Collapse
No announcement yet.
Code C cho LCD!!!
Collapse
X
-
Nếu bạn xài AVR thì code có sẵn hết rồi
Dưới đây là VD nè :
#include <mega16.h>
#include <delay.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC //mach phan cung vao port C , giao tiep 4bit cao LCD
#endasm
#include <lcd.h>
void main(void)
{
// LCD module initialization
lcd_init(16);
lcd_gotoxy(0,0);
lcd_putsf("Wellcome to test")
.........
}
-
Em cũng xài CodeVisionAVR hehe để hiển thị thì dễ thật. Nhưng mà em vẫn chưa hiểu hết các lệnh nó có ý nghĩa gì.
Em muốn làm cho hiển thị chữ chạy từ trái qua phải VD : Dòng chữ : " Viet Nam "
Với chữ cái đầu tiên được hiện là chữ "m" rồi đến chữ "a" và cứ như thế chữ chạy cho tới chữ cuối cùng "V" khi hết dòng 01 chẳng hạn. Bác nào làm được chỉ em với.
Comment
-
Bác giở Help trong CodeVision ra mà nghiên cứu các hàm của LCD, đọc kĩ sẽ làm được hết. Còn vấn đề chữ chạy, chử nhảy hay cái của nợ gì đó chỉ là vấn đề lập trình thôi, không liên quan gì đến LCD cả. hehe.Nguyên văn bởi GS_Nobita Xem bài viếtEm cũng xài CodeVisionAVR hehe để hiển thị thì dễ thật. Nhưng mà em vẫn chưa hiểu hết các lệnh nó có ý nghĩa gì.
Em muốn làm cho hiển thị chữ chạy từ trái qua phải VD : Dòng chữ : " Viet Nam "
Với chữ cái đầu tiên được hiện là chữ "m" rồi đến chữ "a" và cứ như thế chữ chạy cho tới chữ cuối cùng "V" khi hết dòng 01 chẳng hạn. Bác nào làm được chỉ em với.Nỏ biết chữ mần răng ký được??!! Thôi nhé.
Comment
-
Đúng là Codevision chỉ hỗ trợ các hàm xuất,hiển thị LCD,nhảy tới các tọa độ,xóa màn hình,các hàm chuyển đổi trực tiếp từ số thập phân ra mã của LCD( mã LCD = mã thập phân của ký tự cần hiển thị + 48 đơn vị )
Bạn khéo léo kết hợp các hàm trên thì muốn hiển thị gì mà chẳng được, còn nếu lười nghĩ thì đến tài thánh cũng kô thể viết được!
Hầu hết các hàm của Codevesion AVR là viết bằng mã ASsem, bạn có thể tìm thấy trong thư mục cài đặt của Codevesion AVR, nếu bạn muốn tìm hiểu nó!
Comment
-
nếu bạn dùng 89 thì có thể tham khảo tại đây nha:Nguyên văn bởi lahodu Xem bài viếtHi all! Mình đang nghiên cứu LCD dùng C. Có bạn nào có Code C giao tiếp LCD thì share cho mình và mọi người học hỏi với. Trước kia mình có, viết chương trình giao tiếp với LCD dùng ASM và chạy cũng tương đối. Bạn nào có kinh nghiệm hoặc có Code C về LCD thì giúp mình nhé. Thanks all!
http://08tdt.com/forum/showthread.php?t=20&page=2
chúc thành công
Comment
-
để chạy chữ đc thì bạn phải viết từ từ cho một kí tự "m" hiển thị trước rồi xóa nó đi với 1 khoảng delay(tốc độ dịch chữ ấy) rồi sau đó cho hiển thị 2 kí tự "am" rồi lại xóa rồi lại delay, cứ như thế sẽ hiển thị được chữ chạy mà thôi, đến khi hiển thị đủ rồi thì bạn chỉ cần tăng vị trí con trỏ trước khi hiển thị chuổi "VietNam" là ok ngay. cái này mình làm rồi mà lúc đó mình viết cho con 89 dùng Keil.Nguyên văn bởi GS_Nobita Xem bài viếtEm cũng xài CodeVisionAVR hehe để hiển thị thì dễ thật. Nhưng mà em vẫn chưa hiểu hết các lệnh nó có ý nghĩa gì.
Em muốn làm cho hiển thị chữ chạy từ trái qua phải VD : Dòng chữ : " Viet Nam "
Với chữ cái đầu tiên được hiện là chữ "m" rồi đến chữ "a" và cứ như thế chữ chạy cho tới chữ cuối cùng "V" khi hết dòng 01 chẳng hạn. Bác nào làm được chỉ em với.hãy cố gắng dù vướn phải thất bại!!!!!!!!
Comment
-
Mình cũng đã dùng KeilC viết cho cho LCD bằng asm với AT89S52, về nguyên tắc hiển thị thì đúng như chipmickey nói. Tức là cho hiển thị dần dần từng ký tự một và để trễ một khoảng thời gian nhất định! Nhưng bạn nên nhớ chúng ta có hàm dịch phải & trái cơ mà, vậy thì việc cho chạy chữ thật hết sức đơn giản. Chỉ cần dịch toàn bộ hiển thị sang phải sau khi đặt vị trí con trỏ ở chỗ thích hợp là ta có được hình ảnh chữ "VietNam" trôi ngược.^__^
Bằng cách sử dụng một macro nhỏ, mình dùng hiển thị 1 chuỗi rất linh hoạt:
doc_chuoi macro string ;macro gửi dữ liệu tới LCD
irpc char, <string>
if nul 'char'
exitm
endif
mov a,#'char'
lcall hienthi_lcd
endm
endm
Sau đó khi cần hiển thị "Vietnam" ta chỉ cần gọi hàm: doc_chuoi<Vietnam>
Còn dịch trái phải thì biết rùi!
Comment
-
các anh ơi em dùng codevisionAVR viết cho mega8 kết nối chuẩn rồi mà tại sao chạy nó chỉ hiện ra một tràng lốm đốm jf đó vài giây rồi tắt phần cứng em nối như sau:
PORTD chíp--------------chân LCD
-----------------------------1-----GND
-----------------------------2-----VCC
-----------------------------3-----Biến trở điều chỉnh độ sáng
0----------------------------4
1----------------------------5
2----------------------------6
3
4----------------------------11
5----------------------------12
6----------------------------13
7----------------------------14
chương trình em viết chỉ đơn giản là hiển thị một chữ "happy new year"
vậy mà không biết tại sao, các anh xem giúp em nhé
Attached FilesLast edited by Le Thi Bich; 10-10-2008, 23:39.Thiết kế chế tạo các loại máy xoáy nắp, chiết rót định lượng dùng trong dược phẩm và thực phẩm.
Comment
-
Bạn thử thêm một lệnh while xem sao nhé!các anh ơi em dùng codevisionAVR viết cho mega8 kết nối chuẩn rồi mà tại sao chạy nó chỉ hiện ra một tràng lốm đốm jf đó vài giây rồi tắt..............
chương trình em viết chỉ đơn giản là hiển thị một chữ "happy new year"
vậy mà không biết tại sao, các anh xem giúp em nhé
Code:while (1) { // Place your code her lcd_putsf("Happy new year"); while (1){}; }; }
Comment
-
em mới học nên chưa biết cách mô phỏng anh ạNguyên văn bởi mrcuongcon Xem bài viếtBạn có dùng Proteus giả lập không?Thiết kế chế tạo các loại máy xoáy nắp, chiết rót định lượng dùng trong dược phẩm và thực phẩm.
Comment
-
em làm như anh bảo thì nó chỉ hiện được chữ "Happy ne" thôi. em dùng LCD 16 cột một hàngNguyên văn bởi mrcuongcon Xem bài viếtBạn thử thêm một lệnh while xem sao nhé!
Code:while (1) { // Place your code her lcd_putsf("Happy new year"); while (1){}; }; }Thiết kế chế tạo các loại máy xoáy nắp, chiết rót định lượng dùng trong dược phẩm và thực phẩm.
Comment
Bài viết mới nhất
Collapse
-
bởi chinhnguyen9Công thức
Gain (dB) = 20 × log₁₀(A)
Thí dụ 1; 60dB
log₁₀(A)=60/20=3
⇒ A=V_out / V_in = 10³ = 1.000
Thí dụ 2; 100dB
log₁₀(A)=100/20=5
⇒ A=V_out / V_in = 105 = 100.000
Tí dụ 3; LM 358
Large Signal Open Loop Voltage Gain AVOL V/mV RL = 2.0...-
Channel: Hướng dẫn sử dụng diễn đàn
Hôm qua, 08:44 -
-
Trả lời cho Mạch 3s bị giảm điện áp đầu rabởi minhtri0405chả biết bạn xử lý được chưa , kích sạc hoặc điện áp > điện áp khối pin vào 2 chân P - P+ , nhiều mạch phải yêu cầu có kích lần đầu sau đó mới chạy...
-
Channel: Điện tử dành cho người mới bắt đầu
18-03-2026, 10:01 -
-
bởi minhtri0405đây có phải là 1 cách để test mosfet xịn hay dỏm khi mua đồ tàu không nhỉ , vì ko thể đập ra để coi lõi rồi trả hàng được....
-
Channel: Tâm tình dân kỹ thuật
18-03-2026, 09:57 -
-
Trả lời cho Giúp mình vẽ sơ đồ và phân tích nguyên lý làm việc của khảo sát các mạch nguồn ổn áp vớibởi Tuyenvc345
-
Channel: Hỗ trợ học tập
16-03-2026, 18:05 -
-
Trả lời cho Giúp mình vẽ sơ đồ và phân tích nguyên lý làm việc của khảo sát các mạch nguồn ổn áp vớibởi Tuyenvc345
-
Channel: Hỗ trợ học tập
16-03-2026, 18:04 -
-
bởi bqvietDiễn đàn vốn vắng, muốn vào viết bài trả lời chút nhưng cứ thấy luồng nào thành viên này mở thì cũng đồng thời xuất hiện ở Otofun, thế là chùn tay ... Thôi thì dientuvietnam không thể so sánh được về độ phổ cập, biết thân biết phận vậy.
-
Channel: Tâm tình dân kỹ thuật
16-03-2026, 17:49 -
-
bởi chinhnguyen9So sánh sóng 2 mạch nguồn Push-pull
· Sóng vuông giửa 2 cực D của mạch Pushpull trong module inverter 24-220V sine giả của TQ. Mạh điện này khá đặc biêt ở chổ, không thấy mạch snubber mà hiêu quả triêt sóng hài quá tốt dù hoạt...-
Channel: Nguồn!
16-03-2026, 14:27 -
-
bởi chinhnguyen9Mạch điên bếp tù gộm 2 khối:
Khối điêu khiển:
-Thiết lập công suất nấu
-Thiết lập thời gian nấu
-Kiểm tra có đặt nồi hay không, đúng loại hay không?
-Có quá nhiệt không?
Khối công suất:
- Nắn+ lọc điên AC ra 310VDC +loọc nhiểu...-
Channel: Hướng dẫn sử dụng diễn đàn
16-03-2026, 14:05 -

Comment