PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và 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

Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 28-07-2011, 01:05 AM   #1
haneishun
Đệ tử 1 túi
 
Tham gia ngày: Jun 2009
Bài gửi: 24
:
em muon hien thi so thap phan len LCD ,nhung cai code nay co van de hien thi ko dung

#include <16f877A.h>
#device *=16
#use delay(clock = 20M)
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,NOLVP, NOCPD, NOWRT

#define LCD_ENABLE_PIN PIN_B5
#define LCD_RS_PIN PIN_B7
#define LCD_RW_PIN PIN_B6
#define LCD_DATA4 PIN_B4
#define LCD_DATA5 PIN_B3
#define LCD_DATA6 PIN_B2
#define LCD_DATA7 PIN_B1

#include <lcd.c>
void main(){
int i,x,x1,y1,y2;
lcd_init();
x=123.4;
x1=x*10;
y1=x1/100;
y2=x1%100;
lcd_gotoxy(1,1);
lcd_putc(y1/10+0x30);
lcd_gotoxy(2,1);
lcd_putc(y1%10+0x30);
lcd_gotoxy(3,1);
lcd_putc(y2/10+0x30);
lcd_gotoxy(4,1);
lcd_putc(".");
lcd_gotoxy(5,1);
lcd_putc(y2%10+0x30);
while(1);
}
haneishun vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 28-07-2011, 10:11 AM   #2
pstin
Đệ tử 7 túi
 
Tham gia ngày: Jul 2010
Nơi Cư Ngụ: TP HCM
Bài gửi: 190
:
Hì, cái code đương nhiên là có vấn đề với bạn rồi!!!!!!!!
code trên dùng lcd 8 bit, bạn dùng 4 bit thì phải sửa câu lệnh 1 chút!!!!!!!!
Nếu bạn khai báo lcd 4 bit từ ccs mà không dùng file lcd.c "bên ngoài" thì code trên vẫn hiển thị đúng!!!!!!!.
x1 sẽ là 1234, khi đó trở thành hiển thị số nguyên thôi!!!, y1=12; y2 chia cho 100 lấy số dư, y2=34, cái này thấy đơn giản mà!!!!!!!!.
pstin vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 28-07-2011, 03:33 PM   #3
tdm
Đệ tử 7 túi
 
Tham gia ngày: May 2005
Bài gửi: 258
:
Trích:
Nguyên văn bởi haneishun View Post
#include <16f877A.h>
#device *=16
#use delay(clock = 20M)
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,NOLVP, NOCPD, NOWRT

#define LCD_ENABLE_PIN PIN_B5
#define LCD_RS_PIN PIN_B7
#define LCD_RW_PIN PIN_B6
#define LCD_DATA4 PIN_B4
#define LCD_DATA5 PIN_B3
#define LCD_DATA6 PIN_B2
#define LCD_DATA7 PIN_B1

#include <lcd.c>
void main(){
int i,x,x1,y1,y2;
lcd_init();
x=123.4;
x1=x*10;
y1=x1/100;
y2=x1%100;
lcd_gotoxy(1,1);
lcd_putc(y1/10+0x30);
lcd_gotoxy(2,1);
lcd_putc(y1%10+0x30);
lcd_gotoxy(3,1);
lcd_putc(y2/10+0x30);
lcd_gotoxy(4,1);
lcd_putc(".");
lcd_gotoxy(5,1);
lcd_putc(y2%10+0x30);
while(1);
}
nó hiển thị giống như bạn tính đó chứ.
x=123.4;bạn khai báo x là 8bit nên nó chỉ lưu số nguyên 123
x1=x*10;kq là 1230 =4CE x1 là 8bit nên x1 chứa CE=206
bài này viết lại như sau:
Code:
#include <16f877A.h>
#device *=16
#use delay(clock = 20M)
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,NOLVP, NOCPD, NOWRT

#define LCD_ENABLE_PIN PIN_B5
#define LCD_RS_PIN PIN_B7
#define LCD_RW_PIN PIN_B6
#define LCD_DATA4 PIN_B4
#define LCD_DATA5 PIN_B3
#define LCD_DATA6 PIN_B2
#define LCD_DATA7 PIN_B1

#include <lcd.c>
void main(){
float x;
lcd_init();
x=123.4;
printf(lcd_putc,"%3.1f ",x); 
while(1);
}
__________________
viết chương trình cho vdk chạy ổn định là cả một vấn đề.
tdm vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 28-07-2011, 06:51 PM   #4
haneishun
Đệ tử 1 túi
 
Tham gia ngày: Jun 2009
Bài gửi: 24
:
cam on anh nhieu nhe.anh pro that .^^
haneishun vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-08-2011, 12:16 AM   #5
king0205
Đệ tử 1 túi
 
Tham gia ngày: Dec 2008
Bài gửi: 12
:
-Bạn muốn viết như vậy thì hãy #include <LCD.C> có sẵn trong thư viện CCS.
- Còn #define thì ban sửa trong thu viện LCD chứ không phải trong chương trình chính.
king0205 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-08-2011, 04:20 PM   #6
pstin
Đệ tử 7 túi
 
Tham gia ngày: Jul 2010
Nơi Cư Ngụ: TP HCM
Bài gửi: 190
:
Hì, bác tdm thì đúng là "nghề" rồi!!!!!!!!. Cái code trên của tui bạn để "hiển thị chay" như vậy gặp rắc rối cũng phải!!!!!. Code trên dùng để hiển thị điện áp 220V, nó cũng chỉ là int16, điện áp bao gồm số thập phân, hiển thị ra là mất số thập phân đó, nhưng nếu nhân 10 lên thì nó vẫn tính ok!!!!!!!!!!!.
Việc chia đôi số ra làm code dài dòng nhưng làm vậy để lưu điện áp ban đầu vào epprom đó thôi!!!!!!!!
pstin vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-12-2011, 10:58 AM   #7
kinkin8916
Nhập môn đệ tử
 
Tham gia ngày: Sep 2011
Bài gửi: 3
:
Các anh ơi!Đây là project của em!Em làm mạch thật khi nạp code vào nó ko chạy mà LCD chỉ sáng đèn.Pic ko hỏng vì em đã test port D cho nháy led ok rồi!Chắc chỉ sai đâu ở thư viện LCD !Mong các anh giúp đở em với ạ!Em đang cần gấp ạ!
http://www.mediafire.com/?x9ymgysrps7163j
kinkin8916 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-12-2011, 10:27 PM   #8
tdm
Đệ tử 7 túi
 
Tham gia ngày: May 2005
Bài gửi: 258
:
Trích:
Nguyên văn bởi kinkin8916 View Post
Các anh ơi!Đây là project của em!Em làm mạch thật khi nạp code vào nó ko chạy mà LCD chỉ sáng đèn.Pic ko hỏng vì em đã test port D cho nháy led ok rồi!Chắc chỉ sai đâu ở thư viện LCD !Mong các anh giúp đở em với ạ!Em đang cần gấp ạ!
http://www.mediafire.com/?x9ymgysrps7163j
chương trình của em anh đã thử trên mạch thật chạy OK.
em lên kiểm tra lại kết nối giữa port và lcd xem đã đúng với file mô phỏng hay không(vì em kết nối data ngược :d4 pic với d7 lcd).
chỉnh thử biến trở.
__________________
viết chương trình cho vdk chạy ổn định là cả một vấn đề.
tdm vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


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


Múi giờ GMT. Hiện tại là 05:37 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