【实验箱已送】【跟着冲哥学32位8051】学习日记
本帖最后由 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
这就是我学习视频的地方。
【打卡第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小时后自动停止。
【打卡第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设备 共同进步{:4_219:} 【打卡】【第四集:建立工程点亮第一颗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之类的表示端口设置寄存器,可以设置端口的状态,比如准双向口等 本帖最后由 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文件格式。 【打卡】【第四集:建立工程点亮第一颗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的所有中断 【自学】【第四集:建立工程点亮第一颗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进行数据交互。 【自学】【第四集:建立工程点亮第一颗LED下】
通过STC ISP控制单片机复位到烧写代码的实现原理:
单片机通过USB与上位机连接后,上位机可以通过USB向单片机发出任何数据,
通常的想法是,STC ISP向单片机发出类似RESET_TO_LOADER指令,单片机收到上述指令,则复位到烧写代码中。
但在实现上却有一点复杂,如果希望单片机内置这个功能,也就是单片机只要通电,无论当前在运行什么代码都能实现通过USB复位,
则需要在单片机中加入另一套专用单片机去完成对USB的监视和动作响应,这虽然可能可以做到,但复杂度和成本都脱离了当前的定位。
因此STC32G的设计是,由单片机中的CPU实现对上位机通过USB发过来的指令的监视和相应,
由于这个CPU正在运行用户程序,因此需要对用户程序进行一些修改,通过异步方式实现上述的监视,
而代码中加入的sys_init()、usb_init()以及EA=1就是为了初始化这段对USB的异步监视功能。 【打卡】【第五集: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上的程序。