BASIC4MCU | 8051/PIC | DT-516 강좌 | DT516-100.c 4비트 CLCD
페이지 정보
작성자 키트 작성일2017-08-23 16:03 조회1,237회 댓글0건첨부파일
본문
//-------------------------------------------------------------
// 82G516 E/V BOARD ( DT-516 )
//-------------------------------------------------------------
// XTAL : 22.1184Hz
//-------------------------------------------------------------
// filename: DT516-100.c
// LCD 4비트 display
//-------------------------------------------------------------
#include
#include
//
#define U_C unsigned char
#define U_I unsigned int
#define U_L unsigned long
//
#define I_C idata char
#define I_I idata int
#define I_L idata long
#define I_F idata float
#define IU_C idata unsigned char
#define IU_I idata unsigned int
#define IU_L idata unsigned long
//
#define X_C xdata char
#define X_I xdata int
#define X_L xdata long
#define X_F xdata float
#define XU_C xdata unsigned char
#define XU_I xdata unsigned int
#define XU_L xdata unsigned long
//
#define C_C code char
#define C_I code int
#define C_L code long
#define C_F code float
#define CU_C code unsigned char
#define CU_I code unsigned int
#define CU_L code unsigned long
//
#define lcd_RS P14
#define lcd_E P15
#define lcd_Out P1
//
U_C str1[]= "DT-516 CLCD Test";
U_C str2[]= " basic4mcu.com ";
//
void delay_us(unsigned int d){ // 실제보다 조금 더 긴시간
unsigned int i;
for(i=0;i;i++);>
}
//
void delay_ms(unsigned int d){
unsigned int i,j;
for(i=0;i;i++){>
}
//
void lcdData(U_C d){
lcd_Out=(d>>0x04)|0x10; lcd_E=1; delay_us(1); lcd_E=0; delay_us(1);
lcd_Out=(d &0x0F)|0x10; lcd_E=1; delay_us(1); lcd_E=0; delay_us(50);
}
//
void lcdCmd(U_C c){
lcd_Out=c>>0x04; lcd_E=1; delay_us(1); lcd_E=0; delay_us(1);
lcd_Out=c &0x0F; lcd_E=1; delay_us(1); lcd_E=0; delay_ms(5);
}
//
void lcd_init(void){
delay_ms(50); lcdCmd(0x28); lcdCmd(0x28); lcdCmd(0x28); lcdCmd(0x0C); lcdCmd(0x06); lcdCmd(0x01);
}
//
void lcd_puts(U_C *str){ while(*str)lcdData(*str++); }
//
void main(void){
U_C buf[30];
U_I i=2,j=1;
P1=0; lcd_init();
while(1){
lcdCmd(0x80); lcd_puts(str1);
for(i=2;i<10;i++){
for(j=1;j<10;j++){
sprintf(buf,"gugudan : %dx%d=%d ",i,j,i*j); lcdCmd(0xC0); lcd_puts(buf);
delay_ms(1000);
}
}
}
}
//-------------------------------------------------------------
댓글 0
조회수 1,237등록된 댓글이 없습니다.