微控制器 89c52 - 7 段复用显示
Microcontroller 89c52 - 7 segment multiplexing display
我有一个用 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' 但我不知道它是如何连接到 'left' 变量的) .
我从来没有给这个野兽编程过,但是看看你的代码、电路图和数据 sheet 表明 LED 对被寻址为外部存储器:8 个数据位(否则端口 0)被连接到段数据引脚和 2 个地址线(否则端口 2)连接到数字 select 引脚。
值 FE00
的第 8 位为低位,第 9 位为高位。因此,写入地址 FE00
会导致 0
从 P2.0(又名 A8)输出,1
从 P2.1(又名 A9)输出,selecting左侧 LED,数据显示在 P0 上。
值FD00
的第8位为高位,第9位为低位。因此,写入地址 FD00
会导致 1
从 P2.0(又名 A8)输出,0
从 P2.1(又名 A9)输出,selecting正确的 LED,段数据再次出现在 P0 上。
特殊功能寄存器将设置所需的端口模式。
我有一个用 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' 但我不知道它是如何连接到 'left' 变量的) .
我从来没有给这个野兽编程过,但是看看你的代码、电路图和数据 sheet 表明 LED 对被寻址为外部存储器:8 个数据位(否则端口 0)被连接到段数据引脚和 2 个地址线(否则端口 2)连接到数字 select 引脚。
值 FE00
的第 8 位为低位,第 9 位为高位。因此,写入地址 FE00
会导致 0
从 P2.0(又名 A8)输出,1
从 P2.1(又名 A9)输出,selecting左侧 LED,数据显示在 P0 上。
值FD00
的第8位为高位,第9位为低位。因此,写入地址 FD00
会导致 1
从 P2.0(又名 A8)输出,0
从 P2.1(又名 A9)输出,selecting正确的 LED,段数据再次出现在 P0 上。
特殊功能寄存器将设置所需的端口模式。