全体表示

[ リスト | 詳細 ]

記事検索
検索

全26ページ

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]

[ 次のページ ]

LCD(5)

これで、一応コンパイルエラーはつぶしました♪
//sample22_01.c
#pragma sfr
/*  PIN接続状況
マイコン側    LCD(SC1602液晶ディスプレー)側
  P10      DB0
  P11            DB1
  P12            DB2
  P13            DB3
  p14            DB4
  p15            DB5
  p16            DB6
  p17            DB7

  P30            E
  P31            R/W
  P32            RS
*/

//インターフェース
#define LCD_INSTRUCTION 0
#define LCD_DATA 4
#define LCD_WRITE 0
#define LCD_READ 2
#define LCD_ENABLE 1
#define LCD_CONTROL (LCD_INSTRUCTION + LCD_WRITE)
#define LCD_STATUS (LCD_INSTRUCTION + LCD_READ)
#define LCD_PUT (LCD_DATA + LCD_WRITE)
#define LCD_GET (LCD_DATA + LCD_READ)

//LCDコントロール制御
#define LCD_CLEAR 1
#define LCD_HOME 2
#define LCD_MODE 4//エントリモード
#define LCD_DISPLAY 8
#define LCD_CURSOR 16//カーソルシフト
#define LCD_FUNCTION 32
#define LCD_CGRAM 64//アドレス
#define LCD_DDRAM 128

//LCD制御 OP
#define LCD_CUR_INC 2//アドレス+1
#define LCD_CUR_DEC 0//アドレスー1
#define LCD_WITHSHIFT 1//表示シス
#define LCD_OFF 0 //表示OFF
#define LCD_ON 4//表示ON
#define LCD_DISPCUR 2//クリア
#define LCD_BLINK 1//ブリンク
#define LCD_8BIT 16
#define LCD_4BIT 0
#define LCD_2LINE 8//2行
#define LCD_1LINE 0//1行
#define LCD_CHAR10 4//10ドット
#define LCD_CHAR7 0//7ドッド

void lcd_init(void);
void lcd_puts(char *);
void lcd_putc(char);
void lcd_control(unsigned char);
void lcd_clear(void);
void lcd_home(void);
void lcd_line2(void);
void lcd_locate(char x,char y);
static void wait(int cnt);


void lcd_init(void){ //初期化
  PM1 = 0x00; //PM1.0-PM1.7を出力に設定
  PM3 = 0x00;
  wait(15);
  lcd_control(LCD_FUNCTION + LCD_8BIT);
  wait(5);
  lcd_control(LCD_FUNCTION + LCD_8BIT);
  wait(5);
  lcd_control(LCD_FUNCTION + LCD_8BIT + LCD_2LINE + LCD_CHAR7);
  lcd_control(LCD_DISPLAY + LCD_OFF);
  lcd_clear();
  lcd_home();
  
  lcd_control(LCD_DISPLAY + LCD_ON + LCD_DISPCUR + LCD_BLINK);
  lcd_control(LCD_MODE + LCD_CUR_INC);
}

//wait
static void wait(int cnt){
  int m,n;
  for(m=0;m<cnt;m++){
    for(n=0;n<5000;n++){};
  }
}



//表示clear
void lcd_clear(void){
lcd_control(LCD_CLEAR);
wait(3);
}

//carsor home
void lcd_home(void){
  lcd_control(LCD_HOME);
  wait(3);
}


//line 2
void lcd_line2(void){
  lcd_control(LCD_DDRAM + 0x40);
  wait(3);
}

//lcd 文字列表示
void lcd_puts(char *msg){
  char *p;
  for(p=msg; *p != '\0';p++){
  lcd_putc(*p);
  }
}

//lcd 表示位置(locate)
void lcd_locate(char x, char y){
  char i;
  lcd_putc(0x02);
  wait(10);
  for(i=0;i<(y*40)+x;i++){
    lcd_putc(0x14);
  }
}

//lcd 1文字表示          
void lcd_putc(char ch){
  P3 = LCD_PUT;
  P3 = LCD_PUT + LCD_ENABLE;
  P1 = ch;
  P3 = LCD_PUT;
 wait(1);
}
//lcd コマンド制御                 
void lcd_control(unsigned char cmd){
  P3 = LCD_CONTROL;
  P3 = LCD_CONTROL + LCD_ENABLE;
  P1 = cmd;
  P3 = LCD_CONTROL;
  wait(1);
}


void main(){ 
  lcd_init();
  lcd_home();
  lcd_puts("This is test");
  lcd_line2();
  lcd_locate(5,2);
  lcd_puts("line 2"); 
}


開く トラックバック(17)

LCD(4)

まだまだ、完成は遠いですが、、、。
//sample22_01.c
#pragma sfr
/*  PIN接続状況
マイコン側    LCD側
  P10      DB0
  P11            DB1
  P12            DB2
  P13            DB3
  p14            DB4
  p15            DB5
  p16            DB6
  p17            DB7

  P30            E
  P31            R/W
  P32            RS
*/

//インターフェース
#define LCD_INSTRUCTION 0
#define LCD_WRITE 0
#define LCD_READ 2
#define LCD_ENABLE 1
#define LCD_CONTROL (LCD_INSTRUCTION + LCD_WRITE)
#define LCD_STATUS (LCD_INSTRUCTION + LCD_READ)
#define LCD_PUT (LCD_DATA + LCD_WRITE)
#define LCD_GET (LCD_DATA + LCD_READ)

//LCDコントロール制御
#define LCD_CLEAR 1
#define LCD_HOME 2
#define LCD_MODE 4//エントリモード
#define LCD_DISPLAY 8
#define LCD_CURSOR 16//カーソルシフト
#define LCD_FUNCTION 32
#define LCD_CGRAM 64//アドレス
#define LCD_DDRAM 128

//LCD制御 OP
#define LCD_CUR_INC 2//アドレス+1
#define LCD_CUR_DEC 0//アドレスー1
#define LCD_WITHSHIFT 1//表示シス
#define LCD_OFF 0 //表示OFF
#define LCD_ON 4//表示ON
#define LCD_DISPCUR 2//クリア
#define LCD_BLINK 1//ブリンク
#define LCD_8BIT 16
#define LCD_4BIT 0
#define LCD_2LINE 8//2行
#define LCD_1LINE 0//1行
#define LCD_CHAR10 4//10ドット
#define LCD_CHAR7 0//7ドッド

void lcd_init(void);
void lcd_puts(char *);
void lcd_putc(char);
void lcd_control(unsigned char);
void lcd_clear(void);
void lcd_home(void);
void lcd_line2(void);
void lcd_locate(char x,char y);
static void wait(int cnt);


void lcd_init(void){ //初期化
  PM1 = 0x00; //PM1.0-PM1.7を出力に設定
  PM3 = 0x00;
  wait(15);
  lcd_control(LCD_FUNCTION + LCD_8BIT);
  wait(5);
  lcd_control(LCD_FUNCTION + LCD_8BIT);
  wait(5);
  lcd_control(LCD_FUNCTION + LCD_8BIT + LCD_2LINE + LCD_CHAR7);
  lcd_control(LCD_DISPLAY + LCD_OFF);
  lcd_clear();
  lcd_home();
  
  lcd_control(LCD_DISPLAY + LCD_ON + LCD_DISPCUR + LCD_BLINK);
  lcd_control(LCD_MODE + LCD_CUR_INC);
}

//wait
static void wait(int cnt){
  int m,n;
  for(m=0;m<cnt;m++){
    for(n=0;n<5000;n++){};
  }
}



//表示clear
void lcd_clear(void){
lcd_control(LCD_CLEAR);
wait(3);
}

//carsor home
void lcd_home(void){
  lcd_control(LCD_HOME);
  wait(3);
}


//line 2
void lcd_line2(void){
  lcd_contol(LCD_DDRAM + 0x40);
  wait(3);
}

//lcd 文字列表示
void lcd_puts(char *msg){
  char *p;
  for(p=msg; *p != '\0';p++){
  lcd_put(*p);
  }
}

//lcd 表示位置(locate)
void lcd_locate(char x, char y){
  char i;
  lcd_putc(0x02);
  wait(10);
  for(i=0;i<(y*40)+x;i++){
    lcd_putc(0x14);
  }
}

//lcd 1文字表示          
void lcd_putc(char ch){
  //P3 = LCD_PUT;
  //P3 = LCD_PUT + LCD_ENABLE;
  //P1 = ch;
  //P3 = LCD_PUT;
 wait(1);
}
//lcd コマンド制御                 
void lcd_control(unsigned char cmd){
  //P3 = LCD_CONTROL;
  //P3 = LCD_CONTROL + LCD_ENABLE;
  //P1 = cmd;
  //P3 = LCD_CONTROL;
  wait(1);
}


void main(){ 
  //lcd_init();
  //lcd_home():
  //lcd_puts("This is test");
  //lcd_line2();
  //lcd_locate(5,2);
  //lcd_puts("line 2"); 
}


LCD(3)

もうあと少し??
//sample22_01.c
#pragma sfr

//インターフェース
#define LCD_INSTRUCTION 0
#define LCD_WRITE 0
#define LCD_READ 2
#define LCD_ENABLE 1
#define LCD_CONTROL (LCD_INSTRUCTION + LCD_WRITE)
#define LCD_STATUS (LCD_INSTRUCTION + LCD_READ)
#define LCD_PUT (LCD_DATA + LCD_WRITE)
#define LCD_GET (LCD_DATA + LCD_READ)

//LCDコントロール制御
#define LCD_CLEAR 1
#define LCD_HOME 2
#define LCD_MODE 4//エントリモード
#define LCD_DISPLAY 8
#define LCD_CURSOR 16//カーソルシフト
#define LCD_FUNCTION 32
#define LCD_CGRAM 64//アドレス
#define LCD_DDRAM 128

//LCD制御 OP
#define LCD_CUR_INC 2//アドレス+1
#define LCD_CUR_DEC 0//アドレスー1
#define LCD_WITHSHIFT 1//表示シス
#define LCD_OFF 0 //表示OFF
#define LCD_ON 4//表示ON
#define LCD_DISPCUR 2//クリア
#define LCD_BLINK 1//ブリンク
#define LCD_8BIT 16
#define LCD_4BIT 0
#define LCD_2LINE 8//2行
#define LCD_1LINE 0//1行
#define LCD_CHAR10 4//10ドット
#define LCD_CHAR7 0//7ドッド

void lcd_init(void);
void lcd_puts(char *);
void lcd_putc(char);
void lcd_control(unsigned char);
void lcd_clear(void);
void lcd_home(void);
void lcd_line2(void);
static void wait(int cnt);


void lcd_init(void){ //初期化
  PM1.0 = 0;
  PM1.1 = 0;
  PM1.2 = 0;
  PM1.3 = 0;
  PM1.4 = 0;
  PM1.5 = 0;
  PM1.6 = 0;
  PM1.7 = 0;

  wait(15);
  lcd_control(LCD_FUNCTION + LCD_8BIT);
  wait(5);
  lcd_control(LCD_FUNCTION + LCD_8BIT);
  wait(5);
  lcd_control(LCD_FUNCTION + LCD_8BIT + LCD_2LINE + LCD_CHAR7);
  lcd_control(LCD_DISPLAY + LCD_OFF);
  lcd_clear();
  lcd_home();
  
  lcd_control(LCD_DISPLAY + LCD_ON + LCD_DISPCUR + LCD_BLINK);
  lcd_control(LCD_MODE + LCD_CUR_INC);
}

//wait
static void wait(int cnt){
  int m,n;
  for(m=0;m<cnt;m++){
    for(n=0;n<5000;n++){};
  }
}



//表示clear
void lcd_clear{
 lcd_control(LCD_CLEAR);
  wait(3);
}

//carsor home
void lcd_home(void){
  lcd_control(LCD_HOME);
  wait(3);
}


//line 2
void lcd_line2(void){
  lcd_contol(LCD_DDRAM + 0x40);
  wait(3);
}

//lcd 文字列表示
void lcd_puts(char *msg){
  char *p;
  for(p=msg; *p! = '\0';p++){
  lcd_put(*p);
  }
}

//lcd 1文字表示           <<<<<<<作成途中>>>>>>
void lcd_putc(char ch){

}

//lcd コマンド制御                   <<<<<<<作成途中>>>>>>
void lcd_control(unsigned char cmd){

}

void main(){
  lcd_init();
  lcd_home():
  lcd_puts("This is test");
  lcd_line2();
  lcd_puts("line 2");
}


LCD(2)

各種コントロールと制御の記述部分です


//sample22_01.c

//インターフェース
#define LCD_INSTRUCTION 0
#define LCD_WRITE 0
#define LCD_READ 2
#define LCD_ENABLE 1
#define LCD_CONTROL (LCD_INSTRUCTION + LCD_WRITE)
#define LCD_STATUS (LCD_INSTRUCTION + LCD_READ)
#define LCD_PUT (LCD_DATA + LCD_WRITE)
#define LCD_GET (LCD_DATA + LCD_READ)

//LCDコントロール制御
#define LCD_CLEAR 1
#define LCD_HOME 2
#define LCD_MODE 4//エントリモード
#define LCD_DISPLAY 8
#define LCD_CURSOR 16//カーソルシフト
#define LCD_STATUS FUNCTION 32
#define LCD_CGRAM 64//アドレス
#define LCD_DDRAM 128

//LCD制御 OP
#define LCD_CUR_INC 2//アドレス+1
#define LCD_CUR_DEC 0//アドレスー1
#define LCD_WITHSHIFT 1//表示シス
#define LCD_OFF 0 //表示OFF
#define LCD_ON 4//表示ON
#define LCD_DISPCUR 2//クリア
#define LCD_BLINK 1//ブリンク
#define LCD_8BIT 16
#define LCD_4BIT 0
#define LCD_2LINE 8//2行
#define LCD_1LINE 0//1行
#define LCD_CHAR10 4//10ドット
#define LCD_CHAR7 0//7ドッド

void lcd_init(void);
void lcd_puts(char *);
void lcd_putc(char);
void lcd_control(unsigned char);
void lcd_clear(void);
void lcd_home(void);
void lcd_line2(void);


void main(){


}


LCDの接続から(1)

まずは、LCDの接続条件です

4BIT接続と8BIT接続の2種類があるようですが
とりあえず、8BIT接続を前提にしたいと思います

と、いうことで

マイコン側  LCD側
P10      DB0
P11            DB1
P12            DB2
P13            DB3
p14            DB4
p15            DB5
p16            DB6
p17            DB7

P30            E
P31            R/W
P32            RS

以上の接続で行きたいと思います。


まずは、インターフェースの#define定義
//sample22_01.c

//インターフェース
#define LCD_INSTRUCTION 0
#define LCD_WRITE 0
#define LCD_READ 2
#define LCD_ENABLE 1
#define LCD_CONTROL (LCD_INSTRUCTION + LCD_WRITE)
#define LCD_STATUS (LCD_INSTRUCTION + LCD_READ)
#define LCD_PUT (LCD_DATA + LCD_WRITE)
#define LCD_GET (LCD_DATA + LCD_READ)


void main(){


}

全26ページ

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]

[ 次のページ ]


.


プライバシー -  利用規約 -  メディアステートメント -  ガイドライン -  順守事項 -  ご意見・ご要望 -  ヘルプ・お問い合わせ

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.

みんなの更新記事