Mình đang viết chương trình hiển thị trên LCD, mình thấy rất khó khăn để hiểu các chương trình trên diễn đàn nếu không hiểu rõ về bộ điều khiển HD44780U của LCD của Hitachi. Nếu bạn nào cũng đang làm về LCD thì nên đọc datasheet của con này.
Học CCS thông qua Tutorial PICVIETNAM
Collapse
This is a sticky topic.
X
X
-
-
#INCLUDE<16F877A.H>
#INCLUDE<def_877a.h>
#FUSES XT,NOWDT,NOPROTECT
#USE DELAY(CLOCK=20000000)
#DEFINE RS RE2
#DEFINE RW RE1
#DEFINE E RE0
#DEFINE LCD PORTB
CONST UNSIGNED CHAR LINE1[]={'D','O','','A','N','','T','O','T','','N','G','H' ,'I','E','P','#'};
CONST UNSIGNED CHAR LINE2[]={'K','I','T','','T','H','U','C','','T','A','P','' ,'P','I','C','','1','6','F','8','7','7','A','','', '#'};
CONST UNSIGNED CHAR LINE3[]={'','','K','H','O','A','','D','T','','-','','T','H','#'}
CONST UNSIGNED CHAR LINE4[]={
'','','G','V','H','D',':','P','H','U','N','G','',' B','A','O','','C','H','A','U',
'','','S','V','T','H',':','H','U','Y','N','H','',' V','A','N','','T','R','U','N','G'
,'','&','','N','G','U','Y','E','N','','T','U','A', 'N','','V','U','','','#'}
doan code nay hok bt sao ma em chay no hok dc
em bt no sai o cho defs_16f877a.
phai chen file def_877a nhu the nao
may anh cho file va chi dum nhe
Comment
-
Chào các bạn. Mình học tin mới chuyển sang nghiên cứu pic. Hôm nay tìm trên diễn đàn mãi không được cái hàm trả về chiều dài của mảng. bạn nào biết chỉ mình với. thank nhiều:
Mảng A={1,2,3,4,5} muốn xác định chiều dài của nó thì dùng hàm nao?
Comment
-
làm sao chạy được khi giá trị ban đầu của sck=8 ma trong khi bạn kiểm tra vòng lặp while(sck<1)?????Nguyên văn bởi anhquangngai View Postanh namqn cho em hỏi luôn cái chương trình này:
chương trình em viết như thế nhưng sao nó ko chạy và ban đầu em gán cho biến sck=8 thì trong dk while nó có chạy hay ko?Code://Chuong trinh led sang don o PORTB /*ket qua o PORTB là:00000001,00000010,00000100,00001000,00010000,00100000,01000000,10000000,10000001,10000010,10000100,10001000,.....cuoi cung thi PORTB=0xFF */ #include<16F877A.h> #include<def_16f877a.h> #fuses NOWDT,PUT,HS,NOPROTECT,NOLVP #use delay(clock=20000000) #use fast_io(b) int8 sck,slx,bienxoay,bienluu,giatri; main() { trisb=0; while(true){ sck=8; portb=0; delay_ms(100); while(sck<1) { bienxoay=0; slx=sck; while(slx<1) { bienxoay=bienxoay<<1; giatri=bienluu|bienxoay; portb=giatri; delay_ms(100); slx--; } bienluu=giatri; sck--; } } }
Cảm ơn anh trước!
Em mới học nên ko hiểu!
Comment
-
-
may a oi cho e hoi trong ccs thi thoi gian mac dinh la s , ms hay la us vay...
vi e lap trinh de giai ma remote tv sony nhung khi e get_timer xong roi e ho biet la phai so sanh cai timer nay voi s, ms hay la us nua..
mong cac anh chi giup
Comment
-
Chào mọi người. E mới chân ướt chân ráo tìm hiểu pic mong mấy huynh chỉ giáo. E có câu hỏi này tuy ngớ ngẩn "Khi vẽ mạch orcad thì làm sao biết gắn các tụ bao nhiêu với chân nguồn ?
Comment
-
-
Hỏi code.
#include <16F877a.h>
#define LED1 PIN_B4 //HANG NGHIN
#define LED2 PIN_B5 //HANG TRAM
#define LED3 PIN_B6 //HANG CHUC
#define LED4 PIN_B7 //HANG DON VI
#fuses hs, nowdt, put, nolvp, brownout
#use delay(clock=20000000)
int16 a,b,i,j,dv,chuc,tram,nghin,n;
void led7()
{
nghin=a/1000;
a=a%1000;
tram=a/100;
a=a%100;
chuc=a/10;
dv=a%10;
output_b(dv|0b10000000); //hien hang don vi
delay_us(1000);
output_b(chuc|0b01000000);//hien hang chuc
delay_us(1000);
output_b(tram|0b00100000);//hien hang tram
delay_us(500);
output_b(nghin|0b00010000);//hien hang nghin
delay_us(500);
}
void main()
{
set_tris_b(0x00);//chon port b lam port dau ra
set_tris_d(0x00);//chon port b lam port dau ra
while(1)
{
n++;
a=n;
led7();
}
}
e có down trên diễn đàn về đoạn code về led 7 doan. Cho e hỏi trong phần code trên:
output_b(dv|0b10000000); có nghĩa là gì. xuất ra portb (dv|0b10000000) là như thế nào ah.
Comment
-
k có ai giúp e ah.Nguyên văn bởi alycuong View Post#include <16F877a.h>
#define LED1 PIN_B4 //HANG NGHIN
#define LED2 PIN_B5 //HANG TRAM
#define LED3 PIN_B6 //HANG CHUC
#define LED4 PIN_B7 //HANG DON VI
#fuses hs, nowdt, put, nolvp, brownout
#use delay(clock=20000000)
int16 a,b,i,j,dv,chuc,tram,nghin,n;
void led7()
{
nghin=a/1000;
a=a%1000;
tram=a/100;
a=a%100;
chuc=a/10;
dv=a%10;
output_b(dv|0b10000000); //hien hang don vi
delay_us(1000);
output_b(chuc|0b01000000);//hien hang chuc
delay_us(1000);
output_b(tram|0b00100000);//hien hang tram
delay_us(500);
output_b(nghin|0b00010000);//hien hang nghin
delay_us(500);
}
void main()
{
set_tris_b(0x00);//chon port b lam port dau ra
set_tris_d(0x00);//chon port b lam port dau ra
while(1)
{
n++;
a=n;
led7();
}
}
e có down trên diễn đàn về đoạn code về led 7 doan. Cho e hỏi trong phần code trên:
output_b(dv|0b10000000); có nghĩa là gì. xuất ra portb (dv|0b10000000) là như thế nào ah.
Comment
-
Comment
-
mọi người cho mình hỏi 1 điều là LCD mình mới mua(chưa dùng đựoc lần nào).trong lcd_lib_4bit.c của anh linh có những hàm khởi tạo lcd đúng như nhà sx yêu cầu.vậy sao mình kết nối lcd dùng đoạn code trên thì ko chạy,chỉ hiện 1 dòng đenNguyên văn bởi FFGmember View PostLCD cùng với led đơn và led 7 thanh là một trong những phương thức để hiển thị các kết quả các thông số. Thông thường tôi luôn chọn LCD vì lập trình đơn giản và đông thời có thể thể hiện được các giá trị mà mình mong muốn.
Có rất rất nhiều source code cho việc viết LCD 4 bit. Và một trong số đó là file lcd_lib_4bit.c đã đươc linhnc308 giới thiệu trong tập tutorial của mình
Lại thực thi các bước như ở trên, với đoạn code dưới đây.
PHP Code:#include <16f877a.h> #include <def_877a.h> #device *=16 ADC=8 #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT #use delay(clock=20000000) #include <lcd_lib_4bit.c> // Thu vien ham cho LCD void main() { trisa = 0xFF; trisb = 0x01; trisd = 0x00; LCD_init(); Printf(LCD_putchar," PICVIETNAM tut"); LCD_putcmd(0xC3); Printf(LCD_putchar," LCD 4bit "); }
[/LIST]
mình đã define port rồi,RS=D0,EN=D2,D4-D7,vậy lỗi này có thể do LCD hỏng hay là do khởi tạo chưa đúng?
Comment
-
anh ơi, làm sao khắc phục lỗi này vậy anh:
*** Error 18 "def_877a.h.c" Line 1(9,20): File can not be opened
Not in "E:\Program Files\PICC\devices\16F877A.h"
Not in "E:\Program Files\PICC\dr\16F877A.h"
Not in project "C:\Users\NhokPro1234\Documents\pi\project1\16F877 A.h"
*** Error 128 "def_877a.h.c" Line 3(1,12): A #DEVICE required before this line
2 Errors, 0 Warnings.
Comment
Comment