View Single Post
Old 27-12-2011, 11:23 AM   #3
trinhdieuhvktqs
Đệ tử 1 túi
 
Tham gia ngày: Sep 2009
Bài gửi: 13
:
các bác test cho em dòng code LCD này với.em biên dịch thcnhf công rồi nhưng khi mô phỏng lại chẳng có tín hiệu j cả
#include<p33fj12gp202.h>
_FOSCSEL(FNOSC_FRC)
_FOSC(FCKSM_CSDCMD&POSCMD_NONE)
_FWDT(FWDTEN_OFF)




// DINH NGHIA CAC CHAN
#define LCD_EN _LATB2
#define LCD_RS _LATB0
#define LCD_RW _LATB1
#define LED _LATB15

// DINH NGHIA CAC CHAN DU LIEU LCD
//#define LCD_DAT LATB
//#define LCD_TRIS TRISB
#define LCD_D4 _LATB6
#define LCD_D5 _LATB7
#define LCD_D6 _LATB8
#define LCD_D7 _LATB9
// DINH NGHIA CAC CHE DO HOAT DONG CUA LCD
#define LCD_4b2l 0x28
#define LCD_clear 0x01
#define LCD_home 0x02 // tro ve dau dong
#define LCD_normal 0x06 // che do nhap du lieu binh thuong
#define LCD_normal_s 0x07 // che do nhap du lieu binh thuong, dich man hinh
#define LCD_off 0x08 // tat man hinh
#define LCD_on 0x0C // bat man hinh
#define LCD_on_crsr 0x0E // bat man hinh va con tro
#define LCD_on_blink 0x0F //........nhap nhay
#define LCD_homel1 0x80 //tro ve dau dong 1
#define LCD_homel2 0xc0 // tro ve dau dong 2
#define LCD_mv 0x10 // dich con tro sang phai

// cac chuong trinh con

void Init_PORTS(void);
void LCD_data(unsigned char dat);
void LCD_cmd(unsigned char cmd);
void Init_LCD(void);
void Delay1ms(void);
void Delay1s(void);

// khai bao hang so
const unsigned char __attribute__ ((space(psv),address (0x0400)))
Chuoi1[]="DS-PIC\0";
unsigned int idx,flag;



void Init_PORTS(void)
{
//LCD_DAT &= 0xFFF0; //Xoa cac bit chot du lieu LCD
//LCD_TRIS = 0xFFF0; //Cac chan du lieu LCD la ngo ra
LATB=0X0000;
LCD_D4 = 0; //Xoa cac bit chot du lieu LCD
_TRISB6 = 0; //Cac chan du lieu LCD la ngo ra
LCD_D5 = 0;
_TRISB7 = 0;
LCD_D6 = 0;
_TRISB8 = 0;
LCD_D7 = 0;
_TRISB9 = 0;
LCD_EN = 0;
_TRISB2 = 0; //RE8 la ngo ra, noi vao Enable cua LCD
LCD_RW = 0;
_TRISB1 = 0; //RD0 la ngo ra, noi vao R/W cua LCD
LCD_RS = 0;
_TRISB0 = 0; _TRISB15 = 0; //RD1 la ngo ra, noi vao Reset cua LCD

}


//Chuong trinh con xuat lenh o che do 4 bit

void LCD_cmd(volatile unsigned char cmd) {
volatile unsigned i;
LCD_RW = 0;
LCD_RS = 0; //Dat che do xuat du lieu

//Xuat 4 bit cao
LCD_D7 = (cmd>>7)&1;
LCD_D6= (cmd>>6)&1;
LCD_D5 = (cmd>>5)&1;
LCD_D4 = (cmd>>4)&1;

LCD_EN = 1; //Tao xung Enable
for (i = 0; i < 5; i++); //keo dai toi thieu 1 us
LCD_EN = 0;

//Xuat 4 bit thap
LCD_D7 = (cmd>>3)&1;
LCD_D6 = (cmd>>2)&1;
LCD_D5 = (cmd>>1)&1;
LCD_D4 = (cmd)&1;

LCD_EN = 1; //Tao xung Enable
for (i = 0; i < 5; i++); //keo dai toi thieu 1 us
LCD_EN = 0;


}
//Chuong trinh con xuat du lieu o che do 4 bit
//------------------------------------------------------------------------------


void LCD_data(volatile unsigned char dat) {

volatile unsigned i;
LCD_RW = 0;
LCD_RS = 1; //Dat che do xuat du lieu

//Xuat 4 bit cao
LCD_D7 = (dat>>7)&1;
LCD_D6= (dat>>6)&1;
LCD_D5 = (dat>>5)&1;
LCD_D4 = (dat>>4)&1;

LCD_EN = 1; //Tao xung Enable
for (i = 0; i < 5; i++); //keo dai toi thieu 1 us
LCD_EN = 0;

//Xuat 4 bit thap
LCD_D7 = (dat>>3)&1;
LCD_D6 = (dat>>2)&1;
LCD_D5 = (dat>>1)&1;
LCD_D4 = (dat)&1;

LCD_EN = 1; //Tao xung Enable
for (i = 0; i < 5; i++); //keo dai toi thieu 1 us
LCD_EN = 0;
}

void Init_LCD(void)
{

LCD_cmd(LCD_4b2l); //Dat che do giao tiep 4-bit, man hinh 2 dong
Delay1ms();
LCD_cmd(LCD_off); //Tat man hinh
Delay1ms();
LCD_cmd(LCD_normal); //Che do nhap du lieu binh thuong
Delay1ms();
LCD_cmd(LCD_on_blink); //Bat man hinh, hien con tro nhap nhay
Delay1ms();
LCD_cmd(LCD_clear); //Xoa man hinh
Delay1ms();
}

void Delay1ms(void)
{
int i,j;
for (i=0; i<10; i++)
for (j=0; j<10; j++);
}

void Delay1s(void)
{
int i,j,k;
for (i=0; i<200; i++)
for (j=0; j<200; j++)
for (k=0; k<10; k++);
}

//Chuong trinh chinh
int main(void) {

/*
PLLFBD=41; // M=43
CLKDIVbits.PLLPOST=0; // N1=2
CLKDIVbits.PLLPRE=0; // N2=2
OSCTUN=0;
RCONbits.SWDTEN=0; // Disable Watch Dog Timer

__builtin_write_OSCCONH(0x01);
__builtin_write_OSCCONL(0x01);
while (OSCCONbits.COSC != 0b001);

// Wait for PLL to lock
while(OSCCONbits.LOCK!=1) {};
*/
Init_PORTS(); //Khoi tao cac cong I/O
Delay1ms();
Init_LCD();
Delay1ms();

// while (Chuoi1[idx])// { //Xuat chuoi ra dong thu nhat cua LCD
// LCD_data('a');
// Delay1ms();
// };
// LCD_cmd(LCD_homel2);
// Delay1ms();
// idx = 0;
// while (Chuoi1[idx]) //{ //Xuat chuoi ra dong thu hai cua LCD
// LCD_data('b');
// Delay1ms();
// };
LED =0;

LCD_data('a');
Delay1s();
while (1) {


// Delay1s();
// LED =1;
// Delay1s();

// Delay1ms();

};
}
File Kèm Theo
File Type: rar lcd.rar (64.8 KB, 85 lần tải)
File Type: rar mach mo phong.rar (14.4 KB, 49 lần tải)

thay đổi nội dung bởi: trinhdieuhvktqs, 28-12-2011 lúc 09:59 AM.
trinhdieuhvktqs vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn