找回密码
 立即注册
查看: 2536|回复: 55

【实验箱已送】【跟着冲哥学32位8051】学习日记

[复制链接]
  • TA的每日心情
    奋斗
    昨天 00:05
  • 签到天数: 134 天

    [LV.7]常住居民III

    1

    主题

    59

    回帖

    781

    积分

    高级会员

    积分
    781
    发表于 2023-6-19 02:32:08 | 显示全部楼层 |阅读模式
    本帖最后由 STC爱好者 于 2023-8-17 10:09 编辑

    要说不想学单片机,那是假话,真的想学,并且工作生活中都有用处。
    要说只想学不想领实验箱,也是假话,或多或少还是希望得到这个实验箱玩玩的。
    既想学STC的32G单片机,也想通过好好学习领取到实验箱。
    感谢STC给了这个机会,也鼓励自己坚持下去。

    【打卡第1讲】

    1: 单片机集成了处理器,存储器和输入输出口
    2:单片机的外观有很多类型,不仅是是原来的40脚双列封装,形状、管脚都不同
       目前STC脚最少的是8脚,STC32G是很强大的单片机,远超传统的89系列
    3:单片机可以做一些有规律可循的控制应用
       比如电压表里面用的也是单片机,电饭煲、洗衣机里面也有。
    4:进行控制的话,了解寄存器很重要
    5:学习单片机不分年龄,不分基础,但需要精心,动手,多思考,多看网上知识
    6:STC官网资料很多

    另外,STC官网有好几个;

    老风格:
    http://www.stcmcudata.com/
    看似很乱,实际上所有资料都可以用CTRL-F查到,其实是最方便的,不在乎好不好看,而在乎能不能帮助到使用者。

    STC32位8051技术网站:
    www.STCAI.com
    里面出现了菜单,整齐了不少,依据每个人的兴趣吧,原先的开发者可能习惯了老官网,
    新官网更整齐一些。

    STC32位8051技术论坛:
    www.STCAIMCU.com
    这就是我学习视频的地方。



    回复 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 00:05
  • 签到天数: 134 天

    [LV.7]常住居民III

    1

    主题

    59

    回帖

    781

    积分

    高级会员

    积分
    781
     楼主| 发表于 2023-6-19 02:59:29 | 显示全部楼层
    【打卡第2讲】

    1: STC实验箱不仅包含了STC的MCU,还包含了很多常用的外设
       比如:
       O 红外发射接收
       O 数码管
       O 洞洞板
       O 电压比较
       O LED
       O NTC测温
       O 18B20测温
       O ADC按键
       O PWM DAC
       O 外置存储
       O 矩阵键盘
       O LCD接口
       O RS232
       O 独立按键
       O 调试接口
       O 蜂鸣器等
       几乎涵盖了一般设计中需要的大部分外设,不需要为每种外设单独去打板,大大简化了设计和实验的流程
    2:STC 32G单片机的参数可以在主页上查到,比如电压是1.9~5.5V,这个电压范围相当不错,
       意味着2节5号电池、锂电池、USB都能直接点亮单片机。

    作业:
    使用STC实验板能做什么东西
    能想到以下东西:
    1:温度控制,使用NTC测温,与目标温度比较,通过继电器控制加热元件,通过数码管显示温度,通过按键设定触发和停止加热的温度。
       可以用来控制酸奶、米酒、豆芽、发面、孵小鸡、食物保温等。
    2:充电器
       通过ADC获取电池电压,到预订电压停止,数码管显示当前充电电压。
    3:智能遥控器,通过红外接收管学习遥控器的指令,存储在24芯片中,按键时发射出去
       甚至可以实现智能遥控,比如睡眠时空调几小时升高一度,或8小时后自动停止。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 00:05
  • 签到天数: 134 天

    [LV.7]常住居民III

    1

    主题

    59

    回帖

    781

    积分

    高级会员

    积分
    781
     楼主| 发表于 2023-6-19 23:44:53 | 显示全部楼层
    【打卡第3讲】

    1:STC ISP不需要安装,这一点很牛
    2:STC手册很全,1000多页,可以用WPS或福昕阅读器打开,福昕可能更顺一些,其他的阅读器也行,看个人喜好
    3:Keil的安装和设置教程,在STC手册中有详细描述,跟着手册走就可以
    4:Keil uVision是Keil的默认编辑器,也可以使用其他喜欢的编辑器编辑程序
    5:可以通过STC ISP去下载STC32G实验箱的程序包,也可以在官网下载
    6:STC32G程序包中有很多实例程序,可以进入实例程序,点击工程打开,然后在Keil中编译
    7:在编译前,需要使用STC ISP向Keil添加型号和头文件,否则会提示错误
    8:让单片机进入下载模式的方法是
       a. 按P3.2让该脚接地
       b. 按OFF让单片机重启
       c. STC在上电瞬间发现P3.2低电平,并STC ISP的握手指令
       d. 这时STC ISP就能通过USB识别出单片机,单片机也执行ISP程序
    9:STC ISP中点击“打开程序文件”,选择编译出的HEX文件,即可烧录单片机
    10:如果程序中使用了指定频率的时钟,则可以在下载到MCU是调节
    11:如果选择的单片机与程序的目标不同,则下载时会提示型号错误
    12:与其他系列的不同,STC32G可以直接使用USB下载程序,而不需要额外的USB转TTL设备
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    12

    回帖

    71

    积分

    注册会员

    积分
    71
    发表于 2023-6-20 00:37:14 | 显示全部楼层
    共同进步
    回复 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 00:05
  • 签到天数: 134 天

    [LV.7]常住居民III

    1

    主题

    59

    回帖

    781

    积分

    高级会员

    积分
    781
     楼主| 发表于 2023-6-21 01:31:43 | 显示全部楼层
    【打卡】【第四集:建立工程点亮第一颗LED上】
    1: LED单向导通
    2:单片机输出的高电平,就是它的电源电压,对应1,低电平就是0V,对应0
    3:单片机输出的Px.x表示它的IO口,就是GPIO
       表示既可以用于输入,也可以用于输出
    4:Px.x中,前一个x表示同一组,可以一起批量操作,也可以单独操作
    6:在示例中,使用一个三极管为所有LED提供电源,是为了扩流
    7:单片机开始开发时,开始的几步是:
       a. 新建工程
       b. 选择单片机型号
       c. 新建C语言文件
       d. 将C文件加入工程
       e. 开始编辑程序源代码
    8: 工程设置中要选中输出HEX-386格式
        Hex文件用于把编译后的程序烧写到单片机中,HEX有HEX-80和HEX-386,教程中使用的是HEX-386格式。
    9: 编程时参见手册是很有用的
    10:单片机的端口都有一个地址,比如P0端口的地址是80H
    11:sfr用于将一个变量和它的特殊功能寄存器的地址联系起来,随后可以用这个变量访问
    12:sbit用于将一个变量与另一个变量的位联系起来
    13:程序中使用P4.0控制三极管,P6.0控制LED
    14:P0M0之类的表示端口设置寄存器,可以设置端口的状态,比如准双向口等
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 00:05
  • 签到天数: 134 天

    [LV.7]常住居民III

    1

    主题

    59

    回帖

    781

    积分

    高级会员

    积分
    781
     楼主| 发表于 2023-6-22 00:56:46 | 显示全部楼层
    本帖最后由 OstrichFly 于 2023-6-22 00:59 编辑

    【自学】【第四集:建立工程点亮第一颗LED上】
    HEX-80和HEX-386的区别:
    原文:As hex-386 is for 32-bit addressing and Hex-80 is 16 bit.
    我的理解:HEX-386是32位地址的HEX文件,而HEX-80是16位地址的HEX文件。
    STC 32G系列是32位单片机,因此需要使用32位的HEX文件格式。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 00:05
  • 签到天数: 134 天

    [LV.7]常住居民III

    1

    主题

    59

    回帖

    781

    积分

    高级会员

    积分
    781
     楼主| 发表于 2023-6-22 00:57:30 | 显示全部楼层
    【打卡】【第四集:建立工程点亮第一颗LED下】
    1:手册是好东西,需要的知识几乎都能在手册中找到,比如程序直接下载功能
    2:向IAP_CONTR寄存器写入0x60,即可将单片机复位到系统区,实现不停电直接下载功能
    3:使用最新版STC-ISP程序,可以使用“收到用户命令后复位到ISP监控程序区”功能
    4:工程中还可以添加LIB库
    5: stc.h头文件中通过stc32g.h定义了很多sfr,不需要我们手工定义了,还减少了错误
    6:函数位置在调用者后的时候,需要在前面进行1行的声明
    7:USB-HID和USB-CDC都可以实现不停电下载,在程序改变时直接下载
    8:EA表示总中断允许控制位,设置为1时表示开放CPU的所有中断
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 00:05
  • 签到天数: 134 天

    [LV.7]常住居民III

    1

    主题

    59

    回帖

    781

    积分

    高级会员

    积分
    781
     楼主| 发表于 2023-6-22 00:58:27 | 显示全部楼层
    【自学】【第四集:建立工程点亮第一颗LED下】
    USB HID和USB CDC的区别:
    USB包含多种设备类型,比如常用的U盘是USB Mass Storage,键盘和鼠标是USB HID。
    USB HID表示人机交换接口设备,又分为两大类,一类是标准的HID,比如USB键盘、鼠标、游戏杆等,
    另一类是用户自定义HID,OS侧同样不需要对应的驱动,由应用程序与USB HID设备进行通讯。
    STC32G系列单片机模拟成的USB HID设备,可能就是模拟成了自定义HID设备。
    而USB-CDC表示通信设备,比如USB转RS232等,而其中又有一类CDC-ACM允许通过USB与对端设备进行串行通信,
    STC32G系列单片机模拟成的USB CDC设备,可能就是模拟成了这种类型,因此STC ISP可以通过它与MCU进行数据交互。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 00:05
  • 签到天数: 134 天

    [LV.7]常住居民III

    1

    主题

    59

    回帖

    781

    积分

    高级会员

    积分
    781
     楼主| 发表于 2023-6-22 00:59:13 | 显示全部楼层
    【自学】【第四集:建立工程点亮第一颗LED下】
    通过STC ISP控制单片机复位到烧写代码的实现原理:
    单片机通过USB与上位机连接后,上位机可以通过USB向单片机发出任何数据,
    通常的想法是,STC ISP向单片机发出类似RESET_TO_LOADER指令,单片机收到上述指令,则复位到烧写代码中。
    但在实现上却有一点复杂,如果希望单片机内置这个功能,也就是单片机只要通电,无论当前在运行什么代码都能实现通过USB复位,
    则需要在单片机中加入另一套专用单片机去完成对USB的监视和动作响应,这虽然可能可以做到,但复杂度和成本都脱离了当前的定位。
    因此STC32G的设计是,由单片机中的CPU实现对上位机通过USB发过来的指令的监视和相应,
    由于这个CPU正在运行用户程序,因此需要对用户程序进行一些修改,通过异步方式实现上述的监视,
    而代码中加入的sys_init()、usb_init()以及EA=1就是为了初始化这段对USB的异步监视功能。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 00:05
  • 签到天数: 134 天

    [LV.7]常住居民III

    1

    主题

    59

    回帖

    781

    积分

    高级会员

    积分
    781
     楼主| 发表于 2023-6-23 00:54:01 | 显示全部楼层
    【打卡】【第五集:C语言运算符和进制数入门上】
    1:在STC32G单片机上,同样可以使用printf函数进行信息输出
    2:但区别是普通C语言可以直接使用printf函数,但单片机上需要在主循环中加入对应的代码
        if (DeviceState != DEVSTATE_CONFIGURED)
            continue; // 检测USB是否连接成功
        if (bUsbOutReady) {
            usb_OUT_done();
            printf("Hello World\n");
        }
    3: printf与标准C语言相通,支持各种进制和长度的输出
    4:文本对应的ASCII码,可以通过ASCII码表查到或反查
    5:任何数字可以用任何进制表示,计算机编程中常用的是10,16,2,8进制,
       但其他进制也存在,比如3进制,只不过极少使用。
    6:计算进制,可以用计算器、Excel,也可以用偏门的方法,比如编个STC上的程序。
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-4-28 00:32 , Processed in 0.081056 second(s), 66 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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