当前位置: 首页 > news >正文

基于单片机PWM信号发生器系统Proteus仿真(含全部资料)

全套资料包含:Proteus仿真源文件+keil C语言源程序+AD原理图+流程图+元器件清单+说明书等

资料下载:

通过网盘分享的文件:资料分享
链接: 百度网盘 请输入提取码 提取码: tgnu


目录

资料下载:

Proteus仿真功能

项目文件资料:

一、Proteus仿真源文件

二、AD原理图文件

二、报告说明书

三、系统流程图

四、Keil c语言程序源代码


项目功能:

两路输出PWM信号;
通过按钮调整频率、占空比和相位差
使用LCD1602显示频率、占空比和相位差


项目文件:

一、Proteus仿真源文件

​​

二、AD原理图文件

二、报告说明书

三、系统流程图

​​

四、器件清单

元件型号数量
单片机AT89C511
电容10uf1
电容30pf2
晶振12MHZ1
电阻10k1
按钮7
显示器LCD16021
排阻10k1

五、Keil c语言程序源代码(部分)

#include "reg51.h"
#include "lcd1602.h"
#define uchar unsigned char
#define uint unsigned int
sbit out1=P2^6;//输出
sbit out2=P2^7;
sbit k1=P1^0;//按钮
sbit k2=P1^1;
sbit k3=P1^2;
sbit k4=P1^3;
sbit k5=P1^4;
sbit k6=P1^5;
uint freq=10;//频率
uchar pwm=50,time=0;//占空比
uchar set0=0,set1=0;
uchar cha0=0,cha1=0;//相位差控制
uchar xiang=0;//相位差0-180
uchar disp1[]="f:0000Hz pwm:00%";
uchar disp2[]=" :000 "; //e0//显示函数
void xian()
{disp1[2]=freq/1000+0x30;disp1[3]=freq%1000/100+0x30;disp1[4]=freq%100/10+0x30;disp1[5]=freq%10+0x30;disp1[13]=pwm/10+0x30;disp1[14]=pwm%10+0x30;disp2[2]=xiang/100+0x30;disp2[3]=xiang%100/10+0x30;disp2[4]=xiang%10+0x30;write_string(1,0,disp1);write_string(2,0,disp2);
}
//计算
void zhou()
{unsigned long i;i=1000000;i=i/freq;//计算周期i=i/100;//周期分成100份set0=(65536-i)/256;set1=(65536-i)%256;//计算相位差i=xiang;i=i*100/360;cha0=i;if(cha0+pwm>99){cha1=cha0+pwm-99;}elsecha1=cha0+pwm;
}//主函数
void main()
{disp2[0]=0xe0;disp2[5]=0xdf;zhou();init_1602();//初始化xian();TMOD|=0X11;	ET0=1;//打开定时器0中断允许EA=1;//打开总中断TR0=1;//打开定时器while(1){if(!k1)//频率加{if(freq<9999)freq++;zhou();xian();while(!k1);} if(!k2)//频率减{if(freq>1)freq--;zhou();xian();while(!k2);}if(!k3)//占空比加{if(pwm<99)pwm++;zhou();xian();while(!k3);} if(!k4)//占空比减{if(pwm>0)pwm--;zhou();xian();while(!k4);}if(!k5)//相位差加{if(xiang<180)xiang++;zhou();xian();while(!k5);} if(!k6)//相位差减{if(xiang>0)xiang--;zhou();xian();while(!k6);}}
}
//定时器0中断
void Timer0() interrupt 1
{if(time<99)time++;elsetime=0;if(time<pwm)//通道1输出out1=1;elseout1=0;if(time==cha0)//通道2输出out2=1;if(time==cha1)out2=0;TH0=set0;TL0=set1;
}

六、全套资料包含

​​

七:项目资源获取

需要完整的资料可以点击下面的名片关注,回复“资料”!

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

http://www.dtcms.com/a/364377.html

相关文章:

  • 平衡车 - 电机调速
  • 基于单片机车内换气温度检测空气质量检测系统Proteus仿真(含全部资料)
  • 单片机点灯
  • Linux 网络编程中核心函数`recv`。
  • zynq 开发系列 新手入门:GPIO 连接 MIO 控制 LED 闪烁(SDK 端代码编写详解)
  • Spring Boot 实现数据库表变更监听的 Redis 消息队列方案
  • 单片机控制两只直流电机正反转C语言
  • 变频器实习DAY42 VF与IF电机启动方式
  • Excel 电影名匹配图片路径教程:自动查找并写入系统全路径
  • wpf 自定义控件,只能输入小数点,并且能控制小数点位数
  • 机器学习从入门到精通 - Python环境搭建与Jupyter魔法:机器学习起航必备
  • 如何在modelscope上上传自己的MCP服务
  • 【收藏】2025 前端开发者必备 SVG 资源大全
  • 【2025ICCV-持续学习方向】一种用于提示持续学习(Prompt-based Continual Learning, PCL)的新方法
  • 【CouponHub开发记录】SpringAop和分布式锁进行自定义注解实现防止重复提交
  • RAG|| LangChain || LlamaIndex || RAGflow
  • kafka概念之间关系梳理
  • mac idea 配置了Gitlab的远程地址,但是每次pull 或者push 都要输入密码,怎么办
  • 项目中常用的git命令
  • python基础案例-数据可视化
  • Streamlit 数据看板模板:非前端选手快速搭建 Python 数据可视化交互看板的实用工具
  • 【Linux】为什么死循环卡不死 Linux?3 个核心逻辑看懂进程优先级与 CPU 调度密码
  • Langchain4j 整合MongoDB 实现会话持久化存储详解
  • 电表连网不用跑现场!耐达讯自动化RS485转Profinet网关 远程配置+技术支持,真能做到!
  • 单元测试数据库回滚问题
  • 如何在FastAPI中巧妙隔离依赖项,让单元测试不再头疼?
  • 10 分钟掌握 Selenium 8 大元素定位法:从踩坑到精通
  • Python分布式任务队列:万级节点集群的弹性调度实践
  • 深入剖析Spring Boot中Spring MVC的请求处理流程
  • 电脑接入企业中的网线,为啥网卡上面显示AD域名