久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
中微SC8p8022單片機雙色無級調光,觸摸,PWM控制程序
[打印本頁]
作者:
yw125942181
時間:
2025-4-24 11:04
標題:
中微SC8p8022單片機雙色無級調光,觸摸,PWM控制程序
短按調色,1次白光,2次黃光,3次中性光每種光都可長按無級調光,互不影響。
中微SC8p8022已測穩定.
#include <sc.h>
#include "Touch_Kscan_Library.h"
volatile unsigned int pwm_duty,pwm_duty1,pwm_duty2,num;
volatile unsigned char MainTime,touch_count = 0;
volatile bit B_MainLoop,state=0;
volatile unsigned int Time;
void delay(int count) {
for (int i = 0; i < count; i++) {
for (int j = 0; j < 100; j++) {
}
}
}
//系統初始化
void Init_System()
{
asm("nop");
asm("clrwdt");
INTCON = 0; //禁止中斷
OSCCON = 0X72; //配置振蕩為8M
OPTION_REG = 0;
PORTB = 0;
PIE1 = 2;
PR2 = 250; //8M下將TMR2設置為125us中斷
//TRISB=0B00010100;
TRISB=0;
PWMCON0=0;
PWMTL=0XEF;
PWMT4L=0XEF;
PWMTH=0B00001111;
PWMD23H=00;
PWMD3L=0X0F;
PWMD4L=0X0F;
PWMIF=0;
PWMCON0 &= ~(0b00011000);
T2CON = 4; //使能定時器2
INTCON = 0XC0; //使能中斷
}
void Refurbish_Sfr()
{
//刷新中斷相關控制寄存器
PIE1 = 2;
PR2 = 250;
INTCON = 0XC0;
if (4 != T2CON)
T2CON = 4;
}
void set_pwm_duty_cycle(unsigned int pwm3_duty, unsigned int pwm4_duty)
{
pwm3_duty=pwm3_duty/4;
pwm4_duty=pwm4_duty/4;
// 寫入PWM3占空比(8位)
PWMD23H = ((pwm3_duty >> 8) & 0x03)<<4; // 高2位
PWMD3L = pwm3_duty&0xFF ; // 低8位
// 寫入PWM4占空比(10位)
PWMTH = ((pwm3_duty >> 8) & 0x03)<<4;
PWMD4L = pwm4_duty&0xFF;
PWMCON0=0B00011000;
}
/***********************************************************
鍵處理函數
***********************************************************/
void KeyServer()
{
static unsigned char KeyOldFlag = 0;
static bit Leave,state=0;
unsigned int Tim;
// 有鍵按下
if (KeyFlag[0])
{
delay(6);//delay(8);
if(KeyFlag[0]){
if(Leave)Leave = 0; //有鍵按下 清 松手標志
Time++;
if(Time>200)
{
Tim++;
if(Tim>=3000){
Tim=0;
if(state==0)
{
num++; //增加亮度
if(num>=800)
{
num=800;
}
}
if((state==1) && (num>8))
{
num--; //減少加亮度
if(num<=12)
{
num=12;
}
}
switch(touch_count)
{
case 1:
pwm_duty1=num;
set_pwm_duty_cycle(0,pwm_duty1);
break;
case 2:
pwm_duty=num;
set_pwm_duty_cycle(pwm_duty, 0);
break;
case 3:
pwm_duty2=num;
set_pwm_duty_cycle(pwm_duty2, pwm_duty2);//
break;
case 4:
break;
}
//num=pwm_duty;
}
}
KeyOldFlag = KeyFlag[0];
}
}
else //沒鍵按下
{
if(Leave == 0) //無鍵按下 置位 松手標志
{
Leave = 1;
state = ~state; //松手后只執行一次
}
if((KeyOldFlag!=KeyFlag[0]) && Time<200) //短按處理
{
delay(4);
touch_count++;
switch (touch_count)
{
case 1:
{set_pwm_duty_cycle(0, pwm_duty1); // PWM4 亮 黃
num=pwm_duty1;
break;}
case 2:
{set_pwm_duty_cycle(pwm_duty, 0); // PWM3 亮
num=pwm_duty;
break;}
case 3:
{set_pwm_duty_cycle(pwm_duty2,pwm_duty2); // 都 亮
num=pwm_duty2;
break;}
case 4:
{//set_pwm_duty_cycle(0, 0); // 關
//PWMD3L=0;
//PWMD4L=0;
PWMCON0 &= ~(0b00011000);
touch_count=0;
break;}
}
}
Time=0;
KeyOldFlag = 0;
}
}
/***********************************************************
中斷服務函數
***********************************************************/
void interrupt Isr_Timer()
{
if (TMR2IF)
{ //若只使能了一個中斷源,可以略去判斷
TMR2IF = 0;
if (++MainTime >= 20)
{
MainTime = 0;
B_MainLoop = 1;
}
}
else
{
PIR1 = 0;
}
}
/***********************************************************
主循環
***********************************************************/
void main()
{
Init_System();
pwm_duty=12;
pwm_duty1=12;
pwm_duty2=12;
while (1)
{
if (B_MainLoop)
{
B_MainLoop = 0;
CLRWDT();
CheckTouchKey();
Refurbish_Sfr();
KeyServer();
}
}
}
復制代碼
51hei.png
(4 KB, 下載次數: 0)
下載附件
2025-4-24 16:24 上傳
程序下載:
雙色無級調光.rar
(136.47 KB, 下載次數: 0)
2025-4-24 10:59 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
3038838599
時間:
2025-4-29 23:37
樓主 也在用中微的單片機嗎 可以交流交流嗎
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
日日骚av
|
精品国产99久久久久久宅男i
|
黄色小视频免费
|
成人欧美激情
|
少妇高潮毛片
|
免费一级黄色录像
|
成人黄色免费视频
|
日本黄色一级视频
|
日韩亚洲欧美在线
|
视频爱爱免费视频爱爱太爽
|
中文字幕理论片
|
在线观看国产免费视频
|
日本精品在线视频
|
久草资源在线观看
|
日韩成人在线免费观看
|
xxxx亚洲
|
a毛片视频
|
日韩精品免费视频
|
日韩av一区二区三区四区
|
在线网站免费观看18
|
欧美一级网站
|
欧美日韩a
|
一区二区三区成人
|
欧美在线网址
|
超碰在线观看免费版
|
午夜激情福利
|
超碰123
|
亚洲国产成人精品女人
|
日韩视频免费观看
|
免费视频毛片
|
五月天精品
|
中文字幕在线免费看
|
成人不卡
|
一本到av
|
成人亚洲精品
|
色综合天天综合网国产成人网
|
一区二区三区影视
|
日韩在线精品视频
|
成人毛片一区二区三区
|
久久青青操
|
欧美精产国品一二三区
|