【问题标题】:Microcontroller 89c52 - 7 segment multiplexing display微控制器 89c52 - 7段多路复用显示器
【发布时间】:2016-06-10 09:40:14
【问题描述】:

我有一个用 C 语言编写的 uController 示例程序,处理 7 段多路复用显示。

我可以按如下方式访问显示屏的左侧或右侧:

//declarations   
unsigned char xdata left    _at_ 0xFE00;
unsigned char xdata right   _at_ 0xFD00;

//use
left  = 0x06;
right = 0x5B;

它会在左侧屏幕打印“1”,在右侧打印“2”。

现在我想知道,它是如何工作的? 0xFE00 地址是从哪里来的以及它是如何显示到左屏幕的(我知道这是因为 P2_0 上有“0”,但我不知道它是如何连接到“左”变量的)。

【问题讨论】:

  • 首先要查看MCU上的寄存器映射,看看哪个地址对应哪个端口。您必须阅读有关这些寄存器如何工作的手册。除了数据寄存器,还有数据方向寄存器等吗?现在您继续阅读手册并您告诉我们这些寄存器的作用。我想你可能不得不去博物馆偷窃,才能拿到这个 MCU 的手册。
  • sfr P0 = 0x80; sfr P2 = 0xA0;

标签: c microcontroller 8051


【解决方案1】:

我从未对这个野兽进行过编程,但查看您的代码、电路图和数据表表明 LED 对作为外部存储器寻址:8 个数据位(否则端口 0)连接到段数据引脚和 2 个地址线(否则为端口 2)连接到数字选择引脚。

值FE00 的第 8 位为低位,第 9 位为高位。因此,写入地址FE00 会导致0 从 P2.0(又名 A8)输出,1 从 P2.1(又名 A9)输出,选择左侧 LED,数据显示在 P0 上。

FD00 的值有第 8 位高位和第 9 位低位。因此,写入地址FD00 会导致1 从 P2.0(又名 A8)输出,0 从 P2.1(又名 A9)输出,选择正确的 LED,然后段数据再次亮起P0.

特殊功能寄存器将设置所需的端口模式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-06
    • 1970-01-01
    相关资源
    最近更新 更多