Jianxian_Fang 发表于 2024-9-20 11:12:04

学习记录打卡

刚好做小项目用到了STC89C52RC,结果发现运算性能实在有限。突然想到学STC32还送实验箱,如此机会怎可错过。

第一集 认识单片机
第一集属于是入门介绍主要介绍了如下内容:
1. 什么是单片机
2. 它能做什么
3. 一些常见问题的解答
4. 学习建议

Jianxian_Fang 发表于 2024-9-20 11:24:17

第二集 了解硬件

本集主要介绍了实验箱的基本硬件,并对每个硬件的实际应用做了简单介绍。


Jianxian_Fang 发表于 2024-9-20 13:47:13

第三集 开发环境搭建和程序下载

STC-ISP软件下载
下载地址:STC-ISP软件下载地址

手册下载
方法一:ISP软件内下载(这个最新版ISP里似乎没有了)
方法二:芯片手册

PDF阅读器下载
(这个有了,就不写了)

程序包下载
方法一:ISP软件内下载(这个最新版ISP里似乎没有了)
方法二:实验箱代码下载

第一个工程编译
将板子通过USB线链接电脑按下P3.2按钮,此时按下并松开OFF按钮,在松开P3.2进入USB下载模式

硬件USB直接下载


Jianxian_Fang 发表于 2024-9-20 14:11:23

第四集 建立工程点亮第一颗LED上


LED点亮原理



代码

sfr P0 = 0x80;
sfr P0M1 = 0x93;
sfr P0M0 = 0x94;

void main()
{
        P0M0 = 0x00;
        P0M1 = 0x00;
        while (1)
        {
                P0++;
        }
}
要点亮LED则需要修改成P4的端口,查手册修改
对应修改P4M0 P4M1 P6M0 P6M1


Jianxian_Fang 发表于 2024-9-20 14:31:20

第四集 建立工程点亮第一颗LED下

实现自动下载工程


项目中需要做如下修改



Jianxian_Fang 发表于 2024-9-20 21:03:19

第五集 C语言运算符和进制数入门
printf函数的实现

if( DeviceState != DEVSTATE_CONFIGURED )         //
                        continue;
                if( bUsbOutReady )                                                               
                {
                        usb_OUT_done();
                        printf("Hello world!");
                }
数的进制

C语言常用运算符

数据的基本类型

https://www.stcaimcu.com/forum.php?mod=image&aid=57660&size=300x300&key=9f2ae0ea908e166c&nocache=yes&type=fixnone


Jianxian_Fang 发表于 2024-9-20 21:38:44

第六集 LED闪烁和花式点灯

基于Delay实现的LED闪烁
#define MAIN_Fosc 24000000UL// 定义一个IRC系统时钟

void delay_ms(u16 ms)
{
    u16 i;
    do{
      i = MAIN_Fosc / 6000;
      while(--i);
    }while(--ms);
}

函数的使用
定义、声明、调用

模块化编程

新建xxx.c和xxx.h文件代表一个功能块
xxx.h格式
#ifndef __XXX_H
#define __XXX_H
调用头文件
函数声明
#endif
xxx.c格式
#include "xxx.h"
函数定义



Jianxian_Fang 发表于 2024-9-20 22:02:40

第七集 按键点灯

原理

机械抖动

按下熄灭,松开点亮
// 按下熄灭,松开点亮
                if( KEY2 == 0)        //判断按键有没有按下
                {
                        delay_ms(10);
                        if( KEY2 == 0 )
                        {
                                printf("按键P33已经按下\r\n");
                                P67 = 1;        //LED熄灭
                        }
                }
                else
                {
                        P67 = 0;        //LED熄灭
                }               
按下一次,状态取反// 按下一次,状态取反
                if( KEY2 == 0)        //判断按键有没有按下
                {
                        delay_ms(10);
                        if( KEY2 == 0 )                //按键确实按下了
                        {
                                while(KEY2 == 0)                //如果按键一直是按下的,一直执行while
                                {
                                       
                                }
                                printf("按键P33已经按下,led取反一次\r\n");
                                P67 = !P67;        //LED熄灭                               
                        }
                }



Jianxian_Fang 发表于 2024-9-20 22:34:12

第八集 蜂鸣器的应用


控制原理


Jianxian_Fang 发表于 2024-9-21 17:37:44

第九集 数码管的静态使用

认识数码管

控制原理



实现数码管0-9显示


本质就是点灯操作


页: [1] 2
查看完整版本: 学习记录打卡