找回密码
 立即注册
查看: 1527|回复: 13

stc32打卡和学习心得以及困惑

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-01-24 13:47:35

1

主题

19

回帖

101

积分

注册会员

积分
101
发表于 2023-11-12 23:12:25 | 显示全部楼层 |阅读模式
本帖最后由 ershiji 于 2023-11-15 18:08 编辑

通过今天的视频学习我了解了单片机的外观,功能,以及优势。
外观:不同的单片机具有不同的封装
功能:广泛应用于仪器仪表,家用电器,医用设备,航空航天,专用设备的智能化管理及过程控制等领域,大致可分为

智能仪器:电压,电流,功率,频率,湿度,流量等的仪器仪表
工业控制:工厂流水线的智能化,电梯智能化控制,各种报警系统等
家用电器:电饭煲,洗衣机,电冰箱,空调机,彩电等
网络和通信:手机,电话机,楼宇自动通信呼叫系统,列车无线通信等
医用设备领域:医用呼吸机,监护仪,超声波诊断设备及病床呼叫系统等
模块化系统: 电子音乐贺卡,plc工控板等
汽车电子:发动机控制器,基于CAN总线的汽车发动机智能电子控制器,gps导航系统,abs防抱死系统,制动系统,胎压检测等。

stc的51单片机对比stm32单片机的优势在于51的a/d转换精度更高

在使用单片机的过程中如果有问题可以打电话询问客服

在今后的项目开发中选择的单片机能够实现功能就行

1.一定要静得下心来学习,沉得住气

2.多跟着老师动手,千万别一看就会,一写就废

3.多举一反三,发散思维,时常思考为什么

4.多看官网,官网有单片机的更新记录,多看手册,有问题就得多交流

5.通过论坛,吸收一些别人的东西

6.尝试着自己多做一些项目,竞赛题




回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-01-24 13:47:35

1

主题

19

回帖

101

积分

注册会员

积分
101
发表于 2023-11-13 13:52:11 | 显示全部楼层
本帖最后由 ershiji 于 2023-11-13 14:00 编辑

第二集

了解了单片的一些基本模块
UPXZQ~6_~~~EZS}[GFDIAKC.png

我此次学习的目的就是利用stc32单片机作为电磁寻迹小车的主控芯片,学习的重点就在于模数转换器ADC,串口通信,比较器,PWM波形输出。

第三集
此前学过单片机有过基础
在搭建keil c51的时候发现可以与mdk共存(事先已经安装并破解了mdk),c51也需要重新破解一遍
然后可以通过stcisp去下载一些官方的软件
添加了stc32G和头文件
没有搞懂usb驱动程序的安装(我的stcisp提示我不需要安装)主要就是不懂什么是软件模拟,初步的理解是通过软件解码然后编码输出

老师的

老师的

我的

我的


暂时还没有试验箱,无法进行程序的烧录
由于独特电路设计可以直接使用硬件USB进行程序下载(没有搞懂)




回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-01-24 13:47:35

1

主题

19

回帖

101

积分

注册会员

积分
101
发表于 2023-11-13 18:09:26 | 显示全部楼层
第四集
点亮led
我是有单片机基础的,所以感觉比较简单
新内容只有
sfr声明特殊寄存器和sbit声明sfr中的sfr位

stcisp设置不断电下载
软件方面需要添加:
USB(HID)模式
将stc_usb_hid_32g.LIB
#include “COMM/stc.h”//调用头文件
#include “COMM/usb。h”;

char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";//设置自定义下载命令

aya_init();//这个函数的内容需要自己写一遍(复制)如果函数的定义写在这个函数的后面,则需要在这个函数前面声明这个函数
usb_init();//调用usb初始化代码
EA = 1;


USB-CDC/串口模式

今后的工程直接复制今天的工程然后进行修改



回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-01-24 13:47:35

1

主题

19

回帖

101

积分

注册会员

积分
101
发表于 2023-11-14 13:52:06 | 显示全部楼层
第五级
3927FD76CF574657D27802D33EE989B7.jpg
004DBCF08A090E41AEC7E3D60A4363A9.jpg

ASCLL

ASCLL

r 5356789E6365D28F994CC00904CCEB49.jpg

存数是以16位存的
FBFAE143F7B02E73D99A57CBD65DA179.jpg
练习printf


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-01-24 13:47:35

1

主题

19

回帖

101

积分

注册会员

积分
101
发表于 2023-11-14 15:07:51 | 显示全部楼层
本帖最后由 ershiji 于 2023-11-14 15:11 编辑

第6级
while()和do while()的区别
3E96E45AD4BF2B1477844BE832A21595.jpg

使用上基本没有区别
--a与a--的区别在于前者自减1后输出后者先输出再进行自减1
6C532CFA0DB8829C24CAA0240BA32C94.jpg
0444A2A885BE211A4D248C41E7F0226D.jpg
2。3是自己写库函数时的步骤
课后祖业


#include "COMM/stc.h"
//#include "COMM/usb.h"

#define MAIN_Foce 24000000UL //定义一个IRC时钟

void delay_ms (int ms)
{
        while(--ms)
        {
        int i;
        i = MAIN_Foce/6000;       
        i--;
        }
}


void main()
{

       
        P4M0 = 0X00;
        P4M1 = 0X00;
        P6M0 = 0X00;
        P6M1 = 0X00;
        P40 = 0;
        while(1)
        {

                P60 = 0;
                delay_ms(100);
                P60 = 1;
                delay_ms(100);
                P60 = 0;
                delay_ms(100);
                P60 = 1;
                delay_ms(100);
                P60 = 0;
                delay_ms(100);
                P60 = 1;
                delay_ms(100);
               
                P60 = 1;
                delay_ms(500);
                P60 = 0;
                delay_ms(500);
                P60 = 1;
                delay_ms(500);
                P60 = 0;
                delay_ms(500);
                P60 = 1;
                delay_ms(500);
                P60 = 0;
                delay_ms(500);
               
                P60 = 0;
                delay_ms(100);
                P60 = 1;
                delay_ms(100);
                P60 = 0;
                delay_ms(100);
                P60 = 1;
                delay_ms(100);
                P60 = 0;
                delay_ms(100);
                P60 = 1;
                delay_ms(100);
        }
}       


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-01-24 13:47:35

1

主题

19

回帖

101

积分

注册会员

积分
101
发表于 2023-11-14 16:46:14 | 显示全部楼层
本帖最后由 ershiji 于 2023-11-14 16:52 编辑

第七级


软件消抖
if(KEY == 0)
{
   Delay_ms();
   if(KEY == 0)
  {
     执行功能
  }
}
定义数组

课后作业

#include "COMM/stc.h"

#define MAIN_Foce 2400000UL

void KEY_S();
void MODE_S(void);
void MODE_0(void);
void MODE_1(void);
void delay_ms(u16 ms);


//假设按键是P32,按下变换模式,两种模式模式0流水灯,模式二逐次点亮,循环。由于没有使用中断所以按键无法迅速响应。
         u8 KEY;
        u8 i;        
        u8 o=0xfe;
        u8 wlt[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
        u8 MODE=0;

void main()
{        
        KEY=P32;
        P40 = 0;

        while(1)
        {
        KEY_S();
        MODE_S();        
        }
        
        
}
void MODE_S(void)
{
if(MODE==0)
{
MODE_0();
}
else
{
MODE_1();
}
}
        
void MODE_0(void)
{
        P6=wlt;
        i++;
        delay_ms(200);
        if(i==8)
        i=0;
}

void MODE_1(void)
{
        P6=o;
        if(o==0x00)
                o=0xff;
        delay_ms(200);
        o<<=1;
}

void KEY_S()
{
        if(KEY==0)
        {
                delay_ms(10);
                if(KEY==0)
                {
                MODE++;
                if(MODE==2)
                {
                MODE=0;
                }
                        o=0xfe;
                        i=0;
                while(KEY==0);
                }
        }        

}
void delay_ms(u16 ms)
{
        int ii;
        while(--ms)
        {
                ii=MAIN_Foce/6000;
                while(--ii);
        }

}

本人是有基础但是不是特别牢靠加上没有实验箱,所以不能保证代码的正确性。        



回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-01-24 13:47:35

1

主题

19

回帖

101

积分

注册会员

积分
101
发表于 2023-11-14 20:29:02 | 显示全部楼层
第八级无特别感悟,基本都会,思路就是有源蜂鸣器接电叫,也就是对应的引脚输出1,就叫,然后写程序的时候定义几个变亮来存储按键状态,最后来判断功能

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-01-24 13:47:35

1

主题

19

回帖

101

积分

注册会员

积分
101
发表于 2023-11-14 21:26:58 | 显示全部楼层
第九集明白seg公共端,和顺序
3C2FE10421AD9014099D973657D93E3F.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-01-24 13:47:35

1

主题

19

回帖

101

积分

注册会员

积分
101
发表于 2023-11-15 18:41:07 | 显示全部楼层
第十集

通过三个数组
一个控制数码管的位数
一个控制数码管显示0-9的段码
一个控制相应位数的数码管要显示的数字
通人眼不能识别50khz以上的数据,控制数码管得刷新频率,来欺骗眼睛

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-01-24 13:47:35

1

主题

19

回帖

101

积分

注册会员

积分
101
发表于 2023-11-20 18:17:44 | 显示全部楼层
第十一集,定时器的使用

定时器一定时间之后产生的中断,也就是定时器中断
设置为定时器的时候,可实现硬件计时,或者使程序每隔一固定时间完成一项操作
设置为计数器时候能够对脉冲进行计数
替代长时间的delay,提高CPU的运行效率和处理速度,能够及时响应某个事件
145726z2zooee4e27brzye.png
145731beogdpegcfgc9nb4.png
145737r4mfpdd3t35o93md.png
145740otatkar5u5az5e1a.png
145749rciakjakcj8bajxx.png

回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-7 15:07 , Processed in 0.161670 second(s), 98 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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