查看: 2929|回复: 2

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

[复制链接]

41

主题

167

帖子

3038

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3038
发表于 2020-9-14 14:14:38 | 显示全部楼层 |阅读模式
本帖最后由 zly188 于 2020-9-14 18:44 编辑

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

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原理图如下:
天问51原理图.JPG

    原理图中,最复杂的总线就是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的电路如下图:

LED8原理图.JPG

    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控制点阵模块的公共端。原理图如下:

数码管原理图.JPG

点阵模块原理图.JPG

74HC595原理图.JPG



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

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

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

led8.png

编程代码如下:

  1. led8_enable();//打开8个LED流水灯电源
复制代码
   

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

595初始化和输出.png

编程代码如下:

  1. #define HC595_DS   P4_4
  2. #define HC595_STCP P4_3
  3. #define HC595_SHCP P4_2

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

  8. void setup()
  9. {
  10.   P4M1&=~0x10;P4M0|=0x10;//P4_4推挽输出
  11.   P4M1&=~0x08;P4M0|=0x08;//P4_3推挽输出
  12.   P4M1&=~0x04;P4M0|=0x04;//P4_2推挽输出
  13.   HC595_DS = 0;
  14.   HC595_STCP = 0;
  15.   HC595_SHCP = 0;
  16.   hc595_disable();
  17. }
复制代码
       在图形化编程界面中,新建时自动产生一个“天问51初始化”模块就是为了关闭HC595和RGB灯,如果还要关闭LED8流水灯,自己添加关闭LED流水灯电源模块。      
       P6口通过电路和程序结合,达到了巧妙分时控制,这部分电路接口模式已经申请了专利,大家可以学习使用,但在商业开发板中使用该技术要注意是否有侵权。


回复

使用道具 举报

0

主题

1

帖子

6

积分

注册会员

Rank: 2

积分
6
发表于 2020-9-14 21:36:32 | 显示全部楼层
祝老师加油
回复

使用道具 举报

1

主题

13

帖子

103

积分

注册会员

Rank: 2

积分
103
发表于 2020-11-25 16:27:37 | 显示全部楼层
:老师辛苦了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|好好搭搭在线 ( © 好好搭搭在线 浙ICP备19030393号-1 )

GMT+8, 2024-3-29 22:27 , Processed in 0.359685 second(s), 25 queries .

Powered by Discuz!

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表