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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
PWM输出波形脉冲控制系统Proteus仿真及源码
" y4 X8 W' Q! g' Z* g) p) }7 y5 R, r. ~1 J

/ U  W5 \# {& G# D, Q这是关于PWM 输出波形脉冲的仿真proteus仿真,有仿真示波器,有程序,用数码管和流水灯表示输出结果* v( d, H: X) y% W8 z; W: q* q+ q
6 Z- V' q( F! q0 w: W
9 [3 S3 J1 Q' v; G" i* G

7 E6 N$ E- ^0 {部分单片机源程序:
6 W, A; r4 J, B* F0 e0 [
#define PWM_GLOBAL 1
1 D6 Y4 t# {9 Z0 z- ?#include "pwm.h"& m6 S$ q7 g" u, M; F
/*****************************************************, d' v( |3 `/ X3 I0 n( _( V
*函数名称:pwm_init(void)5 Q/ @* y! P7 \: [) A$ z, q* m% X
*函数功能:PWM初始化,设置定时器
1 x) J6 _/ V" L  F7 ]*函数入口:无, S. R. t& k3 Z' @. n* g
*函数出口:无
4 ?7 ^* r- d7 M, N*****************************************************/
: e& y4 e: ^5 @% evoid pwm_init(void)         // 12M
) Q) R! \) M5 P! d: A" l, u9 |0 z{                   ) P. |' A! C5 a
        TMOD=0x20;       // 定时器1 模式2+ i6 a1 |, E* b. i7 l. z
        TL1 = 255-10;    // 1ms1 F, W  r7 M" l7 u
        TH1 = 255-10;
) R, o: u$ _( W. [& K8 ?+ ~# s        ET1 = 1;             //定时器1边沿触发
3 I0 W/ Q( S" g        TR1 = 1;             //开定时器1中断* W6 F9 a, Q- r5 u
        pwmPeriodCont =0x00;. [7 |$ ~. n* V: m
        pwmH=0x01;
" ~1 _% R% O: U: o; X/ |7 h}
, u9 a4 J% k8 r  I$ P2 K7 _/*****************************************************- o$ V5 A# P3 b! K! y& [1 p
*函数名称:void pwm_set(const uchar NewPwmValue)# i9 G1 O# }* i9 O2 P
*函数功能:PWM占空比设置
" `+ ?, Z. ~( T7 `! ?*函数入口:无7 z! t0 Q1 A5 F) A
*函数出口:无
7 ~( ?0 D3 n. e, Y*****************************************************/' u/ C0 u! K6 U6 Q- k9 L2 l
void pwm_set(uchar NewPwmValue)
/ W: {1 s; T" m5 p{
& E; _( V& j3 x& H, M        if ((NewPwmValue >= 1)&&(NewPwmValue <= 99))   //一个周期里
2 u8 a; m9 l2 h2 E6 R# j3 J( m& |        {
: G2 `! k$ ~, _6 V          pwmH = NewPwmValue;% M* J$ y% g5 q9 G/ L0 d- |
        }
+ x& n& M) R. ?& [        else                                                                                   //若占空比不在1...99范围内则输出一个尖脉冲( I' E; K/ [8 D9 e
        {2 ^- E. }1 j  k* ~4 ^/ V
          pwmH =0x01;* @9 C8 i9 G) P  N1 j
        }                                                                        4 F+ M# r2 R" R7 W
}3 @, u" p: |. U/ V
/*****************************************************
: K1 D9 Q. e/ r0 |0 \/ b*函数名称:pwmProduce(void)" U- F* v+ R2 e9 b
*函数功能:定时器1溢出中断设置
2 f3 W- l, q) d! O6 ~! n*函数入口:无
1 z4 f' e1 Y( c( M, S! \0 o7 m*函数出口:无
' }, `" }( e2 H5 }*****************************************************/
( [4 ]( p) X. p" e( g% k0 K9 R' ovoid pwmProduce(void) interrupt 3
, S6 L$ ]  n. b( v7 z; O0 W+ Y' L: z5 ]{
2 A3 q# @9 t, H! U$ k. a8 z6 k        pwmPeriodCont++;                         //PWM定时周期计数加1           
0 R5 D- N: i* L" k6 j        if(pwmPeriodCont<=pwmH)! [" ~% p8 ?9 E* v& [. q
          PWM_OUT =1;                     // 高电平从0 到...PWM_H
6 ~9 Q5 L  C$ z* r$ a# l( P9 t. Q        else  // 剩下的为低电平时间
6 R9 `+ e( O3 p" r  w1 v" S6 j5 y         { & w- N# X* l3 r4 r' i0 Z' ^1 p7 r
           PWM_OUT =0;$ K+ [0 z/ B, q* v9 P
           if (pwmPeriodCont >= PWM_Period)// 一个频率周期结束8 k8 e+ I3 G  `8 `0 ~4 }2 p
           { ! }! ]" }( w- X
                 pwmPeriodCont=0;
; Q& _# i* _3 ]8 n+ G           }/ c. _5 Q" l# g4 M2 q4 w1 a
         }
1 j. A$ q3 g) ]! P}5 r( L5 l5 F" T* f" _1 A/ j% U) y' H
游客,如果您要查看本帖隐藏内容请回复

: |& s2 A1 m; H. r

  i) x2 I9 Y% D# a2 m+ [& N/ j5 O7 P

该用户从未签到

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-8-19 20:49 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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