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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
PWM输出波形脉冲控制系统Proteus仿真及源码5 \' v/ K, w- o2 r

1 H7 U% q8 L" T: A9 M, d

$ X. J* L+ x# B! ~这是关于PWM 输出波形脉冲的仿真proteus仿真,有仿真示波器,有程序,用数码管和流水灯表示输出结果
7 }- }3 o% i: O* [! c* d6 ? * A2 J* |8 k2 ?! ?1 `% O% {

7 b0 Z" B' I2 E  V9 S' i9 f% `7 f! A* g! K' V; m) C7 z
部分单片机源程序:
" t. f9 l5 M* v& ?; {7 m, P- `$ f
#define PWM_GLOBAL 1
% d* g3 D2 C2 a#include "pwm.h"
9 l; v) R8 I2 R1 k* V  J6 y2 \6 D( Z9 g/*****************************************************$ t5 c4 e3 z; `8 P+ [3 Z/ F1 w
*函数名称:pwm_init(void)1 S8 U- }) J# t% z2 Y
*函数功能:PWM初始化,设置定时器7 v5 b' u: e: l0 V
*函数入口:无
' w+ f. Y) b5 d$ X" s*函数出口:无& C) d/ Z  p$ c& z$ D+ C0 i
*****************************************************/2 |0 U& k2 O# ]' s  R8 n
void pwm_init(void)         // 12M& S7 Z1 G# w, a: o' M8 q0 V
{                  
$ t) \+ C# U+ e- J# C4 n        TMOD=0x20;       // 定时器1 模式2
7 S' m1 U- i! o1 }/ m        TL1 = 255-10;    // 1ms3 L, ?+ O! x' F! p" B) I1 x
        TH1 = 255-10;
5 T) v, l/ q2 z        ET1 = 1;             //定时器1边沿触发
. `! K, c# T5 h5 A0 V        TR1 = 1;             //开定时器1中断  j" l: Z9 z1 t( F. n( V' ?
        pwmPeriodCont =0x00;
% L+ {! I  C' f  r% J9 f: V        pwmH=0x01;
6 p, Z, U( K- ~( G. G5 h8 u}% r2 U, ?: E2 M8 g
/*****************************************************6 j, V. O2 ]1 b7 T
*函数名称:void pwm_set(const uchar NewPwmValue)
0 W0 @. o6 X5 d8 X2 E8 e6 k0 D*函数功能:PWM占空比设置
* |5 q& o' |# f*函数入口:无5 C9 T: O- c% E
*函数出口:无
  k  d2 I* Q  G- B  s2 Z*****************************************************/
& R- O& k: F/ R! l+ D5 Uvoid pwm_set(uchar NewPwmValue)0 {, o3 R7 p4 C. t6 P
{( u: F4 ^% ]& B3 M( Q
        if ((NewPwmValue >= 1)&&(NewPwmValue <= 99))   //一个周期里7 y$ r; V4 W7 q3 s; p7 j
        {2 _+ l1 [  c5 w& I
          pwmH = NewPwmValue;& B) r+ W% ~: d& H" i7 F
        }2 Z( c9 ~+ j& u0 ]/ z: G( _9 q
        else                                                                                   //若占空比不在1...99范围内则输出一个尖脉冲
% G7 o6 a' A  G5 z        {
7 {# s# R0 n3 T, a          pwmH =0x01;
- |" ?. {' G8 ^3 N- o        }                                                                        * Y6 ?0 Q" V! d- ?- h5 p& [
}
  O: e# _$ C! [( x7 n/ G/*****************************************************
$ |' w6 |, l8 M*函数名称:pwmProduce(void)$ I7 x7 D6 y- v' O2 t1 C/ Q) \- N
*函数功能:定时器1溢出中断设置
% E+ w2 h9 P/ X*函数入口:无
3 i9 _: |: D, A; h0 U. l& v*函数出口:无% n% U* _2 |( \. [/ r
*****************************************************/
) {6 E& D, c0 u! o2 m7 W; Ivoid pwmProduce(void) interrupt 3; [& N8 ~# @6 _
{3 Y( q/ H: y# F4 t5 ~
        pwmPeriodCont++;                         //PWM定时周期计数加1           & I" S  g& E+ f7 L) O( L6 r9 U
        if(pwmPeriodCont<=pwmH)8 D# C  C+ {, {6 |+ D0 b  K/ d# d7 ]
          PWM_OUT =1;                     // 高电平从0 到...PWM_H8 \: A# i) W, [1 E- A( J
        else  // 剩下的为低电平时间
$ G/ ^! W6 u  U! A3 u2 b; u         {
3 D2 |( z7 I/ N' X$ B! ^( Z1 r           PWM_OUT =0;
  A# v$ R0 ?# H* O           if (pwmPeriodCont >= PWM_Period)// 一个频率周期结束
5 L( G: G0 L" X           {
, t! T% h0 m- ?6 e* J3 }                 pwmPeriodCont=0;
' [0 N9 H! v2 T9 @5 Q' w           }
) d% U, Z9 D$ ]9 u' P         }
9 Y* V; e# b5 |3 @4 d/ q}
; Q  U7 [. t, j1 g
游客,如果您要查看本帖隐藏内容请回复

- n$ f- h3 C6 [3 ?
+ `$ c5 q, I: x2 u2 J7 F

该用户从未签到

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-13 18:01 , Processed in 0.078125 second(s), 26 queries , Gzip On.

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

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

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