STC32G跟着冲哥学习打卡篇:(1~14)矩阵按键和密码锁
本帖最后由 四汐 于 2023-12-18 00:12 编辑STC32G跟着冲哥学习打卡篇:(1)认识单片机和环境搭建
今天是第一次学习STC32G的芯片:
搭建好keil的A251环境啦。
学会上传图片了哈哈哈哈
本帖最后由 四汐 于 2023-11-30 14:23 编辑file:///D:/Tencent/%E5%BE%AE%E4%BF%A1%E6%96%87%E4%BB%B6/WeChat%20Files/wxid_jy7fabioas9k22/FileStorage/Temp/f6e8dfa3f357780343ae2c0f9b98077.png 加油,争取能申请到实验箱 rengran 发表于 2023-11-30 19:37
加油,争取能申请到实验箱
加油!{:4_166:}
STC32G跟着冲哥学习打卡篇:(2)LED灯
本帖最后由 四汐 于 2023-12-1 00:35 编辑今天是第二天
刚看完,《点亮一个LED灯实验》
又学了一个新知识!
《震惊{:4_190:}!!!!竟然可以不用头文件{:4_181:},就直接编写程序!!》
STC32G跟着冲哥学习打卡篇:(4)点亮LED下
介绍了如何使用USB-CDC\HID不断电下载的方法
今后可以尝试制作一个头文件,每次建立新工程的时候,只需要引用曾经编写好的USB下载子程序就可以了
STC32G跟着冲哥学习打卡篇:(5)C语言部分
5-1:通过USB打印一串字符,“显示温湿度信息”。
5-1:2进制-10进制-16进制,互相转化。
5-2:
转义字符:
格式字符:
1.d格式字符
功能:用来输出十进制数
格式:%d:按整型数据的实际长度输出
%md:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补一空格;若大于m,则按实际位数输出。
%ld:输出长整型数据。
2.o格式字符
功能:以八进制形式输出整数;
格式:%o:按整型数据的实际长度输出
%mo:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补一空格;若大于m,则按实际位数输出。
%lo:输出长整型数据。
3.x格式字符
功能:以十六进制形式输出整数
格式:%x:按整型数据的实际长度输出
%mx:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补一空格;若大于m,则按实际位数输出。
%lx:输出长整型数据。
4.u格式字符
功能:以十进制数输出无符号整数
格式:%u:按整型数据的实际长度输出
%mu:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补一空格;若大于m,则按实际位数输出。
%lu:输出长整型数据。
5.c格式字符**
功能:输出单个字符
格式:%c:按整型数据的实际长度输出
%mc:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补一空格;若大于m,则按实际位数输出。
%lc:输出长整型数据。
6.s格式字符
功能:输出字符串
格式:%s:按整型数据的实际长度输出
%ms:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补一空格;若大于m,则按实际位数输出。
%ls:输出长整型数据。
7.f格式字符
功能:以小数形式输出单、双精度实数
格式:%f:按整型数据的实际长度输出
%mf:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补一空格;若大于m,则按实际位数输出。
%lf:输出长整型数据。
8.e格式字符
功能:以指数形式输出单、双精度实数
格式:%e:按整型数据的实际长度输出
%me:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补一空格;若大于m,则按实际位数输出。
%le:输出长整型数据。
9.g格式字符
功能:以%f、%e中较短的输出宽度输出单、双精度实数
格式:%g:按整型数据的实际长度输出
%mg:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补一空格;若大于m,则按实际位数输出。
%lg:输出长整型数据。
打卡:今天学习一下C语言中的指针
看到USB_HID下载方式,使用到了指针:
<div style="background-color: rgb(40, 42, 54); line-height: 22px; white-space: pre; font-size: 16px; font-family: Consolas, "Courier New", monospace; color: rgb(248, 248, 242);">
<div><div style="line-height: 22px;">
<div><span style="color: #ff79c6;">#include</span> <span style="color: #e9f284;">"</span><span style="color: #f1fa8c;">COMM/STC32G.H</span><span style="color: #e9f284;">"</span>
<span style="color: #ff79c6;">#include</span> <span style="color: #e9f284;">"</span><span style="color: #f1fa8c;">COMM/stc32_stc8_usb.h</span><span style="color: #e9f284;">"</span>
<span style="color: #ff79c6;">#define</span> <span style="color: #50fa7b;">MAIN_Fosc</span> <span style="color: #bd93f9;">24000000</span><span style="color: #ff79c6;">UL</span><span style="color: #6272a4;"> //定义主时钟评率</span>
<span style="color: #6272a4;">
</span></div></div>
<span style="color: #6272a4;">// USB调试及复位所需定义</span>
<span style="color: #ff79c6;">char</span> <span style="color: #ff79c6;">*</span>USER_DEVICEDESC <span style="color: #ff79c6;">=</span> <span style="color: #50fa7b;">NULL</span>;
<span style="color: #ff79c6;">char</span> <span style="color: #ff79c6;">*</span>USER_PRODUCTDESC <span style="color: #ff79c6;">=</span> <span style="color: #50fa7b;">NULL</span>;
<span style="color: #ff79c6;">char</span> <span style="color: #ff79c6;">*</span>USER_STCISPCMD <span style="color: #ff79c6;">=</span> <span style="color: #e9f284;">"</span><span style="color: #f1fa8c;">@STCISP#</span><span style="color: #e9f284;">"</span>;<span style="color: #6272a4;"> // 设置自动复位到ISP区的用户接口命令</span>
<span style="color: #6272a4;">
</span>
<div style="line-height: 22px;">
<div><span style="color: #ff79c6;">void</span> <span style="color: #50fa7b;">sys_init</span>()
{
WTST <span style="color: #ff79c6;">=</span> <span style="color: #bd93f9;">0</span>;<span style="color: #6272a4;">// 设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快</span>
EAXFR <span style="color: #ff79c6;">=</span> <span style="color: #bd93f9;">1</span>;<span style="color: #6272a4;"> // 扩展寄存器(XFR)访问使能</span>
CKCON <span style="color: #ff79c6;">=</span> <span style="color: #bd93f9;">0</span>;<span style="color: #6272a4;"> // 提高访问XRAM速度</span>
P0M1 <span style="color: #ff79c6;">=</span> <span style="color: #ff79c6;">0x</span><span style="color: #bd93f9;">30</span>;
P0M0 <span style="color: #ff79c6;">=</span> <span style="color: #ff79c6;">0x</span><span style="color: #bd93f9;">30</span>;<span style="color: #6272a4;"> // 设置P0.4、P0.5为漏极开路(实验箱加了上拉电阻到3.3V)</span>
P1M1 <span style="color: #ff79c6;">=</span> <span style="color: #ff79c6;">0x</span><span style="color: #bd93f9;">32</span>;
P1M0 <span style="color: #ff79c6;">=</span> <span style="color: #ff79c6;">0x</span><span style="color: #bd93f9;">32</span>;<span style="color: #6272a4;"> // 设置P1.1、P1.4、P1.5为漏极开路(实验箱加了上拉电阻到3.3V), P1.1在PWM当DAC电路通过电阻串联到P2.3</span>
P2M1 <span style="color: #ff79c6;">=</span> <span style="color: #ff79c6;">0x</span><span style="color: #bd93f9;">3c</span>;
P2M0 <span style="color: #ff79c6;">=</span> <span style="color: #ff79c6;">0x</span><span style="color: #bd93f9;">3c</span>;<span style="color: #6272a4;"> // 设置P2.2~P2.5为漏极开路(实验箱加了上拉电阻到3.3V),设置开漏模式需要断开PWM当DAC电路中的R2电阻</span>
P3M1 <span style="color: #ff79c6;">=</span> <span style="color: #ff79c6;">0x</span><span style="color: #bd93f9;">50</span>;
P3M0 <span style="color: #ff79c6;">=</span> <span style="color: #ff79c6;">0x</span><span style="color: #bd93f9;">50</span>;<span style="color: #6272a4;"> // 设置P3.4、P3.6为漏极开路(实验箱加了上拉电阻到3.3V)</span>
P4M1 <span style="color: #ff79c6;">=</span> <span style="color: #ff79c6;">0x</span><span style="color: #bd93f9;">3c</span>;
P4M0 <span style="color: #ff79c6;">=</span> <span style="color: #ff79c6;">0x</span><span style="color: #bd93f9;">3c</span>;<span style="color: #6272a4;"> // 设置P4.2~P4.5为漏极开路(实验箱加了上拉电阻到3.3V)</span>
P5M1 <span style="color: #ff79c6;">=</span> <span style="color: #ff79c6;">0x</span><span style="color: #bd93f9;">0c</span>;
P5M0 <span style="color: #ff79c6;">=</span> <span style="color: #ff79c6;">0x</span><span style="color: #bd93f9;">0c</span>;<span style="color: #6272a4;"> // 设置P5.2、P5.3为漏极开路(实验箱加了上拉电阻到3.3V)</span>
P6M1 <span style="color: #ff79c6;">=</span> <span style="color: #ff79c6;">0x</span><span style="color: #bd93f9;">ff</span>;
P6M0 <span style="color: #ff79c6;">=</span> <span style="color: #ff79c6;">0x</span><span style="color: #bd93f9;">ff</span>;<span style="color: #6272a4;"> // 设置为漏极开路(实验箱加了上拉电阻到3.3V)</span>
P7M1 <span style="color: #ff79c6;">=</span> <span style="color: #ff79c6;">0x</span><span style="color: #bd93f9;">00</span>;
P7M0 <span style="color: #ff79c6;">=</span> <span style="color: #ff79c6;">0x</span><span style="color: #bd93f9;">00</span>;<span style="color: #6272a4;"> // 设置为准双向口</span>
}</div>
</div>
<span style="color: #6272a4;">
</span>
<div style="line-height: 22px;">
<div><span style="color: #ff79c6;">void</span> <span style="color: #50fa7b;">main</span>()
{
<div style="line-height: 22px;"> <span style="color: #50fa7b;">sys_init</span>();</div>
<span style="color: #50fa7b;">usb_init</span>();
EA <span style="color: #ff79c6;">=</span> <span style="color: #bd93f9;">1</span>;
}</div>
</div></div></div>然后不是很懂指针是什么东西,就打算学习一下指针先,嘿嘿
本帖最后由 四汐 于 2023-12-2 20:01 编辑
STC32G跟着冲哥学习打卡篇:(6)LED闪烁
#define MAIN_Fosc 24000000UL//定义主时钟频率
- - a;//先运算再输出值
a - -;//先输出值再运算
关于宏定义:
#define 名称 需要宏定义的内容
typedef 需要宏定义的内容 名称
#define MAIN_Fosc 24000000UL //将“MAIN_Fosc”宏定义为“24000000UL”
typedef unsigned int u16 //将“u16”宏定义为“unsigned int”
模块化编程:
void 函数名()
{
内容;
}
int 函数名()
{
int 变量;
内容;
return 变量;//返回一个值int
}
头文件编写:
#ifndef __NAME_H__ //判断该头文件名未被定义过,那么就可以使用
STC32G跟着冲哥学习打卡篇:(7)按键点灯
1.按键消抖
if (key == 0)
{
delay_ms(20);
if(key ==0)
{
内容;
}
}
2.按键控制LED亮灭
if (key == 0)
{
delay_ms(20);
if(key ==0)
{
while(key == 0);//松开开关才执行,并且只执行一次
内容;
while(key ==0);//按下开关就执行,并且只执行一次
}
}
3.按键控制LED灯左右移动
看了冲哥的视频,感觉有点繁琐。
因为想到以前用到的一个指令“_crol_()”【左移一位】和“_cror_()”【右移一位】,因为我是在89C52上用的,感觉32G的应该也可以用哈哈哈哈
页:
[1]
2