找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 32048|回复: 27
收起左侧

51单片机pwm调速调光程序(非常好)

  [复制链接]
ID:68618 发表于 2014-11-11 18:43 | 显示全部楼层 |阅读模式
#include"reg52.h"
typedef unsigned char uchar;
typedef unsigned int uint;
sbit ENA=P0^0;
sbit IN1=P0^1;
sbit IN2=P0^2;
sbit IN3=P0^3;
sbit IN4=P0^4;
sbit ENB=P0^5;
uint k,j;
#define OFF ENA=0;ENB=0;
#define ON ENA=1;ENB=1;
#define LEDL(key) P2&=(0xfe<<key);           //指定对应的二极管发亮
#define LEDH(key) P2|=(0x01<<key);          //指定LED熄灭
#define QX(x,y) IN1=x,IN2=y;
#define QY(x,y) IN3=x,IN4=y;
void main()              
{               
void init();                 //初始化定时器
void LEDOM();            //流水灯函数声明
void daley(uint,uint);          //延时函数声明
void (*p)(uint,uint);          //定义一个(uint,uint)的函数指针
void OL_bt(uint x,uint y);          //PWM调制函数声明
p=OL_bt;
QX(1,0);
QY(1,0);
init();
while(1)
{
  LEDOM();
  (*p)(1000,100);
}
}
void init()                       //定时器中断初始化
{
  TMOD=0x01;                                    //设置定时器0为工作方式1
  EA=1;                                         //开总中断
  ET0=1;
TR0=1;                                       //定时器0中断允许        
}
OStime() interrupt 1
{
static char n;
if(n==0)
{
  OFF;
  TH0=(65536-j)/256;
  TL0=(65536-j)%256;
  n=1;
  return;
}
if(n==1)
{
  ON;
     TH0 = (65536-k)/256;                     
     TL0 = (65536-k)%256;
     n=0;
  return;
}   
}
void OL_bt(uint x,uint y)             //改变x,y的值来改变PWM来调速 x增大y减小速度减小  x减小y增大速度增大
{
k=y;
j=x;
}
void daley(uint x,uint y)
{
uint a,b;
for(a=x;a>0;a--)
  for(b=y;b>0;b--);
}
void LEDOM()
{
LEDL(0);
daley(100,100);
LEDL(1);
daley(100,100);
LEDL(2);
daley(100,100);
LEDL(3);
daley(100,100);
LEDL(4);
daley(100,100);
LEDL(5);
daley(100,100);
LEDL(6);
daley(100,100);
LEDL(7);
daley(100,100);
LEDH(0);
daley(100,100);
LEDH(1);
daley(100,100);
LEDH(2);
daley(100,100);
LEDH(3);
daley(100,100);
LEDH(4);
daley(100,100);
LEDH(5);
daley(100,100);
LEDH(6);
daley(100,100);
LEDH(7);
daley(100,100);
}            

回复

使用道具 举报

ID:71359 发表于 2014-12-30 13:31 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:56948 发表于 2015-1-14 10:11 来自手机 | 显示全部楼层
学习了,非常好。
回复

使用道具 举报

ID:72947 发表于 2015-1-31 19:00 来自手机 | 显示全部楼层
谢谢分享!!
回复

使用道具 举报

ID:46228 发表于 2015-3-3 23:02 | 显示全部楼层
又学到了知识,万分感谢,太感动了
回复

使用道具 举报

ID:16408 发表于 2015-3-9 22:36 | 显示全部楼层
不错不错
回复

使用道具 举报

ID:74355 发表于 2015-3-10 12:27 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:71991 发表于 2015-3-14 23:01 | 显示全部楼层
我还没有看懂呀
回复

使用道具 举报

ID:29438 发表于 2015-3-18 13:15 | 显示全部楼层
学习了,谢谢!
回复

使用道具 举报

ID:70769 发表于 2015-3-21 22:45 | 显示全部楼层
VERY  GOOD!!!
回复

使用道具 举报

ID:75461 发表于 2015-4-1 19:24 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:76567 发表于 2015-4-10 10:48 | 显示全部楼层
疯狂的回复,疯狂的下载!
回复

使用道具 举报

ID:73030 发表于 2015-4-10 11:30 来自手机 | 显示全部楼层
这个好,学习学习,谢谢楼主。
回复

使用道具 举报

ID:68477 发表于 2015-4-12 14:04 | 显示全部楼层
学习了,谢谢
回复

使用道具 举报

ID:93890 发表于 2016-2-3 10:13 | 显示全部楼层
坑爹。。。。
回复

使用道具 举报

ID:47286 发表于 2016-2-3 13:07 | 显示全部楼层
是个思路 可这样 一个片子岂不是只能干这一件事 别的什么都干不了啊 比如通讯怎么办
回复

使用道具 举报

ID:129840 发表于 2016-8-8 16:32 | 显示全部楼层
X,Y值怎么改变的占空比啊。求大神指教
回复

使用道具 举报

ID:130508 发表于 2016-8-8 22:20 | 显示全部楼层
P0^0是做什么的
回复

使用道具 举报

ID:141392 发表于 2017-8-3 09:57 | 显示全部楼层
这个程序就能调光啊
回复

使用道具 举报

ID:546 发表于 2018-5-1 17:29 | 显示全部楼层
进来学习学习
回复

使用道具 举报

ID:320751 发表于 2018-5-2 20:43 | 显示全部楼层
谢谢分享 初学者谢谢你
回复

使用道具 举报

ID:305436 发表于 2018-9-11 22:08 来自手机 | 显示全部楼层
请问我用STC15W404AS芯片只需要一个电压检测端口P1.7还有一个输出端口接MOS管我要如何控制输出电压变化来调光
回复

使用道具 举报

ID:216962 发表于 2018-9-13 14:20 | 显示全部楼层
谢谢,看看程序先。。
回复

使用道具 举报

ID:407566 发表于 2018-11-14 16:19 | 显示全部楼层
请问怎么接线
回复

使用道具 举报

ID:423511 发表于 2018-11-17 09:12 | 显示全部楼层
谢了,学到了好多。
回复

使用道具 举报

ID:193022 发表于 2020-1-2 22:49 | 显示全部楼层

学习了,非常好。
回复

使用道具 举报

ID:384033 发表于 2023-8-30 13:13 | 显示全部楼层
如果在程序里就用定时器控制不使用delay函数就更好了
回复

使用道具 举报

ID:384033 发表于 2023-8-30 13:14 | 显示全部楼层
如果能够就使用定时器控制而不用delay函数就更好了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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