HGSC128643串口测试程序

发布时间:2018/8/1 10:56:53

HGSC128643  I2C串口测试程序如下:

#include<reg51.h>

#include<intrins.h>

#include<string.h>

#include<stdio.h>

#define uchar unsigned char

#define uint unsigned int

#define I2C  //I2C通信

#ifdef I2C

 sbit SCL = P3^1;

 sbit SDA = P3^3;

 sbit BUSY = P3^4;

 sbit REST = P3^5;

#endif

#define WD 128  /* 显示区宽度 */

#define HD 64  /* 显示区高度 */

#define clear 0x00  /* Clear Display */

#define time 1000  /* 1000延时 1.03895500 s */

#define c_time 50  

uchar code  CHHZ1[]={"清达光电技术公司"};

uchar code  CHHZ2[]={"一二三四五六七八"};

uchar code  CHHZ3[]={"01234567"};

uchar code  CHHZ4[]={"abcd,。+-"};

uchar code  CHHZ21[]={" ! #$%&'()*=,-./"};

uchar code  CHHZ22[]={"0123456789:;<=>?"};

uchar code  CHHZ23[]={"@ABCDEFGHIJKLMNO"};

uchar code  CHHZ24[]={"PQRSTUVWXYZ[ ]^_"};

uchar code  CHHZ25[]={"`abcdefghijklmno"};

uchar code  CHHZ26[]={"pqrstuvwxyz{|}~ "};

uchar code  CHHZ27[]={0x5b,0x5c,0x5d,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e};

/******** 西文字符库 *******/

/*--

  提取点阵方向:横向(先左->右, 再上->下)    

                                        --*/      

uchar code CTAB[][16]={

/*--  文字:  H  --*/

/*--  黑体12;  此字体下对应的点阵为:宽x高=8x16   --*/

0x00,0x00,0x00,0x42,0x42,0x42,0x42,0x42,0x7E,0x42,0x42,0x42,0x42,0x42,0x00,0x00,

/*--  文字:  G  --*/

/*--  黑体12;  此字体下对应的点阵为:宽x高=8x16   --*/

0x00,0x00,0x00,0x38,0x44,0x82,0x82,0x80,0x8E,0x82,0x82,0x82,0x46,0x3A,0x00,0x00,

/*--  文字:  S  --*/

/*--  黑体12;  此字体下对应的点阵为:宽x高=8x16   --*/

0x00,0x00,0x00,0x38,0x44,0x82,0x80,0x60,0x18,0x04,0x82,0x82,0x44,0x38,0x00,0x00,

/*--  文字:  D  --*/

/*--  黑体12;  此字体下对应的点阵为:宽x高=8x16   --*/

0x00,0x00,0x00,0xF8,0x84,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x84,0xF8,0x00,0x00,

/*--  文字:  O  --*/

/*--  黑体12;  此字体下对应的点阵为:宽x高=8x16   --*/

0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00,

/*--  文字:  T  --*/

/*--  黑体12;  此字体下对应的点阵为:宽x高=8x16   --*/

0x00,0x00,0x00,0xFE,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00,

/*--  文字:  1  --*/

/*--  黑体12;  此字体下对应的点阵为:宽x高=8x16   --*/

0x00,0x00,0x00,0x10,0x30,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00,

/*--  文字:  2  --*/

/*--  黑体12;  此字体下对应的点阵为:宽x高=8x16   --*/

0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x02,0x04,0x08,0x10,0x20,0x40,0x7E,0x00,0x00,

/*--  文字:  8  --*/

/*--  黑体12;  此字体下对应的点阵为:宽x高=8x16   --*/

0x00,0x00,0x00,0x1C,0x22,0x41,0x41,0x22,0x1C,0x22,0x41,0x41,0x22,0x1C,0x00,0x00,

/*--  文字:  6  --*/

/*--  黑体12;  此字体下对应的点阵为:宽x高=8x16   --*/

0x00,0x00,0x00,0x1C,0x22,0x42,0x40,0x5C,0x62,0x42,0x42,0x42,0x22,0x1C,0x00,0x00,

/*--  文字:  4  --*/

/*--  黑体12;  此字体下对应的点阵为:宽x高=8x16   --*/

0x00,0x00,0x00,0x02,0x06,0x0A,0x12,0x12,0x22,0x42,0x7F,0x02,0x02,0x02,0x00,0x00,

/*--  文字:  6  --*/

/*--  黑体12;  此字体下对应的点阵为:宽x高=8x16   --*/

0x00,0x00,0x00,0x1C,0x22,0x42,0x40,0x5C,0x62,0x42,0x42,0x42,0x22,0x1C,0x00,0x00,

};

/******** 中文字符库 *******/

/*--

  提取点阵方向:横向(先左->右, 再上->下)    

                                        --*/      

uchar code CCTAB[][32]={

/*--  文字:  清  --*/

/*--  楷体_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/

0x00,0x80,0x00,0xE0,0x33,0x80,0x10,0xE0,0x03,0x80,0x40,0xFC,0x2F,0x00,0x01,0xE0,

0x12,0x20,0x13,0xA0,0x22,0x20,0x63,0xA0,0x42,0x20,0x02,0x60,0x00,0x20,0x00,0x00,

/*--  文字:  达  --*/

/*--  楷体_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/

0x00,0x40,0x00,0x40,0x20,0x40,0x10,0x40,0x00,0x78,0x03,0xC0,0x70,0x40,0x10,0xA0,

0x21,0x10,0x12,0x08,0x10,0x00,0x7C,0x00,0x03,0xFE,0x00,0x38,0x00,0x00,0x00,0x00,

/*--  文字:  光  --*/

/*--  楷体_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/

0x01,0x00,0x01,0x00,0x01,0x20,0x09,0x60,0x05,0x80,0x01,0x00,0x03,0xF0,0x3C,0x80,

0x04,0x80,0x04,0x80,0x08,0x82,0x10,0x82,0x20,0x82,0x40,0x7C,0x00,0x00,0x00,0x00,

/*--  文字:  电  --*/

/*--  楷体_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/

0x02,0x00,0x02,0x00,0x02,0x00,0x03,0xE0,0x3E,0x20,0x22,0x20,0x23,0x20,0x2E,0x20,

0x13,0xC0,0x1E,0x00,0x02,0x04,0x02,0x04,0x02,0x04,0x01,0xF8,0x00,0x00,0x00,0x00,

/*--  文字:  技  --*/

/*--  楷体_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/

0x10,0x40,0x10,0x40,0x10,0x40,0x10,0x70,0x1D,0xC0,0x70,0x40,0x10,0x70,0x19,0x90,

0x30,0x20,0xD1,0x20,0x10,0xC0,0x11,0x20,0x36,0x18,0x10,0x0E,0x00,0x00,0x00,0x00,

/*--  文字:  术  --*/

/*--  楷体_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/

0x02,0x00,0x02,0x20,0x02,0x10,0x02,0x00,0x03,0xE0,0x3E,0x00,0x03,0x00,0x06,0x80,

0x0A,0x40,0x12,0x20,0x22,0x18,0x42,0x0E,0x02,0x00,0x02,0x00,0x02,0x00,0x00,0x00,

/*--  文字:  公  --*/

/*--  楷体_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/

0x00,0x00,0x03,0x00,0x00,0x80,0x08,0x80,0x08,0x40,0x10,0x20,0x10,0x18,0x22,0x0E,

0x42,0x00,0x84,0x80,0x08,0x40,0x11,0xE0,0x1E,0x20,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  司  --*/

/*--  楷体_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/

0x00,0x00,0x01,0xF0,0x0E,0x10,0x00,0x10,0x07,0x10,0x18,0x10,0x03,0x10,0x3D,0x10,

0x21,0x10,0x23,0x10,0x1C,0x10,0x00,0x10,0x00,0x50,0x00,0x20,0x00,0x00,0x00,0x00,

/*--  文字:  液  --*/

/*--  楷体_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/

0x00,0x80,0x00,0x40,0x30,0x00,0x10,0xF0,0x07,0x00,0x62,0x40,0x22,0x70,0x04,0x90,

0x2D,0x50,0x34,0xA0,0x24,0x40,0x44,0xB0,0x47,0x1E,0x04,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  晶  --*/

/*--  楷体_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/

0x01,0xC0,0x06,0x40,0x04,0x40,0x07,0x40,0x04,0x40,0x07,0xC0,0x00,0x00,0x00,0x78,

0x3C,0x88,0x24,0x88,0x34,0xE8,0x24,0x88,0x3C,0xF8,0x24,0x88,0x00,0x00,0x00,0x00,

/*--  文字:  显  --*/

/*--  楷体_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/

0x00,0x00,0x01,0xE0,0x1E,0x20,0x11,0xA0,0x0E,0x20,0x09,0xC0,0x0E,0x00,0x04,0x90,

0x04,0x90,0x24,0xA0,0x14,0xC0,0x04,0x80,0x07,0xFC,0xF8,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  示  --*/

/*--  楷体_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/

0x00,0x00,0x00,0x60,0x0F,0x80,0x00,0x00,0x00,0x00,0x00,0xFC,0x7F,0x00,0x01,0x00,

0x11,0x20,0x11,0x18,0x31,0x08,0x21,0x00,0x03,0x00,0x01,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  模  --*/

/*--  楷体_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/

0x00,0x10,0x10,0x90,0x10,0xFE,0x11,0x90,0x1C,0x78,0x71,0x88,0x11,0x68,0x19,0x08,

0x34,0xF0,0x50,0x4E,0x93,0xF0,0x10,0x60,0x10,0x90,0x11,0x08,0x16,0x06,0x00,0x00,

/*--  文字:  块  --*/

/*--  楷体_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/

0x00,0x00,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0xF0,0x1B,0x90,0x70,0xA0,0x10,0xFC,

0x1B,0x80,0x30,0x80,0xC1,0x40,0x02,0x20,0x04,0x18,0x18,0x0E,0x00,0x00,0x00,0x00,

};

/********* 时间延时程序 *********/

void delay(uint t)   /* 1.02500 ms */

{ uint i,j;

 for(i=t;i>0;i--)

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

}

#ifdef I2C

/***** start ******/

void start()

{

 SDA=1;

 SCL=1;

 SDA=0;

 SCL=0;

}

/***** stop ******/

void stop()

{

 SDA=0;

 SCL=1;

 SDA=1;

 SCL=0;

}

/***** ack ******/

void ack()                                                                              

{

 SDA=1;

 SCL=1;    

//  while(SDA);

 SCL=0;;

}

/******** 8bits写程序 ********/

void write_8bits(uchar dat)

{

 uchar i;

 for(i=0;i<8;i++)

  {      

    if(dat&0x80)

      SDA=1;

    else  

      SDA=0;

SCL=1;    

SCL=0;

    dat<<=1;  

  }  

}

/******** 向I2C口发送一个字符 ********/

void write(uchar dat)

{

 while(BUSY==1);

 start();

 write_8bits(0xa0);  //Slave Address:a0  

 ack();

 write_8bits(dat);

 ack();

 stop();

}

#endif

/******** 清屏显示程序 ********/

void clr(void)

{

 write(0x58);    

}

/******** 字符显示程序 ********/

void chhzes(uchar x,uchar y,uchar m,uchar n,uchar k,uchar rev,uchar *s)

{

 uchar i;

 uint j;

 write(0x5A);

 write(x);  //垂直地址

 write(y);  //水平地址

 write(m);  //字符垂直点行数

 write(n);  //字符水平点列数

 write(k);  //字符个数

 write(rev);  //rev=0:正常显示;rev=1:反白显示

 for(i=0;i<k;i++)

   for(j=0;j<(n+7)/8*m;j++)

     write(*s++);

}//*/

/******** 自带字符显示程序 ********/

void INTER_chhzes(uchar x,uchar y,uchar m,uchar n,uchar k,uchar rev,uchar *s)

{

 uchar i;

 write(0x5B);

 write(x);  //垂直地址

 write(y);  //水平地址

 write(m);  //字符垂直点行数

 write(n);  //字符水平点列数

 write(k);  //字符个数

 write(rev);  //rev=0:正常显示;rev=1:反白显示

 while(*s!='\0')

   write(*s++);

}//*/

/******** 图片显示程序 ********/

void graph(uchar x,uchar y,uchar m,uchar n,uchar *s)

{

 uint i;

 write(0x5D);

 write(x);  //垂直地址

 write(y);  //水平地址

 write(m);  //图片垂直点行数

 write(n);  //图片水平点列数

 for(i=0;i<n/8*m;i++)

   write(*s++);

}

/******** 绘点显示程序 ********/

void point(uchar x,uchar y,uchar z)

{

 write(0x60);

 write(x);  //垂直地址

 write(y);  //水平地址

 write(z);  //绘点或消点

}

/******** 画任意直线显示程序 ********/

void show_line(uchar x1,uchar y1,uchar x2,uchar y2,uchar z)

{

 write(0x61);

 write(x1);  //垂直起始地址

 write(y1);  //水平起始地址

 write(x2);  //垂直结束地址

 write(y2);  //水平结束地址

 write(z);  //绘点或消点

}

/******** 画矩形方框显示程序 ********/

void block(uchar x1,uchar y1,uchar x2,uchar y2,uchar z)

{

 write(0x62);

 write(x1);  //垂直起始地址

 write(y1);  //水平起始地址

 write(x2);  //垂直结束地址

 write(y2);  //水平结束地址

 write(z);  //绘点或消点

}

/******** 画矩形方块显示程序 ********/

void matrix(uchar x1,uchar y1,uchar x2,uchar y2,uchar z)

{

 write(0x63);

 write(x1);  //垂直起始地址

 write(y1);  //水平起始地址

 write(x2);  //垂直结束地址

 write(y2);  //水平结束地址

 write(z);  //绘点或消点

}

/******** 画圆显示程序 ********/

void draw_circle(uchar x,uchar y,uchar r,uchar fil,uchar z)

{

 write(0x64);

 write(x);  //垂直圆心地址

 write(y);  //水平圆心地址

 write(r);  //半径

 write(fil);  //fil=0:空心圆;fil=1:实心圆

 write(z);  //绘点或消点

}

/******** 光标显示程序 ********/

void cursor(uchar x,uchar y,uchar n,uchar z)

{

 write(0x70);

 write(x);  //垂直地址

 write(y);  //水平地址

 write(n);  //光标水平点列数

 write(z);  //绘点或消点

}

/******** 初始化程序 ********/

void set()

{

 delay(100);

 REST=0;

 delay(5);

 REST=1;

 delay(100);

 write(0x50);  //Display OFF

 write(0x52);  //Set Contrast Current

 write(0x40);  

 write(0x51);  //Display ON

//  clr();  //清屏

//  clr();  //清屏

//  delay(1);  //*/

}

/********* 主函数 *********/

void main()

{

 uchar i,j;      

 set();  //液晶屏初始化

 while(1)

  {

clr();  //清屏

    point(2,2,1);point(2,125,1);point(61,2,1);point(61,125,1);  //绘点

matrix(16,16,16,64,1);  //直线

matrix(32,40,56,40,1);  

matrix(24,90,40,106,1);  //方块

block(0,0,63,127,1);  //方框

delay(time);   //*/

    clr();  //清屏

    draw_circle(32,100,25,0,1);  //空心圆

    draw_circle(32,100,20,1,1);  //实心圆

    matrix(8,8,55,55,1);  //方块

    delay(time);   //*/

    clr();  //清屏

    show_line(0,0,63,127,1);

    show_line(0,127,64,0,1);

    block(0,0,63,127,1);  //方框

    delay(time);   //*/

clr();  //清屏

chhzes(0,0,16,16,8,0,CCTAB);  //清达光电技术公司

chhzes(16,32,16,16,4,0,CCTAB+10);  //显示模块

chhzes(32,0,16,8,8,1,CTAB+3);  //DOT12864

    chhzes(48,1,16,8,8,0,CTAB+3);  //DOT12864

    delay(time);   //*/

    for(i=0;i<64;i+=16)  //光标显示

      for(j=0;j<128;j+=16)

       {

         cursor(i+15,j,16,1);

         delay(c_time);

         cursor(i+15,j,16,0);

       }        //*/

    block(0,0,63,127,1);  //方框

delay(time);   //*/

    clr();  //清屏

    INTER_chhzes(0,0,16,16,8,0,CHHZ1);

    INTER_chhzes(16,0,16,16,8,0,CHHZ2);

    INTER_chhzes(32,0,16,16,8,0,CHHZ3);

    INTER_chhzes(48,0,16,16,8,1,CHHZ4);

delay(time);    //*/

    clr();  //清屏

    INTER_chhzes(0,0,16,8,16,0,CHHZ21);

    INTER_chhzes(16,0,16,8,16,0,CHHZ22);

    INTER_chhzes(32,0,16,8,16,0,CHHZ23);

    INTER_chhzes(48,0,16,8,16,0,CHHZ24);

    delay(time);  

    clr();  //清屏

    INTER_chhzes(0,0,16,8,16,0,CHHZ25);

    INTER_chhzes(16,0,16,8,16,0,CHHZ26);

    INTER_chhzes(48,0,16,8,16,0,CHHZ27);

    delay(time);    //*/

    clr();  //清屏

    INTER_chhzes(0,0,8,8,16,0,CHHZ21);

    INTER_chhzes(8,0,8,8,16,0,CHHZ22);

    INTER_chhzes(16,0,8,8,16,0,CHHZ23);

    INTER_chhzes(24,0,8,8,16,0,CHHZ24);

    INTER_chhzes(32,0,8,8,16,0,CHHZ25);

    INTER_chhzes(40,0,8,8,16,0,CHHZ26);

    INTER_chhzes(56,0,8,8,16,0,CHHZ27);

    delay(time);    //*/

  }  

//  delay(time);*/

}




上一篇:HGS128645参考电路图
下一篇:HGS128641-G-EH应用电路介绍