这是我的蓝桥杯备赛博客的第一篇博客也是我在博客园写下的第一篇博客
先写一下一些介绍吧 我手上这块板子是CT107D 然后使用的主控是宏晶公司的IAP15F2K61S2
我是之前有接触过一下下单片机 之前写的那块是普中的STC89C52 上个学期跟着江科大老师把一些基础的使用过了一遍
最开始拿到这块蓝桥杯单片机平台的时候 连基础的改型号烧录都不会(江科大那个教程太细了 把饭喂到我嘴里了 所以在移植代码和使用新板子这些方面的技能我还有些欠缺)
后面会烧录了 以为这个跟之前那个普中板子一样 就想着先从点灯开始吧 上手就是:
include "头文件"
void main()
{
while(1)
{
P0=0x00;
}
}
结果可想而知 由于这块板子的LED灯并不是直接接在引脚上的 所以这样简单的代码并不能直接点亮LED灯
后来我才想起来要去翻阅原理图和芯片手册
在看原理图的时候才终于发现端倪 这个单片机的LED灯是由一些前级电路控制的 我需要先对前级电路进行配置才能如愿点灯
后来我对照原理图整理了一下思路:
我要点亮小灯 需要先配置锁存器74HC573 锁存器的使能与否又被一个3-8译码器SM74HC138 和与非门芯片 管控
U25是HC20D
需要对U25配置输出WR=1 需要配置P42
经过这一系列的配置 最终可以得到了 Y4C=1
配置3-8译码器的输出为
100 也就是配置P25-0 P26-0 P27-1
然后我需要配置D1=0来点灯 同时 这个锁存器貌似是不能单个引脚赋值 所以我需要将D0=0其他为1转换为1111 1110 =0xfe
代码实现是:
void main()
{
//打开前面的芯片
P2^5=0;
P2^6=0;
P2^7=1;
P4^2=1;
//配置点灯程序
while(1)
{
P0=0xFE;
}
} 这些是我当时自己摸索做出来的小笔记
后来我通过观看b站的小蜜蜂老师的课程 验证了我的基本思路是对的 不过不如小蜜蜂老师讲的细节 还有关于接线柱短接来配置编程模式是IO还是啥映射的(这个我有点没搞懂 留一个小作业下一篇文章来写吧)
然后附上我基于小蜜蜂老师的视频摸索出来的流水灯代码:
include <STC15F2K60S2.H>
include "Delay.h"
sbit HC138_A=P2^5;
sbit HC138_B=P2^6;
sbit HC138_C=P2^7;
sbit U25_WR=P4^2;
/*
要点亮LED灯需要先配置74HC573锁存器
要配置74HC573需要先配置74HC138译码器
38译码器通过三个输入来控制八路的输出
译码器的一段又接到了一个与非门芯片上74HC02
*/
void main()
{
unsigned char i=0;
unsigned int LED=0xff;
HC138_A=0;
HC138_B=0;
HC138_C=1;
U25_WR=0;
//<<左移符号是从L1一直流到L8 >>右移符号是从L8流到L1
while(1)
{
for(i=0;i<=8;i++)
{
LED=0xff<<i;
P0=LED;
Delay(100);
}
for(i=0;i<=8;i++)
{
LED=0xff<<i;
P0=~(LED);
Delay(100);
}
for(i=0;i<=8;i++)
{
LED=0xff>>i;
P0=(LED);
Delay(100);
}
for(i=0;i<=8;i++)
{
LED=0xff>>i;
P0=~(LED);
Delay(100);
}
}
}
使用到的最基础的Delay延时函数 代码现象是将LED灯从左至右依次点亮再依次熄灭再从右至左依次点亮依次熄灭 其实好像关于移位操作我还是有不少的疑惑 看看我下一篇能不能摸索出来吧
浙公网安备 33010602011771号