Professional Documents
Culture Documents
* MCU : PIC16F887
* Xtal : 4Mhz
******************************************************************************/
#include <pic.h>
#include "adc.h"
#include "lcd_4bit.h"
#include <xc.h>
__CONFIG(FOSC_HS & WDTE_OFF & PWRTE_ON & MCLRE_ON & LVP_OFF & DEBUG_OFF &
BOREN_OFF & CP_OFF & CPD_OFF & FCMEN_OFF & IESO_OFF); //1st config. word
//--------------------------------------------------
void Port_Init()
ANSEL = 0;
ANSELH = 0;
TRISA3 = 1;
ANS3 = 1;
TRISB = 0xff;
TRISB = 0xff;
//-----------------------------------------------
while(time--)
__delay_ms(100);
//------------------------------------------------
void sang_led_begin()
//--------------------------------------------------
void sang_led_end()
//----------------------------------------------------
//char scan_button()
///{
// char key=0;
// if(RB0==0){while(!RB0);key=4;} //start
// if(RB1==0){while(!RB1);key=5;} //Exit
// if(RB2==0){while(!RB2);key=6;} // Restart
// return key;
//}
//----------------------------------------------------
void volt()
lcd_command(_LCD_CLEAR);
lcd_goto_row_col(1,0);
lcd_write_string("Vin= Volt");
void volt_meter()
unsigned char filter=60; //so MAU duoc lay va tinh TRUNG BINH
char volt[4]; //de SAVE 4 gia tri : dvi, chuc, tram, nghin
char i;
//--------
temp = ADC_Read(3);
__delay_ms(4);
adc_value += temp;
//-----------------------
for(i=0;i<4;i++)
volt[i]=(kq % 10) | 0x30; //bat buoc fai OR voi 03H moi ra KQ dung (=ky tu).
kq /= 10;
lcd_goto_row_col(1,4);
lcd_write_char(volt[3]); // ngan
lcd_write_char('.');
lcd_write_char(volt[2]); // tram
lcd_write_char(volt[1]); // chuc
lcd_write_char(volt[0]); // don vi
//--------------------------------------------------------
void disp_move_Line_13()
lcd_command(_LCD_CLEAR);
lcd_goto_row_col(0,0);
leng_line3=sizeof(line_3);
leng_line1=sizeof(line_1);
while(1)
for(i=0;i<16;i++)
lcd_goto_row_col(0,i);
lcd_write_char(line_3[i+inc3]); //line 3
//-------------------------------------------------
j = leng_line1-i-inc1-2; //
lcd_goto_row_col(1,15-i);
lcd_write_char(line_1[j]); //line 1
delay_x100ms(3);
inc3++;
inc1++;
//----------------------------------
void main() //Phim 6= Restart; Phim 5=End; Phim 4= Begin Convert A/D
char i;
char button=0;
Port_Init();
lcd_4bit_init();
ADC_Init();
nRBPU = 0;
TRISB=0XFF;
PORTB=0XFF;
WPUB = 0xFF;
//INTF = 0;
//GIE = 1;
//INTE = 1;
//INTEDG = 0;
//IOCB0=1;
disp_move_Line_13();
// while(1)
// {
// lcd_command(_LCD_CLEAR);
// lcd_goto_row_col(1,0);
//
// for(i=0;i<3;i++)
// {
// sang_led_begin();
// }
//
// //-----------------------------
// lcd_command(_LCD_CLEAR);
// lcd_goto_row_col(1,0);
// lcd_write_string(" to begin");
//
// do
// {
// }
// while(button!=4);
//
//-----------------------------
// lcd_command(_LCD_CLEAR);
// lcd_goto_row_col(1,0);
// lcd_write_string("Vin= Volt");
//
// do
// {
// }
// while(button!=5); // Exit (khong phai la 5 chay vong do<> là 5 thuc hien lenh tiep theo)
// //-----------------------------
// lcd_command(_LCD_CLEAR);
// lcd_write_string(" GOODBYE");
// lcd_goto_row_col(1,0);
// sang_led_end();
// delay_x100ms(10);
// lcd_command(_LCD_CLEAR);
// do
// {
// }
// }
while(1)
// LEDSANGDAN();
// sanghaiben();
// if (RB4==0)
if (RB0==0)
while (RB0==0) {}
volt();
volt_meter();
// if (RB5==0) SANGDUOINLED();
// if (RB6==0) {}
RBIF=0;