找回密码
 立即注册
查看: 63|回复: 8

如何学习8051

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:14
  • 最近打卡:2025-04-29 15:31:16
已绑定手机

4

主题

37

回帖

154

积分

注册会员

积分
154
发表于 2025-4-7 10:20:42 | 显示全部楼层 |阅读模式
各位大神好,我是一个刚接触单片机的小白,请问学习Ai8051U试验箱的全部视频,只看视频学习,还是需要结合实例代码和视频一块学习?然后问一下,做完全部实验后面想精进,还需要学习哪些模块知识呢?
回复

使用道具 举报 送花

3

主题

1160

回帖

1031

积分

等待验证会员

积分
1031
发表于 2025-4-7 10:23:00 | 显示全部楼层
如何高效学习8051单片机:从入门到精进

尊敬的用户,您好!针对您提出的关于学习8051单片机的问题,以下是一些专业建议,希望能帮助您更好地掌握这一技术。

1. 视频学习与实例代码结合

首先,关于学习Ai8051U试验箱的视频教程,建议您视频学习与实例代码相结合。视频教程通常能够直观地展示操作步骤和原理讲解,帮助您快速入门。然而,仅仅观看视频可能无法深入理解代码的逻辑和细节。因此,建议您在观看视频的同时,动手实践实例代码,通过调试和修改代码来加深对8051单片机的理解。

2. 实验箱的使用

在完成视频学习后,建议您充分利用Ai8051U试验箱进行实验。通过实际操作,您可以更好地理解单片机的硬件结构和软件编程。实验箱通常配备了丰富的硬件资源,如LED、按键、LCD显示屏等,您可以通过这些资源进行各种实验,如GPIO控制、定时器、中断、串口通信等。

3. 精进学习的方向

在完成基础实验后,如果您希望进一步精进,可以考虑以下几个方向:
深入理解8051架构:了解8051单片机的内部结构,包括寄存器、存储器、定时器、中断系统等。这将帮助您更好地优化代码和解决复杂问题。
学习高级编程技巧:掌握C语言在8051单片机上的高级应用,如指针、结构体、位操作等。这些技巧可以帮助您编写更高效、更灵活的代码。
探索外设模块:学习如何使用8051单片机的外设模块,如ADC、DAC、PWM、I2C、SPI等。这些模块在实际应用中非常常见,掌握它们将大大扩展您的应用范围。
项目实践:通过实际项目来巩固所学知识。可以选择一些小型项目,如温度控制系统、智能家居控制器等,通过项目实践来提升您的综合能力。
学习嵌入式系统:了解嵌入式系统的基本概念和设计方法,包括实时操作系统(RTOS)、任务调度、内存管理等。这将帮助您更好地设计和实现复杂的嵌入式应用。

4. 学习资源推荐
书籍:推荐《8051单片机C语言程序设计》、《8051单片机原理与应用》等书籍,这些书籍详细介绍了8051单片机的原理和编程技巧。
在线课程:可以参加一些在线课程,如Coursera、Udemy等平台上的8051单片机课程,这些课程通常由经验丰富的讲师授课,内容系统且实用。
社区和论坛:加入一些单片机相关的社区和论坛,如电子工程世界、CSDN等,与其他开发者交流经验,解决学习中的问题。

5. 持续学习与实践

最后,学习8051单片机是一个持续的过程,建议您保持学习的热情,不断实践和探索。通过不断的学习和实践,您将能够熟练掌握8051单片机,并在实际项目中应用所学知识。

希望以上建议对您有所帮助,祝您学习顺利,早日成为8051单片机的专家!

[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:14
  • 最近打卡:2025-04-29 15:31:16
已绑定手机

4

主题

37

回帖

154

积分

注册会员

积分
154
发表于 2025-4-7 10:56:37 | 显示全部楼层
国芯人*** 发表于 2025-4-7 10:23
如何高效学习8051单片机:从入门到精进

尊敬的用户,您好!针对您提出的关于学习8051单片机的问题,以下是 ...

谢谢回复,我实验箱收到了,很精美,再次表示感谢,请问老师视频里提到的试验箱配套的原理图在哪可以下载?

点评

官网软件资源里 [attachimg]91797[/attachimg]  详情 回复 发表于 2025-4-7 11:09
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:162
  • 最近打卡:2025-05-01 06:56:44
已绑定手机

56

主题

1319

回帖

2938

积分

荣誉版主

无情的代码机器

积分
2938
发表于 2025-4-7 11:09:55 | 显示全部楼层
cb*** 发表于 2025-4-7 10:56
谢谢回复,我实验箱收到了,很精美,再次表示感谢,请问老师视频里提到的试验箱配套的原理图在哪可以下载 ...


官网软件资源里
截图202504071109389017.jpg
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:14
  • 最近打卡:2025-04-29 15:31:16
已绑定手机

4

主题

37

回帖

154

积分

注册会员

积分
154
发表于 2025-4-7 11:17:33 | 显示全部楼层
erci*** 发表于 2025-4-7 11:09
官网软件资源里

谢谢,之前其他都下载了就是没有下载原理图。还像问一下
void  delay_ms(u8 ms)
{
     u16 i;
     do{
          i = MAIN_Fosc / 6000;
          while(--i);
     }while(--ms);
}
这个延时函数是如何做到延时ms的?我的理解是do..while里面是每次进循环i=4000一直递减到0跳出循环然后判断传递的ms是否大于0,想问一下循环里面递减4000次就是控制的1ms吗?是怎么做到了,是不是和系统的时钟主频MAIN_Fosc有关系?能不能深入科普一下?

点评

这些问题一般有现成的答案,论坛搜下就行 学习冲哥视频(6):1ms延时函数为什么要循环6000次?为什么有误差? - 学习打卡区 | 感悟 国芯技术交流网站 - AI32位8051交流社区  详情 回复 发表于 2025-4-7 11:22
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:162
  • 最近打卡:2025-05-01 06:56:44
已绑定手机

56

主题

1319

回帖

2938

积分

荣誉版主

无情的代码机器

积分
2938
发表于 2025-4-7 11:22:20 | 显示全部楼层
cb*** 发表于 2025-4-7 11:17
谢谢,之前其他都下载了就是没有下载原理图。还像问一下
void  delay_ms(u8 ms)
{


这些问题一般有现成的答案,论坛搜下就行
学习冲哥视频(6):1ms延时函数为什么要循环6000次?为什么有误差? - 学习打卡区 | 感悟 国芯技术交流网站 - AI32位8051交流社区
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:14
  • 最近打卡:2025-04-29 15:31:16
已绑定手机

4

主题

37

回帖

154

积分

注册会员

积分
154
发表于 2025-4-7 17:29:51 | 显示全部楼层
erci*** 发表于 2025-4-7 11:22
这些问题一般有现成的答案,论坛搜下就行
学习冲哥视频(6):1ms延时函数为什么要循环6000次?为什么有误 ...

我这边想每一秒亮灭led1,代码如下
#include "ai8051u.h"
#include "intrins.h"
/*
需求:依次点亮8个LED灯
*/

void Delay1000ms(void)        //@24.000MHz
{
        unsigned char data i, j, k;

        _nop_();
        _nop_();
        i = 92;
        j = 50;
        k = 238;
        do
        {
                do
                {
                        while (--k);
                } while (--j);
        } while (--i);
}


void main(void) {
        // 按照原理图,点亮8个LED灯需要按下P40总开关和给8个LED灯低电平
        // 1、相应的GPIO口初始化
        P4M0 = 0;
        P4M1 = 0;
        P0M0 = 0;
        P0M1 = 0;
        P40 = 0;
        EAXSFR();
        // 2、P40低电平
        // 3、P00 P01 P02 P03 P04 P05 P06 P07低电平
       
        while(1) {
                P00 = 0;
                Delay1000ms();
                P00 = 1;
        }
}
但是烧录好几次都是LED0灯常亮,请问问题出在哪?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:522
  • 最近打卡:2025-05-02 00:29:54

10

主题

1159

回帖

5121

积分

论坛元老

积分
5121
发表于 2025-4-7 17:47:55 | 显示全部楼层
cb*** 发表于 2025-4-7 17:29
我这边想每一秒亮灭led1,代码如下
#include "ai8051u.h"
#include "intrins.h"

软件延时要选正确的指令集。
屏幕截图 2025-04-07 174602.jpg
你选的是STC15。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:14
  • 最近打卡:2025-04-29 15:31:16
已绑定手机

4

主题

37

回帖

154

积分

注册会员

积分
154
发表于 2025-4-7 17:51:40 | 显示全部楼层
angm*** 发表于 2025-4-7 17:47
软件延时要选正确的指令集。

你选的是STC15。

是的,并且while里面需要重写为        while(1) {
                P00 = 0;
                Delay1000ms();
                P00 = 1;
                Delay1000ms();
        }
是吧?少写了一句Delay1000ms();
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 02:13 , Processed in 0.157554 second(s), 112 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表