一. 系统概述
系统使用STM32单片机作为主控芯片,并在Proteus环境中集成了示波器功能。用户可以通过按键操作来改变输出波形,并实时在示波器上观察到这些波形的变化。
二. 仿真概述
- 当示波器启动但没有按下任何按键时,示波器上会显示一条水平直线波形。
- 按下“方波”按钮后,示波器将会显示出方波波形。
- 点击“三角波”按钮时,示波器上会展示出三角波波形。
- 按下“锯齿波”按钮,示波器将显示出锯齿波波形,用户可以通过调节示波器的旋钮来调整波形的显示,包括移动视图、放大或缩小。
三.程序设计
#include <stm32f10x.h>
#include <delay.h>
#include <Lcd1602.h>
#include <DAC0832.h>
#include <Key.h>
int main(void)
{
u8 f=0,i=0,k=0;
Lcd1602_Init();
DAC0832_Init();
Key_Init();
while(1)
{
if(Key0==0||Key1==0||Key2==0||Key3==0)
{
delay_ms(100);
if(Key0==0)
{
k=1;
while(Key0);
}
if(Key1==0)
{
k=2;
while(Key1);
}
if(Key2==0)
{
k=3;
while(Key2);
}
if(Key3==0)
{
k=0;
while(Key3);
}
}
if(k==1)
{
//方波======================================
if(f==0)
{
i++;
DAC_com(255);
delay_us(19);
if(i==255)
{
f=1;
}
}
else
{
i--;
DAC_com(0);
delay_us(19);
if(i==0)
{
f=0;
}
}
}
if(k==2)
{
//三角波======================================
if(f==0)
{
i++;
DAC_com(i);
delay_us(19);
if(i==255)
{
f=1;
}
}
else
{
i--;
DAC_com(i);
delay_us(19);
if(i==0)
{
f=0;
}
}
}
if(k==3)
{
//锯齿======================================
if(f==0)
{
if(i<255)
{
i++;
DAC_com(i);
delay_us(19);
}else i=0;
}
}
}
}
24-32f-27