找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2605|回复: 0
打印 上一主题 下一主题
收起左侧

51单片机数控直流电源代码

[复制链接]
跳转到指定楼层
楼主
ID:324477 发表于 2018-5-13 11:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uint aa,b,bb;
sbit p1=P2^7;
sbit p2=P2^6;
sbit p3=P2^5;
sbit p4=P2^4;
sbit dp=P0^7;
sbit an1=P1^4;
sbit an2=P1^5;
sbit an3=P1^6;
sbit CLK=P1^2;/*??DAC????*/
sbit CS=P1^1;
sbit DIN=P1^3;
uchar code SegCode[12] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xc1};
int moshi=0;
void DelayMs(uchar n)
{
        uchar j;
        while (n--)            
        {
                for (j = 0; j < 113; j++);
        }
}

void keyscan1()        /*??*/
{
    if(an1==0)
     {  aa=0;
                bb=0;

         }
    while(an1==0);
}

void keyscan2()        /*??1???1*/
{
    if(an2==0)
     {
                         if(aa<100)
                         {
                                 aa=aa+1;
                     bb++;
                         }
         }
    while(an2==0);
}

void keyscan3() /*??2???1*/
{
   if(an3==0)
    {
           if(aa>0)
                 {
                         aa=aa-1;
             bb--;
                 }
        }
  while(an3==0);
}

/*????*/
void display(void)
{  p1=0;p2=0;p3=0;p4=0;
          if(bb/100%10==0)
    P0=SegCode[10];
    else
        P0=SegCode[bb/100%10];
        p1=1;p2=0;p3=0;p4=0;
        DelayMs(3);

          p1=0;p2=0;p3=0;p4=0;
        P0=SegCode[bb/10%10];
        dp=0;
        p1=0;p2=1;p3=0;p4=0;
        DelayMs(3);

        p1=0;p2=0;p3=0;p4=0;
        P0=SegCode[bb%10];
        p1=0;p2=0;p3=1;p4=0;
        DelayMs(3);

        p1=0;p2=0;p3=0;p4=0;
        P0=SegCode[11];
        p1=0;p2=0;p3=0;p4=1;
        DelayMs(3);

        p1=0;p2=0;p3=0;p4=0;
}

void DA_Conver(unsigned int DAValue)
{
      unsigned char i;
      DAValue <<= 6;        
      CS =   0;                             
      CLK = 0;                          

      for(i = 0; i < 12; i++)                 
      {                                    
          DIN = (bit)(DAValue & 0x8000);  
          CLK = 1;                        
          DAValue <<= 1;                  
         CLK = 0;
      }
      CS = 1;                              
      CLK = 0;           
}

float zh (float k)
{
  float DA;
  DA=k*1024/500;        /*2.5v????!*/
  return DA;  }
void init_timer()
{  
    TMOD=0x01;
        TH0=(65536-3500)/256;         
        TL0=(65536-3500)%256;
        EA=1;
        ET0=1;
        TR0=1;
              }

void main()
{long DAValue=0;
  aa=0;


           init_timer();

  while(1)
  {  
    DAValue=zh(aa);  /*????*/
          DA_Conver(DAValue);
             keyscan1();
          keyscan2();
          keyscan3();

        }
  }

void time0() interrupt 1
         {          TH0=(65536-3500)/256;
        TL0=(65536-3500)%256;
        b++         ;
        if(b==2)
        {b=0;
          display(); }
          }         

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表