找回密码
 立即注册

QQ登录

只需一步,快速开始

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

按键数字增加送显并且将数字DA转换从而在电压表显示

[复制链接]
跳转到指定楼层
楼主
ID:396798 发表于 2018-9-12 09:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>
#include<intrins.h>
#include<absacc.h>
#define uchar unsigned char
#define uint unsigned int
#define DAC0832 XBYTE[0X7FFF]   //DAC0832在系统中的地址为0X7FFF
#define uchar unsigned char
#define uint unsigned int
  sbit dula=P2^6;
  sbit wela=P2^7; //声明数码管锁存器
  sbit key1=P2^0;
  sbit key2=P2^1;
  sbit key3=P2^2;  //声明3个按键
  sbit dacs=P3^2;
  sbit dawr=P3^6;  //声明da端口
  sbit beep=P2^4;
  uchar t,num,flag;
  uchar code table[]={0x3f,0x06,0x5b,0x4f,
                                                0x66,0x6d,0x7d,0x07,
                                                0x7f,0x6f,0x77,        0x7c,
                                                0x39,0x5e, 0x79,0x71}; //编码数码管字符
  void delay(uint y)        //延时ms子函数
  {
          uint i,j;
        for(i=y;i>0;i--)
                for(j=120;j>0;j--);
  }
void delayus(uint b)    //延时μS子函数
{
        while(b--)
                _nop_();
}
  void display(uchar numdis)
  {
          uchar shi,ge;
        shi=numdis/10 ;
        ge=numdis%10;            //分离个位 十位


    dula=1;
        P1=table[shi];
        dula=0;       
        wela=1;
        P1=0xfe;
        delay(5);
        wela=0;
        P1=0x00;
        delay(10);        //送十位数据


        dula=1;
        P1=table[ge];
        dula=0;       
        wela=1;
        P1=0xfd;
        delay(5);
        wela=0;   
        P1=0x00;
    delay(10);  //送个位数据
  }       

  void init()                            //初始化函数
  {
          TMOD=0X01;
        TH0=(65336-50000)/256;
        TL0=(65336-50000)%256;          //50ms 中断一次
        EA=1;
        ET0=1;
  }                                                       

  void keyscan()
  {
          if(key1==0)                             //按下k1,自动加一
        {
                delay(10);
                if(key1==0)
                {
                while(key1)
                {beep=1;}                           //当一直按下,蜂鸣器响
                flag=1;
                TR0=1;
                while(!key1);
                }
        }
        if(key2==0)                           //按下k2,自动减一
        {
                delay(10);
                if(key2==0)
                {
                while(key2)
                {beep=1;}                    //当一直按下,蜂鸣器响
                flag=0;
                TR0=1;
                while(!key2);
                }
        }
         if(key3==0)                  //  按下k3,暂停
        {
                delay(10);
                if(key3==0)
                {
                while(key3)
                {beep=1;}            //当一直按下,蜂鸣器响
                TR0=0;
                while(!key2);
                }
        }
  }
   void main()
   {
                   init();                //初始化函数
                while(1)
                {
                        dacs=0;
                        dawr=0;
                        P0=0;
                        keyscan();
                        display(num);
                DAC0832 =num;
                          delayus(10);
                }
        }
void T0_time()interrupt 1
  {
                TH0=(65336-500)/256;
                TL0=(65336-500)%256;   //重装初值
                t++;
                if(t==20)                //20次为1s
                {
                if(flag        ==1)
                {
                        num++;
                        if(num==99)
                        num=0;
                }
                if(flag==0)         
                {
                        num--;
                           if(num==0)
                        num=99;       
                }
               
                }
  }


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

使用道具 举报

沙发
ID:1 发表于 2018-9-12 16:23 | 只看该作者
需要补全原理图或者详细说明一下电路连接即可获得100+黑币
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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