mình nghe nói tới thư viện lcd j đó trong css ma không hiểu . b nào có thể giải thích dùm mình vấn đề này không . vậy nếu không dùng tới thư viện lcd có sẵn đó thì có thể viết ct cho lcd như mấy con 89 đc không . các b chỉ mình với nhé .
Thông báo
Collapse
No announcement yet.
lcd với css
Collapse
X
-
Nếu bạn dùng CCS để sinh code luôn thì điều khiển LCD rất đơn giản, còn đâu nếu ko thích thì viết như với 8051 cũng được chứ sao. Bạn tham khảo thêm ở đây: CCS C for PIC16F877A - Page 4 - PIC VietnamMua bán thiết bị điện công nghiệp tại Hà Nội, toàn quốc.
http://diencongnghiep360.com/
http://tudienhathe.vn/
-
* Author : nhh
* Date : 05/04/06
* Hardware : PIC16F877A
* Compiler : CCS C 3.249
* Description : Hien thi LCD
*================================================= ============================*/
#include <16F877A.h>
#include <DEFS_16F877A.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
#define RS RD0
#define RW RD1
#define E RD2
#define LCD PORTB
/*Ham yeu cau goi lenh dieu khien LCD*/
void comnwrt(void)
{
RS = 0;
RW = 0;
E = 1;
E = 0;
delay_ms(1);
}
/*Ham yeu cau goi du lieu hien thi len LCD*/
void datawrt(void)
{
RS = 1;
RW = 0;
E = 1;
E = 0;
delay_ms(1);
}
/*Ham main*/
void main(void)
{
set_tris_B(0);
set_tris_D(0);
delay_ms(100); // Tao tre 100ms cho LCD khoi dong
LCD = 0x38; // Hai hang, ma tran dot 5*7, 8 bit interface
comnwrt();
LCD = 0x0C; // Bat hien thi, tat con tro
comnwrt();
LCD = 0x85; // Vi tri hang 1,cot 6
comnwrt();
LCD = 'B'; // Xuat dong chu "BE YEU" ra LCD
datawrt();
LCD = 'E';
datawrt();
LCD = ' ';
datawrt();
LCD = 'Y';
datawrt();
LCD = 'E';
datawrt();
LCD = 'U';
datawrt();
LCD = '!';
datawrt();
đây là khai báo cái gì thế b : #include <DEFS_16F877A.h>Ph.vmr
Comment
-
mình thấy trong css có các ham thế này :
setup_cld(...) : cái này tạm hiểu
cld_symbol (...) : chưa hiểu lắm .
lcd_load (...) : đưa ký tự vào lcd
vậy mình thắc mắc là nếu hiểu như viết cho con 89 thi chỉ cần 2 hàm 1 và 3 là đủ rồi chứ nhỉ . vậy làm sao để kiểm tra được dữ liệu đã được gửi xuống lcd xong để tránh bị mất dữ liệu . chắc ở cái hàm thứ 3 phải không . hj . tại đọc help chưa hiểu lắm . và nếu dùng những hàm có sẵn thế thì phần đầu có phải khai báo gì thêm không .Ph.vmr
Comment
-
#include <16f877a.h>
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=20000000)
#include <LCD.C> // Thu vien ham cho LCD
#define LCD_ENABLE_PIN PIN_D0
#define LCD_RS_PIN PIN_D1
#define LCD_RW_PIN PIN_D2
#define LCD_DATA4 PIN_D4
#define LCD_DATA5 PIN_D5
#define LCD_DATA6 PIN_D6
#define LCD_DATA7 PIN_D
void lcd_refresh()
{
lcd_send_byte(0,1);
lcd_send_byte(0,6);
}
//================================================== ==================================================
void main()
{
set_tris_d(0);
output_a(0);
LCD_init();
lcd_refresh();
lcd_gotoxy(1,1);
lcd_putc("DIEN TU VIET NAM");
lcd_gotoxy(1,2);
lcd_putc(" STARTECHMEC ");
}
//================================================== =====END========================================== ================
Đây là 1 đoạn code dùng hàm LCD 4 bít LCD.C của CCS, mình dùng lập trình cho PIC 16f877a, bạn nên dùng thư viện của CCS vừa tiện lợi, lại nhanh gọn, chúc bạn thành công!Dang Van Hieu
Cell: 0986506154
web:
Công Ty TNHH SXTMDV VÀ KỸ THUẬT SAO VIỆT
60 Đỗ Thừa Luông,P. Tân Quý, Q.Tân Phú,TPHCM
Comment
-
thanks b đọc bài của b mình cũng đã hiểu ra phần nào . nhưng sao mình không tìm thấy mấy cái lệnh lcd_putc , lcd_send_byte ... trong phần help của css nhỉ .
lcd_send_byte(0,1);
lcd_send_byte(0,6);
2 lệnh này là để reset cld thế giá trị trong ngoặc kia là như thế nào . xác định nó ra sao .Ph.vmr
Comment
-
lcd_send_byte(0,1);lcd_send_byte(0,6); là 2 hàm trong LCD.C 4 bít, 0x01, và 0x06 là lệnh xoá toàn màn hình và về đầu dòng(?), bạn tra lại hàm LCD của LCD 16x2, mình không nhớ rõ lắm.,Nguyên văn bởi phonghp91 Xem bài viếtthanks b đọc bài của b mình cũng đã hiểu ra phần nào . nhưng sao mình không tìm thấy mấy cái lệnh lcd_putc , lcd_send_byte ... trong phần help của css nhỉ .
lcd_send_byte(0,1);
lcd_send_byte(0,6);
2 lệnh này là để reset cld thế giá trị trong ngoặc kia là như thế nào . xác định nó ra sao .Dang Van Hieu
Cell: 0986506154
web:
Công Ty TNHH SXTMDV VÀ KỸ THUẬT SAO VIỆT
60 Đỗ Thừa Luông,P. Tân Quý, Q.Tân Phú,TPHCM
Comment
-
bạn có thể giúp mình học viết được 1 bài lcd 16x2 chên pic8f452 hiển thị 1 chữ gì đó đơn giản mà không cần dùng ccs khôngNguyên văn bởi phonghp91 Xem bài viếtmình nghe nói tới thư viện lcd j đó trong css ma không hiểu . b nào có thể giải thích dùm mình vấn đề này không . vậy nếu không dùng tới thư viện lcd có sẵn đó thì có thể viết ct cho lcd như mấy con 89 đc không . các b chỉ mình với nhé .
Comment
-
nhân tiện cho mình hỏi lun cái code mình viết dùng time0 nháy led portb của mình không đúng như thế nào và phải viết lại ra sao . đã hỏi rồi nhưng chẳng ai trả lời . cũng do mới tập tọe nên nhiều cái chưa hiểu . thankss b nhiều nhé .
#include "C:\Documents and Settings\haphong computer\Desktop\css\timer0.h"
#use delay(clock=20000000)
#int_RTCC
void RTCC_isr(void) // chuong trinh ngat
{
output_b(0xff); // port b =1
}
void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_CLOCK_DIV_2);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
enable_interrupts(INT_RTCC);
enable_interrupts(GLOBAL);
set_tris_b(0);
while(1)
{
output_b(0x00);
enable_interrupts(int_timer0); // cho phep ngat timer0
enable_interrupts(GLOBAL);//cho phep nhat toan cuc
setup_timer_0(RTCC_DIV_64|RTCC_EXT_L_TO_H) ; // set bo chia tan so va xung tac dong
set_rtcc(6); // gia tri trong ngoac cung chua hieu cacch tinh .
}
}Ph.vmr
Comment
-
Tại mình hơi bận, không kiểm tra lỗi bạn viết được, mình có lập trình ngắt TImer0 theo ý tưởng của bạn chớp tắt PORT B , bạn có thể tham khảo nhé!Nguyên văn bởi phonghp91 Xem bài viếtnhân tiện cho mình hỏi lun cái code mình viết dùng time0 nháy led portb của mình không đúng như thế nào và phải viết lại ra sao . đã hỏi rồi nhưng chẳng ai trả lời . cũng do mới tập tọe nên nhiều cái chưa hiểu . thankss b nhiều nhé .
#include "C:\Documents and Settings\haphong computer\Desktop\css\timer0.h"
#use delay(clock=20000000)
#int_RTCC
void RTCC_isr(void) // chuong trinh ngat
{
output_b(0xff); // port b =1
}
void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_CLOCK_DIV_2);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
enable_interrupts(INT_RTCC);
enable_interrupts(GLOBAL);
set_tris_b(0);
while(1)
{
output_b(0x00);
enable_interrupts(int_timer0); // cho phep ngat timer0
enable_interrupts(GLOBAL);//cho phep nhat toan cuc
setup_timer_0(RTCC_DIV_64|RTCC_EXT_L_TO_H) ; // set bo chia tan so va xung tac dong
set_rtcc(6); // gia tri trong ngoac cung chua hieu cacch tinh .
}
}
#include <16f877a.h>
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=20000000)
int32 dem1;
int32 value;
//Chuong trinh ngat TMR0
#int_timer0
void interrupt_timer0()
{
dem1++;
if(dem1>=3000)//3000*100us=300000us=300ms;
{
output_b(0x00);
delay_ms(100);//delay 100ms de test PORTB B
dem1=0;
}
}
//=============================chuong trinh chinh======================================
void main()
{
set_tris_b(0);
enable_interrupts(int_timer0);
enable_interrupts(global);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2);
set_timer0(6);// T_dinhthi = 2*(256 - 6)*0.2us = 100us
output_b(0xff);
while(1)
{
output_b(0xff);
}
}
//================================================== =====END========================================== ================Dang Van Hieu
Cell: 0986506154
web:
Công Ty TNHH SXTMDV VÀ KỸ THUẬT SAO VIỆT
60 Đỗ Thừa Luông,P. Tân Quý, Q.Tân Phú,TPHCM
Comment
-
Đây là đoạn chương trình với CCS dùng ngắt timer 0 nhấp nháy PORTB.0 chu kì 100us
Bạn tham khảo nhé. Chú ý ở đây là cách tính timer không như các bạn đã làm chỉ đơn giản lấy 256 - 250 ra 6. Cho nên ai đang dùng delay bằng timer thì xem lại.Code:#include <16F877A.h> #device *=16 #device adc=8 #FUSES NOWDT //No Watch Dog Timer #FUSES HS //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD) #FUSES NOPUT //No Power Up Timer #FUSES NOPROTECT //Code not protected from reading #FUSES NODEBUG //No Debug mode for ICD #FUSES NOBROWNOUT //No brownout reset #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O #FUSES NOCPD //No EE protection #FUSES NOWRT //Program memory not write protected #FUSES RESERVED //Used to set the reserved FUSE bits #use delay(clock=20000000) #byte PORTB = 0x006 #bit OUT = 0x006.0 #INT_RTCC void RTCC_Isr() { // 100us // 100us = 500 chu kì lệnh bao gồm khoảng 40 chu kì lệnh trước khi xử lý ngắt => Timer cần đếm (500-40)/2 = 230 trước khi tràn. // giá trị cài đặt lại cho timer = 255 - 230 = 25. set_timer0(25); // 100us OUT=!OUT; } void main() { output_b(0x00); set_tris_b(0x00); enable_interrupts(GLOBAL); enable_interrupts(INT_RTCC); setup_timer_0(RTCC_INTERNAL | RTCC_DIV_2); while(true) { } }Last edited by duong_act; 16-05-2013, 20:17.
Comment
-
Nguyên văn bởi zunixauxi Xem bài viếtbạn có thể giúp mình học viết được 1 bài lcd 16x2 chên pic8f452 hiển thị 1 chữ gì đó đơn giản mà không cần dùng ccs không
#include <18f4520.h>
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=20000000)
#include <LCD.C> // Thu vien ham cho LCD
//========================================chuong trinh xoa man hinh LCD===========================
void lcd_refresh()
{
lcd_send_byte(0,1);
lcd_send_byte(0,6);
}
//================================================== ==================================================
//=============================chuong trinh chinh======================================
void main()
{
set_tris_d(0x00);
LCD_init();
lcd_refresh();
lcd_gotoxy(1,1);
lcd_putc("DIEN TU VIET NAM");
lcd_gotoxy(1,2);
lcd_putc("STARTECHMEC");
}
//================================================== =====END========================================== ================Dang Van Hieu
Cell: 0986506154
web:
Công Ty TNHH SXTMDV VÀ KỸ THUẬT SAO VIỆT
60 Đỗ Thừa Luông,P. Tân Quý, Q.Tân Phú,TPHCM
Comment
-
bác ơi sử dụng ccs thì không cần khai báo e chân rs rw và en à .. mình không thấy bác khai báoNguyên văn bởi startechmec Xem bài viết[ATTACH=CONFIG]66109[/ATTACH]
#include <18f4520.h>
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=20000000)
#include <LCD.C> // Thu vien ham cho LCD
//========================================chuong trinh xoa man hinh LCD===========================
void lcd_refresh()
{
lcd_send_byte(0,1);
lcd_send_byte(0,6);
}
//================================================== ==================================================
//=============================chuong trinh chinh======================================
void main()
{
set_tris_d(0x00);
LCD_init();
lcd_refresh();
lcd_gotoxy(1,1);
lcd_putc("DIEN TU VIET NAM");
lcd_gotoxy(1,2);
lcd_putc("STARTECHMEC");
}
//================================================== =====END========================================== ================
Comment
Bài viết mới nhất
Collapse
-
bởi theidiotcatKhi ráp một bộ máy tính cấu hình cao, việc cân đối ngân sách cho từng linh kiện là rất quan trọng. Sự kết hợp giữa vi xử lý AMD Ryzen thế hệ mới có công nghệ 3D V-Cache và card đồ họa Radeon RX 9070 XT đang là lựa chọn rất đáng tiền....
-
Channel: Đánh giá sản phẩm DTVN
11-06-2026, 10:43 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92Giới thiệu bản nhạc đệm mới nhộn nhịp tươi vui, nghe là muốn... xuất gia đi tu liền!!!!😁...
-
Channel: Tâm tình dân kỹ thuật
11-06-2026, 09:51 -
-
Trả lời cho Máy đo khuôn mẫubởi vi van phamQuá dễ, Mua cái máy xq quét tòan thân, lấy bàn và khung di chuyển. Tháo đầu xquang ra bán ve chai, mua cái máy siêu âm gắn vào vị trí đầu đèn. Setup máy là chạy chính xác, còn file Setup thì chưa nghĩ ra....
-
Channel: Đo lường và điều khiển dùng máy tính
07-06-2026, 08:49 -
-
Trả lời cho Máy Phun sương tạo ầm Trung Quốc.bởi nguyendinhvanMạch tạo sương là tự dao động.
Mach 555 là đóng mở chu kỳ tần số thấp.
IC 555 giá rẻ, chỉ chạy lên tần số vài trăm ki lô hẹc thôi. Thăng cao hơn là méo dạng rồi tịt.
Mach sương thì dao động tần số tầm 2 mê ga hẹc cơ !...-
Channel: Tâm tình dân kỹ thuật
07-06-2026, 00:09 -
-
bởi nguyendinhvan
Cái máy đo này mắc tiền quá !
Anh em dtvn có giải pháp nào tự chế được không ?...-
Channel: Đo lường và điều khiển dùng máy tính
07-06-2026, 00:00 -
-
bởi nguyendinhvanOi giời.
Thơi buổi PLC rồi, cậu còn hỏi mấy thứ cổ lỗ sĩ này nữa.-
Channel: Tâm tình dân kỹ thuật
06-06-2026, 22:59 -
-
bởi nguyendinhvanChuyện này cũ rồi.
Họ trả lương cho CN, sau đó lại bán hàng thu tiền về. Họ còn cấp các dịch vụ như chỗ ăn ở, quán cafe , giải trí, phương tiện giao thông. Mục đích là thu tối đa số tiền đã chi trả.
Hàng hóa sx ra, chuyển...-
Channel: Tìm mua
06-06-2026, 22:56 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi vi van phambao nhiêu năm quên bẳng đi, là mình còn có 1 chút xíu nghệ thuật bài bản, đã dạy cho con cháu chơi đàn, dù bố mẹ và chúng không xem là quan trọng. Hôm qua ngày bế mạc lớp lá, bỗng dưng thằng cháu ngoại thấy con bé được sơ giới thiệu...
-
Channel: Tâm tình dân kỹ thuật
06-06-2026, 21:58 -
-
bởi ittcChào các anh em, tình hình là mình lo làm ăn không để ý sức khỏe, giờ có chút vấn đề rồi? không biết trên này có anh em nào độ tuổi U35 -> 40 đang có dùng các loại thuốc, thuốc bổ hay thực phẩm chức năng giúp bổ thận tráng dương,...
-
Channel: Tâm tình dân kỹ thuật
05-06-2026, 12:28 -
-
bởi theidiotcatTrong thế giới phần cứng năm 2026, AMD Ryzen 5 7500X3D không chỉ là một cái tên mới, nó là một tuyên ngôn về hiệu suất. Dựa trên các thử nghiệm khắt khe trong môi trường chơi game chuyên nghiệp, con chip này đã chứng minh rằng: bạn không cần...
-
Channel: Đánh giá sản phẩm DTVN
05-06-2026, 10:05 -

Comment