PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   PIC - Thiết kế và Ứng dụng (http://www.picvietnam.com/forum/forumdisplay.php?f=23)
-   -   giúp mình về LCD va PIC 16f877 (http://www.picvietnam.com/forum/showthread.php?t=8154)

stupid11 31-03-2011 09:32 PM

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)..

lambaotrung 31-03-2011 09:57 PM

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é.

stupid11 31-03-2011 10:06 PM

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.. :D


-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.

lambaotrung 31-03-2011 10:43 PM

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é.

lambaotrung 31-03-2011 11:24 PM

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......

khienpzo 31-03-2011 11:50 PM

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

khienpzo 01-04-2011 12:08 AM

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

hieu89tx 01-04-2011 12:08 AM

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

stupid11 01-04-2011 12:12 AM

Trích:

Nguyên văn bởi khienpzo (Post 43341)
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

bạn đưa mail đây..mình gửi qua cho.

stupid11 01-04-2011 12:25 AM

gửi khienpzo

Mình gửi vào mail rồi đấy

stupid11 01-04-2011 12:26 AM

gui lambaotrung

Mình gửi vào mail rồi đấy...

khienpzo 01-04-2011 07:39 PM

Trích:

Nguyên văn bởi stupid11 (Post 43345)
gửi khienpzo

Mình gửi vào mail rồi đấy

Anh stupid11 ah đó vẫn là LCD 8bit port B mà ........ tại phần cứng em bỏ 4 bit mất tiêu ah . không muốn test phải làm lại phần cứng ....................

tranvanhung88 02-04-2011 02:13 AM

e có một bài tập ntn, e đang làm một đề là truyền một dòng chữ từ 1 con chíp sang một con khác (16f77a) và hiển thị trên LCD ,e chua biết xây dựng chương trình như thế nào, xin các a chi cho,nếu đươc xin qua email ahungnd@gmail.com

hieu89tx 02-04-2011 06:50 PM

chưa ai làm đề tài này ah, ai bt giúp mình với nhe
liên hẹ voi mình qua mail : hieu89tx@gmail.com

honque104 05-04-2011 04:36 PM

Chào mọi người, mình cũng đang có 1 vấn đề về LCD mà "loay hoay" lâu rùi vẫn chưa giải quyết đc mong mọi người giúp đỡ cho.
Mình đang dùng 1 bàn phím để nhập dữ liệu vào (ví dụ số 123) sau khi nhập vào thì dùng Pic để nhận biết, sau đó xuất lên LCD16x2 (hiện thị lên LCD mã NHỊ PHÂN). Mình tìm hiểu mãi mà vẫn chưa xuất lên LCD dc,mong mọi người chỉ giao cho
Thank mọi người trước.


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

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam