PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT PIC,...)

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Ðề tài đã khoá
 
Ðiều Chỉnh Xếp Bài
Old 12-07-2007, 06:56 PM   #1
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi cuopbienquin View Post
thx bạn nhiều. Mình chạy được rồi,ah,mà bạn giải thích mình thay "Xt" trong dòng đó bằng "HS" la sao hả bạn.
XT là đặt bộ dao động ở chế độ dùng với thạch anh tần số thấp (4 MHz trở lại), HS là đặt bộ dao động ở chế độ dùng với thạch anh tần số cao hơn (4 MHz đến maximum của chip).

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn  
Old 12-07-2007, 09:52 AM   #2
anh_gioi
Đệ tử 6 túi
 
Tham gia ngày: Oct 2006
Bài gửi: 147
:
bài này:
Code:
/*-----------------------------------------------------------------------------
* 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();
}
bài này không bít gọi file DEFS_16F877A.h ra như thế nào nhỉ?
mong mọi người chỉ dùm.thank!

thay đổi nội dung bởi: namqn, 12-07-2007 lúc 06:54 PM. Lý do: thêm tag định dạng code
anh_gioi vẫn chưa có mặt trong diễn đàn  
Old 12-07-2007, 07:30 PM   #3
anh_gioi
Đệ tử 6 túi
 
Tham gia ngày: Oct 2006
Bài gửi: 147
:
mọi ngừoi ơi! xem hộ mã này với
không bít có sai gì ko ,nó không báo lỗi nhưng nó không hiển thị chữ

Code:
#include "16F877A.h"
#include "C:\Documents and Settings\Administrator\Desktop\DEFS_16F877A\DEFS_16F877a.h"
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock = 4M)
#define RS RD0
#define RW RD1
#define E  RD2
#define LCD portB

//tao ham goi lenh dieu khien
void comnwrite(){
                    RS = 0; //chon thanh ghi lenh  
                    RW = 0; //chon che do ghi
                    E = 1; //tao suon xung
                    E = 0;
                    delay_ms(1); //tao do tre cho LCD
                           }
// tao ham ghi du lieu
void datawrite(){
                   RS = 1;
                   RW = 0;
                   E = 1;
                   E = 0;
                   delay_ms(1);
                           }
//ham chinh
void main(){
             set_tris_b(0);
             set_tris_d(0);
             delay_ms(100); //tao tre cho lcd khoi dong
             
             LCD = 0x38; //tao ma tran 5x7
             comnwrite();
             LCD = 0x0C ; //bat hien thi,tat con tro
             comnwrite();
             LCD = 0x80; //dau dong thu nhat
             comnwrite();
             
             //xuat chu ANH_GIOI
             LCD = 'A';
             datawrite();
             LCD = 'N';
             datawrite();
             LCD = 'H';
             datawrite();
             LCD = '_';
             datawrite();
             LCD = 'G';
             datawrite();
             LCD = 'I';
             datawrite();
             LCD = 'O';
             datawrite();
             LCD = 'I';
             datawrite();
                     }
thank!

namqn: bạn xem lại tôi sửa như thế nào để hiển thị code, sau đó bạn làm như vậy khi post code. Tôi không thể sửa cho mọi post có code được.

thay đổi nội dung bởi: namqn, 12-07-2007 lúc 10:09 PM.
anh_gioi vẫn chưa có mặt trong diễn đàn  
Old 12-07-2007, 08:43 PM   #4
anh_gioi
Đệ tử 6 túi
 
Tham gia ngày: Oct 2006
Bài gửi: 147
:
kiểm tra lại hóa ra chẳng có lỗi gì cả.
anh_gioi vẫn chưa có mặt trong diễn đàn  
Old 13-07-2007, 11:35 AM   #5
tranvanthuong
Đệ tử 2 túi
 
Tham gia ngày: Mar 2007
Bài gửi: 45
:
Trích:
Nguyên văn bởi anh_gioi View Post
kiểm tra lại hóa ra chẳng có lỗi gì cả.
tui bảo đảm với bạn với chương trình này khi lắp mạch thật thì sẽ chắc chắn mạch không chạy được bạn xem lại nhé!
__________________
Cổng trường Đại học cao vời vợi
Đồng ruộng mênh mong đón em về!
tranvanthuong vẫn chưa có mặt trong diễn đàn  
Old 13-07-2007, 11:33 AM   #6
tranvanthuong
Đệ tử 2 túi
 
Tham gia ngày: Mar 2007
Bài gửi: 45
:
trời đất làm tui hoa cả mắt!!!
__________________
Cổng trường Đại học cao vời vợi
Đồng ruộng mênh mong đón em về!
tranvanthuong vẫn chưa có mặt trong diễn đàn  
Old 13-07-2007, 03:07 PM   #7
anh_gioi
Đệ tử 6 túi
 
Tham gia ngày: Oct 2006
Bài gửi: 147
:
cậu nói đúng rồi!
mình lắp mạch thật mà chẳng thấy gì cả?
cậu có thể nói cho mình sai ở chỗ nào ko?
cám ơn trước nha!
anh_gioi vẫn chưa có mặt trong diễn đàn  
Old 13-07-2007, 03:12 PM   #8
anh_gioi
Đệ tử 6 túi
 
Tham gia ngày: Oct 2006
Bài gửi: 147
:
đây là đoạn mã mình cho chạy thật nhưng chẳng thấy báo gì cả:

Code:
#include "16F877A.h"
#include "C:\Documents and Settings\Administrator\Desktop\DEFS_16F877A\defs_16f877a.h"
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock = 8M)
#define RS RD0
#define RW RD1
#define E RD2
#define LCD portb
const unsigned char digital[]="TA LA VO DICH HA HA...!";
INT I=0;
//TAO HAM LENH
void commwrite(){
   RS = 0;
   RW = 0;
   E = 1;
   E = 0;
   delay_ms(100);}
 //tao ham gui du lieu
 void datawrite(){
                   RS = 1;
                   RW = 0;
                   E  = 1;
                   E  = 0;
                 //  delay_ms(10);
                     }
 //ham chinh
 void main(){
         set_tris_b(0);
         set_tris_d(0);
         delay_ms(100);
         
         LCD = 0x38; //tao ma tran 5x7
         commwrite();
         LCD = 0x0c; //tat con tro,bat hien thi
         commwrite();
         LCD = 0x80; //con tro ve dong dau tien
         
         while(1){
                    LCD = digital[i];
                    datawrite();
                    delay_ms(100);
                    i++;
                    if(i ==13){ LCD = 0xc2;
                                 commwrite();
                                 delay_ms(100);}
                     if(i == 24){ LCD = 0x01;
                                    commwrite();
                                    delay_ms(500);
                                     LCD = 0x80;
                                     commwrite();
                                     i = 0;}
                        }
         
 }
mong mọi người xem dùm cái !

namqn: nhắc bạn một lần nữa về việc dùng các thẻ code để định dạng. Hãy xem tôi sửa post của bạn ra sao để biết cách làm.

thay đổi nội dung bởi: namqn, 13-07-2007 lúc 06:43 PM.
anh_gioi vẫn chưa có mặt trong diễn đàn  
Old 13-07-2007, 10:44 PM   #9
anh_gioi
Đệ tử 6 túi
 
Tham gia ngày: Oct 2006
Bài gửi: 147
:
anh da sủa cho em đâu ạ?
anh_gioi vẫn chưa có mặt trong diễn đàn  
Old 13-07-2007, 11:22 PM   #10
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi anh_gioi View Post
anh da sủa cho em đâu ạ?
Tôi sửa trong post của bạn. Khi bạn đã đăng nhập thì có thể nhấn nút edit của post đó để sửa, khi đó sẽ thấy tôi sửa nó như thế nào.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn  
Old 14-07-2007, 10:15 AM   #11
anh_gioi
Đệ tử 6 túi
 
Tham gia ngày: Oct 2006
Bài gửi: 147
:
edit là chỉnh sửa bài của mình mà?
anh là ơn có thể xem code củ em ở cuối ạ.
hic...em mơi mua lcd mà chảng hiêrn thị được.tức quá....muốn cho cái búa..
anh_gioi vẫn chưa có mặt trong diễn đàn  
Old 14-07-2007, 07:19 PM   #12
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi anh_gioi View Post
edit là chỉnh sửa bài của mình mà?
anh là ơn có thể xem code củ em ở cuối ạ.
hic...em mơi mua lcd mà chảng hiêrn thị được.tức quá....muốn cho cái búa..
Có khả năng bạn cần khởi tạo module LCD trước khi đặt chế độ hiển thị (tôi đã viết 1 lần rồi, nhưng bây giờ tìm bằng chức năng search của diễn đàn thì không ra). Tôi nói lại vậy (quy trình cho các module dùng chip điều khiển tương thích HD44780):

- Làm trễ một khoảng thời gian khi mới bật nguồn cho LCD (40 ms từ thời điểm Vdd = 2.7V, hay 15 ms từ thời điểm Vdd = 4.5V)
- Xuất lệnh 0x33 (0x30 đến 0x3F đều ok)
- Chờ khoảng 4.1 ms trở lên
- Xuất lệnh 0x33 (0x30 đến 0x3F đều ok)
- Chờ khoảng 100 us trở lên
- Xuất lệnh 0x33 (0x30 đến 0x3F đều ok)
- Xuất lệnh đặt chế độ (của bạn là 0x38)
- Xuất lệnh tắt màn hình 0x08
- Xuất lệnh xóa màn hình 0x01
- Xuất lệnh đặt chế độ nhập dữ liệu (tăng hay giảm địa chỉ, có dịch màn hình hay không)

Đó là quy trình khởi tạo cho module LCD chưa từng làm việc lần nào với vi điều khiển của bạn. Thông thường, khi module đã được khởi tạo rồi thì những lần sau bạn có thể dùng thẳng các lệnh đặt chế độ mà không cần thực hiện quy trình khởi tạo như trên.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn  
Old 16-07-2007, 07:45 PM   #13
anh_gioi
Đệ tử 6 túi
 
Tham gia ngày: Oct 2006
Bài gửi: 147
:
cám ơn anh ạ.em đã cho hiển thị được lên LCD rùi ạ.nhưng chỉ hiển thị chữ không dấu thui,bây giờ em muốn hiển thị chữ có dấu thì làm thế nào ạ?
em cám ơn!!!!
anh_gioi vẫn chưa có mặt trong diễn đàn  
Old 16-07-2007, 08:11 PM   #14
bien_van_khat
...Damned...
 
bien_van_khat's Avatar
 
Tham gia ngày: Apr 2006
Nơi Cư Ngụ: Hồ Chí Minh
Bài gửi: 522
:
Để làm chữ có dấu tối thiểu bạn phải có bộ font chữ có dấu, nhưng với LCD kiểu ký tự dạng như 16x2, 16x4 thì hiển thị chữ có dấu rất xấu.
Làm cái này trên LCD graphic tốt hơn nhiều.
__________________
- Xin đọc trước khi post bài

Xin đặt code trong thẻ [ code ] [ /code ]
bien_van_khat vẫn chưa có mặt trong diễn đàn  
Old 16-07-2007, 09:15 PM   #15
anh_gioi
Đệ tử 6 túi
 
Tham gia ngày: Oct 2006
Bài gửi: 147
:
vậy bộ font này là loại bộ font nào? hiển thị xấu cũng được,chủ yếu mình muốn xem các làm như thế nào thui
(mình sử dụng 16F877A,LCD 16x2)
anh_gioi vẫn chưa có mặt trong diễn đàn  
Ðề tài đã khoá


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến

Similar Threads
Ðề tài Người gửi Chuyên mục Trả lời Bài mới
TUT về USART trong PIC16F877A mafd_47a MPASM 16 19-02-2025 05:32 AM
TUT ve I2C ( pic16f877a ) mafd_47a MPASM 28 28-01-2025 10:45 PM
Lập nhóm PIC16F877A nhh Cơ bản về vi điều khiển và PIC 285 08-03-2017 11:08 PM
Bộ so sánh và PWM cho PIC16F877A anhquangngai Cơ bản về vi điều khiển và PIC 24 08-09-2012 09:00 AM
Pic16f877a TỪ DỄ TỚi KhÓ ntc Cơ bản về vi điều khiển và PIC 373 23-05-2009 10:24 PM


Múi giờ GMT. Hiện tại là 09:35 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam