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

📄 12864.txt

📁 单片机控制12864液晶的程序!网上下的
💻 TXT
📖 第 1 页 / 共 3 页
字号:
    for(i=4;i>0;i--)
    for(j=116;j>0;j--)
    for(k=214;k>0;k--);
    }while(--count);
}

这是图象显示程序:

#include<reg51.h>
#include<absacc.h>

#define uchar unsigned char
#define uint unsigned int

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

uchar code disp_data[] =        // 数据表
{
      0x00,0x01,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,
      0x00,0x01,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,
      0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,
      0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,
      0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,
      0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,
      0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,
      0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x80,0x00,0x00,0x00,
      0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0xFF,0xFF,0xFF,
      0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x07,0xFF,0xFF,
      0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x0B,0xFF,
      0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x1F,
      0x01,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,
      0x01,0xFF,0xFF,0xFF,0xF3,0x79,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,
      0x03,0xFF,0xFF,0xFF,0xE6,0x62,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE1,0x60,0x00,0x68,
      0x01,0xFF,0xFF,0xFE,0x00,0x60,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE1,0x00,0x00,0x0E,
      0x01,0xFF,0xFF,0xF8,0x00,0x4B,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x8E,0x08,0x79,
      0x07,0xFF,0xFF,0xF0,0x00,0x41,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE6,0xC0,0x07,0x61,
      0xC3,0xFF,0xFE,0xC0,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xED,0xEF,0x3F,
      0x83,0xFF,0xFE,0x60,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xC0,0xFF,0xFD,0xFC,0x6C,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xF0,0x7F,0xF3,0xFF,0xFE,0x60,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xF3,0xFF,0xFF,0x50,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC9,
      0xFB,0xFF,0xF1,0xF8,0x8C,0xD8,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0x6F,0xD9,
      0xC2,0x3F,0xF8,0x40,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xF6,0xDF,0x1E,0xFF,
      0xFF,0x7F,0xFC,0x38,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0x64,0x2F,0x6F,0xFF,
      0xFD,0x7B,0xFC,0x1F,0xE0,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0x5F,0x7C,0xEE,0xFF,
      0xC7,0xFF,0xBC,0x0F,0xFF,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xDF,0xFE,0xEF,0xFF,
      0xFF,0xE7,0xDC,0x07,0xE7,0xF8,0x12,0x7F,0xFF,0xFF,0xFF,0xFF,0x47,0xFF,0xFF,0xFF,
      0xFF,0xE7,0x80,0x03,0xF4,0x00,0x00,0x5F,0xFF,0xFF,0xFE,0xFE,0xE3,0xFF,0xFF,0xFF,
      0xFF,0xFE,0xC0,0x01,0xC0,0x00,0x00,0x1B,0xFF,0xFF,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,
      0x7F,0xEE,0xC0,0x00,0xC0,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFE,0x98,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0x20,0x0E,0x60,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x8F,0xFF,0xFF,0xFF,0xFF,0xFF,
      0x05,0x80,0xE0,0x00,0x00,0x00,0x00,0x01,0xFF,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0x09,0x80,0xA0,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
      0x85,0x2A,0xC0,0x00,0x00,0x00,0x00,0x01,0xFF,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,
      0xBF,0xF3,0xC0,0x00,0x00,0x00,0x00,0x00,0xFF,0xF7,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,
      0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x01,0xFF,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,
      0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0xFF,0xC0,0xFF,0xFF,0xFF,0xFF,0xC0,0x1F,
      0xFF,0xFF,0x80,0x00,0x40,0x00,0x00,0x00,0xFF,0x80,0xFF,0xFF,0xFF,0x80,0x07,0xFF,
      0xFF,0xFF,0xC0,0x00,0xC0,0x00,0x00,0x01,0xFF,0x01,0xFF,0xFF,0xF8,0x00,0xFF,0xFF,
      0xFF,0xFF,0xE0,0x63,0x80,0x00,0x00,0x01,0xFE,0x01,0xFF,0x18,0x00,0x3F,0xFF,0xFF,
      0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x01,0xCC,0x01,0xFE,0x00,0x07,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x07,0xA0,0x03,0xFC,0x00,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x05,0xC0,0x03,0xC8,0x00,0x7F,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x19,0x00,0x00,0x88,0x0C,0x07,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFC,0x00,0x0C,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0xC0,0x7F,0xFF,0xFF,
      0xFF,0xFF,0xF8,0x07,0x0F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x0F,0xFF,0xFE,
      0xFF,0xFF,0xD0,0x07,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x03,0xFF,0xF8,
      0xFF,0xFC,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xC0,
      0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0xFF,0xF8,
      0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x1F,0xFE,
      0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x78,0x02,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,
      0xFF,0x00,0x00,0x00,0x00,0x00,0x03,0xF0,0x78,0x00,0x00,0x00,0x00,0x00,0x02,0xFF,
      0xFE,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,
      0xF0,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,
      0xE0,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,
      0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x27,
      0xC0,0x00,0x00,0x00,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
      0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
      0x80,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01
};

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++)           //写入液晶上半图象部分
        {                           //写入坐标
            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++;                    //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);
}









































;============================
COM    EQU 20H
LINE EQU 31H
DAT    EQU 21H
COLUMN EQU 30H
PAGE0 EQU 31H
CODE0 EQU 32H
COUNT EQU 33H
CSA EQU P3.0   ;15
CSB EQU P3.1   ;16
D_I EQU P3.2   ;4
R_W EQU P3.3   ;5
E   EQU P3.4   ;6

;=================================================
;中文演示程序段
  ORG 0000H
  AJMP MAIN
  ORG 20H
MAIN: MOV SP,#60H
  ACALL INT
  ACALL DELAY
  ACALL CLEAR
;============================================== 
  MOV R1,#50H
  MOV R2,#0

YS_1:  MOV PAGE0,#02H
  MOV COLUMN,R1
  MOV CODE0,R2
  ACALL CCW_PR
  ACALL DELAY
  ACALL DELAY
  MOV A,R1
  ADD A,#10H
  MOV R1,A
  INC R2
  CJNE R2,#2,YS_1
  CALL DELAY
  CALL DELAY
;=========================================
  MOV R1,#80H
  MOV R2,#2
YS_2:  MOV PAGE0,#02H
  MOV COLUMN,R1
  MOV CODE0,R2
  ACALL CCW_PR
  ACALL DELAY
  ACALL DELAY
  MOV A,R1
  ADD A,#10H
  MOV R1,A
  INC R2
  CJNE R2,#05,YS_2
;=========================================  
  MOV R1,#50H
  MOV R2,#5
YS_3:  MOV PAGE0,#04H
  MOV COLUMN,R1
  MOV CODE0,R2
  ACALL CCW_PR
  ACALL DELAY
  ACALL DELAY
  MOV A,R1
  ADD A,#10H
  MOV R1,A
  INC R2
  CJNE R2,#11,YS_3
;  ACALL DELAY10
;============================================
  MOV R1,#60H
  MOV R2,#11
YS_4:  MOV PAGE0,#06H
  MOV COLUMN,R1
  MOV CODE0,R2
  ACALL CCW_PR
  ACALL DELAY
  ACALL DELAY
  MOV A,R1
  ADD A,#10H
  MOV R1,A
  INC R2
  CJNE R2,#15,YS_4

  ACALL DELAY10
  ACALL DELAY10
  ACALL DELAY10
  ACALL DELAY10
  ACALL CLEAR

;==============================================
  MOV R1,#60H
  MOV R2,#15
YS_5:  MOV PAGE0,#02H
  MOV COLUMN,R1
  MOV CODE0,R2
  ACALL CCW_PR
  ACALL DELAY
  ACALL DELAY
  MOV A,R1
  ADD A,#10H
  MOV R1,A
  INC R2
  CJNE R2,#19,YS_5
 

;=============================================
  MOV R1,#50H
  MOV R2,#19
YS_6:  MOV PAGE0,#04H
  MOV COLUMN,R1
  MOV CODE0,R2
  ACALL CCW_PR
  ACALL DELAY
  ACALL DELAY
  MOV A,R1
  ADD A,#10H
  MOV R1,A
  INC R2
  CJNE R2,#25,YS_6
;==============================================

  ACALL DELAY10
  ACALL DELAY10
  ACALL DELAY10
  ACALL DELAY10
  ACALL CLEAR
  ACALL DELAY10
;=============================================
  MOV R1,#50H
  MOV R2,#25
YS_7:  MOV PAGE0,#02H
  MOV COLUMN,R1
  MOV CODE0,R2
  ACALL CCW_PR
  ACALL DELAY
  ACALL DELAY
  MOV A,R1
  ADD A,#10H
  MOV R1,A
  INC R2
  CJNE R2,#31,YS_7
;==============================================

  ACALL DELAY10
  ACALL DELAY10
  ACALL DELAY10
  ACALL DELAY10
  ACALL CLEAR
  ACALL DELAY10
  

  AJMP MAIN


⌨️ 快捷键说明

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