STC32学习打卡/学习感悟
本帖最后由 GG-AIZHAJI 于 2024-5-14 18:44 编辑第一集 认识单片机
跟着冲哥学32
从开始学STC89C52到STC15W204s再到STC8H8K64U,发现STC单片机也可以很强大,足够做很多小玩具之类的,很庆幸申请了一块stc8h实验板,在暑假期间到现在也用8h单片机做了很多东西。最开心的是做了一个航模遥控器,那么现在,想更近一步学习stc32。
沉下心,多做笔记
加油加油,更上一层楼
第二集了解硬件在学习STC8H的时候,大部分东西都有了解应用过了,在这个试验箱,自己不会的还有比较多没接触过1、RS232协议2、FLASH拓展部分3、NTC测温部分4、PWM做DAC也没有操作过
在接下来的学习中,重点学习上面的方面
第三集:开发环境搭建和程序下载
准备好了,差一个C251编译环境
按照手册步骤,安装下载
终于找到了这个,今天又继续开始终于搭建好了。开始下一课。
第4集
点亮一个LED:很简单,那么就是LED二极管正极给高电平,负极给低电平就可以点亮了,设计时加上限流电阻,防止LED烧坏和过亮刺眼
由于和STC8H有兼容,由于目前还没有试验箱,就暂时用已有的STC8H演示下面是两个灯的电路图,GREEN使用的是P34口
sfr P3M1 = 0xb1;
sfr P3M0 = 0xb2;
sfr P3 = 0xb0;
sbit P34=P3^4;
void delay(long int time)
{
while(time--);
}
void main()
{
P3M0 = 0x00; P3M1 = 0x00;
while(1)
{
P34=0;
delay(0x00ffff);
P34=1;
delay(0x00ffff);
}
}
闪烁成功P3M0 = 0x00; P3M1 = 0x00; 是配置P3组IO口为双向口模式,那么使用其它模式是什么状态呢
第五集C语言printf函数实现
这个是啥意思呢,这个头文件哪里可以调用呢,有点懵了文件打开后就不能理解了。。。。。这一堆是啥意思看不懂
之前也有用printf函数打印是这样写的(假设使用串口1)
char putchar(unsigned char Data){SBUF= Data;while(!TI);TI=0;return Data;}
printf("HELLO");printf("%.2f",a);还得好好理解理解,这个跳转的太快了
第六集 LED花式点灯void main(void)
{
P0M1 = 0x30; P0M0 = 0x30; //设置P0.4、P0.5为漏极开路(实验箱加了上拉电阻到3.3V)
P1M1 = 0x30; P1M0 = 0x30; //设置P1.4、P1.5为漏极开路(实验箱加了上拉电阻到3.3V)
P2M1 = 0x3c; P2M0 = 0x3c; //设置P2.2~P2.5为漏极开路(实验箱加了上拉电阻到3.3V)
P3M1 = 0x50; P3M0 = 0x50; //设置P3.4、P3.6为漏极开路(实验箱加了上拉电阻到3.3V)
P4M1 = 0x3c; P4M0 = 0x3c; //设置P4.2~P4.5为漏极开路(实验箱加了上拉电阻到3.3V)
P5M1 = 0x0c; P5M0 = 0x0c; //设置P5.2、P5.3为漏极开路(实验箱加了上拉电阻到3.3V)
P6M1 = 0x00; P6M0 = 0xff; //设置为推挽输出
P7M1 = 0x00; P7M0 = 0x00; //设置为准双向口
P40 = 0; //LED Power On
while(1)
{
P6 = ~ledNum; //输出低驱动
ledIndex++;
if(ledIndex > 7)
{
ledIndex = 0;
}
delay_ms(250);
delay_ms(250);
}
}
voiddelay_ms(u8 ms)
{
u16 i;
do{
i = MAIN_Fosc / 6000;
while(--i);
}while(--ms);
}
根据实验箱例程这个延时为什么能根据时钟变化而变化呢?单片机的主时钟频率给多大合适呢,排除低功率的情况下,可以认为越高越好吗?
第7集 按键点灯代码示例,当按键按下时,LED亮,否则LED灭那么这个是简单控制LED,在使用LED计数等等就需要考虑按键抖动的问题,可以软件消抖或者硬件消抖。一般采用延时软件消抖按键。sfr P3M1 = 0xb1;
sfr P3M0 = 0xb2;
sfr P3 = 0xb0;
sbit P34=P3^4;
sbit P32=P3^2;
void main()
{
P3M1=0x00;
P3M0 =0x00;
while(1)
{
if(P32==0)
P34=0;
else
P34=1;
}
}
第8集 按键消抖处理
按键在按下和松手的过程中会发生抖动,导致电平不稳定,会发生误判和多次判断
采用延时消抖
在按下的时候和松手的两个过程,利用延时,跳过这两个时间段的检测
void main()
{
P3M1=0x00;
P3M0 =0x00;
while(1)
{
if(P32==0)
{
delay(20);
P34=0;
delay(20);
}
else
P34=1;
}
}
页:
[1]