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

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 18-01-2010, 02:26 AM   #1
hellongaymoi
Nhập môn đệ tử
 
Tham gia ngày: Sep 2008
Bài gửi: 9
:
Question Xem dum em code chuong trinh nay voi

Em đang làm mạch điều khiển sạc, cần hiển thị điên áp lên lcd. Em viết xong code nhưng ko hiển thị đc điện áp lên lcd. Giúp em với tai thứ 5 phai bảo vệ rồi.huhu.chương trình đây.
#include <16F877A.h>
#include <DEFS_16F877A.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
#define E RC6
#define RS RC5
#define RW RC4
#byte lcd_data = 0x06 // Dia chi PORTB
#bit dk = 0x07.2
//-------------------------------------------------
/* Khai bao nguyen mau cac ham su dung */
byte lcd_read_byte();
void lcd_send_byte( byte address, byte n );
void lcd_init();
void lcd_gotoxy( byte x, byte y);
void lcd_putc( char c);
int1 control_sac(int8 x);
void doiso(int16 x);
//--------------------------------------------------
/* Doc mot byte tu LCD */
byte lcd_read_byte()
{
byte read_byte;
set_tris_B(0xFF); // PORTB = input
RW = 1; // LCD O CHE DO DOC
delay_cycles(1);
E = 1; // E TU 1 XUONG 0 XUAT 1 BYTE
delay_cycles(1);
read_byte = lcd_data; // lcd_data= PORTB
E = 0;
set_tris_B(0x00); // PORTB = output
return(read_byte);
}

/* Goi 1byte den LCD */
void lcd_send_byte( byte address, byte n )
{
RS = 0;
while ( bit_test(lcd_read_byte(),7) ) ;
RS = address; // ADDRESS =0 OR 1
delay_cycles(1);
RW = 0; // LCD O CHE DO GHI
delay_cycles(1);
E = 0; // E TU 0 LEN 1 GHI 1 BYTE
lcd_data = n; // LAY DU LIEU TU PORTB
delay_cycles(1);
E = 1;
delay_us(2);
E = 0;
}

/* Khoi tao ban dau cho LCD */
void lcd_init()
{
byte const lcd_init_string[4] = {0x38, 0x0C, 1 , 6};
byte i;
set_tris_B(0x00);
RS = 0;
RW = 0;
E = 0;
delay_ms(15);
for(i=1;i<=3;++i)
{
lcd_data = 3;
delay_cycles(1);
E = 1;
delay_us(2);
E = 0;
delay_ms(5);
}
lcd_data = 2;
delay_cycles(1);
E = 1;
delay_us(2);
E = 0;
delay_ms(5);
for(i=0;i<=3;++i)
{
lcd_send_byte(0,lcd_init_string[i]);
}
}

/* Nhay den vi tri (x,y) tren LCD,nhay nham y se bao loi */
void lcd_gotoxy( byte x, byte y)
{
byte address;
switch(y)
{
case 1: address=0;
address+=x-1;
lcd_send_byte(0,0x80|address);
break;
case 2: address=0x40;
address+=x-1;
lcd_send_byte(0,0x80|address);
break;
default :lcd_init();
lcd_putc("ERROR Y POSITION");
while(true); // Dung tai day!
}
}

/* Hien thi ki tu hoac chuoi ra LCD */
void lcd_putc( char c)
{
lcd_send_byte(1,c); // GUI 1 BYTE DU LIEU
}

/* Hien thi ki tu hoac chuoi ra LCD */
int1 control_sac(float x)
{
int1 dk;
if(x>=12)
dk=0;
else
dk=1;
return(dk);

}
/*kiem tra dien ap accu*/
//---------------------------------------------
void doiso(int16 x)
{
int8 chuc,donvi,le;
int8 tam;
chuc=x/100 + 0x30;
tam=x%100;
donvi=tam/10 + 0x30;
le=tam%10;
}

/* Ham main */
void main()
{
float adc1,adc2;
int16 v_bat,v_solar;
int8 chuc,donvi,le;
while(TRUE)
{


setup_adc_ports(all_analog); //RA0,RA1,RA2,RA3:LA ANALOG V_REF=Vcc
set_ADC_channel(0); // DOC V_BAT
delay_ms(10);

adc1 =(float) read_adc();
adc1 = adc1/20.46; // sai so 100mV--->muc luong tu 20.46
v_bat =adc1*10;

set_ADC_channel(1); // DOC V_solar
delay_ms(10);

adc2 =(float) read_adc();
adc2 = adc2/20.46;
v_solar = adc2*10; // sai so 100mV--->muc luong tu 20.46

output_bit(PIN_C2,control_sac(adc1));

set_tris_B(0); //PORTB = output
set_tris_C(0); //PORTC = output

lcd_init(); // HIEN THI LEN LCD

doiso(v_solar);
lcd_gotoxy(0,1);
lcd_putc("Vs=");
lcd_gotoxy(3,1);
lcd_putc(chuc);
lcd_gotoxy(4,1);
lcd_putc(donvi);
lcd_gotoxy(5,1);
lcd_putc(".");
lcd_gotoxy(6,1);
lcd_putc(le);
lcd_gotoxy(7,1);
lcd_putc("V");

doiso(v_bat);
lcd_gotoxy(0,2);
lcd_putc("Vb=");
lcd_gotoxy(3,2);
lcd_putc(chuc);
lcd_gotoxy(4,2);
lcd_putc(donvi);
lcd_gotoxy(5,2);
lcd_putc(".");
lcd_gotoxy(6,2);
lcd_putc(le);
lcd_gotoxy(7,2);
lcd_putc("V");
delay_ms(1000);
}
}
hellongaymoi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


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à 12: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