看之前强烈建议先自己做一遍!!!
演示视频题目讲解完整程序main.ciic.ciic.h
工程文件
演示视频
题目讲解
首先还是从题目的程序框图准备起。 将程序框图的PCF8591(模拟输入),按键,数码管,EEPROM都先调试好。 然后看一下基本功能,让自己对整个流程有一个了解。再将彩灯控制的LED的四种模式准备好。这里我建议是用数组把状态保存起来
uchar LED1[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //模式1
uchar LED2[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; //模式2
uchar LED3[4]={0x7e,0xbd,0xdb,0xe7}; //模式3
uchar LED4[4]={0xe7,0xdb,0xbd,0x7e}; //模式4
然后继续看题,这里亮度调节需要调节pwm占空比来实现,所以先放一下,先把Rb2电压转化为4个等级。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/a730a9acfc0b40db8e7e81f2eb02f8ab.png#pic_center)
uchar SMG_mode=0,move; //数码管模式定义,滑动变阻器Rb2定义
uchar shine_mode=0; //定义光强
void main(void)
{
move=IIC_read(PCF8591_address,Move_address); //读取Rb2电阻阻值
move=move*1.9608; //500/255 将255转换到500
if(move=1200)gap=1200; //限幅
if(led_mode>=4)led_mode=4; //限幅
break;
case 0x07: //S4
if(SMG_mode==1)led_mode--;
else if(SMG_mode==2)gap-=100;
if(gap |