久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標(biāo)題: LCD240*64 T6963C單片機(jī)驅(qū)動(dòng)程序+電路圖+實(shí)物制作 [打印本頁]

作者: 51黑ren    時(shí)間: 2015-12-23 01:52
標(biāo)題: LCD240*64 T6963C單片機(jī)驅(qū)動(dòng)程序+電路圖+實(shí)物制作
倒班了,能有點(diǎn)在家時(shí)間了沒事鼓弄著玩!上傳到51黑電子論壇分享給需要的朋友們。


LCD240*64 T6963C電路圖和單片機(jī)連接


這是做出來的實(shí)物圖



下面是LCD240*128液晶屏幕T6963C驅(qū)動(dòng)芯片的程序源代碼:
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define nop() _nop_();

sbit ce=P1^0;           //片選
sbit cd=P1^3;           //命令或數(shù)據(jù)
sbit rd=P1^4;           //讀
sbit wr=P1^5;           //寫
sbit rst=P1^6;           //復(fù)位
//sbit sta0=P2^0;    //測(cè)執(zhí)行命令忙
//sbit sta1=P2^1;    //測(cè)讀寫數(shù)據(jù)忙
//sbit sta2=P2^3;    //測(cè)連續(xù)寫忙
uint text_size,graphic_size;                        //定義文本區(qū)和圖形區(qū)寬度
uint text_startaddr,graphic_startaddr;              //文本和圖形土起始位
uint text_startaddr_l,text_startaddr_h;             //定義文本區(qū)起始高位低位置
uint graphic_startaddr_l,graphic_startaddr_h;       //定義圖形區(qū)首地址
uint *p;                                            //圖片數(shù)據(jù)指針

uchar code cgtab[]={
//-- 我 --
      0x04,0x0E,0x78,0x08,0x08,0xFF,0x08,0x08,
      0x0A,0x0C,0x18,0x68,0x09,0x0A,0x28,0x10,
      0x80,0xA0,0x90,0x90,0x84,0xFE,0x80,0x90,
      0x90,0x60,0x40,0xA0,0x20,0x14,0x14,0x0C,
//-- 愛 --
      0x00,0x3F,0x11,0x09,0x7F,0x42,0x82,0x7F,
      0x04,0x07,0x0A,0x09,0x10,0x11,0x22,0x0C,
      0x78,0x80,0x10,0x20,0xFE,0x02,0x04,0xF8,
      0x00,0xF0,0x20,0x40,0x80,0x60,0x1C,0x08,
//-- 家 --
      0x02,0x01,0x7F,0x40,0x80,0x3F,0x04,0x1A,
      0x63,0x05,0x19,0x63,0x05,0x19,0x65,0x02,
      0x00,0x00,0xFE,0x02,0x04,0xF8,0x00,0x10,
      0x30,0x40,0x80,0x40,0x30,0x0E,0x04,0x00,
//-- 希 --
      0x08,0x06,0x01,0x06,0x3A,0x02,0xFF,0x04,
      0x08,0x1F,0x28,0xC8,0x08,0x08,0x00,0x00,
      0x30,0xC0,0x00,0xC0,0x38,0x00,0xFE,0x80,
      0x88,0xFC,0x88,0x88,0xA8,0x90,0x80,0x80,
//-- 望 --
      0x10,0x0A,0xFF,0x20,0x20,0x26,0x38,0x20,
      0x00,0x3F,0x01,0x1F,0x01,0x01,0xFF,0x00,
      0x04,0x7E,0x44,0x7C,0x44,0x7C,0x44,0x8C,
      0x00,0xF8,0x00,0xF0,0x00,0x04,0xFE,0x00,
//-- 和 --
      0x02,0x07,0x78,0x08,0x0A,0xFF,0x08,0x18,
      0x1C,0x2A,0x2A,0x48,0x88,0x08,0x08,0x08,
      0x00,0x00,0x00,0x04,0xFE,0x84,0x84,0x84,
      0x84,0x84,0x84,0x84,0xFC,0x84,0x00,0x00,
//-- 睦 --
      0x08,0x7C,0x4B,0x48,0x48,0x78,0x4F,0x49,
      0x4A,0x7C,0x4B,0x48,0x48,0x78,0x4F,0x00,
      0x40,0x48,0xFC,0x40,0x40,0x44,0xFE,0x10,
      0x4C,0x44,0xF8,0x40,0x40,0x44,0xFE,0x00,
//-- 開 --
      0x00,0x7F,0x08,0x08,0x08,0x08,0x08,0xFF,
      0x08,0x08,0x08,0x08,0x10,0x10,0x20,0x40,
      0x08,0xFC,0x20,0x20,0x20,0x20,0x24,0xFE,
      0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
//-- 心 --
      0x02,0x01,0x00,0x00,0x08,0x08,0x28,0x28,
      0x28,0x48,0x88,0x08,0x08,0x08,0x07,0x00,
      0x00,0x00,0x80,0xC0,0x80,0x00,0x08,0x04,
      0x02,0x02,0x02,0x00,0x10,0x10,0xF0,0x00,
//-- 幸 --
      0x01,0x01,0x3F,0x01,0x01,0xFF,0x08,0x04,
      0x3F,0x01,0x01,0x7F,0x01,0x01,0x01,0x01,
      0x00,0x10,0xF8,0x00,0x04,0xFE,0x20,0x50,
      0xF8,0x00,0x08,0xFC,0x00,0x00,0x00,0x00,
//-- 福 --
      0x20,0x17,0x10,0x03,0xFA,0x0A,0x13,0x38,
      0x57,0x94,0x14,0x17,0x14,0x14,0x17,0x14,
      0x08,0xFC,0x00,0xF8,0x08,0x08,0xF8,0x04,
      0xFE,0x44,0x44,0xFC,0x44,0x44,0xFC,0x04,                                                              
//-- 每 --
      0x10,0x10,0x1F,0x20,0x5F,0x12,0x11,0x10,
      0xFF,0x12,0x21,0x20,0x3F,0x00,0x00,0x00,
      0x00,0x08,0xFC,0x10,0xF8,0x10,0x10,0x14,
      0xFE,0x10,0x10,0x10,0xF8,0x20,0xA0,0x40,
//-- 一 --
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x04,0xFE,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
//-- 天 --
      0x00,0x7F,0x01,0x01,0x01,0x01,0xFF,0x01,
      0x02,0x02,0x04,0x04,0x08,0x10,0x20,0xC0,
      0x08,0xFC,0x00,0x00,0x00,0x04,0xFE,0x00,
      0x80,0x80,0x40,0x40,0x20,0x10,0x0E,0x04,
//-- 。 --
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x3C,0x66,0x66,0x66,0x3C,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

};                 

/*********************延時(shí)函數(shù)************************************/
void delay(uint a)
{
        uchar b;
//        uint c;
        for( ;a>0;a--)
         for(b=110;b>0;b--);
}

/*******************寫命令*****************************************/
void wrcomm(uchar comm)
{
        ce=0;                        //選中芯 片
        rd=1;                        //讀高電平無效
        cd=1;           //操作命令
        wr=0;           //寫使能
        P2=comm;         //把命令送給總線
        nop();                        //延時(shí)
        wr=1;                        //拉高寫
}

/*******************寫數(shù)據(jù)******************************************/
void wrdate(uchar date)
{
        ce=0;           //使能片選
        rd=1;                        //讀無效
        cd=0;           //操作命令
        wr=0;           //使能寫
        P2=date;                //數(shù)據(jù)送給總線
        nop();                        //延時(shí)
        wr=1;                        //拉高寫
}

/*******************測(cè)讀寫命令忙***********************************/
void check_sta01()
{
    uchar a;    //定義變量
        ce=0;           //使能片選
        wr=1;           //禁寫
        cd=1;           //命令有效
        while(1)                //循環(huán)
        {
            P2=0xff;
                rd=0;       //使能讀
                a=P2;       //讀總線狀態(tài)
                nop();      //延時(shí)
                rd=1;       //拉高讀
                if((a&0x03)==0x03)                  
                return;      //測(cè)試如果讀寫數(shù)據(jù)為不忙跳出循環(huán)
        }
}

/*******************測(cè)試連續(xù)寫忙************************************/
void check_sta03()
{
    uchar a;           //定義變量
        ce=0;                 //全能片選
        wr=1;                 //禁寫
        cd=1;                 //命令有效
        while(1)
        {
                P2=0xff;
                rd=0;                           //使能讀
                a=P2;              //讀總線狀態(tài)
                nop();             //延時(shí)
                rd=1;              //拉高讀
                if((a&0x08)==0x08)
                return;            //測(cè)試如果連續(xù)讀為不忙跳出循環(huán)
        }
}

/************************寫無參數(shù)命令************************************/
void no_parameter(uchar comm)
{
        check_sta01();              //測(cè)忙
        wrcomm(comm);            //寫命令
}

/************************寫雙字節(jié)參數(shù)命令*********************************/
void double_parameter(uint a,uint b,uchar c)
{
        check_sta01();              //測(cè)忙
        wrdate(a);               //寫第一字節(jié)參數(shù)
        check_sta01();              //測(cè)忙
        wrdate(b);               //寫第二節(jié)節(jié)參數(shù)
        check_sta01();              //測(cè)忙
        wrcomm(c);               //寫命令
}

/************************清屏全亮或全滅***********************************/
void all_display(uchar state,uchar vlue)
{
    uint i,k;                         //定義變量
        if(state==0)                     //判斷state是否為0
        {
                double_parameter(text_startaddr_l,text_startaddr_h,0x24);   //文本區(qū)低位和高位起始地址
                no_parameter(0xb0);                                         //連續(xù)寫命令
                for(i=1;i<9;i++)
                {
                    for(k=0;k<30;k++)
                        {
                           check_sta03();                                              //測(cè)忙
                           wrdate(vlue);
                        }                                              //寫入vlue值,0或1
                }
                check_sta03();                                                                                                 //測(cè)忙
                wrcomm(0xb2);                                                                                                 //關(guān)連續(xù)寫
        }
        if(state==1)                          //判斷state是否為1
        {
                double_parameter(graphic_startaddr_l,graphic_startaddr_h,0x24);    //圖開形區(qū)起始低,高位
                no_parameter(0xb0);                                                                                           //連續(xù)寫命令
                for(i=30*64;i>0;i--)                                                                                           //循環(huán)
                {
                        check_sta03();                                                                                           //測(cè)連續(xù)寫忙
                        wrdate(vlue);                                                                                           //寫入vlue值
                }
                check_sta03();                                                                                                   //測(cè)忙
                wrcomm(0xb2);                                                                                                   // 關(guān)閉連續(xù)寫
        }
}

/****************************文本方式下寫8*8字符******************************************/
void text_ascii(uchar *addr,uchar hang,uchar lie)
{
        uchar temp;                                                                        //定義變量
        uchar low;                                                                        //定義變量
        uchar high;                                                                        //定義變量
        temp=30*(hang-1)+(lie-1);                                        //每行30字符乘行加列,計(jì)算寫入起始位置
        low=temp&0x00ff;                                                        //把結(jié)果低位賦給低變量
        high=(temp>>8)&0x00ff;                                                //把結(jié)果高位給高變量
        double_parameter(low,high,0x24);                        //寫入文本起始位置
        no_parameter(0xb0);                                                        //連續(xù)寫命令
        check_sta03();                                                                //測(cè)忙
        wrdate(*addr);                                                                //寫入字符地址指針
        check_sta03();                                                                //測(cè)連續(xù)寫忙
        wrcomm(0xb2);                                                        //關(guān)閉連續(xù)寫
}

/**************************graphic下顯示圖片*********************************************/
void display(uchar *p,uchar hang,uchar lie)
{
        uchar m,n;                                                                                         //定義變量
        uint temp;                                           //定義變量
        temp=(hang-1)*30+lie;                                //計(jì)算圖形寫入地址
        graphic_startaddr_l=temp&0x00ff;                     //取出低位數(shù)據(jù)
        graphic_startaddr_h=(temp>>8)&0x00ff;
        double_parameter(graphic_startaddr_l,graphic_startaddr_h,0x24);//寫入圖形首地址
        no_parameter(0xb0);                                                                         //連續(xù)寫命令
        for(m=240;m>0;m--)                                                                         //循環(huán)行數(shù)
        {
                for(n=30;n<0;n--)                                                                 //每字節(jié)8位,列數(shù)/8
                {
                        check_sta03();                                                                 //測(cè)忙
                        wrdate(* p++);                                                                 //寫入圖形指針,然后加1地址
                }
        }
    check_sta03();                                                                                  //測(cè)忙
        wrcomm(0xb2);                                                                         //關(guān)閉連續(xù)寫
}

/************************text下顯示16*16漢字**********************************************
***************text模式下是8*8字符,每個(gè)漢字要4個(gè)字符組成*********************************/
void hz_display(uchar addr,uchar hang,uchar lie)
{
        uint temp;                                                   //定義變量
        uchar low,high;                                           //定義變量
        temp=30*2*(hang-1)+(lie-1)*2;           //把字的坐標(biāo)地址賦給變量
        low=temp&0x00ff;                                   //取出坐標(biāo)低位數(shù)值
        high=(temp>>8)&0x00ff;                           //右移8位取出坐標(biāo)高位數(shù)值
        double_parameter(low,high,0x24);   //寫入漢字坐標(biāo)
        no_parameter(0xb0);                                   //開連續(xù)寫
        check_sta03();                                           //測(cè)忙
        wrdate(addr);                                           //寫入漢字左上4分之1
        check_sta03();                                           //測(cè)試忙
        wrdate(addr+2);                                           //寫入漢字右上4分之1
        check_sta03();                                           //測(cè)忙
        wrcomm(0xb2);                                   //關(guān)閉連續(xù)寫
        delay(1);
        temp=30*2*(hang-1)+30+(lie-1)*2;           //重新計(jì)算漢字坐標(biāo)也就是寫下部份,地址加一行(8*8)
        low=temp&0x00ff;                                   //取出低位數(shù)值給變量
        high=(temp>>8)&0x00ff;                           //右移8位取出高位給變量
        double_parameter(low,high,0x24);   //寫入新起始地址(寫漢字下部份)
        no_parameter(0xb0);                                   //連續(xù)寫命令
        check_sta03();                                           //測(cè)忙
        wrdate(addr+1);                                           //寫入漢字左下4分之1
        check_sta03();                                           //測(cè)忙
        wrdate(addr+3);                                           //寫入漢字右下4分之1
        check_sta03();                                           //測(cè)忙
        wrcomm(0xb2);                                       //關(guān)閉連續(xù)寫
}

/******************************自定義漢字寫入CGRAM***************************************/
void cgram()
{
        uint m=0;                                                        //定義變量
        double_parameter(0x07,0x00,0x22);        //設(shè)定最高的1K為CGRAM  寄存器偏移設(shè)定
        double_parameter(0x00,0x3c,0x24);        //
        no_parameter(0xb0);                                    //開連續(xù)寫
        for(m=0;m<480+32;m++)                                        //循環(huán)
        {
                check_sta03();                                    //測(cè)忙
                wrdate(cgtab[m]);                                //寫入數(shù)據(jù)           
        }
        check_sta03();                                            //測(cè)忙
        wrcomm(0xb2);                                                //關(guān)閉連續(xù)寫
}

/***************************主程序*******************************************************/
void main()
{


    uchar i;                                                         //定義變量
    rst=0;                                                                 //拉低液晶屏復(fù)位腳
        nop();                                                                 //
        nop();
        nop();                                                                 //延時(shí)
        rst=1;
        text_size=graphic_size=30*64;                 //文本和圖形區(qū)寬度
        text_startaddr=0x0000;                             //文本區(qū)首地址
        text_startaddr_l=text_startaddr;           //文本首地址低位
        text_startaddr_h=text_startaddr>>8;           //文本首地址高位

        graphic_startaddr=text_startaddr+text_size;          //圖形區(qū)首地址
        graphic_startaddr_l=graphic_startaddr;                  //圖形區(qū)首地址低位
        graphic_startaddr_h=graphic_startaddr>>8;          //圖形區(qū)首地址高位

        double_parameter(text_startaddr_l,text_startaddr_h,0x40);        //寫入文本首地址
        double_parameter(30,0x00,0x41);                                                                //寫入文本區(qū)長(zhǎng)度(一行幾個(gè)字節(jié))
        double_parameter(graphic_startaddr_l,graphic_startaddr_h,0x42);           //寫入圖形區(qū)首地址
        double_parameter(30,0x00,0x43);                                                                                //寫入圖形區(qū)長(zhǎng)度(一行幾個(gè)字節(jié))
                                                                                                                                 
        no_parameter(0x80);                  //文本 或 圖形
        no_parameter(0x98);                  //圖形開文本關(guān)
        all_display(1,0xff);           //表屏全亮
        delay(5000);
        no_parameter(0xa7);                  //顯示8行光標(biāo)
        no_parameter(0x94);                  //文本開圖形關(guān)
    cgram();         
//        while(1)         
          all_display(0,0x00);
   {   
        
        for(i=1;i<16;i++)
        {

                hz_display(0x80+(i-1)*4,1,i);
                hz_display(0x80+(i-1)*4,2,i);
                hz_display(0x80+(i-1)*4,3,i);
                hz_display(0x80+(i-1)*4,4,i);  
        }  
        while(1);
   }           
}        




作者: 祝云章    時(shí)間: 2019-1-28 15:05
謝謝分享!
作者: sulon    時(shí)間: 2019-3-8 16:17
你好
   想請(qǐng)問液晶屏的第4腳V0怎么接的?接負(fù)電壓了嗎?
作者: lyMarvin    時(shí)間: 2020-7-7 16:37
謝謝分享
有機(jī)會(huì)學(xué)習(xí)學(xué)習(xí)
作者: QQQQ987    時(shí)間: 2023-5-7 21:12
sulon 發(fā)表于 2019-3-8 16:17
你好
   想請(qǐng)問液晶屏的第4腳V0怎么接的?接負(fù)電壓了嗎?

用不上,就空腳




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 一区二区三区日 | 高清免费在线 | 九九热精品在线 | 免费国产视频 | 成年人网站国产 | 国产精品久久久久久久久久久久午夜片 | 精品一区二区三区视频在线观看 | 日批日韩在线观看 | 久久综合九色综合欧美狠狠 | 五月综合激情婷婷 | av一区二区三区 | 成人午夜免费在线视频 | 亚洲欧美激情视频 | 孕妇一级毛片 | 精品亚洲一区二区三区四区五区 | 日本精品视频 | 欧美女优在线观看 | 久久这里只有精品首页 | 羞羞视频一区二区 | 日韩精品中文字幕在线 | 天天搞天天操 | 亚洲啊v在线 | 精品国产鲁一鲁一区二区张丽 | 欧美激情在线一区二区三区 | 国产福利在线 | 亚洲二区视频 | 在线观看国产 | 欧美日韩国产一区二区三区 | 久久新 | 成人精品一区二区三区四区 | 欧美精品一区在线 | 日本一区二区电影 | 中文字幕第一页在线 | 欧美三级在线 | 99久久99| 91免费福利在线 | 国产精品一区久久久 | 国产精品不卡视频 | 久久精品国产99国产 | 久草在线视频中文 | 日韩成人免费视频 |