FC2カウンター

現在の訪問者数

現在の閲覧者数:

カレンダー

09 | 2017/10 | 11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -

プロフィール

剣菱P

Author:剣菱P
剣菱Pと申します。
性別:男
年齢:27
二兎を追って一兎も得られないタイプ

マイコンやプログラミング、ニコニコ動画、雑記等
方向性は見えずとも、ちょっとずつ更新していく予定です!

リンクフリーです。
こんなブログでよかったらよろしくお願いしま~す。

公開メール kenbishiP@gmail.com

検索フォーム

最新記事

最新コメント

カテゴリ

メールフォーム

名前:
メール:
件名:
本文:

月別アーカイブ

最新トラックバック

リンク

ブロとも一覧

ブロとも申請フォーム

ランキング

ランキング参加中です。気が向いたらクリックしてあげてください。


にほんブログ村 その他趣味ブログへ
にほんブログ村 その他趣味ブログ 趣味の工作へ

スポンサーサイト


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PICの悲しみ PIC LCD2»

コメント

コメントの投稿













管理者にだけ表示を許可する

PIC 液晶制御関数ちょっと追加


自作関数を少しだけ追加しました、
どれくらい少しかというと、本当に少しです。追加したことに気がつかないくらい少しです。

新しく追加したのは、任意の場所にカーソルを移動させる関数です。
lcd_v1-1.txt

↑このファイルをlcd.hというヘッダファイルとして保存し、参照元のCファイルと同じところに置き、
プロジェクトに組み込んでください。

lcd5.jpg
まず、液晶の文字を表示する部分にはそれぞれアドレスが振られているということはやりました。
カーソルを動かすためのコマンドは
 DDRAM Address(7bit)です。

液晶の1行目一番左端はアドレス0x00 つまり00000000
このアドレスは正確には7ビット分が有効なので00000000の赤の部分のみが有効です。
8ビット目はコマンドの1の部分なので、アドレス0x00に移動するためのコマンドは
0000000 つまり0x80

二行目の1番左端に移動したければ、アドレスが0x40 つまり 01000000なので
コマンドにすると 1000000 つまり 0xC0となります。

各行の先頭アドレスさえわかれば、何文字目かは先頭のアドレスに文字数分だけ数字を足してあげればよいということです。

一行目の左から3文字目に移動したいなら(ちなみに一番端が一文字目)
一行目の先頭アドレス+3-1 = 0x00+0x02 = 0x02

二行目の左から5文字目
0x40 + 5 - 1 = 0x40+0x04 =0x44

それぞれをコマンドとするならば
0x80 + 0x02 = 0x82
0x80 + 0x44 = 0xC4

ヘッダに追加した関数


//********** LCDの描画位置を指定する関数 ****************//
void lcd_pos(char line,char col){                                       
   
    if(line == 1)                                                //lineが1なら
        lcd_cmd(0x80 + col-1);                                        //一行目の先頭アドレスにcolを足した位置に移動
    else if(line == 2)                                            //2の時も同様に
        lcd_cmd(0xc0 + col-1);

    DelayUs(50);
}



この関数の使い方はlineに何行目か、colに何文字目かを指定してやるだけです。
2行、3文字目なら
lcd_pos(2,3);とすればそこに移動します。

これを使って前回一行目にしか表示しなかった数字を二行目にも表示させました。
一行目と2行目に交互に表示させてみることにしました。


#include<pic.h>
#include"lcd.h"
#include"delay.h"
__CONFIG(HS & WDTDIS & PWRTDIS & UNPROTECT);


void main(){
    char i,c;
    TRISA = 0x00;
    TRISB = 0x00;
    PORTA = 0x00;
    PORTB = 0x00;


    lcd_init();

    while(1){
        lcd_clear();
        DelayMs(2);

        for(i=0;i<16;i++){
            lcd_pos(i%2+1,i+1);
            lcd_data(i+'0');
            DelayMs(250);
        }       
    }
}



行番号としてi%2+1を指定します。 %は商のあまりをさす演算子です。
10%3=1
2%2=0  といった感じであまりを出します。
つまりiという0~15まで変化する数字を2で割ったあまりは必ず0か1にしかなりません。
これに1を加えてあげれば、1と2を交互に得られます。
さらに、iは0から始まっているので、1から始まる文字番号に合わせるため、i+1にしてます。
これで
lcd_pos(i%2+1,i+1);はループを回るたびに行を交互に移動し、文字も一文字ずつ増えていきます。

実行結果を見て見ます
PIC LCD2

[広告] VPS
きちんと交互に表示されていますね。


クリックお願いします。
スポンサーサイト

PICの悲しみ PIC LCD2»

コメント

コメントの投稿













管理者にだけ表示を許可する


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。