單片機實現7段數碼管顯示

2020-12-07 電子產品世界
這個是我學習單片機過程中所做的第一個實驗,我們上課實驗用的是彙編的程序,但是個人覺得還是用c語實現時更為簡潔!這個例子可以用proteus進行仿真.

本文引用地址:http://www.eepw.com.cn/article/201611/315974.htm

單片機選擇常用的AT89C52,用與控制7段數碼管的顯示,共有4位7段共陰極數碼管,用於顯示數據.另外所需的器件如下:

1、74ls273地址鎖存器,用於字位鎖存器和字型鎖存器,上升沿鎖存。

2、74ls02雙輸入或非門,與74ls04、單片機的讀寫信號一起選中鎖存器74ls273,決定數碼管的欄位和字位的顯示內容。

3、74ls04是6輸入非門,對單片機輸出的片選信號取反,和74ls02一起決定鎖存器的片選。

4、7407集電極開路的6正相高壓驅動器,提供數碼觀字型顯示的驅動電流。

5、75452雙與非門外圍驅動器,用與字位驅動,有200mA的輸出電流能力。

試驗流程圖:

實驗電路圖:

試驗程序代碼:

/* 4位8段數碼管分別動態顯示「1234」,*/

#include "7LEDShow.h"

void main()

{

DIGPORT = 0;//關閉顯示

TMOD = 0x01;// T0工作方式1

/* 2ms定時設置*/

time0_tmp = 65536-time0*fosc/12;

TH0 = (time0_tmp/256);

TL0 = (time0_tmp%256);

TR0 = 1;

ET0 = 1;

EA = 1;

digbit = 0x01;//從第一位數碼管開始

wordbuf[3] = 4;

wordbuf[2] = 3;

wordbuf[1] = 2;

wordbuf[0] = 1;

while(1);

}

/*定時器0中斷服務子程序,定時動態掃描顯示*/

void time0_int(void) interrupt 1

{

TH0 = (time0_tmp/256);

TL0 = (time0_tmp%256);

display();

}

/*根據共陰極字型編碼表獲取0~9,A~B字型代碼*/

uchar getcode(uchar i)

{

uchar p;

switch (i)

{

case 0:p=0x3f; break;/* 0 */

case 1:p=0x06; break;/* 1 */

case 2:p=0x5B; break;/* 2 */

case 3:p=0x4F; break;/* 3 */

case 4:p=0x66; break;/* 4 */

case 5:p=0x6D; break;/* 5 */

case 6:p=0x7D; break;/* 6 */

case 7:p=0x07; break;/* 7 */

case 8:p=0x7F; break;/* 8 */

case 9:p=0x67; break;/* 9 */

case 10: p=0x77; break;/* A */

case 11: p=0x7C; break;/* B */

case 12: p=0x39; break;/* C */

case 13: p=0x5E; break;/* D */

case 14: p=0x79; break;/* E */

case 15: p=0x71; break;/* F */

default:break;

}

return(p);

}

/*顯示函數*/

void display(void)

{

uchar i;

switch (digbit)

{

case 1: i=0;break;

case 2: i=1;break;

case 4: i=2;break;

case 8: i=3;break;

default:break;

}

DIGPORT = 0;//關閉顯示

WORDPORT = getcode(wordbuf[i]);//送字型碼

DIGPORT = digbit;//送字位碼

if (digbit<0x08)

digbit = digbit*2;

else

digbit = 0x01;

}

//7LEDShow.h程序

#ifndef _7LEDSHOW_H//防止7LEDShow.h被重複引用

#define _7LEDSHOW_H

#include //引用標準庫的頭文件

#include

#include

#include

#define uchar unsigned char

#define uint unsigned int

#define DIGPORTXBYTE[0x0200] //定義字位口

#define WORDPORTXBYTE[0x0100] //定義字型口

#define fosc 11.0592//晶振頻率

#define time0 2000//定時2000us

uchar digbit;//字位

uchar wordbuf[4];//字型碼緩衝區

uint idata time0_tmp;//臨時變量,用於計算定時

uchar getcode(uchar i);//根據共陰極字型編碼表獲取字型代碼函數

void display(void);//顯示函數

#endif

相關焦點

  • 8段數碼管引腳圖,8段數碼管動態顯示詳解
    打開APP 8段數碼管引腳圖,8段數碼管動態顯示詳解 發表於 2016-09-13 18:12:25   數碼管按段數可分為七段數碼管和8段數碼管,八段數碼管比七段數碼管多一個發光二極體單元,也就是多一個小數點(DP)這個小數點可以更精確的表示數碼管想要顯示的內容;按能顯示多少個(8)可分為1位、2位、3位、4位、5位、6位、7位等數碼管。   按發光二極體單元連接方式可分為共陽極數碼管和共陰極數碼管。
  • 0.36寸3位7段數碼管
    0.36寸3位7段數碼管   數碼管動態顯示接口是單片機中應用為廣泛的一種顯示方式之一,動態驅動是將所有數碼管的8個顯示筆劃「a,b,c,d,e,f,g,dp」的同名端連在一起,另外為每個數碼管的公共極COM增加位選通控制電路,位選通由各自獨立的I/O線控制,當單片機輸出字形碼時,所有數碼管都接收到相同的字形碼,但究竟是哪個數碼管會顯示出字形,取決於單片機對位選通COM端電路的控制,
  • 2.3寸1位7段數碼管公司
    2.3寸1位7段數碼管公司              if (t0==60)              { {{if data.vipType==4}} {{/if}} 2、數碼管動態顯示接口是單片機中應用為廣泛的一種顯示方式之一,動態驅動是將所有數碼管的8個顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個數碼管的公共極COM增加位選通控制電路,位選通由各自獨立的I/O線控制,當單片機輸出字形碼時,所有數碼管都接收到相同的字形碼,但究竟是那個數碼管會顯示出字形,取決於單片機對位選通COM
  • 服務詳解:0.56寸6位7段數碼管公司
    0.56寸6位7段數碼管公司因為沒有圖,只能先猜測不知道74LS48到數碼管有沒有加驅動然輸出電流可能有些不足。加之數碼管各段一致性問題。可能會導致些顯示異常。另外前面也要考慮一些時序問題和線路排布上的幹擾問題。可以用邏輯分析儀抓取74LS60的輸出波形,74LS48的輸入和輸出波形進行分析,看數據上(每根線的邏輯)有沒有異常。
  • 數碼管的工作原理與編碼顯示接口分析
    數碼管的一種是半導體發光器件,數碼管的工作原理是通過單片機的I/O埠進行驅動數碼管的各個段碼,點亮不同的段碼從而形成字符顯示出我們要的數字。絕大多數熱水器用的都是數碼管,其他家電也用液晶屏與螢光屏。  數碼管也稱LED數碼管,不同行業人士對數碼管的稱呼不一樣,其實都是同樣的產品。數碼管按段數可分為七段數碼管和八段數碼管,八段數碼管比七段數碼管多一個發光二極體單元,也就是多一個小數點(DP)這個小數點可以更精確的表示數碼管想要顯示的內容;按能顯示多少個(8)可分為1位、2位、3位、4位、5位、6位、7位等數碼管。
  • 單個七段LED數碼管的接口2種連接方法
    單個七段LED數碼管的接口連接方法>本文引用地址:http://www.eepw.com.cn/article/168160.htm單個七段LED數碼管與單片機的連接方法有2種:1、軟解碼連接法2、硬解碼連接法
  • BCD七段數碼管顯示解碼器電路
    BCD七段數碼管顯示解碼器電路發光二極體(LED)由特殊的半導體材料砷化鎵、 磷砷化鎵等製成,可以單獨使用,也可以組裝成分段式或點陣式LED顯示器件(半導體顯示器)。分段式顯示器(LED數碼管)由7條線段圍成8型,每一段包含一個發光二極體。外加正向電壓時二極體導通,發出清晰的光,有紅、黃、綠等色。只要按規律控制各發光段的亮、滅,就可以顯示各種字形或符號。 圖4 - 17(a)是共陰式LED數碼管的原理圖,圖4-17(b)是其表示符號。
  • 數碼管顯示電壓電路圖大全(六款數碼管顯示電壓電路原理圖詳解)
    數碼管顯示電壓電路圖大全(六款數碼管顯示電壓電路原理圖詳解) 電壓 數碼管顯示電壓電路圖
  • 數碼管的基礎知識
    我們都知道發光二極體常常用於各種電子設備中充當指示燈作用,除發光二極體外,常見用於顯示的器件還有數碼管,比如電子時鐘中的顯示時間的就是數碼管,萬用表中的顯示屏也是利用了數碼管。其實數碼管的本質就是發光二極體的組合使用,最常見的就是七段數碼管和八段數碼管了,七段數碼管就是由7個長條形的發光二極體組成,八段數碼管就比七段數碼管多了一個點,比如上圖中就是一個兩位的八段數碼管,它只比七段數碼管多了右下角的一個點。
  • STC89C52單片機對數字溫度計顯示系統的設計
    硬體電路主要包括STC89C52單片機最小系統,測溫電路、實時時鐘電路、數碼管顯示電路以及通訊模塊電路等。系統程序主要包括主程序,讀出溫度子程序,計算溫度子程序、數碼管顯示程序以及按鍵控制程序等。 一、溫度顯示系統總設計原理 系統設計總框架如圖1.
  • 數碼管與ARDUINO 開發板的連接使用
    數碼管簡介74HC595同數據相關的引腳可以分為三類:DS:串行數據輸入,接單片機的某個數字I/O引腳。Q0~Q7:8位並行數據輸出,可以直接控制8個LED,或者是七段數碼管的8個引腳。Q7′:級聯輸出端,與下一個74HC595的DS相連,實現多個晶片之間的級聯。
  • 0.52寸4位14段數碼管廠家
    0.52寸4位14段數碼管廠家  (3)LED數碼管缺筆段對於A/D轉換器為7107的儀表,可檢查7107用於顯示輸出的各對應輸出腳與Ⅴ+(正電源腳)閘的電壓(即用萬用表的黑表筆接所對應的輸出腳,紅表筆接電源供電正端電壓點),若始終為幾毫伏,則表明7107壞,應予以更換;如有4V 左右(數碼管管腳端為負),LED卻不亮,則表時7107輸出正常,接著可檢查數碼管的各自對應管腳與Ⅴ+之間的電壓
  • 一種基於AT89C51單片機的十進位計算器系統
    硬體方面從功能考慮,首先選擇內部存儲資源豐富的AT89C51單片機,輸入採用4×4矩陣鍵盤。顯示採用4位7段共陽極LED動態顯示。軟體方面從分析計算器功能、流程圖設計,再到程序的編寫進行系統設計。本文引用地址:http://www.eepw.com.cn/article/262335.htm  引言  本系統採用AT89C51單片機作為控制器,用來實現實現四位數的「+」,「-」,「*」,「/」運算,運算結果通過數碼管顯示,並具有有清零功能。
  • 0.36寸6位led數碼管哪家口碑好
    將3V乾電池的負極引線(兩根引線均可接上小號鱷魚夾)接在被測數碼管的公共陰極上,正極引線依次移動接觸各筆段電極(a~h腳)。當正極引線接觸到某一筆段電極時,對應筆段就發光顯示。用這種方法可以快速測出數碼管是否有斷筆(某一筆段不能顯示)或連筆(某些筆段連在一起),並且可相對比較出不同的筆段發光強弱是否一致。若檢測共陽極數碼管,只需將電池的正、負極引線對調一下,方法同上。
  • 基於單片機的軌道壓力測試儀的實現
    系統的組成及其工作原理      本系統以PIC16F876A單片機為核心,通過軟體編程實現其對數據處理、系統實時控制。系統框圖如圖1所示,由主控MCU模塊、A/D採樣模塊、電源管理模塊、顯示模塊和傳感器組成。
  • LabVIEW+Arduino之四位數碼管顯示
    微信搜索【沛華測控】訂閱我們Shania本來想更一期「一位數碼管倒計時」的課程,後面覺得不是很有意思,於是換成四位數碼管,想做一個「數碼管顯示電壓值」的效果。請看視頻實物接線圖這裡我們用到一個電位器跟一個12引腳的共陽極四位數碼管,數碼管的引腳圖如下:單個數碼管的每一段用a、b、c、d、d、e、f、dp標誌,對應Arduino的0-7號數字引腳;公共端1-4對應8-11號數字引腳
  • 共陽數碼管連接體會
    當P1.0,P1.1,P1.2,P1.3,分別為0(低電平)時 對應的共陽引腳被供電,數碼管對應的位會顯示。3.數碼管的8個欄位引腳 abcdef 每個引腳串聯一個200歐姆的電阻,直接接到P0口的8個I/O口,當P0口引腳為0(低電平)相應欄位發光,前提是該位數碼管對應當共陽口要供電,就是P1.0,P1.1,P1.2,P1.3 其中一個要為0,若P1.0,P1.1,P1.2,P1.3全為0 ,四個數碼管顯示相同的欄位,其中一個為0,數碼管其中一個現實P0口輸出的欄位。
  • 自學單片機第四十一篇:什麼是數碼管
    在日常的顯示中,我看到的最多的是數碼管,也就是數字顯示的七段數碼管。萬年曆,溫度計,工業顯示屏等等。主要是原理簡單,顯示也比較豐富,可以完全滿足日常需求,節能。數碼管:數欄位碼顯示管。常見的是七段的,有的帶上小數點,時間顯示的會帶上秒表閃爍分隔。也有些複雜的顯示,會用米字型的,使得顯示內容更豐富。儘管顏色不一,外形各異,但原理是一樣的,內部都是一個一個的小LED並聯而成,通過控制單個小燈,實現總體中的部分亮滅。
  • 通過51單片機定時器/計數器實現精確延時
    /mcu/article_2017122937023.html 推薦閱讀 51單片機學習實踐:用NTC電阻測溫並顯示在TM1637數碼管 STC15單片機實驗名稱:使用NTC電阻測量溫度實驗內容:
  • 藍橋杯單片機-鎖存器
    藍橋杯單片機需要使用用鎖存器來充分利用單片機接口資源。下面我來講解藍橋杯單片機如何打開相對應的鎖存器來控制對應功能。單片機應用鎖存器的功能有LED燈控制,繼電器控制,蜂鳴器控制,數碼管顯示控制。由上述公式得:Y4C要想得到高電平,激活74HC02鎖存器,Y4就必須為低電平,Y4又是通過74HC138解碼器實現的,74HC138解碼器原理圖如下:138解碼器通過P27~P25三個輸入埠的電平高低來控制Y0 ~Y7的輸出,當Y0 ~Y7任一個輸出為低電平時,才為有效輸出。