c - 微 Controller 89c52 - 7 段复用显示

标签 c microcontroller 8051

我有一个用 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' 变量的)。

8 segment multipexing display

最佳答案

我从来没有给这个野兽编程过,但是看一下你的代码、电路图和数据表表明 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。

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

关于c - 微 Controller 89c52 - 7 段复用显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37744940/

相关文章:

c - volatile 和 extern 有什么区别?

c - C-字符实现的错误检查输入

c - typedef 函数指针类型

c - PIC18F 中的定时器 0 中断

c - 8051 中外部中断的质数例程

c - 这个使用 Strassen 算法进行矩阵乘法的 C 代码有什么问题?

java - 从哪里开始为机器人编程?

java - 如何在android中以编程方式查找网络上其他WiFi设备的IP地址

c - 如何在 C 语言中为我的 8051、AT89C51CC03 板微 Controller 创建按钮软件复位?

8051微 Controller C的通信