![]() |
|
Tài trợ cho PIC Vietnam |
||||||||
| PIC - Thiết kế và Ứng dụng Ý tưởng cho các sản phẩm sử dụng PIC/dsPIC và các sản phẩm của Microchip |
![]() |
|
|
Ðiều Chỉnh | Xếp Bài |
|
|
|
|
#1 | |
|
Đệ tử 6 túi
|
Trích:
portd=0x85; (vị trí ô thứ 5,chẳng hạn)//portd xuất data// lenh(); portd=a; //đưa giá trị của thanh ghi 'a' lên LCD tại vị trí con trỏ ở ô số 5 xuat(); Rất đơn giản phải ko nào!!!! |
|
|
|
|
|
|
#2 |
|
Đệ tử 5 túi
Tham gia ngày: Jan 2010
Bài gửi: 96
: |
vậy sâot vậy mà không biết nhìn thấy no phức tạp làm sao.....
nhưng rồi có cái gì đóa ko đùng bạn àh. core của mình viết nè hiển tên thi bình thường nhưng hiện giá trị bằng số lên màn hình như có gì đóa ko bình thường. core: #include <16f877a.h> #fuses xt,nowdt,noprotect,nolvp #use delay(clock=4000000) #use fast_io(b) #use fast_io(d) #byte portb=0x6 #byte portd=0x8 #byte tinh=0x20 #bit rs = portb.0 #bit rw = portb.1 #bit e = portb.2 void lenh(); void xuat(); void khoitao(); void lenh() {rs=0; rw=0; e=1; e=0; delay_ms(5); } void xuat() { e=1; rs=1; rw=0; e=0; delay_ms(5); } void khoitao() {portd=0x01; lenh(); portd=0x0e; lenh(); portd=0x80; lenh(); portd=0x38; lenh(); } void main() { int i; int32 a; const char ten [] = "nhau"; set_tris_b(0); set_tris_d(0); khoitao(); tinh=0; delay_ms(20); tinh++; for(i=0;i<40;i++) { portd=0x80; lenh(); portd=tinh; xuat(); } while(1) { portd=0x80; lenh(); portd=0x18; lenh(); delay_ms(20); } } bạn nè giải thích dùm mình tai so mình phài viết như thế này dề làm gì. //////////////////// for(i=0;i<40;i++) { core } ////////////////////////// và ////////////////////////// while(1) { portd=0x80; lenh(); portd=0x18; lenh(); delay_ms(20); } ////////////////////////////// và hinh như đoạn core của minh thiếu cái gì vi giá trị của " a " là 1 com số nguyên là "100" con thang lcd no ko biết đó là số gì thì phải nghiện cứu core trong mạch đếm sản phẩm co doan này ko hiểu char const ht[]={'0','1','2','3','4','5','6','7','8','9',' '}; có phải doan này giúp hiển thị các số lên màn hình. thay đổi nội dung bởi: lambaotrung, 31-03-2011 lúc 09:19 PM. |
|
|
|
|
|
#3 |
|
Đệ tử 6 túi
|
char const mang[]="STUPID11"
for(i=0;i<20;i++) { portd=mang[i]; xuat(); delay_ms(5);//khỏi cần delay nếu làm mạch thật. } viết như thế này tương đương với việc xuất ra từng ký tự,bạn có thể viết như sau: portd="S"; xuat(); portd="T"; xuat(); portd="U"; xuat(); . . . viết như trên sẽ lâu hơn rất nhiều....thay vì như vậy bạn khai báo 1 mảng rồi xuất từng ký tự trong mảng đó ra..cấu trúc "for" đó bạn. -còn bạn viết: while(1) { portd=0x80; lenh(); portd=0x18; lenh(); delay_ms(20); } //hình như code này bạn nhầm thì phải,bạn xem lại thử coi. void main() { int i; int32 a; const char ten [] = "nhau"; set_tris_b(0); set_tris_d(0); khoitao(); tinh=0; delay_ms(20); tinh++;.... -Đoạn này có nghĩa là gì vậy hả bạn,có phải bạn muốn tự động tăng giá trị "tinh" lên hả.Bạn viết như vậy là ko được rồi.. -Với đoạn for(i=0;i<40;i++) { portd=0x80; lenh(); portd=tinh; xuat(); } Chỉ khi nào cần xuất 1 mảng thì mới sử dụng "for..".Còn ko thì chỉ đơn thuần xuất ra thôi. -Cái nữa bạn khai báo biến tính làm gì #byte tinh=0x20; ko nhất thiết phải khai như vậy đâu..bạn chỉ khai báo đơn giản như sau là đủ int tinh; //số nguyên 8bit int16 tinh; //số nguyên 16bit float tinh; //số thực 32 bit còn nếu khai báo kiểu bạn thì nên khai báo #locate tinh=0x20;như vậy địa chỉ này sẽ ko sử dụng vào mục đích khác đc nua~ thay đổi nội dung bởi: stupid11, 31-03-2011 lúc 09:45 PM. |
|
|
|
|
|
#4 |
|
Đệ tử 6 túi
|
char const ht[]={'0','1','2','3','4','5','6','7','8','9',' '};
-khi thực hiện tính toán xong,kết quả trả về là 1 con số...mình sẽ tham chiếu giá trị tính toán được vào mảng này để được 1 kí tự =>xuất ra LCD. vd:số dem=85; chuc=dem/10; dv=dem%10; portb=ht[chuc]; //chuc="8"=> "ký tự" này được lấy trong mảng ht[] xuat(); portb=ht[dv]; //dv="5" xuat(); . . . -tuy nhiên bạn cũng có thể xuất trực tiếp,khỏi cần tham chiếu vào mảng..(cái này mình chưa test mạch thật..nhưng proteus vẫn chạy bt).. |
|
|
|
|
|
#5 |
|
Đệ tử 5 túi
Tham gia ngày: Jan 2010
Bài gửi: 96
: |
void main()
{ int8 i; int32 a; const char ten [] = " lam bao trung "; set_tris_b(0); set_tris_d(0); khoitao(); for(i=0;i<40;i++) { portd=0x82; lenh(); portd=ten[i]; xuat(); } } trở lại vấn đề xuất 1 chuổi ký tự ra màng hình ở vi trí 0x82 mà sao nó ko ra 1 chuổi mà nó nhảy từng chữ từng chữ 1 ko hiểu sao. như the the trả lời của bạn thi mình xuất trực tiếp 1 số lên màng hình thi dùng như thế nào.... lệnh của mình sai chổ nào.... thank 100 phát nhé. |
|
|
|
|
|
#6 |
|
Đệ tử 6 túi
|
Bạn bỏ cái portd=0x82;
lenh(); ra khỏi vòng lặp for đi nhé.Nếu viết như bạn thì nhảy từng chữ là đúng rối fai viết như sau: portd=0x82; lenh(); for(i=0;i<15;i++) { portd=ten[i]; xuat(); delay_ms(5); } 100% chạy.. ![]() -Thì mình nói rồi đấy thử viết chương trình hiển thị 1 số nào đó lên LCD đi.. vd:1234 chẳng hạn bạn tính toán ra được 4 số nghin,tram,chuc,dv sau đó chỉ việc portd=nghin; xuat() portd=tram; xuat() . . cứ như thế thôi. |
|
|
|
|
|
#7 |
|
Đệ tử 5 túi
Tham gia ngày: Jan 2010
Bài gửi: 96
: |
cảm ơn bạn đã viết dc và cơ bản đả thành công tỏng việc hiện thị ( chữ , số lên màn hình lCD )
mình se tiếp tục nghiêm cứu và học hỏi thêm.... xin chân thành cảm ở các tiền bối, các quý đồng đạo trong thời gian quan đã nhiệt tình chỉ giáo... và rất cảm ơn bạn stupid11 ...! cảm ơn và cảm ơn..... chân thành cảm ơn. ko biết nói gì luôn như cảm ơn nhiều làm. mail : lambaotrungdt@gmail.com fone: 01284279279 bạn stupid11 có thể cho mình xin số fone ko.. bạn gữi vào mail nhé. |
|
|
|
|
|
#8 |
|
Đệ tử 5 túi
Tham gia ngày: Jan 2010
Bài gửi: 96
: |
bạn ơi mình có vấn đề cần hỏi thêm
như vậy mình có giá trị cửa "tinh" như vậy khi mình đếm đếm 1000 chẩn hạng minh muốn nó ngưng lại thi phải làm sao... core mình muốn việt co nội dùng là có a = 1000 int32 tinh,a; ấn 1 phím dem++; hien thi tinh lên LCD if (dem>a) { core } else; nhưng khi mình làm nhu thế này #include <16f877a.h> #fuses xt,nowdt,noprotect,nolvp #use delay(clock=4000000) #use fast_io(b) #use fast_io(d) #byte portb=0x6 #byte portd=0x8 #byte porta=0x5 #byte portc=0x07 #bit RA0 = porta.0 #bit rs = portb.0 #bit rw = portb.1 #bit e = portb.2 void lenh(); void xuat(); void khoitao(); void lenh() {rs=0; rw=0; e=1; e=0; delay_ms(5); } void xuat() { e=1; rs=1; rw=0; e=0; delay_ms(5); } void khoitao() {portd=0x01; lenh(); portd=0x0e; lenh(); portd=0x80; lenh(); portd=0x38; lenh(); delay_ms(5); } void main() { int32 i, dem,donvi,chuc,tram,nghin,chucnghin,a; const char tenem[] = " lam bao trung "; char const ht[]={'0','1','2','3','4','5','6','7','8','9',' '}; set_tris_b(0); set_tris_d(0); set_tris_c(0x0); khoitao(); a=1000; //////////////////////////////////////////////////////////////////////////////// while(1) { if(dem>a) { output_c(0xff); } else output_c(0xf0); } //////////////////////////////////////////////////////////////////////////////////////////////////// while(2) { if (ra0==0) { do{} while (ra0==0); dem=dem+100; } } chucnghin=dem/10000; nghin=(dem%10000)/1000; tram=(dem%1000)/100; chuc=(dem%100)/10; donvi=dem%10; portd=0x0c; lenh(); for(i=0;i<20;i++) { portd=0x82; lenh(); portd=ht[chucnghin]; xuat(); portd=ht[nghin]; xuat(); portd=ht[tram]; xuat(); portd=ht[chuc]; xuat(); portd=ht[donvi]; xuat(); delay_ms(5); portd=0xc0; lenh(); for(i=0;i<30;i++) { portd=tenem[i]; xuat(); } } } } các bạn chú ý chổ //////////////////// while(1) { if(dem>a) { output_c(0xff); } else output_c(0xf0); /////////////////////////////////// minh làm như thế thi nó ko hiển thi nửa...... |
|
|
|
|
|
#9 |
|
Đệ tử 5 túi
Tham gia ngày: Sep 2010
Bài gửi: 107
: |
Anh stupid11 em dùng code lập trình của anh trong bài đo nhiệt độ đó . Mà khi em nạp chương trình sang PIC và kết nối thì không chạy anh ah ...... Nó nhảy liên tục ở chỗ hiển thị nhiệt độ đó . Anh xem lại dùm em với . Thanks anh đã giúp đỡ .có gì anh send sang mail của em or post lên diễn đàn khiendohuu@gmail.com
|
|
|
|
|
|
#10 |
|
Đệ tử 5 túi
Tham gia ngày: Sep 2010
Bài gửi: 107
: |
Ah mà anh stupid11 chuyển hộ em data LCD sang port d 4 bit với em chuyển code sang mà nó chưa chạy nữa .........em chưa gói lại nên chưa gửi lên anh xem dùm em nha.thanks anh nhiều
|
|
|
|
|
|
#11 |
|
Đệ tử 6 túi
|
|
|
|
|
|
|
#12 |
|
Đệ tử 6 túi
|
gửi khienpzo
Mình gửi vào mail rồi đấy |
|
|
|
|
|
#13 |
|
Đệ tử 6 túi
|
gui lambaotrung
Mình gửi vào mail rồi đấy... |
|
|
|
|
|
#14 |
|
Đệ tử 5 túi
Tham gia ngày: Sep 2010
Bài gửi: 107
: |
|
|
|
|
|
|
#15 |
|
Nhập môn đệ tử
Tham gia ngày: Dec 2010
Bài gửi: 9
: |
các bác cho em hỏi:
em đang học viết chương trình đo nhiệt độ bằng lm35 từ con Pic18f67j60 slave rồi đưa thông tin nhiệt độ về con pic18f67j60 master qua modul EUSART ,sau đó hiển thị ra LCD va lên máy tính, đây là đồ án của em,em sắp phải nộp rồi, bác nào biết hướng dẫn em với nha,em đang rất cần, em tìm trog diễn đàn không thấy chủ đề nào nói về EUSART mong các bác giúp đỡ em em lập trình bằng ccs |
|
|
|
![]() |
| Ðiều Chỉnh | |
| Xếp Bài | |
|
|