2014年3月13日 星期四

驅動lcd qc1602a 筆記

 經過一番波折,和參考網路上許多的範例代碼,終於把驅動弄出來了,如果第一行都是黑塊,可能是程式沒有初始化成功,也有可能是線沒接好,兩行黑塊,可以把對比度那個接腳接上1k歐姆電阻試試看,如果初始化成功,但是印出來的卻是亂碼,有可能是連接線接觸不良,以上三種,都被我遇到了...,結論是線要接好,我的線一直接觸不良,耗掉很多時間在搞莫名其妙的問題,在此筆記一下





#include<reg51.h>
#include<stdio.h>
#include<string.h>

#define port P0
sbit rs=P2^2;
sbit rw=P2^1;
sbit en=P2^0;     
void delay(unsigned int ms)
{
    unsigned int i,k;
    for(i=0;i<ms;i++)
    {
          k=123;
         while(k--);
    }
}

void write_cmd(unsigned char a)
{
    rs=0;
    rw=0;
    port=a;
    en=1;
    delay(5);
    en=0;
}

void write_data(unsigned char a)
{
     rs=1;
     rw=0;
     port=a;
     en=1;
     delay(5);
     en=0;
}

void lcd_ini()
{
     rs=0;
     write_cmd(0x01);
     write_cmd(0x38);
     write_cmd(0x0F);
     write_cmd(0x06);
}

void main()
{
    unsigned char str[]="hello miku!";
    unsigned int i;
    lcd_ini();
    write_cmd(0X00);//設定 dd ram的位址
    i=0;
    while(str[i])
    {
        write_data(str[i]);
        i++;
    }
     while(1);
}

沒有留言:

張貼留言