如何看懂蓝桥杯单片机(CT107S)原理图

        本人是某末流大学大二学生,最近准备蓝桥杯单片机比赛,一点一点儿学习,有了一点基础后,对原理图大部分有了一定的了解,然后希望在这里记录一下,加深一下自己的印象,也方便自己之后的复习,也希望能够帮助到一些才入门的朋友们。希望在这里面有不对的地方大家能够指出来,毕竟我也是小白入门,犯错误也是难免的。

        原理图在我们刚刚开始写程序的时候,或者是才开始学习各个模块的时候,十分重要,所以学习一个器件,对原理图的了解也是很重要的,通过原理图我们可以了解到器件的管教分配情况,各个模块的电路连接,甚至是模块内部的电路构成,对我们从头开始熟悉一个器件起着很大的帮助。

下面是国信长天单片机V20的原理图,适用于最新版的CT107S

国信长天单片机竞赛平台(V20)原理图

可以将上面的原理图和下面的开发板中的各个模块进行对比来看

CT107S开发板(注释)

下分分别对各个模块进行简单的说明:

15单片机:

这是我们的15单片机,其中有引脚的具体分配,可以看到上面有P1、P2、P3、P4口等。其中有一些引脚需要我们留意一下。P30、P31分别可以作串口通信的接收和发送,P31、P32分别可以分别可以作外部中断0和外部中断1的输入。P32、P33分别可以作定时器0和定时器1的计数脉冲输入端。暂时可以先了解这么多,其他还有很多引脚也有其他功能暂时先不必深入了解。

按键模块:

这就是我们用到的按键模块,在这里有一个J5的排针,在开发板上面分别标有KBD和BTN,其中KBD就是key board,键盘的意思(矩阵键盘),BTN表示button,独立按键,知道了这个我们就能很好的记忆,在使用的时候就不会搞混。当我们用跳线帽把J5的2,3(BTN)两个脚连接起来的时候,我们可以根据原理图看到,S7,S6,S5,S4两边分别连接单片机的I/O口(I/O口就是input,output输入输出口)和GND(ground地),假设我们现在按下S7按键,这个时候就P30就会直接和GND相连接,把P30拉低,这个时候我们可以通过检测单片机的P30是否为0来判断按键是否被按下。当我们把跳线帽接到1,2(KBD)的时候,按键作为矩阵按键模式,这个时候我们就不能直接通过上面的判断来检测按键是否被按下,而需要用到矩阵键盘的扫描程序,讲起来有一丢丢复杂,扫描的原理在这里不作讲解。这里我们还需要注意,在新版的蓝桥杯单片机中按键的最高位并不是直接使用的P36,P37引脚,而是使用的是P42和P44引脚,在写程序的时候需要留意。

LED显示模块:

在这款单片机的LED全都是使用的共阳极连接,什么是共阳?在这里LED的一端接的是VCC这边的电平一直试高,我们都知道二极管有单向导电性,当我们在它的左边给他一个高电平的时候,两端的电压相等,二极管截止,当我们在左边给它一个低电平的时候,左边的电位低,右边的电位高,这个时候发光二极管导通。而R32-R45这些电阻成为限流电阻,防止电流太大二极管被烧坏,所以要串上一个电阻,不同的二级管有不同的导通压降,可以通过导通压降来计算我们需要串联一个多大的电阻。

数码管显示模块:

 这里的7段数码管和我们上面说到的LED一样都是共阳极的,具体连接的方式我们在数电里面也学过这里就不讲了。主要讲一下在这里原理图怎么看,可以看到数码管左边有一排a1~g1和dp1等引脚,就是控制对应的7段数码管,当我们给选择的段一个低电平的时候,对应的段就会亮,如我们如果让a,d,e,f,g,dp都等于1,b,c等于0,对应的b,c段就会被点亮,此时数码管就会显示1。然后我们再看到右边有com1~com4四个引脚,就是选择对应的数码管,com引脚是高电平有效,如我们给com1一个高电平的时候,第一个数码管就会被选中,然后我们再来按照上面所说的方法来配置对应的段位让对应的数码管显示对应的数字。

外部设备:

首先是继电器,我们这里需要知道这里的N_RELAY就是控制继电器的开关,同样是低电平有效,我们让RELAY为0的时候,继电器被导通,里面的线圈就会产生电流,在高中的时候我们就知道电流会产生磁场,继电器K1就会在磁力的作用下被吸和然后与m2连接,m2就会和GND相连接,m2被拉低输出低电平,当继电器打开的时候,m2被拉低,与m2相连接的LED就会被点亮,来指示现在我们的继电器被打开了。

有源蜂鸣器(无源蜂鸣器可以通过控制开关的频率来让蜂鸣器发出不同的音调,而有源蜂鸣器则只能发出一种声音),同样是低电平触发,通过N_BUZZ来控制蜂鸣器的开和关,当我们让BUZZ为0的时候,蜂鸣器被打开发出声音,为1的时候关闭。

今天先写到这,后面继续更新。。。。。

————————————————————————————分割线

现在是2022年1月14日了,已经过去了快两年了还没有更新哈哈哈,后面也不准备更新了。这个是针对纯属零基础的小白看的,能够看懂上面这些其他的其实也是一样的,融会贯通即可。有人向我要原理图,我在这里给大家分享一下之前保存的2020年的数据资源包,有需要的自取。链接: 百度网盘 请输入提取码 提取码: 99jv 复制这段内容后打开百度网盘手机App,操作更方便哦

下面是ct107s开发板的ds1302读写函数的示例代码: ```c #include "ct107s.h" #include "ds1302.h" // DS1302 RST引脚 #define DS1302_RST_PIN P0_0 // DS1302 IO引脚 #define DS1302_IO_PIN P0_1 // DS1302 SCLK引脚 #define DS1302_SCLK_PIN P0_2 // DS1302读取一个字节 u8 DS1302_ReadByte(void) { u8 i, dat = 0; // 设置IO口为输入 GPIO_Init(DS1302_IO_PIN, GPIO_Mode_IPU); // 读取数据 for (i = 0; i < 8; i++) { dat >>= 1; GPIO_WriteBit(DS1302_SCLK_PIN, Bit_RESET); if (GPIO_ReadInputDataBit(DS1302_IO_PIN) == Bit_SET) { dat |= 0x80; } GPIO_WriteBit(DS1302_SCLK_PIN, Bit_SET); } return dat; } // DS1302写入一个字节 void DS1302_WriteByte(u8 dat) { u8 i; // 设置IO口为输出 GPIO_Init(DS1302_IO_PIN, GPIO_Mode_Out_PP); // 写入数据 for (i = 0; i < 8; i++) { GPIO_WriteBit(DS1302_IO_PIN, (dat & 0x01) ? Bit_SET : Bit_RESET); dat >>= 1; GPIO_WriteBit(DS1302_SCLK_PIN, Bit_RESET); GPIO_WriteBit(DS1302_SCLK_PIN, Bit_SET); } } // DS1302读取一个寄存器 u8 DS1302_ReadReg(u8 reg) { u8 dat; // 禁止写入 DS1302_WriteByte((reg << 1) | 0x81); dat = DS1302_ReadByte(); // 使能写入 DS1302_WriteByte((reg << 1) | 0x80); return dat; } // DS1302写入一个寄存器 void DS1302_WriteReg(u8 reg, u8 dat) { // 禁止写入 DS1302_WriteByte((reg << 1) | 0x80); DS1302_WriteByte(dat); // 使能写入 DS1302_WriteByte((reg << 1) | 0x81); } ``` 在使用时,需要先初始化IO口: ```c GPIO_Init(DS1302_RST_PIN, GPIO_Mode_Out_PP); GPIO_Init(DS1302_IO_PIN, GPIO_Mode_Out_PP); GPIO_Init(DS1302_SCLK_PIN, GPIO_Mode_Out_PP); ``` 然后就可以调用上述函数进行DS1302的读写操作了。例如,读取DS1302的秒数: ```c u8 sec = DS1302_ReadReg(DS1302_SEC_REG); ``` 写入DS1302的小时数: ```c DS1302_WriteReg(DS1302_HOUR_REG, 0x12); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值