标题: 0-30V 4A数控稳压电源制作 单片机程序 [打印本页]

作者: CoxWux    时间: 2022-9-20 17:26
标题: 0-30V 4A数控稳压电源制作 单片机程序


单片机源程序如下:
#include"reg52.h"
#include"math.h"
#include"intrins.h"
#include"function.h"

#define DB P0

sbit RS = P1^4;
sbit RW = P1^5;
sbit E  = P1^6; void busy(void)//RS=0;RW=1;wait=0闲;wait!=0忙
{
    uchar wait;
    RS = 0;
    RW = 1;
    E = 1;
    for(;;)
    {
        wait = DB;
        wait &= 0x80;
        if(wait == 0)break;
    }
    E = 0;
}

/************************************************************************************
                   写指令函数         
************************************************************************************/
void w_code(uchar c)//RS=0;RW=0;E下降沿
{
    busy();
    RS = 0;
    RW = 0;
    DB = c;
    E = 1;
    E = 0;
    DB = 0xff;
}

/************************************************************************************
                   写数据函数        
************************************************************************************/
void w_data(uchar d)//RS=1;RW=0;E下降沿
{
    busy();
    RS = 1;
    RW = 0;
    DB = d;
    E = 1;
    E = 0;
    DB = 0xff;
}

/************************************************************************************
                         读数据函数         
************************************************************************************/
uchar r_data(void)//RS=1;RW=1;E下降沿
{
    uchar rd_lcd;
    busy();
    RS = 1;
    RW = 1;
    E = 1;
    rd_lcd = DB;
    E = 0;
     return rd_lcd;
}

/************************************************************************************
                   写DGRAM:x_lcd横坐标,y_lcd纵坐标         
************************************************************************************/
void address(uchar x_lcd,uchar y_lcd)//
{
    w_code(y_lcd);//垂直坐标
    w_code(x_lcd);//水平坐标
}

/************************************************************************************
                   初始化液晶屏
                   0:字库  1:绘图      
************************************************************************************/
void  lcd_rst(bit a)
{  
    if(a)
    {
    w_code(0x01);//   清屏  
    w_code(0x32);//   功能设置---8BIT控制界面,绘图显示ON  
    w_code(0x36);//   功能设置---8BIT控制界面,扩充指令集  
    }
    else
    {
    w_code(0x30);// 功能设置---8BIT控制界面,基本指令集
    w_code(0x0c);//显示打开,光标关,反白显示关
    w_code(0x01);// 清除屏幕显示,将DDRAM的地址计数器归零
    }
}

/************************************************************************************
---------------------------写整屏点阵数据
---------------------------x :图像数据的起始地址        
************************************************************************************/

void  write_lcd_full(uint x )
{
      
      uchar  i,j,a;
      j = 0x80; //Y地址寄存器   
      for(a = 0;a < 32;a++)
          {
        w_code(j);
        j++;
        w_code(0x80);//X地址寄存器
          for(i = 0;i < 16;i ++)
              {
            w_data(logo[x]);
            x++;
            }
        }

      j = 0x80; //Y地址寄存器  
      for(a = 0;a < 32;a++)
          {
        w_code(j);
        j++;
        w_code(0x88);//X地址寄存器
          for(i = 0;i < 16;i ++)
              {
            w_data(logo[x]);
            x++;
            }
        }
}

Keil代码和原理图下载: Keil代码.7z (748.24 KB, 下载次数: 85)

作者: zhangzhi0406    时间: 2022-9-21 08:43
虽然不懂,但看着相当牛!
作者: yyzf998    时间: 2022-9-21 21:48
厉害!好好学习!天天向上!
作者: fk624191    时间: 2022-9-23 09:42
有没有多打样板,想做个试试。
作者: shuijingfeng    时间: 2022-9-27 10:50
不错再增加功率,显示就好了
作者: yygdzjs    时间: 2022-9-27 11:42
看起来不错,应该好久以前的资料.
有空看看.谢谢分享!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1