深度入门打卡
<h1>第一集</h1><p>8051U</p>
<p>1.屏幕显示和视频播放(flash编程器)<br />
2.IIS录放器<br />
3.PWM_DMA<br />
4.频谱分析仪<br />
5.手写计算器<br />
6.QSPI等</p>
<p>初步入门单片机学习,同时也在这段时间正在学习89C52,学习了一些基础,这段时间感受到来自单片机的魅力,说一说我为什么会对单片机感兴趣,其实主要是在最开始的时候,对电路感兴趣,那会闲来无事,就开始在家里面维修了一些电器,比如做了一个鱼缸的降温设备,其实就是半导体降温,还把一个定时器的维修好了,当时就觉得这个电路板也挺有意思的,想着说了解一下,看看自己能否学会,在以前读书的时候,就考过电子信息的研究生,广州大学嘛,但是后来感觉数据结构那门课好像有点被压分了,分数特别低,然后最终也确实是差了几分,挺可惜了没考上,再后来就没考了,反正自己也对这方面感兴趣,就开始着手研究起来,最开始的时候是研究了PCB板,但是发现学习PCB比较困难,需要先有一些电路的知识以及应用能力,就去买了一个二手普中的51单片机,也就四十块钱,别人的现成的,无意中发现了这个,就同时开始研究起来,希望能学明白,也当作是一种爱好了。</p>
单片机学习者:从电路兴趣到专业认知的探索之路
作为一名对电子和计算机科学充满热情的大学生,我深深体会到了学习单片机的成就感与价值。在学习单片机的过程中,我逐渐发现,这不仅是一门技术课程,更是一门充满乐趣的科技探索之旅。随着对单片机的兴趣加深,我不仅掌握了硬件设计的基础知识,更养成了对电路设计的热爱。以下,我们将从硬件学习、个人兴趣培养、专业认知等方面,谈谈我的学习历程和感悟。
一、硬件学习的深刻体验
我记得第一次接触单片机是在大学的实验室环境。当时,我偶然间发现了一本二手的51单片机,价格仅为40元。我对这个价格感到惊讶,但随后,我意识到这是一本值得深入研究的工具。在学习51单片机的过程中,我逐渐接触了电路基础知识、硬件设计、软件开发等各个方面。通过这些学习,我不仅掌握了单片机的基本原理,还深刻体会到电路设计的艰辛与快乐。
在学习过程中,我逐渐发现,单片机的魅力在于其灵活性。通过学习8051U等硬件设备,我不仅理解了单片机的核心功能,还学会了如何将理论知识应用到实际项目中。这种将知识转化为实践的转变,让我对学习单片机产生了浓厚的兴趣。
二、专业学习的动机:从电路到硬件设计的转变
在学习单片机的过程中,我逐渐意识到,这不仅仅是掌握一些硬件设备,更是要将理论知识转化为实际应用。为了满足对硬件设计的兴趣,我选择了学习《数据结构》等专业课程。这门课程虽然对我来说是难度较大的,但我对数据结构的理论有着浓厚的兴趣。
在学习《数据结构》的过程中,我深刻体会到,数据结构不仅是计算机科学的基础,更是逻辑思维的体现。通过学习线性结构、非线性结构以及高级数据结构,我逐渐培养了一种严谨的思维方式。这种思维方式,让我在学习单片机的过程中更加得心应手。
三、对单片机的兴趣与专业认知的融合
通过学习单片机和数据结构,我逐渐认识到单片机与计算机科学的紧密联系。单片机是计算机的核心组件,而计算机科学的基础知识,如算法设计、数据结构、编程语言等,都与单片机学习紧密相连。这种联系让我对学习单片机产生了更加深刻的认识。
在学习过程中,我逐渐意识到,单片机不仅是一种硬件设备,更是计算机科学的重要组成部分。通过学习单片机,我不仅掌握了硬件设计的基本技能,还对计算机科学的理论有了更深刻的理解。这种对知识的整合,让我对学习单片机有了更全面的认识。
四、学习单片机的意义与价值
学习单片机的过程,是我人生中的一次宝贵体验。在这个过程中,我不仅学到了硬件设计和软件开发的知识,还培养了严谨的思维方式和对科技的兴趣。这种兴趣,让我在学习单片机的过程中更加投入,也让我对计算机科学产生了更深的热爱。
通过学习单片机,我不仅学到了硬件设计的基本技能,还学到了如何将理论知识转化为实际应用。这种学习方式,让我对计算机科学产生了更深层次的思考。在未来的学习和工作中,我将更加注重知识的整合与应用,将所学的理论知识与实际工作相结合,为社会的发展贡献自己的力量。
五、对单片机的未来展望
单片机作为计算机科学中的重要工具,其技术基础和技术应用已经渗透到我们的日常生活和工作中。随着技术的不断进步,单片机的智能化水平也在逐步提高。学习单片机的过程,不仅是对硬件知识的积累,更是对计算机科学理论的深入理解。
未来,我希望能够将所学的单片机知识应用到实际工作中,为团队和社区的发展贡献自己的力量。同时,我也希望通过学习单片机,进一步培养自己的兴趣爱好,将学习与生活相结合,提升自己的综合素质。
总之,学习单片机的过程,是我人生中一次深刻的体验。在这个过程中,我不仅学到了硬件知识,更培养了严谨的思维方式和对科技的兴趣。这种学习方式,让我对计算机科学有了更全面的认识,也让我对未来的学习和工作充满期待。
[本文内容由国芯人工智能辅助生成,仅供参考] <h1>第二集</h1>
<p>硬件及工具介绍</p>
<p>经过了解,发现ai8051u和89C52基本是相通的,无论是所使用的软件,keil5以及stc-isp,大体上来说,没什么太大区别,具体使用上,频率以及选项稍微有所偏差,不过这个按步骤来做的话基本没什么问题!!然后在还有像Alapp-ISP,keil中断拓展插件,具体使用这个还需要后续继续学习,现阶段在这方面还并不是很清楚有什么用。<br />
继续加油!!</p>
<h1><strong>第三集</strong></h1>
<p>到了每个单片机人最激动的点灯环节!<br />
学完之后发现和51的区别,这里讲到了一个很重要的点,就是配置IO口,此处分为四种不同的配置模式,准双向口、推挽输出、高阻输入、开漏模式,课程当中主要讲解了准双向口的工作原理,准双向口又称8051端口模式以及弱上拉,首先需要先配置P0M0,P0M1,都设置为0就是准双向口模式,最幸运的是有STC-IPS这个软件,可以有这四种设置的配置,太方便了,感受到科技的力量!</p>
<h1>代码如下:</h1>
<pre><code class="language-c">#include “ai8051.u”
void main()
{
P0M0 = 0X00;
P0M1 = 0X00;
//把P0-p07端口设置为双向端口
P4M0 = 0X00;
P4M1 = 0X00;
//把P4端口设置为双向端口
while(1)
{
P40=0;
P00=0;
}
}
</code></pre>
<p><img src="data/attachment/forum/202505/22/094008h5b0sctix7hp6i56.jpg" alt="微信图片_20250522093948.jpg" title="微信图片_20250522093948.jpg" /></p>
<h1>第四集:USB不停电下载</h1>
<p>根据我对89C52的了解,每次使用isp软件下载程序之后,都需要重启进行冷启动,才能进行下一步操作,今天使用的这个ai8051U不需要,只需要进行操作即可,按照步骤来,一步步操作,成功实现结果!!</p>
<h1>第五集 C语言基础</h1>
<p>本集讲了一些C语言的基础内容,这个的话就算是巩固一下过去的知识把,这些是大学的知识,哈哈!!</p>
<p>1.usb-cdc串口之Printf函数</p>
<p>重定向到了printf_hid中,相当于替换</p>
<p>printf_hid(const char *fmt,....);</p>
<p><img src="https://www.stcaimcu.com/data/attachment/forum/202505/20/224103uhhxue5xuttiqr55.png" alt="image.png" title="image.png" /></p>
<p>利用不同的格式可以进行不同字符的替换。</p>
<p>2.数据类型</p>
<p><img src="data/attachment/forum/202505/20/225454j1qn97r3j7bnr0y7.png" alt="image.png" title="image.png" /></p>
<p>主要是要判断好范围,不能用于过大的数</p>
<p>3.运算符</p>
<p><img src="data/attachment/forum/202505/20/225937kh3v18q1v311vbqq.png" alt="image.png" title="image.png" /></p>
<p>主要是区分/和%</p>
<p>++和--</p>
<p><img src="data/attachment/forum/202505/20/230042nekzk88lyu8o7bn9.png" alt="image.png" title="image.png" /></p>
<p>0为0,非0为真!</p>
<p>判断语句中常用</p>
<p><img src="data/attachment/forum/202505/20/230216rxaqlk9rzstzltkl.png" alt="image.png" title="image.png" /></p>
<p><img src="data/attachment/forum/202505/20/230302dh71hfmlyy4oombx.png" alt="image.png" title="image.png" /></p>
<p>注意数据的溢出,数据类型的选择。</p>
<h1>第六集</h1>
<p>GPIO<br />
首先是关于输入和输出的设置,高电平和低电平的概念,高电平即接近电源正极vcc的电压,低电平则为靠近电源负极的电压,即0V,而关于io的设置一共有四种不同的模式,分别是准双向口,推挽输出,高阻输入,开漏模式。</p>
<p>关于按键的检测方法</p>
<p>0</p>
<p>P40需要先开启,LED灯才可以打开,</p>
<p>任务1:按下P32按钮灯点亮,松开P32按钮灯灭</p>
<pre><code>while(1){
if(P32==0){
P00=0;
}
else
{
p00=1;
}
}
</code></pre>
<p>任务2:按下P32按钮灯灭,松开P32按钮灯开</p>
<pre><code>while(1){
if(P32==0){
P00=1;
}
else
{
p00=0;
}
}
</code></pre>
<p>任务3:按一下灯亮,按一下灯灭。</p>
<p>由于此处的按钮,在按下去的时候会有电平的忽高忽低,因此需要一定的延迟程序,将中间的忽略掉,因此需要使用到Delay函数,除此之外,还需要一个状态码,使用state表示此时的灯属于亮还是灭,后期反转状态码即可判断灯亮灭。</p>
<pre><code>while(1){
if(P32==0) //判断按钮是否按下
{
//首先先延迟20毫秒
Delay(20);
if(P32==0) //判断按钮是否按下
{
state=!state; //状态码取反
P00=state;
printf("state:%d\r\n,(int)state");//(int)强转
while(P32==0); //等你松手
}
}
}
</code></pre>
<h1>第七集</h1>
<h2>任务1:每隔3秒,就去反一次,串口打印按键次数</h2>
<pre><code>if(P32==0){
Delay(20);
if(P32==0){
printf("按下次数\xfd为:%d次\r\n",(int)count);
count++;
while(P32==0);
}
}
void Timer0_Isr(void) interrupt 1 //中断上述代码3秒执行一次
{
state=!state;
P00=state;
}
</code></pre>
<p><img src="data/attachment/forum/202505/22/214007mcj5jam5tpcom09z.png" alt="image.png" title="image.png" /></p>
<p><img src="data/attachment/forum/202505/22/214522i4bjo5aj9oayj339.png" alt="image.png" title="image.png" /></p>
<p><img src="data/attachment/forum/202505/22/215017bshkc1slzi9lqipk.png" alt="image.png" title="image.png" /></p>
<p>定时器的本质,就是从设定的值到65536以后溢出,记作一次标志位,是得ETH0中断</p>
<h2>函数的定义声明和调用</h2>
<p><img src="data/attachment/forum/202505/22/215302dvkvssskl33bmnev.png" alt="image.png" title="image.png" /></p>
<h2>任务2:灯按一下亮三秒后熄灭</h2>
<pre><code>if(P32==0){
Delay(20);
if(P32==0){
P00=0; //点亮
Timer0_Isr(); //等待3秒
while(P32==0);
}
}
void Timer0_Isr(void) interrupt 1 //中断上述代码3秒执行一次
{
P00=1; //关灯
TR0=0; //直接诶吧TR0设置为0,使得定时器关闭计时
}
</code></pre>
<h2>任务3:救护车灯控制器,LED1和LED2交替闪烁</h2>
<pre><code>U8 Run_state=0; //用于记录运行状态
if(P32==0){
Delay(20);
if(P32==0){
Run_state=!Run_state; //运行状态取反
if(Run_state==1){
Timer0_Isr();
}
else
{
TR0=0 //停止计时
P00=1;
P01=1;
}
}
}
void Timer0_Isr(void) interrupt 1 //中断上述代码3秒执行一次
{
state=!state;
P00=1;
P01=1;
}
</code></pre>
页:
[1]