找回密码
 立即注册
查看: 795|回复: 23

跟着冲哥学习32位8051单片机原理及C语言程序设计

[复制链接]
  • 打卡等级:常住居民II
  • 打卡总天数:87
  • 最近打卡:2025-02-15 09:16:10

3

主题

49

回帖

109

积分

注册会员

积分
109
发表于 2024-10-25 10:47:40 | 显示全部楼层 |阅读模式
10.25
认识单片机
处于项目需要,接触了stc15w408s芯片,现来学习,争取触类旁通,会用stc芯片完成项目
回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:87
  • 最近打卡:2025-02-15 09:16:10

3

主题

49

回帖

109

积分

注册会员

积分
109
发表于 2024-10-25 13:38:27 | 显示全部楼层
二、了解硬件,跟着冲哥的脚步一点点的向我所需要实现的项目功能靠近
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:87
  • 最近打卡:2025-02-15 09:16:10

3

主题

49

回帖

109

积分

注册会员

积分
109
发表于 2024-10-26 11:23:48 | 显示全部楼层
三、开发环境搭建和程序下载
跟着视频创建个项目
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:87
  • 最近打卡:2025-02-15 09:16:10

3

主题

49

回帖

109

积分

注册会员

积分
109
发表于 2024-10-28 16:46:12 | 显示全部楼层
10.28
四、基础中的基础,就好像学任何高级编程语言都要首先编写一个“Hello word”程序一样,通过这个程序可以了验证整个编译环境配置是否正确、编译软件的使用、下载软件的使用,了解编写调试程序的基本方法和步骤,初学者必须掌握好该节课的内容。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:87
  • 最近打卡:2025-02-15 09:16:10

3

主题

49

回帖

109

积分

注册会员

积分
109
发表于 2024-10-29 09:31:24 | 显示全部楼层
五、
第五集
一、C语言的printf函数实现
主函数中添加
if(DeviceState !=DEVSTATE_CONFIGURED) //判断USB是否连接成功
continue;
if(bUsbOutReady)
{
usb_OUT_done(); //接收应答(固定格式)
printf("室内温度:%.2f\r\n",11.2);
}


这个功能可以用在程序调试时输出观察的变量数值
二、数的进制
初学着必须掌握2进制以及在芯片中的作用,熟练掌握2进制、16进制、10进制之间的相互转换。
10进制x转n进制的方法为:
x/n取余得b商a,n进制的各位数为b,再将a重复此步骤。
如19进制431转16进制


结果16进制数为1AF
在明白转换算法原理后,可利用计算器的programmer(程序设计员)模式进行转换。并学会求模、求余的计算。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:87
  • 最近打卡:2025-02-15 09:16:10

3

主题

49

回帖

109

积分

注册会员

积分
109
发表于 2024-10-29 16:29:38 | 显示全部楼层
第六集
函数的使用
在模块化编程里,函数使用分为如下三步:
1:函数定义
      返回值 函数名称(入口参数)
     {
           函数要执行的功能;
           return 返回值;(无返回值可不写)
      }
      @返回值:没有返回值就是 void
      @函数名称:避开关键词,不重复,非特殊字符随便取
      @入口参数:类型 + 名称,多个参数“,“分开,空就写 void
2.函数声明
      返回值函数名称(入口参数);
3.函数调用
      函数名称(入口参数):
三、新建文件,使用模块化编程
新建 xxx.c 和 xxx.h 文件,代表一个功能块。
xxx.h 格式:
      #ifndef __XXX_H
      #define __XXX_H
      调用头文件
      函数声明...
      #endif
xxx.c 格式
      #include"xxx.h"
      函数定义

添加文件定定要记得引用路径和添加到工程里。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:87
  • 最近打卡:2025-02-15 09:16:10

3

主题

49

回帖

109

积分

注册会员

积分
109
发表于 2024-10-30 09:29:23 | 显示全部楼层
第七集
按键点灯
提示:
     选中一列代码:Alt+Shift+按下鼠标左键移动选择要复制的列。
     一定要记住整个程序是在一个大循环中进行
     左移(<<)最低位补1的方法: x=(x<<1)+1;
1、按键的代码实现过程
按下按键就执行
if(KEY == 0)
{
  Delay_ms(10);  
  if(KEY ==0)
  {
    执行功能
  }
}
按键松手后再执行
if(KEY == 0)
{
  Delay_ms(10);  
  if(KEY ==0)
  {
      while(KEY==0); //松手检测
      执行功能
   }
}
按键编程消抖是关键,一种方法是用延时软件达到消抖。

2、数组的使用
数组使用分为如下两步:
1.定义
    类型名称[长度]={数值};
    例如:
     usigned char x[3]={23,43,41};
2.使用
    赋值:名称[索引]= 数值
    调用:名称[索引]
        索引从0开始
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:87
  • 最近打卡:2025-02-15 09:16:10

3

主题

49

回帖

109

积分

注册会员

积分
109
发表于 2024-10-30 17:04:08 | 显示全部楼层
八、
本集是对键盘、LED、蜂鸣器的综合应用,并阐述了怎样根据需求进行编程设计-先理清思路,再回过头来写代码。独立完整的完成本集示例是对前面几集知识很好的巩固。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:87
  • 最近打卡:2025-02-15 09:16:10

3

主题

49

回帖

109

积分

注册会员

积分
109
发表于 2024-10-31 08:50:11 | 显示全部楼层

第九集

1、电子表格常用不同进制间转换函数
            16进制转10进制:HEX2DEC
            16进制转2进制:HEX2BIN
            10进制转16进制:DEC2HEX
            10进制转2进制:DEC2BIN
            2进制转16进制:BIN2HEX
            2进制转10进制:BIN2DEC
2、文件名用中文名有时编译会出错。

数码管的静态使用
       数码管分为共阴极和共阳极,型号尾缀A表示共阳极,K表示共阴极。
1、 共阳极数码管显示数字对应的段码

      10进制段码数组 {192,249,164,176,153,146,130,248,128,144}
      16进制段码数组 {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}
2、共阴极数码管显示数字对应的段码
      10进制段码数组 {63,6,91,79,102,109,125,7,127,111}
      16进制段码数组 {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}
      共阳和共阴数码管断码是相互按位取反的关系
3、点亮一个数码管,单片机需要输出位选和段码数据。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:87
  • 最近打卡:2025-02-15 09:16:10

3

主题

49

回帖

109

积分

注册会员

积分
109
发表于 2024-10-31 11:35:06 | 显示全部楼层
第十集
数码管动态刷新的原理
      需要注意每个延时不能太短,我们这边程序就以 1ms 为准,且需要保证总共一个循环结束的时间不能大于 20ms,因为人眼的视觉不容易分辨出50HZ 以上的动态刷新。
      需要一个位码数组(或使用_crol_()函数)
      十进制位码数组 {127,191,223,239,247,251,253,254}
       二进制位码数组 {0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE}
      包含小数点的16进制段码数组 {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}
      例如:如果取3的断码数组下标为3,如果取3加小数点的断码下标13。
      再建一个显示每位显示内容的数组。
      重复的代码段我们可以将其定义为一个函数。
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-11 19:45 , Processed in 0.144433 second(s), 99 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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