?? lcd_zafer.c
字號:
/* for 4x20 LCD
* Filename : lcd.c
* Hardware : Controller -> all pic series
*/
/**** LCD pinleri ****/
#define LCD_en PIN_D2 //lcdyi yetkilendirmek icin
#define LCD_rs PIN_D3 //konut yada kod yapmak icin
#define LCD_D7 PIN_D7 //lcd veri yolu pin tasarrufu i鏸n 4 bit kulland齥
#define LCD_D6 PIN_D6
#define LCD_D5 PIN_D5
#define LCD_D4 PIN_D4
/*********************/
//LCD_rw ucu 0'a bagli
#define lcd_line_bir 0x80 // LCD RAM adres 1. satir
#define lcd_line_iki 0xC0 // LCD RAM adres 2. satir
#define lcd_line_uc 0x94 // LCD RAM adres 3. satir
#define lcd_line_dort 0xD4 // LCD RAM adres 4. satir
/***************************************************
* Prototype(s) *
***************************************************/
void LCD_yetkilendirme(); // LCD yetkilendirme
void LCD_komut(unsigned char komut); // LCD komut
void LCD_putc(unsigned char ascii); // LCD tek karakter yazma
void LCD_string_yaz(unsigned char *lcd_string); // LCD string yazma
void LCD_init();
void LCD_goto_xy(unsigned char x,unsigned char y);
/***************************************************
* Sources *
***************************************************/
//===================================================
void LCD_yetkilendirme()
//===================================================
{
output_bit( LCD_en , 0); /* Clear bit EN */ //lcd yi bir kere yetki,lendirmek i鏸n
delay_ms(2);
output_bit( LCD_en , 1); /* Set bit EN */
}
//===================================================
void LCD_komut(unsigned char komut) //lcdye komut g鰊der
//===================================================
{
unsigned char nibble;
output_bit( LCD_rs , 0); /* Clear bit RS */
nibble = (komut>>4) & 0x0F; //ilk 4 bitini g鰊derdik
output_bit(LCD_D4 , (nibble & 0x01) ); //pinlere tek tek g鰊derdik. buton tek seferde g鰊dermedi餴 i鏸n
output_bit(LCD_D5 , (nibble>>1 & 0x01) );
output_bit(LCD_D6 , (nibble>>2 & 0x01) );
output_bit(LCD_D7 , (nibble>>3 & 0x01) );
LCD_yetkilendirme();
nibble = komut & 0x0F;
output_bit(LCD_D4 , (nibble & 0x01) );
output_bit(LCD_D5 , (nibble>>1 & 0x01) );
output_bit(LCD_D6 , (nibble>>2 & 0x01) );
output_bit(LCD_D7 , (nibble>>3 & 0x01) );
LCD_yetkilendirme();
delay_ms(2);
}
//===================================================
void LCD_putc(unsigned char ascii) //karakter g鰊derir. tek karakter
//===================================================
{
unsigned char nibble;
output_bit( LCD_rs , 1); /* Set bit RS *///veri g鰊derdi餴n i鏸n 1 oldu.
nibble = (ascii>>4) & 0x0F;//0x0f ile maskeliyor.
output_bit(LCD_D4 , (nibble & 0x01) ); //pinlere tek tek g鰊derdik. buton tek seferde g鰊dermedi餴 i鏸n
output_bit(LCD_D5 , (nibble>>1 & 0x01) );
output_bit(LCD_D6 , (nibble>>2 & 0x01) );
output_bit(LCD_D7 , (nibble>>3 & 0x01) );
LCD_yetkilendirme();
nibble = ascii & 0x0F;
output_bit(LCD_D4 , (nibble & 0x01) );
output_bit(LCD_D5 , (nibble>>1 & 0x01) );
output_bit(LCD_D6 , (nibble>>2 & 0x01) );
output_bit(LCD_D7 , (nibble>>3 & 0x01) );
LCD_yetkilendirme();
delay_ms(2);
}
//===================================================
void LCD_string_yaz(unsigned char *lcd_string)
//===================================================
{
while (*lcd_string)
{
LCD_putc(*lcd_string++);
}
}
void LCD_init()
{
output_bit( LCD_en , 1); /* Set bit EN */
output_bit( LCD_rs , 0); /* CLr bit RS */
LCD_komut(0x33);
LCD_komut(0x32);
LCD_komut(0x28);
LCD_komut(0x0C);
LCD_komut(0x06);
LCD_komut(0x01); /* Clear */
delay_ms(100);
}
//===================================================
void LCD_goto_xy(unsigned char x, unsigned char y) //lcdye istedi餴miz yere veri yazmam齴
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -