电子产业一站式赋能平台

PCB联盟网

搜索
查看: 1423|回复: 0
收起左侧

求助51存储示波器,仿真电路图和程序写好了仿真失败

[复制链接]

591

主题

959

帖子

5157

积分

四级会员

Rank: 4

积分
5157
发表于 2023-5-14 14:17:25 | 显示全部楼层 |阅读模式
#include <reg51.h> // 51单片机头文件
#define uint unsigned int // 定义无符号整数类型uint
#define uchar unsigned char // 定义无符号字符类型uchar
#include <intrins.h>


//ADC0808端口定义
sbit ADC_OE=P2^5; // ADC0808的输出使能OE口   
sbit ADC_EOC=P2^4; // ADC0808的转换完成结束标志EOC口
sbit ADC_START=P2^6;
sbit ADC_ale=P2^7;

//DAC0832接口定义
sbit DAC_CS = P3^7;
sbit DAC_WR1 = P3^6;

//按键定义
sbit k0 = P2^0;
sbit k1 = P2^1;
sbit k2 = P2^2;
sbit k3 = P2^3;

unsigned int AD;//变量声明
uchar xdata adc_value[256];  // 存储adc转换后数据的数组
uchar i,j;
void delay(unsigned int m)
{
while(m--);
}

void adc()//AD采集函数
{
  ADC_START = 0;
  ADC_START = 1;
  ADC_ale=1;
  while(ADC_EOC==0)
  {
   ADC_OE = 1;
    }
    AD=P0;//数据存储在AD中
ADC_OE=0;
}

void DAC_output()  //DAC转换输出
{
DAC_CS = 0;//和为0,实现了单缓冲连接方式
DAC_WR1 = 0;
while(1)
{
   for(i=0;i<=255;i++)//存储波形输出
   {
     P1=adc_value;  //DA转换输出
    delay(10);
  }
  }
}

void main(void)
{
//    unit j,i;
  uchar key_count = 0; // 初始输出1倍波形
  for(j=0;j<255;j++)   //AD采样存储
    {
    adc();
    adc_value[j]=AD;
    delay(10);
      }
  while(1)
     {
if(k0 == 0) // 按键0按下开始输出波形
        {
DAC_output();
delay(10); // 延时1ms
        }
        if(k1 == 0) // 按键1按下
        {
            key_count = 0; // 输出1倍延伸波形
            while(k1 == 0); // 等待按键1松开
        }
        if(k2 == 0) // 按键2按下
        {
            key_count = 1; // 输出2倍延伸波形
            while(k2 == 0); // 等待按键2松开
        }
        if(k3 == 0) // 按键3按下
        {
            key_count = 2; // 输出4倍延伸波形
            while(k3 == 0); // 等待按键3松开
        }
for(i=0;i<256;i++) // 按照倍数输出模拟量信号
        {
            for(j=0;j<key_count+1;j++) // 输出1倍、2倍、4倍的波形,1/2/4次
            {
                DAC_output(); // 将对应采集到的模拟信号输出
                delay(10); // 延时1ms
            }
        }
}
}

求助51存储示波器,仿真电路图和程序写好了仿真失败-1.jpg
回复

使用道具 举报

发表回复

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

本版积分规则

关闭

站长推荐上一条 /1 下一条


联系客服 关注微信 下载APP 返回顶部 返回列表