stc32打卡和学习心得以及困惑
本帖最后由 ershiji 于 2023-11-15 18:08 编辑通过今天的视频学习我了解了单片机的外观,功能,以及优势。
外观:不同的单片机具有不同的封装
功能:广泛应用于仪器仪表,家用电器,医用设备,航空航天,专用设备的智能化管理及过程控制等领域,大致可分为
智能仪器:电压,电流,功率,频率,湿度,流量等的仪器仪表
工业控制:工厂流水线的智能化,电梯智能化控制,各种报警系统等
家用电器:电饭煲,洗衣机,电冰箱,空调机,彩电等
网络和通信:手机,电话机,楼宇自动通信呼叫系统,列车无线通信等
医用设备领域:医用呼吸机,监护仪,超声波诊断设备及病床呼叫系统等
模块化系统: 电子音乐贺卡,plc工控板等
汽车电子:发动机控制器,基于CAN总线的汽车发动机智能电子控制器,gps导航系统,abs防抱死系统,制动系统,胎压检测等。
stc的51单片机对比stm32单片机的优势在于51的a/d转换精度更高
在使用单片机的过程中如果有问题可以打电话询问客服
在今后的项目开发中选择的单片机能够实现功能就行
1.一定要静得下心来学习,沉得住气
2.多跟着老师动手,千万别一看就会,一写就废
3.多举一反三,发散思维,时常思考为什么
4.多看官网,官网有单片机的更新记录,多看手册,有问题就得多交流
5.通过论坛,吸收一些别人的东西
6.尝试着自己多做一些项目,竞赛题
本帖最后由 ershiji 于 2023-11-13 14:00 编辑
第二集
了解了单片的一些基本模块
我此次学习的目的就是利用stc32单片机作为电磁寻迹小车的主控芯片,学习的重点就在于模数转换器ADC,串口通信,比较器,PWM波形输出。
第三集
此前学过单片机有过基础
在搭建keil c51的时候发现可以与mdk共存(事先已经安装并破解了mdk),c51也需要重新破解一遍
然后可以通过stcisp去下载一些官方的软件
添加了stc32G和头文件
没有搞懂usb驱动程序的安装(我的stcisp提示我不需要安装)主要就是不懂什么是软件模拟,初步的理解是通过软件解码然后编码输出
暂时还没有试验箱,无法进行程序的烧录
由于独特电路设计可以直接使用硬件USB进行程序下载(没有搞懂)
第四集
点亮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/串口模式
今后的工程直接复制今天的工程然后进行修改
第五级
r
存数是以16位存的
练习printf
本帖最后由 ershiji 于 2023-11-14 15:11 编辑
第6级
while()和do while()的区别
使用上基本没有区别
--a与a--的区别在于前者自减1后输出后者先输出再进行自减1
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);
}
}
本帖最后由 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={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,就叫,然后写程序的时候定义几个变亮来存储按键状态,最后来判断功能
第九集明白seg公共端,和顺序
第十集
通过三个数组
一个控制数码管的位数
一个控制数码管显示0-9的段码
一个控制相应位数的数码管要显示的数字
通人眼不能识别50khz以上的数据,控制数码管得刷新频率,来欺骗眼睛
第十一集,定时器的使用
定时器一定时间之后产生的中断,也就是定时器中断
设置为定时器的时候,可实现硬件计时,或者使程序每隔一固定时间完成一项操作
设置为计数器时候能够对脉冲进行计数
替代长时间的delay,提高CPU的运行效率和处理速度,能够及时响应某个事件
页:
[1]
2