⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd图像显示程序.txt

📁 基于FPGA的lcd的驱动程序
💻 TXT
字号:
#include
#include

#define uchar unsigned char
#define uint unsigned int

#define datawr 0x1200           //写数据通道
#define comwr 0x1000            //写控制命令通道
#define datare 0x1300           //读数据通道
#define comre 0x1100            //读忙通道 

uchar code disp_data[] =        // 数据表
{
     图像的编码信息
                      }



void set12864();
void setxy(uchar x,uchar y);
void write_command(uchar command);
void write_16byte(uint data_add);
void delays(uchar count);

void main()
{
    uchar x,y,i;
    while(1)
    {
        y="0x80";                     //设置液晶上半部分坐标
        x="0x80";
        delays(2);       & 
                                    //延时2s
        set12864();                 //初始化12864
        delays(2);
        for(i=0;i<32;i++)           //写入液晶上半图象部分
        {      &nb p;                    //写入坐标
            setxy(x,y);
            write_16byte(i*16);     //连续写入16字节数据
            y++;                    //y轴地址加1
        }                           
        y="0x80";                     //设置液晶下半部分坐标
        x="0x88";
        for(i=0;i<32;i++)           //写入液晶下半图象部分
        {
            setxy(x,y);             //写入坐标
            write_16byte((32+i)*16);//连续写入16字节数据
            y++;    
sp;              //y轴地址加1
        }
        write_command(0x34);        //写入扩充指令命令
        write_command(0x36);        //显示图象
    }
} 

//初始化12864子程序
void set12864()
{
    write_command(0x30);        //功能设定控制字
    write_command(0x0c);        //显示开关控制字
    write_command(0x01);        //清除屏幕控制字
    write_command(0x06);        //进入设定点控制字
}

//设置绘图坐标
void setxy(uchar x,uchar y)
{                               
    write_command(0x34);        //写入扩充指令命令
    write_command(y);           //写入y轴坐标
    write_command(x);           //写入x轴坐标
    write_command(0x30);        //写入基本指令命令
}

//写控制命令子程序
void write_command(uchar command)
{
    bit flag="1";                 //12864空闲标志位
    while(flag)                 //检查12864是否空闲
        flag="XBYTE"[comre]&0x80;
    XBYTE[comwr]=command;       //空闲传送控制字
}

void write_16byte(uint data_add)
{
    bit flag="1";          


;        //12864空闲标志位
    uchar num="16";               //16个循环,连续写入16个字节
    for(;num>0;num--)
    {
        while(flag)             //检查12864是否空闲
            flag="XBYTE"[comre]&0x80;
    
      XBYTE[datawr]=disp_data[data_add++]; //空闲传送数据
    }
} 

//延时count秒子程序
void delays(uchar count)
{
    unsigned char h,i,j,k;
    do
    {
    for(h=5;h>0;h--)
    for(i=4;i>0;i--)
    for(j=116;j>0;j--)
    for(k=214;k>0;k--);
    }while(--count);
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -