蓝桥杯STC15单片机流水灯

简介: 蓝桥杯STC15单片机流水灯

单片机型号说明:IAP15F2K61S2

新建工程时单片机型号选择STC15F2K60S2

0445dde6907d9c67069fabe38ada2926_36d567f6e2994c0db1c8de853f8d2935.png


单片机I/O口的使用

对单片机的控制,其实就是对I/O口的控制,无论单片机对外界进行何种控制,或接受外部的何种控制,都是通过I/O口进行的。51单片机总共有P0、P1、P2、P3四个八位双向输入输出端口

LED原理图

1ed3c5189e9d4cbf584daeab3ba41651_d083e9368ed64ed9a3bd6aa7ed2c429f.png

先来笨方法点个流水灯

1. #include <STC15F2K60S2.H>
2. 
3. sbit led0 = P0^0;  // sbit写法
4. sbit led1 = P0^1;
5. sbit led2 = P0^2;
6. sbit led3 = P0^3;
7. 
8. long a;
9. 
10. void main()
11. {
12.   P2 = 0xA0;  P0 = 0x00;  P2 = 0x80;  P0 = 0xFF;//初始化,防止蜂鸣器乱叫
13. 
14.   while(1)
15.   {
16.     led0 = 0; led1 = 1; led2 = 1; led3 = 1;
17.     for (a = 80000; a > 0; a --);    //阻塞性延时,只是看下流水灯效果!
18.     led0 = 1; led1 = 0; led2 = 1; led3 = 1;
19.     for (a = 80000; a > 0; a --);
20.     led0 = 1; led1 = 1; led2 = 0; led3 = 1;
21.     for (a = 80000; a > 0; a --);
22.     led0 = 1; led1 = 1; led2 = 1; led3 = 0;
23.     for (a = 80000; a > 0; a --);
24.   }
25. }

直接在while(1)里写流水灯代码

stc-isp烧录程序经常烧录不进去,为啥呢???


单片机工作的基本时序

机器周期和指令周期

振荡周期:也称时钟周期,是指为单片机提供时钟脉冲信号的振荡源的周期,学习板上为12MHz,一个时钟周期就是1/12M = (1 / 12000000) s

状态周期每个状态周期为时钟周期的2倍,是时钟周期经过二分频后得到的

机器周期:一个机器周期包含6个状态周期S1~S6,也就是12个时钟周期。在一个机器周期内,CPU可以完成一个独立的操作。

指令周期:它是指CPU完成一条操作所需的全部时间。每条指令执行时间都是有一个或几个机器周期组成。51单片机系统中,有单周期指令、双周期指令和四周期指令。


修改编码格式-支持中文

Keil5默认编码格式是ANSI,每次删除注释的时候,都要删除两下,而且赋值粘贴程序的时候,经常出现乱码,就很烦

7bf10fc5376c9cc05366045faf866948_daaf92564dff4a2fae5572951c7017e0.png

把编码格式改成UTF-8或GB2312

b2759f2bdf48b429f15d898a1933f2c3_72ee49a5485e4876a912919577f474bd.png

个人更推荐使用UTF-8编码格式

但是15单片机的头文件注释是乱码,想要查看15头文件的注释,将编码格式改成GB2312即可

a716f0c97ab7402ba059b2d64ab110c0_5aeefe4eabc84bcaab77a4ea8cb39df6.jpeg

注意:拔插芯片要断电进行!

15单片机是51单片机运行速度的8~12倍


15单片机在线仿真

IAP15单片机可以支持在线仿真

695e3df8a35093c026cd5e2779c35d4d_877388d4ed94417b89be401f70db7a9b.png

先添加STC库、STC仿真器驱动到Keil中,安装路径选择Keil的安装路径

安装成功提示:

4103c7776bb9be0974dabf9ae40146c4_47e6157cbbbb4a9fb25343ab56d03c5a.png

Debug默认设置如下:

3ba02e32716e13db25af6358c2167bfe_ac450c9c203043e79850ae18aba2f4ce.png

设置成在线仿真模式,选择STC……51……那个

c3ae63b8f452902c07200149cadbae2c_faf3925fe2fa4b25a7404a2141ac1030.png

然后将COM设置成和烧录器 一样的COM口

969dd11d408206cafc63d46ccd9efe60_6c528fa1e4254931a316f35781c8ed8a.png

设置为仿真芯片

cc163b59ab68ee6faaea94c405022b89_51624242c7174ca1b47b0bbd238bcad4.png

烧录程序,在线仿真烧录程序比较慢!

6bfa85a654b63fd95bfe4d9182f7e2dc_eecee23f694e457aa4064b8134bd5885.png

然后就可以一步一步在线调试咯

142654b1fe828bf36bd498e06d7a3e08_1287edac30024c01817869db7da9a776.png


另外使用15单片机头文件,可以直接使用P00代表P0^0 因为15的头文件中已经定义好了

5907306a247397209e0ffa0cd72e4649_43914be38f49421db8dfef318a48d109.png

编译下载程序,现象一致

1. #include <STC15F2K60S2.H>
2. 
3. long a;
4. 
5. void main()
6. {
7.  P2 = 0xA0;  P0 = 0x00;  P2 = 0x80;  P0 = 0xFF;//初始化,防止蜂鸣器乱叫
8. 
9.  while(1)
10.   {
11.     P00 = 0; P01 = 1; P02 = 1; P03 = 1;
12.     for (a = 80000; a > 0; a --);
13.     P00 = 1; P01 = 0; P02 = 1; P03 = 1;
14.     for (a = 80000; a > 0; a --);
15.     P00 = 1; P01 = 1; P02 = 0; P03 = 1;
16.     for (a = 80000; a > 0; a --);
17.     P00 = 1; P01 = 1; P02 = 1; P03 = 0;
18.     for (a = 80000; a > 0; a --);
19. 
20.   }
21. }

书写方便,真香

d1601df5d339b4695d7a14d3b6942ba2_041881b8ba3b4f3e8cbac0e84ef598c7.gif

代码太麻烦了,修改修改

1. #include <STC15F2K60S2.H>
2. 
3. unsigned char i;
4. long delay;
5. 
6. void main()
7. {
8.  P2 = 0xA0; P0 = 0x00; P2 = 0x80; P0 = 0xFF;   //初始化
9.  while(1)
10.   {
11.     for ( i = 0;i < 8; i ++)
12.     {
13.       P0 = ~(0x01 << i);  //流水
14.       for(delay = 80000; delay > 0; delay --);  //简单的延时
15.     }
16.   }
17. }

b5e8aebcaf62ac69224285e0fc905fa6_286759a490304569ba241212e3c030b8.png

具体玩法如下

image.png

707f83a9428f34fe2ac261fc0d4c2381_1e14255663c34be7a5b013900fd6cbbc.png


相关文章
|
3月前
|
数据格式
用C51单片机制作LED流水的灯
用C51单片机制作LED流水的灯
67 0
|
5天前
【51单片机】独立按键,每个按键不同功能,数码管数值的加减,控制流水灯模式,包含按键消抖,数码显示,流水灯
【51单片机】独立按键,每个按键不同功能,数码管数值的加减,控制流水灯模式,包含按键消抖,数码显示,流水灯
|
5天前
|
C语言
51单片机汇编语言流水灯代码
51单片机汇编语言流水灯代码
|
1月前
蓝桥杯之单片机学习(终)——关于之前文章的错误及更正(附:第十四届蓝桥杯单片机赛题)
蓝桥杯之单片机学习(终)——关于之前文章的错误及更正(附:第十四届蓝桥杯单片机赛题)
|
3月前
|
编译器 C语言 C++
【51单片机】LED的三个基本项目(LED点亮&LED闪烁&LED流水灯)(3)
【51单片机】LED的三个基本项目(LED点亮&LED闪烁&LED流水灯)(3)
定时器+按键控制LED流水灯模式+定时器时钟——“51单片机”
定时器+按键控制LED流水灯模式+定时器时钟——“51单片机”
|
3月前
|
C语言
点亮一个LED+LED闪烁+LED流水灯——“51单片机”
点亮一个LED+LED闪烁+LED流水灯——“51单片机”
|
3月前
|
C语言
###51单片机学习-----如何通过C语言运用延时函数设计LED流水灯
###51单片机学习-----如何通过C语言运用延时函数设计LED流水灯
118 0
|
芯片
51单片机--点亮LED灯和流水灯
51单片机--点亮LED灯和流水灯
138 0
【单片机期中测试】4.按键不同时长控制流水灯
【单片机期中测试】4.按键不同时长控制流水灯
52 0

热门文章

最新文章