2016-06-10 60 views
0

我有一個用C編寫的uController處理7段複用顯示的例子程序。微控制器89c52 - 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',但我不知道它是如何連接到'左'變量的)。

8 segment multipexing display

+0

您需要做的第一件事是檢查MCU上的寄存器映射,以查看哪些地址對應於哪個端口。您必須閱讀有關這些註冊如何工作的手冊。除了數據寄存器之外,還有數據方向寄存器等嗎?現在你繼續閱讀手冊和_you_告訴_us_這些寄存器是做什麼的。我想你可能不得不在博物館進行入室盜竊,以獲得這款MCU的手冊。 – Lundin

+0

sfr P0 = 0x80; sfr P2 = 0xA0; – br33f

回答

2

我從未編程這個獸但一看你的代碼,電路圖和數據表表明,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上輸出。

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