51微控制器

2021-07-25 08:45:04 字數 1315 閱讀 8941

數碼管顯示幾乎是每次藍橋杯微控制器設計與開發組競賽的必考部分,相對於使用lcd1602作為顯示裝置,使用數碼管來顯示能夠更好的考察參賽選手的微控制器基本功,因為ct107d開發平台的設計使得數碼管的顯示不僅牽扯到數碼管顯示的 基本內容,還涉及到74hc573鎖存器,74hc02異或門,74hc138解碼器,以及中斷的知識,所以這是值得我們重視的乙個部分。

一、原理分析

根據ct107d的原理圖我們可以看出,數碼管顯示同樣涉及到74hc573、74hc138和74hc02,這與上一節中的led燈、繼電器和蜂鳴器的控制大同小異。如下圖,藍色標註為位選控制埠,由鎖存器u6來控制,需配置紅色標註的y6c來控制鎖存;黃色標註為段選控制埠,由鎖存器u7來控制,需配置紅色標註的y7c來控制鎖存。

而,控制y6c與y7c則需要通過74hc18和74hc02來進行控制,如下圖,y6c由y6和wr共同控制,74hc02是乙個4路2輸入或非門功能,wr為低電平,要使y6c為高,則y6必須為低電平,即74hc138解碼器的三個輸入端應該為100,即p2^7=1,p2^6=0,p2^5=0。又只需要操作p2口的這三位,不需要配置其他的五位,所以p2埠應該配置為:p2 = ((p2&0x1f)|0xc0)。同理,控制y7c時p2埠應該置為:p2 = ((p2&0x1f)|0xe0)。 

二、示例程式

這裡採用前後臺的程式設計思想,即使用定時器中斷來處理顯示部分,作為前台,而邏輯處理與資料採集部分等則在主程式流程中來完成,作為後台。在下面這段程式中,定時器每隔2ms中斷一次執行一次顯示程式,然後繼續執行主程式的任務,我們只要修改需要顯示的陣列即可實現顯示不同的數值,使顯示部分模組化,程式顯示部分只提供外部介面(陣列),不修改顯示函式,這樣不容易出錯,而且能夠使顯示更方便。

#include "reg52.h"

#define uchar unsigned char

#define uint unsigned int

uchar code tab = ; //共陽極數碼管段選編碼陣列

uchar dspbuf = ; //顯示資料的陣列

uchar dspcom = 0; //位選控制變數

void display() //顯示函式

}void main()

}void timer0() interrupt 1

//定時器0中斷服務函式

51微控制器

建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 1.供電電源 一般開發板上提供兩種供電方式,usb供電和專用電源供電。使用usb供電你只要用一根usb線將開發板usb電源介面與電腦的usb...

51微控制器

設計包含乙個矩陣式鍵盤電路和動態顯示電路的微控制器應用系統,通過根據按下不同的數字按鍵 0 9 在數碼管上顯示出自己學號的後8位。各位大神幫忙挑挑錯,或者問題太大了可以幫忙寫乙個新的麼!萬分感謝!好著急 a 8255 equ 7cffh a口 b 8255 equ 7dffh b口 c 8255 e...

51微控制器 51系列微控制器的開發模板

這個是微控制器開發的模板,下面給些注釋和思路,開發的時候其實是經常使用的,之前也不懂,參加藍橋杯之後學習到的,如果有時間和機會,會結合前輩的這些思路,再寫個stm32和嵌入式下的開發模板,這個很有利於專案的設計開發。說明 適用於stc15f2k60s2微控制器,其他的類似,只需要改動相關的定時器設定...