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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
PWM输出波形脉冲控制系统Proteus仿真及源码/ ^3 M7 e, ]& Y- o
, ^- {; M3 T. r. A4 K

9 X: }  F4 D/ K8 m6 X这是关于PWM 输出波形脉冲的仿真proteus仿真,有仿真示波器,有程序,用数码管和流水灯表示输出结果
) W0 Z6 W4 t: Q7 \% U) p# U
% n3 B; w7 g- H8 O, R' i8 k! F
# K$ n/ E# q" a/ B; _- r9 q
8 B6 Z+ a+ B3 v, V3 y" \部分单片机源程序:

5 N5 S1 G. ~/ c, W#define PWM_GLOBAL 1
$ U  U% R  s, x! k6 a3 C#include "pwm.h", Q' T2 p# f- H6 K2 `6 T
/*****************************************************! M) D2 d# l4 z) h8 N! v
*函数名称:pwm_init(void)' A: ?0 A' @+ L
*函数功能:PWM初始化,设置定时器
/ s& n# u2 P& u8 q+ h- p*函数入口:无: F% O& Z. h+ H/ n0 E
*函数出口:无
( ~# R- W6 [/ A*****************************************************/
9 g# B4 Q5 B3 \, @4 C1 [void pwm_init(void)         // 12M$ Z0 C7 L. |$ Z, R
{                  
& m! r# m- ]( S  t9 B        TMOD=0x20;       // 定时器1 模式2
* E0 j& {4 z5 C! A8 \        TL1 = 255-10;    // 1ms5 f" \& S$ T2 f/ \8 p
        TH1 = 255-10;/ X/ q. {, j: ~, ^& }* O
        ET1 = 1;             //定时器1边沿触发3 z( C- _# u5 `
        TR1 = 1;             //开定时器1中断
% q+ Z, n9 o6 J& \" P' m        pwmPeriodCont =0x00;7 ?: l3 ?+ v& o; S
        pwmH=0x01;0 N. t" c+ K6 ]
}
; D* O8 @) W: k/ u/*****************************************************& {2 E7 W- U6 p- W
*函数名称:void pwm_set(const uchar NewPwmValue)+ @4 M5 H7 Q( g! @1 T3 i
*函数功能:PWM占空比设置) o0 O6 T0 F. e% S
*函数入口:无
' [& _7 d6 C: R2 X: u3 y*函数出口:无
6 n2 q! A& R7 M) i$ {9 A' A. {*****************************************************/
$ ^: |* E& X0 c9 e8 C8 Cvoid pwm_set(uchar NewPwmValue)) f# g9 M7 q3 R% A/ S, H. v
{& ?6 J. ]' U8 q* h) i
        if ((NewPwmValue >= 1)&&(NewPwmValue <= 99))   //一个周期里) {& b; l; P8 n, u; R9 |7 q
        {7 o) L6 A- ~6 ^, p
          pwmH = NewPwmValue;
: P$ ~$ S: L( q3 ~- w4 x        }+ }6 t8 u# h, }+ z; F
        else                                                                                   //若占空比不在1...99范围内则输出一个尖脉冲6 ^1 T, l1 ~0 I, w* ]4 o
        {
; ^* q6 {! p6 _; J/ Z          pwmH =0x01;( |8 O/ k) a! D$ p% r
        }                                                                        & B, @, G, a; c
}6 N( D5 p( R/ Z: G% Z
/*****************************************************$ w# T+ J- L* w1 h( Q! k3 K
*函数名称:pwmProduce(void)) H& B0 \; G/ I3 G
*函数功能:定时器1溢出中断设置
) P, Y# L$ ?5 g! f7 @*函数入口:无1 m3 V) U! d: }: R1 u! o" X
*函数出口:无
! i4 d" v# ?2 ], m1 i4 ~*****************************************************/3 d* z: A( D% |' O
void pwmProduce(void) interrupt 3, y! R  o9 B! F+ S7 {: P* l
{
9 E$ S  Z2 M% s' s$ y% I* w        pwmPeriodCont++;                         //PWM定时周期计数加1           
* x% |3 Y# h* G- r" [0 G0 c0 X        if(pwmPeriodCont<=pwmH)3 G; j, b! w+ o7 ^% t0 R
          PWM_OUT =1;                     // 高电平从0 到...PWM_H
& }# k( X- M; m1 v! M        else  // 剩下的为低电平时间
2 r* F; h4 @/ s" ~" g         {
# T, u8 M0 C. X6 Z1 c  b0 s           PWM_OUT =0;% n  e3 f7 a* \' o; c9 h
           if (pwmPeriodCont >= PWM_Period)// 一个频率周期结束: |, Q1 D1 K# K( k8 `2 V' V! b
           {
; j. T1 [- k3 l% c4 Y8 E- U                 pwmPeriodCont=0;5 P, }* O7 S. o1 E9 l" P" p3 F# r
           }7 @6 l) F2 \( D7 a" w2 ^; q
         }" B" B4 T( c* j
}
9 u! e3 {+ K2 Z2 {* t5 \) E) V7 z
游客,如果您要查看本帖隐藏内容请回复

/ ~/ \  p9 k! U3 P) d
7 s* G& Z: {, W9 B' V$ F$ I: e

该用户从未签到

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-7-18 23:08 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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