搜索
bottom↓
回复: 0

关于ADC/DAC的问题 大神看看

[复制链接]

出0入0汤圆

发表于 2013-3-6 20:24:41 | 显示全部楼层 |阅读模式
我这个程序要给一个数值 然后经过转换显示到数码管上 定义SB1按键在P3^0  每按一次减一
比如 开始给0xff 数码管显示5 然后每按一次按键 数值减一后显示在数码管 0xfd就是要显示4.9
可是无论怎么改都不行 大神们帮看看 谢谢了 自学实在很难


#include "reg52.h"
#include "absacc.h"
#define uchar unsigned char
#define uint  unsigned int
#define weix  wr=0;cs2=0;wr=1;cs2=1
#define duanx wr=0;cs1=0;wr=1;cs1=1
#define qu    cs=0;wr1=0;cs=1;wr=1
#define DAC_DATA P0
#define AD XBYTE[0xefff]
uchar count;
sbit cs1=P2^5;
sbit cs2=P2^6;
sbit wr=P2^7;

sbit cs=P2^1;
sbit wr1=P2^0;
sbit sb1=P3^0;

uchar idata shu[8];
uchar code seg[]=
{
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
};
uchar code swg[]=
{
0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10
};

void delay(uint s)
{
   uint j,z;
   for(j=s;j>0;j--)
   for(z=120;z>0;z--);
}

void display()
{
    P1=seg[shu[7]];
        duanx;
        P1=0xfe;
        weix;
        delay(1);
        P1=swg[shu[6]];
        duanx;
        P1=0xfd;
        weix;
        delay(1);
}

void DAC()
{
    DAC_DATA=0xfe;
        qu;
        delay(1);
}//DAC_DATA=0xff;
//qu;
//delay(1);
void jianpan()
{
   if(sb1==1)
   {
     delay(5);
                count=DAC_DATA;
     if(sb1==0)count++;
         while(sb1==0);
   }
}

void ADC()
{
  uint w;
  AD=0;
  delay(1);
  w=AD;
  w=w*10/51;

  shu[7]=w%10;
  shu[6]=w/10;
}
  void main()
{
        while(1)
        {
      DAC();
          jianpan();
          ADC();
          display();
        }
  
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 18:26

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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