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

📄 变频电源全程序01.txt

📁 数控直流电源和变频电源程序在c环境下编译
💻 TXT
字号:
#include <reg51.h>
#include <stdio.h>
#include <math.h>
#define unit unsigned int
#define uchar unsigned char

sbit P2_0=P2^0;
sbit rest=P1^0;
sbit P1_2=P1^2;
sbit busy=ACC^7;
sbit E=P2^3;
sbit RW=P2^5;
sbit RS=P2^6;
sbit CS1=P2^0;
sbit CS0=P2^1;

unsigned char code dong[32]={
/*--  文字:  东  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x04,0x04,0xC4,0xB4,0x8C,0x87,0x84,0xF4,0x84,0x84,0x84,0x84,0x04,0x00,0x00,
0x00,0x00,0x20,0x18,0x0E,0x04,0x20,0x40,0xFF,0x00,0x02,0x04,0x18,0x30,0x00,0x00
};

unsigned char code bei[32]={
/*--  文字:  北  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x20,0x20,0x20,0x20,0xFF,0x00,0x00,0x00,0xFF,0x40,0x20,0x30,0x18,0x10,0x00,
0x10,0x30,0x18,0x08,0x04,0x7F,0x00,0x00,0x00,0x3F,0x40,0x40,0x40,0x40,0x78,0x00
};

unsigned char code dian[32]={
/*--  文字:  电  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48,0x48,0x48,0x48,0xF8,0x00,0x00,0x00,
0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0x3F,0x44,0x44,0x44,0x44,0x4F,0x40,0x70,0x00
};

unsigned char code li[32]={
/*--  文字:  力  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x10,0x10,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x10,0x10,0xF0,0x00,0x00,
0x00,0x00,0x80,0x40,0x20,0x18,0x06,0x01,0x00,0x00,0x40,0x80,0x40,0x3F,0x00,0x00
};

unsigned char code da[32]={
/*--  文字:  大  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x20,0x20,0x20,0x20,0x20,0x20,0xA0,0x7F,0xA0,0x20,0x20,0x20,0x20,0x20,0x20,0x00,
0x00,0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x01,0x06,0x08,0x30,0x60,0xC0,0x40,0x00
};

unsigned char code xue[32]={
/*--  文字:  学  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x40,0x30,0x10,0x12,0x5C,0x54,0x50,0x51,0x5E,0xD4,0x50,0x18,0x57,0x32,0x10,0x00,
0x00,0x02,0x02,0x02,0x02,0x02,0x42,0x82,0x7F,0x02,0x02,0x02,0x02,0x02,0x02,0x00
};



unsigned char code ya[32]={0x00,0x00,0xFE,0x02,0x42,0x42,0x42,0x42,0xFA,0x42,0x42,0x42,0x62,0x42,0x02,0x00,
0x20,0x18,0x27,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x21,0x2E,0x24,0x20,0x20,0x00
};

unsigned char code liu[32]={0x10,0x60,0x01,0x86,0x60,0x04,0x44,0x64,0x55,0x4E,0x44,0x64,0xC4,0x04,0x04,0x00,
0x04,0x04,0xFC,0x03,0x40,0x30,0x0F,0x00,0x00,0x7F,0x00,0x3F,0x40,0x40,0x70,0x00

};

unsigned char code pin[32]={0x20,0x3C,0x20,0x20,0xBF,0x24,0x24,0x00,0xF2,0x1A,0xD6,0x12,0x12,0xF2,0x02,0x00,
0x44,0x43,0x20,0x10,0x0B,0x04,0x43,0x40,0x27,0x18,0x07,0x08,0x10,0x27,0x60,0x00

};
unsigned char code lv[32]={0x00,0x0C,0x14,0xA4,0x04,0x64,0x35,0xAE,0x64,0x24,0x14,0xA4,0x14,0x04,0x04,0x00,
0x08,0x0A,0x09,0x08,0x08,0x0A,0x0B,0xFE,0x0A,0x0B,0x0C,0x08,0x09,0x0A,0x08,0x00

};


unsigned char code zero[16]={
/*--  文字:  0  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00
};

unsigned char code one[16]={
/*--  文字:  1  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00
};

unsigned char code two[16]={
/*--  文字:  2  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00
};

unsigned char code three[16]={
/*--  文字:  3  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00
};


unsigned char code four[16]={
/*--  文字:  4  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00
};

unsigned char code five[16]={
/*--  文字:  5  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00
};

unsigned char code six[16]={
/*--  文字:  6  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00
};

unsigned char code seven[16]={
/*--  文字:  7  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00
};

unsigned char code eight[16]={
/*--  文字:  8  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00
};

unsigned char code nine[16]={
/*--  文字:  9  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00
};


int a=3,b=4,th0,tl0,th1,tl1;
void check_busy()
{
  P0=0xff;
  RS=0;
  RW=1;
  E=1;
  while(P0 & busy);
  E=0;
  }
/*下面是对液晶屏gxm12864d操作的函数, 128x64点阵,汉字显示,CSA,CSB用来进行左右显示区的选择。*/

/*  发命令i到主窗口*/
void lcd_mwcl(uchar i)
{
    
 CS0=0;CS1=1;         
 check_busy();
     RS=0;
     RW=0;
     P0=i;
    E=1;
    E=0;
    }
    
    void lcd_mwcr(uchar i)
{
    
 CS0=1;CS1=0;         
 check_busy();
     RS=0;
     RW=0;
     P0=i;
    E=1;
    E=0;
    }

/*  写数据i到主窗口*/
void lcd_mwdl(uchar i)
{ check_busy();	 
    
       CS0=0;CS1=1;
     RW=0;
     RS=1;
    P0=i;
    E=1;
    E=0;
}


void lcd_mwdr(uchar i)
{ check_busy();	 
    
       CS0=1;CS1=0;
     RW=0;
     RS=1;
    P0=i;
    E=1;
    E=0;
}


/*   清屏                                */
void lcd_clearl(void)
{
     uchar i;
     uchar page;
     for (page=0xb8;page<0xc0;page++)
         {
             lcd_mwcl(page);       /*设置显示页面*/

             lcd_mwcl(0x40);       /*设置列地址*/
 
             for (i=0;i<64;i++)
             {
   
                 lcd_mwdl(0);
            }
         }
}


void lcd_clearr(void)
{
     uchar i;
     uchar page;
     for (page=0xb8;page<0xc0;page++)
         {
             lcd_mwcr(page);       /*设置显示页面*/

             lcd_mwcr(0x40);       /*设置列地址*/
 
             for (i=0;i<64;i++)
             {
   
                 lcd_mwdr(0);
            }
         }
}
//初始化lcd
void lcd_init(void)
{
	lcd_mwcl(0xc0);
        lcd_mwcr(0xc0);
         lcd_mwcr(0x3f);
	lcd_mwcl(0x3f);

}

void displayl(uchar x,uchar y,uchar *p)
       { int i,j;
         lcd_mwcl(x);//设置页
         lcd_mwcl(y);//设置列
         for(i=0;i<16;i++)
         {lcd_mwdl(*(p+i));}
          lcd_mwcl(x+1);//设置页
          lcd_mwcl(y);//设置列
         for(j=16;j<32;j++)
         {lcd_mwdl(*(p+j));}
         }

  void displayr(uchar x,uchar y,uchar *p)
       { int i,j;
         lcd_mwcr(x);//设置页
         lcd_mwcr(y);//设置列
         for(i=0;i<8;i++)
         {lcd_mwdr(*(p+i));}
          lcd_mwcr(x+1);//设置页
          lcd_mwcr(y);//设置列
         for(j=8;j<16;j++)
         {lcd_mwdr(*(p+j));}
         }


void lcdshow(void)
{        rest=0; 
         rest=1; 
	 E=1;
       
	 lcd_clearr();
         lcd_clearl();
	 lcd_init();

  
   
   /* wenzi*/
   displayl(0xb8,0x48,dian);
   displayl(0xb8,0x56,ya);
   
   displayl(0xba,0x48,dian);
   displayl(0xba,0x56,liu);
   
   displayl(0xbc,0x48,pin);
   displayl(0xbc,0x56,lv);
   
   displayl(0xbe,0x48,dong);
   displayl(0xbe,0x56,bei);
   displayl(0xbe,0x64,dian);
   displayl(0xbe,0x72,li);
   
     /*shuju*/
   displayr(0xb8,0x48,zero);
   displayr(0xb8,0x56,two);
   displayr(0xb8,0x64,zero);
 
   
   displayr(0xba,0x48,zero);
   displayr(0xba,0x56,zero);
   displayr(0xba,0x64,one);
   
   displayr(0xbc,0x48,zero);
   displayr(0xbc,0x56,five);
   displayr(0xbc,0x64,zero);
   
   
 }

void init()
{
 TMOD=0X11;
 TH0=th0;
 TL0=tl0;
 TH1=th1;
 TL1=tl1;
 }
void spwm()
{
 th0=(65536-a)/256;
 tl0=(65536-a)%256;
 th1=(65536-b)/256;
 tl1=(65536-b)%256;
 init();
 P1_2=1;
 EA=1;
 ET0=1;
 ET1=1;
 TR0=1;
 TR1=0;
 while(1);
  }
 
   
void timer0(void) interrupt 1
 {
     P1_2=~P1_2;
     TR1=1;
     TR0=0;
     TH0=th0;
     TL0=tl0;
   }

void timer1(void) interrupt 3
{
 P1_2=~P1_2;
 TR0=1;
 TR1=0;
 TH1=th1;
 TL1=tl0;
  }

void  main()
{ do{
 lcdshow();
  spwm();
  }

while(1);}

⌨️ 快捷键说明

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