PIC Vietnam

Go Back   PIC Vietnam > Robotics > Cảm biến

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ảm biến Camera, siêu âm, hồng ngoại, gyro, la bàn...

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 30-05-2013, 11:09 PM   #1
vanhungbk1
Nhập môn đệ tử
 
Tham gia ngày: Jan 2013
Nơi Cư Ngụ: Bách Khoa Đà Nẵng
Bài gửi: 7
:
Question hỏi về hiển thị lên LCD ?

mình có chương trình này :

#define <16f877a.h>
#include "16F877A.h"
#device *=16 adc=8
//#device PIC16F877A *=16
#use delay(clock=40000000)

#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
//#use rs232(baud=115200,parity=N,xmit=PIN_C6,rcv=PIN_C7, bits=9)
#include <LCD.C>
#INT_EXT
int8 read;
void main(void)
{
// set_tris_b(0);
set_tris_a(0xFF);
set_tris_d(0x00);

//Khoi tao ADC
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
delay_ms(50);

while(TRUE)

{
lcd_init();
read=read_adc();
read =read*0.3951022229;
printf(lcd_putc,"\rLUU LUONG: %u" ,read);
delay_us(10);
lcd_gotoxy( 2,2 );
lcd_putc ("DA VDK:Nhom 8 ");
}
}
========================================

đây là mạch trên Protues



giờ mình muốn thay đổi phần hiển thị trên LCD theo kiểu là khi cho chạy thì LCD hiển thị lên tên của từng ngưới trong nhóm, sau đó mới hiển thị như trên !

thì làm thế nào các bạn ?

thay đổi nội dung bởi: vanhungbk1, 31-05-2013 lúc 01:32 PM.
vanhungbk1 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 31-05-2013, 01:09 AM   #2
nguyenhuutien
Đệ tử 2 túi
 
nguyenhuutien's Avatar
 
Tham gia ngày: Feb 2012
Bài gửi: 35
:
nếu bạn dùng CCS thì mình không rành cho lắm, theo mình nghĩ VDK chạy nối tiếp nên bạn muốn hiển thị tên trong nhóm thì ở sau phần:
lcd_init();
lcd_putc ("ten a ");
delay_us(10);
lcd_clear();// xoa lcd
lcd_putc ("ten b ");
delay_us(10);
lcd_clear();// xoa lcd
read=read_adc();
read =read*0.3951022229;
printf(lcd_putc,"\rLUU LUONG: %u" ,read);
delay_us(10);
lcd_gotoxy( 2,2 );
lcd_putc ("DA VDK:Nhom 8 ");
ở phần lcd_clear(); mình không biết trong CCS có phải dung lệnh xóa như vậy không, bạn nên coi lại và thử theo cách của mình xem sao?
__________________
Nhóm thiết kế Micro Design
ĐT : 01662468406 ( A Tiến ) - 0948310230 ( A Hưng )
Email : thietkemach2012@gmail.com
Địa chỉ : 26/8 Đường Tú Xương, Khu phố 1, Phường Hiệp PHú, Quận 9,TP.HCM
nguyenhuutien vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 31-05-2013, 01:31 PM   #3
vanhungbk1
Nhập môn đệ tử
 
Tham gia ngày: Jan 2013
Nơi Cư Ngụ: Bách Khoa Đà Nẵng
Bài gửi: 7
:
ko được bạn à ! mình đã thử và bị lỗi ở chỗ: lcd_clear();
vanhungbk1 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-06-2013, 02:20 AM   #4
nguyenhuutien
Đệ tử 2 túi
 
nguyenhuutien's Avatar
 
Tham gia ngày: Feb 2012
Bài gửi: 35
:
mình không biết thư viện bạn sử dụng muốn xóa lcd dùng lệnh như thế nào, lệnh đó là xóa phần hiển thị lcd thôi.chúc bạn thành công.nếu không hiểu gì thì gọi điện cho mình.
__________________
Nhóm thiết kế Micro Design
ĐT : 01662468406 ( A Tiến ) - 0948310230 ( A Hưng )
Email : thietkemach2012@gmail.com
Địa chỉ : 26/8 Đường Tú Xương, Khu phố 1, Phường Hiệp PHú, Quận 9,TP.HCM
nguyenhuutien vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 05-06-2013, 03:35 PM   #5
internet.com
Đệ tử 1 túi
 
Tham gia ngày: Sep 2010
Bài gửi: 18
:
Smile

Trích:
Nguyên văn bởi vanhungbk1 View Post
mình có chương trình này :

#define <16f877a.h>
#include "16F877A.h"
#device *=16 adc=8
//#device PIC16F877A *=16
#use delay(clock=40000000)

#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
//#use rs232(baud=115200,parity=N,xmit=PIN_C6,rcv=PIN_C7, bits=9)
#include <LCD.C>
#INT_EXT
int8 read;
void main(void)
{
// set_tris_b(0);
set_tris_a(0xFF);
set_tris_d(0x00);

//Khoi tao ADC
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
delay_ms(50);

while(TRUE)

{
lcd_init();
read=read_adc();
read =read*0.3951022229;
printf(lcd_putc,"\rLUU LUONG: %u" ,read);
delay_us(10);
lcd_gotoxy( 2,2 );
lcd_putc ("DA VDK:Nhom 8 ");
}
}
========================================

đây là mạch trên Protues



giờ mình muốn thay đổi phần hiển thị trên LCD theo kiểu là khi cho chạy thì LCD hiển thị lên tên của từng ngưới trong nhóm, sau đó mới hiển thị như trên !

thì làm thế nào các bạn ?
Bạn chú ý một số ý sau nha:
- #define <16f877a.h> => #include <16f877a.h>
- #use delay(clock=40000000), 40MHz hay 4MHz??? => viết #use delay(clock=40MHz) cho dễ nhìn.
- #use rs232(baud=115200,parity=N,xmit=PIN_C6,rcv=PIN_C7, bits=9), dùng bits=8 là được rồi, cũng ko cần 9 đâu.
- lệnh lcd_init() để trước khi vào vòng while.
- để hiển thi tên từng người thì sau lcd_init(), cho xuất tên lên LCD, delay khoảng 1s (bạn delay_us thì ko kịp nhìn thấy tên ai đâu) rồi xóa LCD, viết tiếp tên người kia. Sau khi hiện tên người cuối cùng bạn xóa LCD rồi vào vòng while. Lệnh xóa thì vào file LCD.c bạn include ấy.
internet.com vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 05-06-2013, 03:44 PM   #6
internet.com
Đệ tử 1 túi
 
Tham gia ngày: Sep 2010
Bài gửi: 18
:
Cool

chú ý thêm, để đọc adc cho chính xác thì nên đọc khoảng 10 lần rồi lấy giá trị trung bình đọc được đem đi tính toán nhé.
internet.com 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à 07:22 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