找回密码
 注册
关于网站域名变更的通知
查看: 689|回复: 5
打印 上一主题 下一主题

PWM输出波形脉冲控制系统Proteus仿真及源码

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-12-4 09:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
PWM输出波形脉冲控制系统Proteus仿真及源码& `7 b/ Y* ?- R9 F- e$ D& o

. ]6 ?: u0 h/ z: r8 j' k

! f4 T! u. A# c5 [$ o2 X这是关于PWM 输出波形脉冲的仿真proteus仿真,有仿真示波器,有程序,用数码管和流水灯表示输出结果! v* j7 h. }% Z6 S4 c; J: o9 j
  q, u  r, {' x
4 `# G- T0 [8 p; E4 `

  a# d( K: E0 K6 ]. g; Q. o: s# u部分单片机源程序:
+ \/ j& }4 c  d" [/ D* H7 o" R
#define PWM_GLOBAL 1
% c. }7 Q3 `5 J% u* E1 z% }#include "pwm.h"
5 L  k2 `7 K8 X! O0 i/*****************************************************
; F" `( H  p3 [+ O! H2 Q* c+ h*函数名称:pwm_init(void)
- }* h1 m- O- ^  {2 b*函数功能:PWM初始化,设置定时器$ F5 D. c& ]  X! O( p: O0 B
*函数入口:无
: ~0 Z/ `) g* O; L*函数出口:无! w; U# W. u+ W( O- {' s. v
*****************************************************/
: g4 R" W1 G- t; P) N5 [void pwm_init(void)         // 12M
" H6 W1 o$ S' H2 X  K{                  
3 g/ w% U, N/ @* X: i' y        TMOD=0x20;       // 定时器1 模式2' i5 h$ n" x! s& C3 w! y7 M
        TL1 = 255-10;    // 1ms, J  I- F) m0 C7 J2 D
        TH1 = 255-10;1 O1 L; U& `  t" g; u
        ET1 = 1;             //定时器1边沿触发
+ ]  \$ G0 W3 {4 O8 x0 |        TR1 = 1;             //开定时器1中断% v$ m. `6 E8 y7 o
        pwmPeriodCont =0x00;
0 H# P& N" p! n1 o        pwmH=0x01;
! f, f- t7 h0 e5 g5 r: C# ?}0 Y( _+ D: o. P# W
/*****************************************************1 D& L. I* i( R
*函数名称:void pwm_set(const uchar NewPwmValue)# f, I( w3 D# O6 x
*函数功能:PWM占空比设置
( e6 Q$ Q0 j3 P% O1 S. q+ Y6 Z  t*函数入口:无" A# Y- o+ i# H& ]$ v+ R/ z* F
*函数出口:无" e% |2 X: N$ Y. E9 |! ]4 o+ F3 V
*****************************************************/( F! U* E8 D  y- t
void pwm_set(uchar NewPwmValue)( M( \) e8 _+ F1 J5 d+ f4 D7 Q' z
{1 T. ^2 \! B) H1 j" U
        if ((NewPwmValue >= 1)&&(NewPwmValue <= 99))   //一个周期里
' l2 `7 F8 ~0 d6 o7 x/ h% K9 p( G6 @  F        {
+ \- a9 L1 n/ \2 |; P5 Q$ k+ M          pwmH = NewPwmValue;
1 {2 {& e  q+ L# @; q" O        }$ B9 K" V0 t: [4 g7 _$ p+ F
        else                                                                                   //若占空比不在1...99范围内则输出一个尖脉冲. a& ]% t9 j- R  J# ], J* R
        {
  h8 ^/ F9 B) y5 J$ q2 w          pwmH =0x01;
& t5 Z% v; q  L. j0 Y+ c1 E        }                                                                        
, S; e( {4 L. m" l}$ A% C, X1 T! P; ?. y
/*****************************************************1 J& A: ^2 K4 L3 ?
*函数名称:pwmProduce(void)% N' |; v7 q6 |- G4 I6 m% `6 z' G8 J
*函数功能:定时器1溢出中断设置8 c, N% `* K  A
*函数入口:无
8 H+ b, Y( ^- y*函数出口:无- ~7 c9 u/ Z7 A& _9 h
*****************************************************/7 |8 e% l1 b$ y) R
void pwmProduce(void) interrupt 3
( R4 n! a) e; b4 @( C{( g  Q) l2 A0 F
        pwmPeriodCont++;                         //PWM定时周期计数加1           
# a5 C1 x2 U: `) F; _5 r+ F1 s        if(pwmPeriodCont<=pwmH)5 O' Y9 D9 V$ l1 [: u
          PWM_OUT =1;                     // 高电平从0 到...PWM_H
! m9 @; Y1 Z% Z# R% V0 v        else  // 剩下的为低电平时间
$ k4 B) \8 d, B) n' T3 R5 w" x         {
- p0 G) l2 Z4 o* B6 L# h0 l4 f$ S           PWM_OUT =0;
2 Y( i! [& g6 W5 O& b7 ]           if (pwmPeriodCont >= PWM_Period)// 一个频率周期结束+ B) N8 C5 z7 _& F0 Z0 h
           {
. L9 i, c9 f& K! m                 pwmPeriodCont=0;% Y7 ~8 S$ H3 G
           }
9 P% y; o4 @1 c         }
9 g8 q5 D$ p. r}
: V0 {3 n3 d( \9 ~
游客,如果您要查看本帖隐藏内容请回复

# C% J* H, L4 f" q# i- }
8 Q, W* p) e8 ]9 N8 X1 A1 h0 x

该用户从未签到

3#
发表于 2018-12-4 10:21 | 只看该作者
不错 支持一下

该用户从未签到

4#
发表于 2019-2-28 18:07 | 只看该作者
看看楼主的代码

该用户从未签到

5#
发表于 2019-3-1 13:40 | 只看该作者
如果您要查看本帖隐藏内容请回复

该用户从未签到

6#
发表于 2019-3-1 16:56 | 只看该作者
看看楼主的代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-11 01:02 , Processed in 0.093750 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表