问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

...器产生的占空比可调的PWM程序,采用C51(AT89s51)编写的C语言程序...

发布网友 发布时间:2024-02-08 08:18

我来回答

3个回答

热心网友 时间:2024-07-29 23:28

我有一个可以借鉴一下:
/*******************************************************************/
// 利用定时器控制产生占空比可变的 PWM 波
// 按K5,PWM值增加,则占空比减小,LED 灯渐暗。
// 按K6,PWM值减小,则占空比增加,LED 灯渐亮。
// 当PWM值增加到最大值或减小到最小值时,蜂鸣器将报警。
/*********************************************************/
#include < reg51.h >
#include < intrins.h >
sbit K5 =P3^2 ; //增加键
sbit K6 =P3^3 ; //减少键
sbit BEEP =P3^7 ; //蜂鸣器
unsigned char PWM=0x7f ; //赋初值
void Beep();
void delayms(unsigned char ms);
/*********************************************************/
void main()
{
P2=0xff;
TMOD=0x21 ;
TH0=0xfc ; //1ms延时常数 12M
TL0=0x18 ; //频率调节
// TH1=PWM ; //脉宽调节
// TL1=0 ;
EA=1;
ET0=1;
ET1=1;

TR0=1 ;
while(1)
{
do{
if(PWM!=0xff)
{PWM++ ;delayms(10);}
else Beep() ;
}
while(K5==0);
do{
if(PWM!=0x00)
{PWM-- ;delayms(10);}
else Beep() ;
}
while(K6==0);
}
}
/*********************************************************/
// 定时器0中断服务程序.
/*********************************************************/
void timer0() interrupt 1
{
// TR1=0 ;
TH0=0xfc ;
TL0=0x66 ;

TR1=1 ;
P2=0x00 ; //启动输出
}
/*********************************************************/
// 定时器1中断服务程序
/*********************************************************/
void timer1() interrupt 3
{
TH1=PWM ; //用定时器的方式2,是数据重装TH-TL中,改变PWM的值即该变定时器的初值
TR1=0 ;
P2=0xff ; //结束输出
}
/*********************************************************/
//蜂鸣器子程序
/*********************************************************/
void Beep()
{
unsigned char i ;
for (i=0 ;i<100 ;i++)
{
delayms(2) ;
BEEP=!BEEP ; //Beep取反
}
BEEP=1 ; //关闭蜂鸣器
delayms(100);
}

/*********************************************************/
// 延时子程序
/*********************************************************/
void delayms(unsigned char ms)
{
unsigned char i ;
while(ms--)
{
for(i = 0 ; i < 120 ; i++) ;
}
}
/*********************************************************/

你想让输出口是P1^7,我这用的是P2口为输出,将其变化一下即可,希望对你有用!!!!!!!

热心网友 时间:2024-07-29 23:35

用定时器 根据方波周期来算 假设周期100ms 那么定时器用最小的时间间隔(建议能被周期整出最好) 假设定时器是1ms的间隔 那么你取数字100 作为一个周期技术的表示 假定是高电平跟低电平比是 6:4 那么 前60个计数 输出高 后面输出低级 这样还可以通过按键来修改占空比

热心网友 时间:2024-07-29 23:31

看了你对上一位的追问
有影响是因为定时器的原因吧
你的pwm也是定时器产生的
而其他的程序会有影响吧
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
谁能给个单机版的风云之雄霸天下啊?? 求风云雄霸天下PC单机游戏WIN7版 雄霸天下任务指南 开心网001老房子卖了以后家具还有吗? 为什么001开心网买房子组件删除仓库里的东西都没了 请教一下,开心001的开心庄园里面的建材有好多富余的的 除了5元一个卖... 开心网001小号怎么给大号送房子? 开心网001多少级能送别人房子?多少级能接受别人给的房子? 开心网001果实或家具能送人吗 开心网(kaixin001)怎么买外地房子? 一年改2次的办法 ...最大的正方形,正方形面积16平方分米,那么圆的面积与正方形面积的比... ...说明:外面一个大的正方形,里面是一个圆形和一个小的正方形... 笔记本4:3的屏幕和16:9的宽屏哪个好呀 ...规定,伪造、变造、私自印制开户许可证的,构成犯罪,给予的处罚是... HTC X310e提示有更新,但是连接ZUNE后,无反应? 如何用c语言让at89s51单片机产生一个时钟脉冲 htc a310e在刷recovery时候总是停在sending recovery不动了,是怎么回事... 买的htcx310E的手机,屏坏了于是就换了个屏,但之后就屏幕就总是卡死但... 一个手机号绑定两个怎么找回另一个? 父亲意外去世,打官司有一笔赔偿金,有一儿子,两个出嫁的女儿和母亲... 一年内怎么改第二次 连锁药店下属的分店需要做首营企业审批表吗? 白炽灯老烧坏的原因?怎么处理 连锁药店的分店是否可以独立核算 一叶落知天下秋什么意思 一年只能修改两次吗? 苹果12pro扬声器多少钱一个啊? OPPOa83怎么把应用弄到sd卡上,能给个详细点的解答吗?具体流程什么的 htca310e已经解锁开机就停在HTC的画面,画面4个角有个三角形符号中间有个... 如何有效缓解孩子的入园焦虑? 改一年内怎么改第二次 签订租赁合同一年中途退房怎么办没有押金剩下的租金可以退还吗_百度知 ... 一个正方形的面积是16平方厘米,在这个正方形里画一个最大的圆,在它的... 修改一年内如何二次修改吗苹果 笔记本电脑处于脱机状态如何恢复 健身是一天练一两处肌肉好呢?还是一天练全身好呢? 简短有意义的id名推荐 在钢铁是怎样练成的文中提到一个中国人,是个什么人? 宝鸡最好的幼儿园是哪家呀? 怎么一年内修改两次? 在钢铁是怎样炼成的第七节当中出现了一个中国人,他的身份是什么 空气调节是做什么的? 一个正方形里有一个最大的圆,正方形的面积是16平方厘米,求剩下的面积... 孩子出车祸她花光了所有积蓄为救孩子只好用前夫留下的是什么... 儿子车祸她花光了所有积蓄,为救孩子,她刷了前夫的。是哪部小说... 可以改几次 HTC a310e 怎么进入recovery模式 htc a310e 刷机后,可用空间变为6M,以前刷同个rom包,可用空间为140M,刷... 生物:某学生在探究“外界溶液浓度对植物吸水的影响”时,将新鲜萝卜切条...