【51单片机】【protues仿真】 基于51单片机波形发生器系统

目录

一、主要功能

二、使用步骤

三、硬件资源

四、软件设计

五、实验现象

一、主要功能

1、LCD1602液晶显示波形、频率

2、按键切换波形、频率、占空比​

3、正弦波、方波、三角波、锯齿波

二、使用步骤

本项目使用Proteus8仿真以51系列单片机为核心控制器结合数模转换(DAC)电路、运放芯片和按键输入模块和显示单元,在Proteus等仿真环境中实现多种波形的生成与频率、占空比参数调节功能。

三、硬件资源

1、51单片机核心模块

2、按键模块

3、运算放大芯片

4、DAC数模转换芯片

5、LCD1602显示模块

四、软件设计

#include <reg51.h>

#include<string.h>

#define uchar unsigned char

#define uint unsigned int

sbit RS=P3^0;

sbit RW=P3^1;

sbit EN=P3^3;

sbit K1=P2^0;

sbit K2=P2^1;

sbit K3=P2^2;

sbit K4=P2^3;

sbit K5=P2^4;

uchar WaveChoice=1;

uchar ys=30;

uchar i,a=0;

uchar sqar_num=128;

uint freq;

uchar code Sin\[\]={"Sine "};

uchar code Squ\[\]={"Square "} ;

uchar code Tri\[\]={"Triangle "};

uchar code Saw\[\]={"Sawtooth "} ;

uchar code No\[\]={"No Signal out "};

uchar code Wave\[\]={"Wave :"};

uchar code Fre\[\]={"Freq :"};

void DelayMS(uchar ms)

{

uchar i;

while(ms--) for(i=0;i<120;i++);

}

void Delay1(uint y)

{

uint i;

for(i=y;i>0;i--);

}

uchar Busy_Check()

{

uchar LCD_Status;

RS=0; // 寄存器选择

RW=1; //读状态寄存器

EN=1; // 开始读

DelayMS(1);

LCD_Status=P1;

EN=0;

return LCD_Status;

}

void Write_LCD_Command(uchar cmd)

{

while((Busy_Check()&0x80)==0x80); //忙等待

RS=0; //选择命令寄存器

RW=0; //写

EN=0;

P1=cmd;EN=1;DelayMS(1);EN=0;

}

void Write_LCD_Data(uchar dat)

{

while((Busy_Check()&0x80)==0x80); //忙等待

RS=1; RW=0; EN=0; P1=dat;EN=1;DelayMS(1);EN=0;

}

void Init_LCD()

{

Write_LCD_Command(0x38);

DelayMS(1);

Write_LCD_Command(0x01);

DelayMS(1);

Write_LCD_Command(0x06);

DelayMS(1);

Write_LCD_Command(0x0C);

DelayMS(1);

}

void Write_freq(uint k)

{

uchar qian,bai,shi,ge;

qian=k/1000;

bai=k/100%10;

shi=k/10%10;

ge=k%10;

Write_LCD_Command(0x86+0x40);

Write_LCD_Data(0x30+qian);

Write_LCD_Data(0x30+bai);

Write_LCD_Data(0x30+shi);

Write_LCD_Data(0x30+ge);

Write_LCD_Data(0x48);

Write_LCD_Data(0x5a);

}

void main()

{

Init_LCD();

IE=0X81;

IT0=1;

Write_LCD_Command(0x80);

DelayMS(5);

while (1)

{

keyscanf();

Out_Wave(WaveChoice);

if(!(K1&K2&K3))

Xianshi_f();

}

}

void EX_INT0() interrupt 0

{

WaveChoice++;

if(WaveChoice==5) WaveChoice=1;

Write_wave(WaveChoice);

}

五、实验现象

演示视频:基于51单片机波形发生器仿真https://www.bilibili.com/video/BV1esYyzSE4X/?share_source=copy_web&vd_source=40fca7082622de442c326ebbcf72b8c6

相关推荐
听风说ml5 小时前
socket编程 【C语言】
c语言·udp·tcp·socket编程
voipmaker5 小时前
GB28181 对接踩坑实录:注册不上、目录不全、流卡顿,一次说清(附 2022 版变更清单)
物联网·音视频·实时音视频·信息与通信·iot·gb28181·国标gb28181
吠品5 小时前
智谱开源 ZCode 之后,真正的考试才开始
单片机·嵌入式硬件·1024程序员节
学逆向的6 小时前
C 局部静态变量
c语言·开发语言·网络安全
Chery11406 小时前
高速ADC与精密DAC怎么选?DP9230D与DP8532D应用解析
嵌入式硬件·物联网·射频工程
小李不想当小白9 小时前
SPI通信外设与W25Q64 (硬件SPI)(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
LCG米10 小时前
STM32驱动W5500以太网模块实测:TCP吞吐瓶颈定位、TX指针回绕陷阱与断线重连保活落地
stm32·单片机·嵌入式硬件·tcp/ip
尼喃11 小时前
662K/65Z5三脚稳压芯片规格书—PW6566B33/B30引脚功能
嵌入式硬件
创界工坊工作室11 小时前
63-基于STC89C52霍尔传感器的智能化电能表设计
stm32·单片机·嵌入式硬件·51单片机·proteus
智购科技自动售货机厂家12 小时前
让AI经营自动售货机:从Project Vend看工具权限与业务规则~YH
大数据·服务器·单片机·嵌入式硬件·深度学习