永发信息网

51单片机两个io口同时输出两个占空比不同的方波?以下程序希望给点灵感。

答案:3  悬赏:70  手机版
解决时间 2021-04-14 11:05
void pwmqianjin(uchar x1,uchar x2,uint y)
{
uchar a,b,c,d,j;
uint i;
for(i=y;i>0;i--)
{
for(j=7;j>0;j--)
{
for(a=x1;a>0;a--)
in2=1;
for(b=100-x1;b>0;b--)
in1=0;
for(c=x2;c>0;c--)
in3=1;
for(d=100-x2;d>0;d--)
in4=0;
}
}
}
最佳答案
首先89C52内部没有硬件PWM发生器,只能通过定时器模拟!你可以通过两个定时器,T0控制周期,T1控制占空比。
例如:实现周期为1000us,占空比为20%的PWM,用P1.0实现
首先你设置T0为65536-1000 (12M晶振)
T1为65536-200
首先初始化P1.0=1,两个定时器同时打开,在定时器T1中断时拉低P1.0,在定时器T0中断时在拉高P1.0,同时将两定时器初始值初始化T0为65536-1000 ,T1为65536-200
希望对你有用,呵呵!!!

用1个定时器的话也是可以的,但是这就要用一个变量count1 来控制周期和占空比了,比如说你设置1周期为10ms,占空比还是为20%的PWM,你可以设置定时器为每10us产生一次中断,没中断一次使count加1,一开始设置P1.0为高电平,当count1加到200的时候拉低P1.0,等count1到1000了在拉高P1.0,同时复位count1=0,不过这样做的缺点是精度不高,要是PWM所需周期段,精度高的话我还是建议用两个定时器来实现 ,我在这里没有给你具体的代码,我觉得把原理讲清楚猜是最重要的,什么都是才来就上代码,这个对你学习不利,希望对你有用,呵呵!!!!
如果两路同时输出的话只要你设置两个变量,同时进行判断就行了,和一路的原理是一样的。
全部回答
频率在10khz 1/10khz/2=50us #include sbit p1_0=p1^0; void int_x_t() { ie=0x82; tmod=0x01; th0=(65536-50)/256; tl0=(65536-50)%256; tr0=1; } void int_x() interrupt 1 { th0=(65536-50)/256; tl0=(65536-50)%256; p1_0=!p1_0; } void main() { int_x_t(); while(1); }
用一个定时器,再设定两个计数单元,定时器的定时时间是一个对与占空比比较好算的值,当做基准时间,中断里面只要对计数单元计数,即每产生一次中断计数值加1,然后判断计数值,再分别对两个口取反就行。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
怎样看女朋友适不适合做老婆?
瓦罐窑我想知道这个在什么地方
iphone屏幕可以往下按动怎么修
日语“他想……”和“他不想……”怎么说?
银行存一W定期一年是多少利息呀?(税后)
黑龙江省牡丹江市特大凶杀案
有没有像《三生三世十里桃花》一样风格的小说
长春那里有卖性感男士内衣的?
能收BOSS做宠物吗
单选题被100℃的水蒸气烫伤往往比被100℃的沸
怎么让5V输出变成3.7V输出
川大护理系学生就业好吗?工资一般有多少?目前
腌制的海蜇怎么保存,怎样保存新鲜的海蜇
谁有游戏王汉化版的下载地址?
传英床上用品批发我想知道这个在什么地方
推荐资讯
宝宝什么时候添加食盐
怎么投资理财,云钱袋主要理财收益有哪些?
一个人怎么过情人节?
宏图大展是什么意思,千帆竞发展宏图 百舸争流
关于忘情的句子,以低头族,请别忘情为话题的作
Lenovo联想_Ideapad U系列笔记本 广告曲叫什
深圳平安银行借记卡销户后,能不能转帐进去
PSP中的模拟器是什么?在哪里能找到?作用?
重装系统或是还原系统后,09版QQ不能用了!(
谁能告诉我这首歌的名字,记不太清楚了!
玻璃都可以变钻石得歌词叫什么歌
伊没有单人旁读什么,伊没有单人旁读什么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?