简介
分享一个使用8G1K08作为主控制作的无极调光灯环。用来做带照明的放大镜;
原理图
主控
将所有引脚引出,还可以作为其他DIY的验证开发板。

供电
使用稳压器降压后提供MCU 3.3V电源;

电池充电电路

LED驱动电路

调光电位器

程序
主程序
#include "uart.h"
#include "adc.h"
#include "pwm.h"
#include <stdio.h>
/* 串口发送字节数据函数 参数是你要发送的字节 */
void UartSend_Data(unsigned char dat)
{
	SBUF = dat;  // 把要发送的数据给了SBUF寄存器
	while(!TI);  // 等待数据发送完成
	TI = 0;      // 清除发送完成标志位
}
/* 主函数 */
void main()
{
	unsigned int res;
	Uart1_Init();
	ADC_Init();
	PWM_Init();
	while(1)
	{
		DelayMs(200);
		res = ADC_Read();
		PWM_Duty(res);
	}
}
PWM 程序
#include "pwm.h"
void PWM_Init(void)
{
	P3M0 &= ~0x20; 
	P3M1 &= ~0x20; 
	P_SW1 &= ~(0X20);
	P_SW1 |= (0X10);		// 切换PCA0 的引脚为P35
	CCON = 0X00;
	CMOD = 0X0A;
	CCAPM0 = 0X42;
	PCA_PWM0 |= 0xc0;
	CL = 0;
	CH = 0;
	// 下边的三个值共同绝顶初始占空比
	PWM_Duty(1024/2);
	CCON |= 0X40;
}
void PWM_Duty(unsigned int adc_value) 
{
	unsigned char temp_l,temp_h,temp;  
    temp_l=adc_value&0x00ff;                //读pwm_0低8位赋值给temp_l
    temp_h=(adc_value&0x0300)>>4;        //读pwm_0高2位,移动到XCCAP0H(PCA_PWM0[5:4])位置,赋值给temp_h
    temp=PCA_PWM0&0xcd;                        //读PCA_PWM0,XCCAP2H(PCA_PWM0[5:4])、EPC0H(PCA_PWM0[1])清零后赋值给temp
    temp_h|=temp;                                //写其他位到temph
    if(adc_value==0x03ff)                        //如果pwm_0最大
	{
		temp_h|=0x02;                        //设置EPC0H(PCA_PWM0[1])为1
	}
  
    PCA_PWM0=temp_h;                        //写PCA_PWM0(先写高2位)
    CCAP0H=temp_l;                                //写CCAP0H(再写低8位)
}
ADC 采样
#include "adc.h"
// 使用P32作为ADC采样口
void ADC_Init(void)
{
	P3M0 &= ~0x04; P3M1 |= 0x04;		// 配置端口为高祖输入
	P_SW2 |= 0X80;						// 使能外部扩展寄存器
	ADCCFG &= ~0x2f;					// ADCCFG = xx0x 0000 SPEED(0)
	ADCCFG |= 0x20;						// ADCCFG = xx0x 0000 SPEED(0)
	ADCTIM = 0x2e;						// 配置ADC CSSETUP(0), CSHOLD(1), SMPDUTY(14)
	ADC_CONTR = 0X8A;					// 开启ADC电源,清除转换结束标志,选择通道10(P32);
}
unsigned int ADC_Read(void) 
{
	unsigned int res;
	ADC_CONTR |= 0X40; // 启动AD转换
	_nop_();
	_nop_();
	while(!(ADC_CONTR&0X20)); // 查询ADC完成标志
	ADC_CONTR &= ~0X20;  // 清除完成标志
	res = (ADC_RES<<8)|ADC_RESL; //读取ADC结果
	return res;
}
实物图及功能延时
实物图
灯环

主控板

功能演示