标题:
求51单片机的智能台灯的原理图和代码
[打印本页]
作者:
lll123123qq
时间:
2024-5-22 08:33
标题:
求51单片机的智能台灯的原理图和代码
由于本论坛禁止直接求程序,禁止伸手党,所以向大家请教一下大致的实现方法与思路,理清头绪后我自己来写程序去实现,谢谢大家
作者:
devcang
时间:
2024-5-22 15:27
你想做到什么程度,调光? 人在灯亮、人走灯灭?湿温度?还想什么功能呢
调光 pwm
自动亮灭,现在使用雷达模块
…………
作者:
STC庄伟
时间:
2024-5-22 16:02
先去学着看懂程序 ,MCU厂家都提供范例程序了 从呼吸灯学起
作者:
STC庄伟
时间:
2024-5-22 16:03
#include "reg51.h"
#include "intrins.h"
#define CYCLE 0x1000
sfr P_SW2 = 0xba;
sfr PWMSET = 0xF1;
sfr PWMCFG01 = 0xF6;
sfr PWMCFG23 = 0xF7;
sfr PWMCFG45 = 0xFE;
#define PWM0C (*(unsigned int volatile xdata *)0xFF00)
#define PWM0CH (*(unsigned char volatile xdata *)0xFF00)
#define PWM0CL (*(unsigned char volatile xdata *)0xFF01)
#define PWM0CKS (*(unsigned char volatile xdata *)0xFF02)
#define PWM0TADC (*(unsigned int volatile xdata *)0xFF03)
#define PWM0TADCH (*(unsigned char volatile xdata *)0xFF03)
#define PWM0TADCL (*(unsigned char volatile xdata *)0xFF04)
#define PWM0IF (*(unsigned char volatile xdata *)0xFF05)
#define PWM0FDCR (*(unsigned char volatile xdata *)0xFF06)
#define PWM00T1 (*(unsigned int volatile xdata *)0xFF10)
#define PWM00T1H (*(unsigned char volatile xdata *)0xFF10)
#define PWM00T1L (*(unsigned char volatile xdata *)0xFF11)
#define PWM00T2H (*(unsigned char volatile xdata *)0xFF12)
#define PWM00T2 (*(unsigned int volatile xdata *)0xFF12)
#define PWM00T2L (*(unsigned char volatile xdata *)0xFF13)
#define PWM00CR (*(unsigned char volatile xdata *)0xFF14)
#define PWM00HLD (*(unsigned char volatile xdata *)0xFF15)
sfr P0M1 = 0x93;
sfr P0M0 = 0x94;
sfr P1M1 = 0x91;
sfr P1M0 = 0x92;
sfr P2M1 = 0x95;
sfr P2M0 = 0x96;
sfr P3M1 = 0xb1;
sfr P3M0 = 0xb2;
sfr P4M1 = 0xb3;
sfr P4M0 = 0xb4;
sfr P5M1 = 0xc9;
sfr P5M0 = 0xca;
void PWM0_Isr() interrupt 22
{
static bit dir = 1;
static int val = 0;
if (PWMCFG01 & 0x08)
{
PWMCFG01 &= ~0x08; //清中断标志
if (dir)
{
val++;
if (val >= CYCLE) dir = 0;
}
else
{
val--;
if (val <= 1) dir = 1;
}
_push_(P_SW2);
P_SW2 |= 0x80;
PWM00T2 = val;
_pop_(P_SW2);
}
}
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
PWMSET = 0x01; //使能PWM0模块(必须先使能模块后面的设置才有效)
P_SW2 = 0x80;
PWM0CKS = 0x00; // PWM0时钟为系统时钟
PWM0C = CYCLE; //设置PWM0周期
PWM00T1= 0x0000;
PWM00T2= 0x0001;
PWM00CR= 0x80; //使能PWM00输出
P_SW2 = 0x00;
PWMCFG01 = 0x05; //启动PWM0模块并使能PWM0中断
EA = 1;
while (1);
}
作者:
lll123123qq
时间:
2024-5-23 21:55
devcang 发表于 2024-5-22 15:27
你想做到什么程度,调光? 人在灯亮、人走灯灭?湿温度?还想什么功能呢
调光 pwm
自动亮灭,现在使用雷 ...
可以调光、可以使用wifi模块连接云智能、人靠近灯亮,没人就灭
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1