自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数HarmonyOS鸿蒙开发工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年HarmonyOS鸿蒙开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上HarmonyOS鸿蒙开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注鸿蒙获取)
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
文章附上工程下载地址:
https://download.csdn.net/download/qq_64257614/87854725?spm=1001.2014.3001.5503
在进行ADC与DAC测试时发现了如下冲突:
ADC与DAC都运行,即使安排了不同的开启时间,但DAC输出电压有明显抖动。
实验问题发现:
如下代码写了PCF8591芯片在不同时间段开启 ADC与DAC
ADC采集电位器的模拟值,
DAC是将一个变量value(大小在0~100之间)做转化,
(0输出0V,100输出5V,一次函数关系作输出)
然后转化为电压输出.
按键S4 S5分别可对value进行加减操作
u8 nr1,nr2,nr3,nr4,nr5,nr6,nr7,nr8;
float read_ADC; //浮点ADC读取
u16 ADC_value; //ADC读取变量
u8 DAC_value; //DAC输出变量
u8 value;
u8 DAC_cnt;
u16 ADC_cnt;
bit DAC_flag;
bit ADC_flag;
bit key_flag = 0;
u8 key_value;
u8 key_cnt;
void main()
{
inint();
while(1)
{
if(key_flag==1) //按键S4 S5改变value 大小
{
key_flag=0;
key_value=key_scan_return();
switch(key_value)
{
case 4:value++;break;
case 5:value--;break;
}
}
if(ADC_flag==1) //ADC采样
{
ADC_flag=0;
read_ADC=ADC_pcf8591(0x03);
ADC_value=(unsigned int)read_ADC*100;
}
if(DAC_flag==1) //DAC输出
{
DAC_flag=0;
DAC_value=value * 255 /100 ;
dac_pcf8591(DAC_value);
}
}
}
void inint()
{
cls_buzz_led();
inint_smg();
Timer0Init();
}
void Timer0Init(void) //1毫秒@12.000MHz
{
AUXR &= 0x7F; //定时器时钟12T模式
TMOD &= 0x01;
TL0 = 0x18;
TH0 = 0xFC;
TF0 = 0;
TR0 = 1;
EA=1;
ET0=1;
}
void Timer0_server() interrupt 1
{
u8 i;
if(++i==8) {i=0;
nr1=value/100%10;nr2=value/10%10;
nr3=value%10;nr4=17;nr5=17;
nr6=17;nr7=17;nr8=17;
smg_display(nr1,nr2,nr3,nr4,nr5,nr6,nr7,nr8);}
if(++key_cnt==16) {key_cnt=0;key_flag=1;}
if(++DAC_cnt==166) {DAC_cnt=0;DAC_flag=1;}
if(++ADC_cnt==450) {ADC_cnt=0;ADC_flag=1;}
}
从中我们发现,即使我们将DAC定位166ms一次转化输出
ADC为450ms一次转化输出,但下载后发现,
DAC的电压输出依旧收到了干扰:
为证明确实是ADC与DAC相互作用的冲突,我注释掉了ADC采样的代码
在此编译下载进了开发板,发现DAC输出变得正常了,十分稳定:
在此后的实验中发现,不论是将ADC采样延长,
还是设定标志位,让一个读取完了再开启另一个,都没有成效。
但有一点可以确定的是,ADC与DAC的使用,确实是需要在不同时间段进行的。
解决方案:
在CT107D单片机上,PCF8591三个硬件引脚地址均接地,两路模拟信号均为单端输入,则有:
光敏传感器接在AIN1即通道1,控制寄存器应该写入0x01;
定标志位,让一个读取完了再开启另一个,都没有成效。
但有一点可以确定的是,ADC与DAC的使用,确实是需要在不同时间段进行的。
解决方案:
在CT107D单片机上,PCF8591三个硬件引脚地址均接地,两路模拟信号均为单端输入,则有:
光敏传感器接在AIN1即通道1,控制寄存器应该写入0x01;