找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2599|回復: 3
打印 上一主題 下一主題
收起左側(cè)

求Arduino與16管腳12864連接應用的資料

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:308259 發(fā)表于 2018-4-28 21:15 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
求Arduino與16管腳12864連接應用的資料
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:276778 發(fā)表于 2019-5-18 22:40 | 只看該作者
我也在找這個。。。
回復

使用道具 舉報

板凳
ID:276778 發(fā)表于 2019-5-20 20:15 | 只看該作者
以下是找到的51的程序,,,怎么移植到arduino上使用?

、

摸索了好幾天,終于把普中16個管腳的12864使用起來了。
不僅管腳排列與20腳的不一樣,而且命令也不一樣,關(guān)鍵是初始化命令
以下是我結(jié)合普中的例程寫的,請大家參考:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code dis1[]=
{
0x40,0x44,0x54,0x54,0x54,0x54,0x54,0x7F,0x54,0x54,0x54,0x54,0x54,0x44,0x40,0x00,//青
0x00,0x00,0x00,0xFF,0x15,0x15,0x15,0x15,0x15,0x55,0x95,0x7F,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0xFC,0x04,0x04,0x16,0x25,0x04,0x24,0x44,0x3C,0x00,0x00,0x00,0x00,//島
0x00,0x00,0x1C,0x11,0x11,0x11,0x1F,0x11,0x11,0x11,0x5D,0x81,0x41,0x3F,0x00,0x00,

0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xFF,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,//大
0x80,0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x03,0x0C,0x10,0x20,0x40,0x80,0x80,0x00,

0x40,0x30,0x11,0x96,0x90,0x90,0x91,0x96,0x90,0x90,0x98,0x14,0x13,0x50,0x30,0x00,//學
0x04,0x04,0x04,0x04,0x04,0x44,0x84,0x7E,0x06,0x05,0x04,0x04,0x04,0x04,0x04,0x00,

0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0xFF,0x88,0x88,0x88,0x88,0xF8,0x00,0x00,0x00,//電
0x00,0x00,0x1F,0x08,0x08,0x08,0x08,0x7F,0x88,0x88,0x88,0x88,0x9F,0x80,0xF0,0x00,

0x80,0x82,0x82,0x82,0x82,0x82,0x82,0xE2,0xA2,0x92,0x8A,0x86,0x82,0x80,0x80,0x00,//子
0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x40,0x30,0x11,0x96,0x90,0x90,0x91,0x96,0x90,0x90,0x98,0x14,0x13,0x50,0x30,0x00,//學
0x04,0x04,0x04,0x04,0x04,0x44,0x84,0x7E,0x06,0x05,0x04,0x04,0x04,0x04,0x04,0x00,

0x00,0x00,0x22,0x32,0x2A,0xA6,0xA2,0x62,0x21,0x11,0x09,0x81,0x01,0x00,0x00,0x00,//系
0x00,0x42,0x22,0x13,0x0B,0x42,0x82,0x7E,0x02,0x02,0x0A,0x12,0x23,0x46,0x00,0x00,
};


sbit wr=P2^7;     //wr=1 從LCD讀出
sbit rs=P2^6;     //rs=0 命令,rs=1數(shù)據(jù)
sbit rd=P2^5;     //rd=1 往LCD寫入
sbit cs=P3^2;    //片選信號,低電平有效
sbit reset=P3^3;
uchar a;

void delay(uchar z)
{
    uchar x,y;
    for(x=z;x>0;x--)
        for(y=110;y>0;y--);
}

void write_com(uchar com)
{
    cs=0;
    rd=1;   //讀禁用
    rs=0;    //選用命令
    wr=0;
    delay(1);
    P0=com;
    delay(1);
    wr=1;     //寫入命令
}

void write_date(uchar date)
{
    cs=0;
    rd=1;
    rs=1;  //選用數(shù)據(jù)
    wr=0;
    delay(1);
    P0=date;
    delay(1);
    wr=1;
}

void init()
{
    reset=0;
    delay(1);
    cs=0;
    reset=1;
    delay(10);
    write_com(0xe2);    //軟件初始化
    delay(10);
    write_com(0xa0);    //表格第8個命令,設(shè)置顯示方向(左右),A1為反向顯示,A0為正常顯示
    delay(10);
    write_com(0xc8);    //表格第15個命令,設(shè)置顯示方向(上下),C8為反向顯示,C0為正常顯示
    delay(10);
    write_com(0xa6);    //表格第9個命令,A6黑字白底,A7白字黑底
    delay(10);
    write_com(0xa4);    //表格第10個命令,A4正常顯示,A5像素全開
    delay(10);
    write_com(0xa2);    //第11個命令,a3偏壓為1/7,a2偏壓為1/9
    delay(10);
    write_com(0xf8);
    write_com(0xf1);    //第19個命令,雙字節(jié)命令,0xf800增壓為4x,f801為5x,效果差不多
    delay(10);
    write_com(0x81);
    write_com(0x23);    //第18個命令,設(shè)置背光對比度,范圍0x00到0x3f
    delay(10);
    write_com(0x25);    //第17個命令,選擇調(diào)節(jié)電阻率
    delay(10);
    write_com(0x2f);    //第16個命令,電源設(shè)置
    delay(10);
    write_com(0x40);    //第2個命令,設(shè)置顯示開始位置
    delay(10);
    write_com(0xaf);    //第一個命令,開啟顯示
}

void clearscreen()
{
    uchar i,j;
    for(i=0;i<8;i++)
    {
        write_com(0xb0+i);    //設(shè)置page,共8個page,每個page 8行
        write_com(0x10);    //設(shè)置x軸
        write_com(0x04);
        for(j=0;j<128;j++)
            write_date(0x00);    //向每個點中填入數(shù)據(jù)
    }
}

void writechar(uchar x, uchar y,uchar num)
{
    uchar j,x1,x2,y1,wordnum;
    for(wordnum=0;wordnum<=num;wordnum++)
    {
        y1=y+0xb0;
        write_com(y1);
        x1 = (x >> 4) & 0x0F;
        x2 = x & 0x0F;
        write_com(0x10+x1);
        write_com(0x40+x2);
        j=0;
        for(j=0;j<32;j++)
        {
            if(j==16)
            {
                write_com(y1+1);
                write_com(0x10+x1);
                write_com(0x40+x2);
            }
            write_date(dis1[j+32*wordnum]);
        }
        x=x+16;
    }
}

void main()
{
    init();
    delay(10);
        clearscreen();
    while(1)
    {
   
        writechar(0,2,7);
        delay(100);
    }
   
}
回復

使用道具 舉報

地板
ID:55085 發(fā)表于 2020-7-31 03:49 | 只看該作者
coolge7 發(fā)表于 2019-5-20 20:15
以下是找到的51的程序,,,怎么移植到arduino上使用?
、
、

這個還是51的呀,修改后的arduino源碼呢?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表