打印
[STC单片机]

天问51开发板原理图分析-复杂的P6端口

[复制链接]
1745|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zly188|  楼主 | 2020-9-14 14:55 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zly188 于 2020-9-14 15:11 编辑

天问51开发板采用STC8H8K64US4-64芯片,该芯片性能强劲、功能强大是目前STC最先进的51芯片。主频达到48Mhz的1T8051内核,外设有ADC、PWM、IIC、SPI、UART等,更为可贵的是在STC51首次加入了USB模块。由于这些模块的加入,51就非常强大了,可以学习更多的嵌入式知识。天问51开发板充分利用这些外设,巧妙设计了多种电路,在板子上集成了更多设备,学习了天问51就可以很方便地学习ARM,只是内核不同而已。天问51的设备模块图如下图:



IO模块:LED、8位数码管、8*8点阵、4位独立按键、4*4矩阵按键
ADC模块:模拟量NTC、光敏、电位器(AD兼比较器)
PWM模块:PWM马达、蜂鸣器、DAC(PWM+RC)、红外接收+发射(外部中断+PWM)
I2C总线:3轴加速度、RTC、OLED
SPI总线:SPIflash、TFT卡、触摸屏
单线总线:18B20、DHT11、WS2812RGB
UART总线:WIFI、蓝牙、超声波
外扩并口总线:1602、12864、TFT
USB总线:U盘、虚拟串口、键盘、鼠标、MIDI
Arduino扩展模块:连接Arduino产品线的所有设备
    从这些设备中,可以看到基本涵盖了市面上的所有设备。在学习这些设备过程中,大家可以学习到或掌握各类总线知识、TFT卡、文件系统、网络原理、USB、显示原理、电机驱动等等。可以说,学好天问51再学习其他知识就比较容易了。学51=学ARM,就是基于这个解释,我们的学习不是仅仅学习一种MCU,而可以学到更多的各类协议和原理。
    如此多的设备,原理图的设计也是非常复杂,天问51设计时采用了非常巧妙的方法,重用了总线,天问51原理图如下:



    原理图中,最复杂的总线就是P6口,在P6口上集结了8个LED、8个数码管、8*8点阵、lcd1602并口总线、lcd12864并口总线、TFT并口总线、Arduino并口总线(对应D2-D9)。从原理图获知P6口只能分时工作,也就是说这些设备同一时间只有一个可以正常工作,对于学习开发板来说,主要学习各设备的工作原理,影响不会很大。lcd1602、lcd12864、TFT液晶屏、Arduino并口总线由于采用插拔模式,分时工作比较容易理解,不要在同一时间接两种设备就可以分时工作了。8颗LED、8个数码管、8*8点阵的分时工作,采用了非常巧妙的电路和程序配合来解决。

8颗LED的电路如下图:




    8个LED采用共阳方式,连接到一公共PNP三极管驱动端,默认开机状态P40是高阻输入模式,PNP三极管通过R5基极接入地,三极管工作于导通状态。P6口只要写入0,就能让LED发光。如果程序控制把P40设置成输出状态,输出高电平1,PNP三极管基极高电平,三极管截止就关断了8个LED的电源。从电路中可以看出,我们开机上电,可以直接控制P6的亮灭,通过P40可以随时关闭LED而不影响其他电路工作。

    8位数码管和8*8点阵模块采用共阳模块,共阳端口采用两个HC595串转并电路来驱动,一个HC595的输出为COM0-COM7控制8个数码管的公共端,另一个HC595的输出为COM8-COM15控制点阵模块的公共端。原理图如下:




   HC595采用三线控制级联模式,三线就可以输出COM0-COM15每位的值,所有值输出为0时,由于模块采用共阳模块,数码管和点阵模块不管P6口高低电平都不会发光,达到关断数码管和点阵模块的作用。通过HC595输出不同的值可以随时打开数码管和点阵模块。

    当LED*8公共端控制引脚P40输出高电平,HC595所有端口输出低电平,就关闭了板载的LED、数码管、点阵模块。这时就可以通过分时接插lcd1602、lcd12864、TFT液晶、Arduino模块,由P6口随心所欲输出数据。

    编程界面中,关断LED模块在“显示器”下的“LED流水灯”中:




编程代码如下:
led8_enable();//打开8个LED流水灯电源

    图形化编程界面中,关闭HC595模块在“显示器”下"HC595"中:




编程代码如下:
#define HC595_DS   P4_4
#define HC595_STCP P4_3
#define HC595_SHCP P4_2

#include <STC8HX.h>
uint32 sys_clk = 24000000;
//系统时钟确认
#include "lib/hc595.h"

void setup()
{
  P4M1&=~0x10;P4M0|=0x10;//P4_4推挽输出
  P4M1&=~0x08;P4M0|=0x08;//P4_3推挽输出
  P4M1&=~0x04;P4M0|=0x04;//P4_2推挽输出
  HC595_DS = 0;
  HC595_STCP = 0;
  HC595_SHCP = 0;
  hc595_disable();
}

       在图形化编程界面中,新建时自动产生一个“天问51初始化”模块就是为了关闭HC595和RGB灯,如果还要关闭LED8流水灯,自己添加关闭LED流水灯电源模块。      
       P6口通过电路和程序结合,达到了巧妙分时控制,这部分电路接口模式已经申请了专利,大家可以学习使用,但在开发板中使用要注意是否有侵权。

使用特权

评论回复

相关帖子

沙发
272956036| | 2022-7-21 18:40 | 只看该作者
天问这个软件不太好用,编译出来问题,不好查。没有++,和--。有些规则和C语言编程规则不太一样。有功夫研究这个软件,不如用C语言直接编,来得快,出问题的几率也小。

使用特权

评论回复
板凳
zly188|  楼主 | 2022-7-23 14:30 | 只看该作者
272956036 发表于 2022-7-21 18:40
天问这个软件不太好用,编译出来问题,不好查。没有++,和--。有些规则和C语言编程规则不太一样。有功夫研 ...

http://twen51.com
下载最新版,支持VSCODE

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

23

帖子

0

粉丝