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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3850|回復: 3
收起左側

關于單片機用鎖存器74HC573控制液晶顯示PG12864f

[復制鏈接]
ID:357361 發表于 2018-11-21 14:44 | 顯示全部樓層 |閱讀模式
45黑幣
有圖有程序 就是不知道哪里不對 不顯示  不用74HC573就能顯示,但是有個其他復雜電路需要用鎖存器,想先把這個液晶弄明白
以下是程序,也不知道哪里不對
哪位大神指教一下  萬分感謝TAT
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^0;
sbit wela=P2^1;
uchar code HZ0[4][128]={{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,
0x03,0x80,0x00,0x00,0x03,0xC0,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0xC0,0x0F,0x80,
0x00,0x03,0xFF,0x80,0x00,0x1F,0xE0,0x00,0x3C,0x00,0xE0,0x00,0x1E,0x00,0xF0,0x00,
0x0E,0x00,0xE0,0x00,0x06,0x00,0xE0,0x00,0x00,0xE0,0xE0,0x00,0x00,0xC0,0xE0,0x00,
0x01,0xC0,0xE0,0x00,0x03,0x80,0xE0,0x00,0x03,0x80,0xE1,0xC0,0x07,0x01,0xFF,0xF0,
0x0F,0xFF,0xE0,0x70,0x1E,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,
0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x01,0xE0,0x1E,0x00,0x00,0xF7,0xFF,0x00,0x00,0x77,0x0F,0x00,0x0E,0x00,0x0F,0x00,
0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,
0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,
0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,
0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x3F,0x00,0x07,0x00,0x1F,0x00,
0x06,0x00,0x0F,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x0F,0xF8,0x07,0x80,0x3E,0x3B,0xFF,0xC0,
0x07,0x39,0xC7,0x80,0x07,0x39,0xC7,0x80,0x07,0xF9,0xC7,0x00,0x07,0xF9,0xC7,0x00,
0x07,0x39,0xC6,0x00,0x07,0x38,0xFF,0x00,0x07,0xF8,0xC0,0x00,0x07,0x38,0x00,0x00,
0x07,0x38,0xCC,0x00,0x07,0x3E,0xE7,0x00,0x07,0xF8,0xE7,0xC0,0x07,0xF9,0xC3,0xE0,
0x7F,0x3B,0xC1,0xE0,0x7C,0x3F,0x80,0xF0,0x00,0x3E,0x00,0xF0,0x00,0x3C,0x00,0x20,
0x00,0x38,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x01,0xC0,0x00,
0x00,0x01,0xE0,0x00,0x00,0x79,0xC0,0x00,0x00,0x79,0xC0,0x00,0x00,0x79,0xC0,0x00,
0x00,0x79,0xC0,0x00,0x00,0x39,0xC6,0x00,0x00,0x39,0xC7,0x00,0x00,0x39,0xCF,0x00,
0x0F,0x39,0xCE,0x00,0x07,0xB9,0xDC,0x00,0x07,0xB9,0xF8,0x00,0x03,0xF9,0xF0,0x00,
0x03,0xB9,0xE0,0x00,0x00,0x39,0xC0,0x00,0x00,0x39,0xC0,0x00,0x00,0x39,0xC0,0x00,
0x00,0x39,0xC0,0x00,0x00,0x3F,0xFF,0xE0,0x3F,0xFF,0x03,0xF0,0x7F,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}
};
uchar code HZ1[4][128]={
{0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x03,0xC0,0xF0,0x00,0x03,0xC0,0xF0,0x00,
0x01,0xC0,0xF0,0x00,0x01,0xC0,0xE0,0x00,0x01,0xC0,0xE0,0x00,0x01,0x80,0xFF,0x00,
0x01,0x80,0xFE,0x00,0x01,0xFF,0xE0,0x00,0x3F,0xC0,0xE0,0x00,0x39,0x80,0xE0,0x00,
0x01,0x80,0xE0,0x00,0x01,0xB0,0xFE,0x00,0x01,0xE7,0xDE,0x00,0x03,0x8C,0x3C,0x00,
0x07,0x8E,0x38,0x00,0x1F,0x87,0x38,0x00,0xFD,0x83,0xF0,0x00,0xF1,0x80,0xF0,0x00,
0x01,0x81,0xF0,0x00,0x03,0x83,0xFC,0x00,0x03,0x87,0x9F,0x00,0x1F,0x9E,0x0F,0xE0,
0x0F,0xB8,0x07,0xF8,0x07,0x80,0x00,0x08,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x0E,0x00,0x00,
0x00,0x0E,0x7C,0x00,0x00,0x0E,0x1E,0x00,0x00,0x0E,0x0E,0x00,0x00,0x0E,0x00,0x00,
0x00,0x0E,0x00,0x00,0x00,0x0F,0xFC,0x00,0x00,0x3F,0xF0,0x00,0x0F,0xFE,0x00,0x00,
0x00,0x3E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0xFF,0xC0,0x00,
0x00,0xEE,0xE0,0x00,0x01,0xCE,0x78,0x00,0x03,0x8E,0x3E,0x00,0x07,0x0E,0x1F,0x80,
0x1E,0x0E,0x1F,0xE0,0x38,0x0E,0x07,0xF8,0x70,0x0E,0x00,0x00,0x00,0x0E,0x00,0x00,
0x00,0x1E,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x0C,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x3C,0x00,0x01,0x9E,0x38,0x00,
0x01,0xEF,0x38,0x00,0x00,0xE7,0x70,0x00,0x00,0xE6,0x70,0x00,0x00,0x00,0x63,0x00,
0x00,0x00,0xFF,0xC0,0x0E,0xFF,0xC3,0xE0,0x0F,0xC0,0x07,0x80,0x0E,0x00,0x07,0x00,
0x1C,0x0F,0xEC,0x00,0x3C,0xFD,0xF0,0x00,0x18,0x01,0xC0,0x00,0x00,0x03,0x80,0x00,
0x00,0x07,0x00,0x00,0x00,0x07,0xFF,0x80,0x00,0x7F,0xFF,0xC0,0x1F,0xF3,0x80,0x00,
0x00,0x03,0x80,0x00,0x00,0x03,0x80,0x00,0x00,0x03,0x80,0x00,0x00,0x03,0x80,0x00,
0x00,0x03,0x80,0x00,0x00,0x3F,0x80,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,
0x01,0xC1,0xE0,0x00,0x1F,0xE0,0xE0,0x00,0x1D,0xC0,0x1F,0x00,0x1D,0xDB,0xFF,0x80,
0x1F,0x9E,0x07,0x00,0x1F,0x38,0x0E,0x00,0x1F,0xF8,0x00,0x00,0x1D,0xF7,0xF8,0x00,
0x1F,0xCF,0x80,0x00,0x1F,0xC0,0x00,0x00,0x1D,0xC0,0xFE,0x00,0x1C,0xCF,0xF0,0x00,
0x1C,0x3E,0xE0,0x00,0x1C,0x07,0xE0,0x00,0x1C,0x0E,0xE0,0x40,0x1C,0x0E,0xE0,0xE0,
0x1C,0x1C,0xE0,0xE0,0x3C,0x38,0xE0,0xE0,0x3C,0x70,0xE0,0xE0,0x3C,0xE0,0x7F,0xF0,
0x19,0x80,0x7F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}
};
void delayus(uchar x)
{
  while(--x)
  {
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
  }
}

uchar read_status()    //讀狀態
{
   uchar status;
   wela=1;
   P0=0x90;
   wela=0;
   status=P0;
   return status;
}
void status_check()  //檢查狀態,如果讀狀態后返回的值后兩位為1,則退出檢測狀態,否則,需等待;要更改狀態檢測條件,只需改0x03(!為啥位選后兩位是1)
{
  uchar s;
  while((s&0x03)!=0x03)//(這個0x03應該是位選,但是0x03是什么意思?)按位與,再和0x03相匹配,若一致,則退出檢測
     dula=1;//這里加位選 對么?
     s=read_status();
     dula=0;
}

void data_write(uint data1)
{
  wela=1;
  P0=0x40;//rd-1讀選通信號失效 cd=0通道選擇數據 ce=0啟動控制芯片 wr=0寫信號有效
  P0=data1;
  wela=0;
  delayus(10);
  wela=1;
  P0=0xe0;//wr=1關寫信號 ce=1 cd=1指令信號
  wela=0;
}
void command_write(uchar command)
{
  wela=1;
  P0=0xe0;//rd=1讀選通信號失效 cd=1選擇指令通道 wr=0 ce=0
  P0=command;
  wela=0;
  delayus(10);
  wela=1;
  P0=0xd0;//wr=1 ce=1 cd=0
  wela=0;
}
void command_sending_with_one_data(uchar data1,uchar command)//先送參數 再送指令
{
  status_check();//檢查狀態
  dula=1; //打開段選 寫入D0-D7?
  data_write(data1);//寫入數據
  dula=0;
  delayus(10);
  status_check();//再檢查一遍狀態
  dula=1; //打開段選 寫入D0-D7?
  command_write(command); //寫入命令
  dula=0;
}
void command_sending_with_two_data(uint data1,uint data2,uchar command)
{
  status_check();
  dula=1;
  data_write(data1);
  dula=0;
  delayus(10);
  status_check();
  dula=1;
  data_write(data2);
  dula=0;
  delayus(10);
  status_check();
  dula=1;
  command_write(command);   
  dula=0;
}
void display_HZ(uchar x,uint y,uchar *hz)////x 0-3  y 0-7 位置指定,漢字指針
{
  uchar i;
  uint j=0;
  uint k=x;
  for(i=0;i<32;i++)
  {
    if(j>=32)x=k+(j/32);
    command_sending_with_two_data((((j/2)<<4)|(y*4)),x,0x24);//地址指針設置  低地址,高地址,命令
    command_sending_with_one_data(hz[j++],0xc0);
    command_sending_with_one_data(hz[j++],0xc0);
    command_sending_with_one_data(hz[j++],0xc0);
    command_sending_with_one_data(hz[j++],0xc0);
  }
}

void init_12864()
{
  wela=1;
  P0=0xe0;
  wela=1;
  status_check();
  dula=1;
  command_sending_with_two_data(0x00,0x00,0x21); //光標指針設置,本程序不設置偏移寄存器
  dula=0;
  delayus(5);
  status_check();                                //地址指針在開始寫字的時候才進行設置
  dula=1;
  command_sending_with_two_data(0x00,0x00,0x42); //設置圖形顯示首地址
  dula=0;
  delayus(5);
  status_check();
  dula=1;
  command_sending_with_two_data(32,0x20,0x43);   //設置圖形區域大小
  dula=0;
  delayus(5);
  status_check();
  dula=1;
  command_write(0x80);      //模式設置
  dula=0;
  delayus(5);
  status_check();
  dula=1;
  command_write(0x98);      //顯示設置
  dula=0;
  delayus(5);
  status_check();
  dula=1;
  command_write(0xa0);      //光標設置
  dula=0;
  delayus(5);
}
  
void main()
{
  uchar i=0;
  init_12864();
for(i=0;i<4;i++)
     dula=1;
     display_HZ(0,i,HZ0);
     dula=0;
for(i=0;i<4;i++)
     dula=1;
     display_HZ(4,i,HZ1);
     dula=0;
}


這是protues仿真

這是protues仿真
回復

使用道具 舉報

ID:404160 發表于 2018-11-24 19:57 | 顯示全部樓層
好像573的OE要接51的EA吧。再就是要用外部讀寫指令(C要指定或設置)
回復

使用道具 舉報

ID:357361 發表于 2018-11-29 16:19 | 顯示全部樓層
飛云居士 發表于 2018-11-24 19:57
好像573的OE要接51的EA吧。再就是要用外部讀寫指令(C要指定或設置)

不是吧? OE=0 LE=1的時候輸入端等于輸出端數據
外部讀寫指令??我這個涉及到了外部存儲器嗎
回復

使用道具 舉報

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

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久亚洲综合 | 久久国产一区二区 | 欧美一区二区三区在线 | 国产精品一区二区在线 | 午夜激情视频在线 | xxxxx黄色片 欧美一区免费 | 久久久久国产精品免费免费搜索 | 欧美无乱码久久久免费午夜一区 | 精品日韩一区二区三区av动图 | 精品久久久久久久久久久院品网 | 国产精品久久国产愉拍 | 日韩精品久久一区二区三区 | 日本综合在线观看 | 九九九精品视频 | 国产一区二区三区精品久久久 | 中文字幕韩在线第一页 | 91亚洲精华国产 | 中文字幕高清一区 | 二区在线视频 | 日韩高清电影 | 日韩在线观看视频一区 | 超碰一区二区 | 国产69久久精品成人看动漫 | a级免费黄色片 | 亚洲网址在线观看 | 午夜电影一区 | 天堂精品 | 在线不卡av| 欧美精品一二三区 | 精品综合久久久 | 国产成人一区二区三区精 | 国产一区二区电影 | 久久综合狠狠综合久久综合88 | 欧美在线观看免费观看视频 | 国产精品美女一区二区 | 亚洲视频www | 涩涩视频在线观看 | 又爽又黄axxx片免费观看 | 一级大片 | 蜜臀久久99精品久久久久野外 | 欧美国产日韩在线观看 |