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

📄 新建 文本文档 (2).txt

📁 自己做的一个小玩意基于步进电机的横切机液晶显示
💻 TXT
📖 第 1 页 / 共 2 页
字号:
//***************************************************************************
//   Create by :ZXD
//              12864 SSD1815  (串口)   16x16 字体
//***************************************************************************
//   Create by :ZXD
//***************************************************************************
//80时序连线表:CPU=89C52
//CS=P2.1             RS=P2.0         SDA=P2^7        SCK=P2^6
//FOSC=11.?592MHz
//***************************************************************************
// 一行最多显示八个汉字

#include <reg51.h>
#include <stdio.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define writedeviceaddress 0xa0
#define readdeviceaddress 0xa1
sbit SDA=P2^7;
sbit SCK=P2^6;
sbit sda=P2^4;
sbit scl=P2^5;
sbit RS=P2^0;
sbit CS=P2^1;
sbit BELL=P3^3;
sbit cp=P3^0;
sbit J2=P3^4;
sbit J3=P3^6;
sbit qg=P3^1;
uchar temp,key,cdbz,qian,shi,bai,ge,sdbz,qian1,bai1,shi1,ge1;
uint counter0, c1,cr4,i,g,counter1;
uchar cr0,cr1,cr2,cr3,qian2,bai2,shi2,ge2;
uchar code cd[]={/*--  文字:  长  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x01,0x01,0x01,0x01,0xFF,0x05,0x05,0x09,0x09,0x11,0x21,0x41,0x01,0x01,0x01,0x00,
0x00,0x00,0x00,0x00,0xFF,0x02,0x84,0x48,0x20,0x10,0x08,0x0C,0x06,0x04,0x00,0x00,

/*--  文字:  度  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x3F,0x20,0x24,0x24,0x3F,0xA5,0x65,0x25,0x3F,0x24,0x24,0x24,0x20,0x00,
0x01,0x06,0xF8,0x01,0x01,0x42,0x62,0x54,0x48,0x48,0x54,0x64,0x42,0x03,0x02,0x00,

/*--  文字:  :  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x6C,0x6C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};

uchar code zs[]={
  /*--  文字:  转  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x13,0x15,0x39,0xD7,0x11,0x11,0x11,0x02,0x12,0x1F,0xF2,0x12,0x12,0x12,0x02,0x00,
0x10,0x10,0x20,0xFF,0x20,0x20,0x00,0x40,0xD0,0x48,0x44,0x4B,0x70,0x40,0x00,0x00,

/*--  文字:  速  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x02,0x42,0x33,0x00,0x20,0x27,0x24,0x24,0xFF,0x24,0x24,0x24,0x27,0x20,0x00,0x00,
0x02,0x04,0xF8,0x04,0x12,0x92,0xA2,0xC2,0xFE,0x82,0xC2,0xA2,0xB2,0x02,0x02,0x00,

/*--  文字:  :  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x6C,0x6C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,


};
uchar code sz[]={
/*--  文字:  0  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x07,0x08,0x10,0x10,0x08,0x07,0x00,0x00,0xF0,0x08,0x04,0x04,0x08,0xF0,0x00,

/*--  文字:  1  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x08,0x08,0x1F,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0xFC,0x04,0x04,0x00,0x00,

/*--  文字:  2  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x0E,0x10,0x10,0x10,0x11,0x0E,0x00,0x00,0x0C,0x14,0x24,0x44,0x84,0x0C,0x00,

/*--  文字:  3  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x0C,0x10,0x11,0x11,0x12,0x0C,0x00,0x00,0x18,0x04,0x04,0x04,0x88,0x70,0x00,

/*--  文字:  4  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x03,0x04,0x08,0x1F,0x00,0x00,0x00,0xE0,0x20,0x24,0x24,0xFC,0x24,0x00,

/*--  文字:  5  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x1F,0x10,0x11,0x11,0x10,0x10,0x00,0x00,0x98,0x84,0x04,0x04,0x88,0x70,0x00,

/*--  文字:  6  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x07,0x08,0x11,0x11,0x18,0x00,0x00,0x00,0xF0,0x88,0x04,0x04,0x88,0x70,0x00,

/*--  文字:  7  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x1C,0x10,0x10,0x13,0x1C,0x10,0x00,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x00,

/*--  文字:  8  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x0E,0x11,0x10,0x10,0x11,0x0E,0x00,0x00,0x38,0x44,0x84,0x84,0x44,0x38,0x00,

/*--  文字:  9  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x07,0x08,0x10,0x10,0x08,0x07,0x00,0x00,0x00,0x8C,0x44,0x44,0x88,0xF0,0x00,

/*--  文字:  C  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x03,0x0C,0x10,0x10,0x10,0x10,0x1C,0x00,0xE0,0x18,0x04,0x04,0x04,0x08,0x10,0x00,

/*--  文字:  M  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x10,0x1F,0x1F,0x00,0x1F,0x1F,0x10,0x00,0x04,0xFC,0x00,0xFC,0x00,0xFC,0x04,0x00,
/*--  文字:  R  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x10,0x1F,0x11,0x11,0x11,0x11,0x0E,0x00,0x04,0xFC,0x04,0x00,0xC0,0x30,0x0C,0x04,

/*--  文字:  /  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x00,0x01,0x06,0x18,0x20,0x00,0x06,0x18,0x60,0x80,0x00,0x00,0x00,



};
uchar code gs[]=
{/*--  文字:  总  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x00,0x1F,0x91,0x71,0x11,0x11,0x11,0x31,0xD1,0x1F,0x00,0x00,0x00,0x00,
0x00,0x04,0x1C,0x00,0x3C,0x02,0x02,0x42,0x32,0x02,0x02,0x0E,0x20,0x18,0x0C,0x00,

/*--  文字:  根  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x10,0x10,0x13,0xFF,0x12,0x11,0x00,0x7F,0x49,0x49,0x49,0x49,0x7F,0x00,0x00,0x00,
0x20,0xC0,0x00,0xFF,0x00,0x00,0x00,0xFE,0x84,0x48,0x20,0x30,0x4C,0xC6,0x04,0x00,

/*--  文字:  数  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x08,0x49,0x2A,0x1C,0xFF,0x1C,0x2A,0x4A,0x01,0x0F,0xF8,0x48,0x08,0x0F,0x08,0x00,
0x42,0x42,0x54,0x74,0xC8,0x58,0x64,0x40,0x02,0x04,0xC8,0x30,0xCC,0x06,0x04,0x00,
};
uchar code bd[]=
{/*--  文字:  标  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x08,0x08,0x0B,0xFF,0x0A,0x09,0x04,0x44,0x44,0x44,0x47,0x44,0x44,0x44,0x04,0x00,
0x20,0xC0,0x00,0xFF,0x00,0x90,0x20,0xC0,0x02,0x01,0xFE,0x00,0x80,0x60,0x38,0x00,

/*--  文字:  定  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x08,0x30,0x25,0x24,0x24,0xA4,0x67,0x24,0x24,0x24,0x24,0x28,0x30,0x20,0x00,
0x02,0x04,0x18,0xE0,0x10,0x08,0x04,0xFE,0x42,0x42,0x42,0x42,0x02,0x02,0x00,0x00,

/*--  文字:  中  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x3F,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x10,0x3F,0x10,0x00,0x00,
0x00,0x00,0xE0,0x40,0x40,0x40,0x40,0xFF,0x40,0x40,0x40,0x40,0xE0,0x00,0x00,0x00,
 };
 uchar code kb[]=
{
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,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,0x00,0x00,

};
uchar code zz[]={25,50,75,100};

void delay(xms)
uint xms;
{
uint i,j;
for(i=0;i<xms;i++)

for(j=110;j>0;j--);


}
//////*========24C02读写驱动程序==============*/

void flash()
{  ;  ; }
void x24c02_init()  /*24c08初始化子程序*/
 {scl=1;
  flash();
  sda=1;
  flash();}
void start()        /*启动I2C总线*/
{ sda=1;
  flash();
  scl=1;
  flash();
  sda=0;
  flash();
  scl=0;
  flash();}
void stop()         /*停止I2C总线*/
{sda=0;
 flash();
 scl=1;
 flash();
 sda=1;
 flash();}
void writex(unsigned char j)  /*写一个字节*/
{  unsigned char i,temp;
   temp=j;
   for (i=0;i<8;i++)
   {temp=temp<<1;
    scl=0;
    flash();
    sda=CY;
    flash();
    scl=1;
    flash();
   }
   scl=0;
   flash();
   sda=1;
   flash();
}
unsigned char readx()   /*读一个字节*/
{
   unsigned char i,j,k=0;
   scl=0;
   flash();
   sda=1;
   for (i=0;i<8;i++)
   {  flash();
      scl=1;
      flash();
      if (sda==1)
      j=1;
      else j=0;
      k=(k<<1)|j;
      scl=0;
    }
   flash();
   return(k);
}
void clock()         /*I2C总线时钟*/
{
   unsigned char i=0;
   scl=1;
   flash();
   while ((sda==1)&&(i<255))
   i++;
   scl=0;
   flash();
}
/*========从24c02的地址address中读取一个字节数据==============*/
unsigned char x24c02_read(unsigned char address)
{
   unsigned char i;
   start();
   writex(0xa0);
   clock();
   writex(address);
   clock();
   start();
   writex(0xa1);
   clock();
   i=readx();
   stop();
   delay(1);
   return(i);
}
/*========向24c02的address地址中写入一字节数据info==============*/
void x24c02_write(unsigned char address,unsigned char info)
{

   start();
   writex(0xa0);
   clock();
   writex(address);
   clock();
   writex(info);
   clock();
   stop();
   delay(1);
}

/*========写一个字节的命令或数据==============*/
write_lcd(cmd_dat,shu)
uchar cmd_dat;
{ uint i;
RS=cmd_dat;
SCK=0;
CS=0;
for(i=0;i<8;i++)
{
SCK=0;
_nop_();
_nop_();
SDA=shu&0x80;
shu=shu<<1;
_nop_();
_nop_();
SCK=1;
_nop_();
_nop_();
}

}

/*========初始化12864==============*/
void init_1815(void)
{/* set power control register */
uchar command;
command=0x2f;
write_lcd(0,command);
/* set display on */
command=0xaf;
write_lcd(0,command);
 /*CONTRAST*/
command=0xf0;
write_lcd(0,command);
/*COM OUTPUT SCAN DIRECTION*/
command=0xC8;
write_lcd(0,command);
/*SET SEG RE-MAP*/
command=0xA1;
write_lcd(0,command);


}
/*========写显示的汉字==============*/
void disp(uchar zhi ,uchar x ,uchar yl, uchar yh, uchar code *disp_buff)//x不能为4 zhi不超过8个
{
uchar page, column,disp_data; /*page address*/
uint n,i;


 page=x+0xb0;
 write_lcd(0,page);
 column=yl; /*set column lower address*/
 write_lcd(0,column);
 column=yh; /*set column higher address*/
 write_lcd(0,column);
for(n=0;n<zhi+1;n++)
{
for(i=0;i<16;i++) /*write 16 bytes of one character to ssd1815bt*/

{disp_data=disp_buff[n*32+i];
write_lcd(1,disp_data);
}
}
_nop_();
x--;
if(x==-1)
x=7;
page=x+0xb0;
write_lcd(0,page);
column=yl; /*set column lower address*/
write_lcd(0,column);
column=yh; /*set column higher address*/
write_lcd(0,column);
for(n=0;n<zhi+1;n++) /*one page need to write 8 charater*/
{
for(i=0;i<16;i++) /*write 16 bytes of one character to ssd1815bt*/

{disp_data=disp_buff[16+n*32+i];
write_lcd(1,disp_data);
}
}
_nop_();
 _nop_();

}
/*========写数字==============*/
void dispdata(uchar x ,uchar yl, uchar yh, uchar shuzi)
{
uchar page, column,disp_data; /*page address*/
uint i;


 page=x+0xb0;
 write_lcd(0,page);
 column=yl; /*set column lower address*/
 write_lcd(0,column);
 column=yh; /*set column higher address*/
 write_lcd(0,column);

⌨️ 快捷键说明

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