blue bridge cup 控制數碼管

2021-08-16 01:40:29 字數 1353 閱讀 5044

數碼管顯示幾乎是每次藍橋杯微控制器設計與開發組競賽的必考部分,相對於使用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中斷一次執行一次顯示程式,然後繼續執行主程式的任務,我們只要修改需要顯示的陣列即可實現顯示不同的數值,使顯示部分模組化,程式顯示部分只提供外部介面(陣列),不修改顯示函式,這樣不容易出錯,而且能夠使顯示更方便。

//j13跳線帽選擇io#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中斷服務函式

TCP流量控制,擁塞控制,差錯控制

流量控制 1 流量控制是管理兩端的流量,以免會產生傳送過塊導致收端溢位,或者因收端處理太快而浪費時間的狀態。用的是 滑動視窗,以位元組為單位 2 視窗有3種動作 展開 右邊向右 合攏 左邊向右 收縮 右邊向左 這三種動作受接收端的控制。合攏 表示已經收到相應位元組的確認了 發端視窗的大小取決於收端的...

TCP視窗控制 流量控制 擁塞控制

tcp以1個段為單位,每發乙個資料段進行一次ack確認應答的處理,這樣的傳輸方式由乙個缺點,就是包的往返時間越長通訊的效能越差。解決這個問題,提高速度,tcp引入了視窗控制這個概念。具體做法就是連續傳送上限為視窗大小的資料,然後再乙個乙個ack確認。即使在往返時間較長的情況下,它也能控制網路效能的下...

控制台輸出控制

by jingzhongrong 通過win32api提供的函式,可以對控制台程式的輸出進行控制,例如字型顏色 標題文字,以及各種屬性等等。主要使用到的函式以及宣告如下 handle getstdhandle dword nstdhandle 此函式用於獲取控制台輸出 輸入控制代碼。得到控制代碼之後...