当前位置: 首页 > 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.xdnf.cn/news/1445437.html

相关文章:

  • 2025年最新 unityHub游戏引擎开发2d手机游戏和桌面游戏教程
  • 使用飞算JavaAI快速搭建酒店管理系统
  • 部署MYSQL主从同步超详细过程
  • bootloader相关实现
  • 逻辑回归 vs 支持向量机 vs 随机森林:哪个更适合小数据集?
  • 中通笔试ShowMeBug编程题复盘
  • 免费的PDF工具箱软件,免费PDF转word,PDF合并,PDF24下载,24个功能
  • Corona 13 渲染器安装与使用教程(适用于3ds Max 2016–2026)
  • 408考研——单链表代码题常见套路总结
  • 有奖直播 | 如何高效测试ADC/DAC?德思特一站式方案,让测试效率倍速提升!
  • 【Linux操作系统】简学深悟启示录:进程控制
  • 1983:ARPANET向互联网的转变
  • test命令与参数
  • Kotlin编程学习记录2
  • Linux `epoll` 机制的入口——`epoll_create`函数
  • 自由学习记录(92)
  • 图像正向扭曲反向扭曲
  • 关于缓存的一些思考?
  • 从Java全栈到前端框架:一次真实的面试对话
  • 自动化运维-ansible中对于大项目的管理
  • HTML第八课:HTML4和HTML5的区别
  • 网络通信与协议栈 -- OSI,TCP/IP模型,协议族,UDP编程
  • Linux 网络编程中核心函数`recv`。
  • Qt6用Chart模块做数据可视化?别再用老套路,看看这套35张图背后的秘密
  • MySQL :索引原理
  • 【面试题】BPE和WordPiece的区别?
  • Anaconda3出现Fatal error in launcher: Unable to create process using.....问题
  • STM32CubeMX + HAL 库:基于 I²C 通信的 BMP280气压海拔测量
  • 【超详细】别再看零散的教程了!一篇搞定Gitee从注册、配置到代码上传与管理(内含避坑指南最佳实践)
  • PS大神级AI建模技巧!效率翻倍工作流,悄悄收藏!