18luck网站

18luck网站電子設計 | 18luck网站Rss 2.0 會員中心 會員注冊
搜索: 您現在的位置: 18luck网站 >> 18luck平台 >> 單片機實例 >> 正文

51單片機數碼管顯示程序, 共陰數碼管顯示程序 數碼管原理(顯示)及編碼(段碼)

作者:佚名    文章來源:本站原創    點擊數:    更新時間:2023/5/18

#include <reg51.h> sbit dula=P2^6; sbit wela=P2^7; sbit P34=P3^4; char Tab [10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共陰極數碼管0到f的短編碼 unsigned char Dat[4]={0xf7,0xfb,0xfd,0xfe}; unsigned char Second=0; unsigned long i,c=0; void main() { char t; char b[2]; TMOD=0x01; TR0=1; TH0=(65536-46080)/256; TL0=(65536-46080)%256; ET0=1; //允許T0中斷 EA=1; //允許所有中斷 while(1) { b[3]=c/1000; //千 b[2]=c/100%10; //百 b[1]=c/10%10; //十 b[0]=c%10; //個(ge) for(t=0;t<2;t++){ //t是多少個(ge) 數碼管顯示 P0=Tab[b[t]]; dula=1;dula=0; P0=Dat[t]; wela=1;wela=0; for(i=0;i<2;i++); P0=0xFF; }}} /*定時器0中斷服務子程序*/ void time0() interrupt 1 { TH0= (65536-46080)/256; TL0= (65536-46080)%256; i++; if(i==1){ i=0; c++; if(c>=20) c=0; //計數到20秒自動回0 } }

 

數碼管原理(顯示)及編碼(段碼)

常用的7段數碼管由發光二極管(組合)構成,如下圖:


不帶小數點的共陰數碼管驅動 

分為(wei) :共陽極和共陰極(如上圖)

如果顯示“0”,共陽極為(wei) :abcdefg dp ,dp為(wei) 對應最高位,a為(wei) 對應最低位,編碼:11000000 ,16進製0xC0,共陰極正好相反:00111111,16進製0x3f。

以此類推。

共陽極數碼管的0 到f的段編碼:
0xc0,0xf9,0xa4,0xb0,//0~3
0x99,0x92,0x82,0xf8,//4~7
0x80,0x90,0x88,0x83,//8~b
0xc6,0xa1,0x86,0x8e //c~f

共陰極數碼管0到f的短編碼:
0x3f,0x06,0x5b,0x4f,    //0~3
0x66,0x6d,0x7d,0x07,    //4~7
0x7f,0x6f,0x77,0x7c,    //8~b
0x39,0x5e,0x79,0x71    //c~f

這段代碼是一個(ge) 基於(yu) 單片機的數字時鍾,具體(ti) 實現了以下功能:

  1. 通過四個共陰數碼管顯示當前時刻,每秒更新一次;
  2. 使用定時器0作為計時器,每隔50ms產生一次中斷,從而實現秒表計時功能;
  3. 將計時結果(單位為秒)以“xx.xx”形式顯示在第一個數碼管上,最多可以計時20秒。

下麵是對這段代碼的詳細分析:

首先,在 main 函數中,定義(yi) 了一些變量,包括:

  • Tab:數字 0~9 在數碼管上的顯示碼表;
  • Dat:數碼管控製位模式表;
  • Second:用於存儲當前時間的秒數,初始值為 0;
  • i:用於計時的計數器,初始值為 0;
  • c:用於秒表計時的計數器,初始值為 0。

接著,在 main 函數中,初始化定時器0,並開啟 T0 中斷和全局中斷使能。

隨後進入主循環,其中先通過將計數值 c 格式化為(wei) 四個(ge) 數字,存儲(chu) 在數組 b 中。循環遍曆數組 b,依次將每個(ge) 數字通過選擇相應的碼表值和數碼管控製位模式,發送給數碼管進行顯示。

在 T0 中斷服務子程序 time0 中,首先重新加載定時器初值,然後每隔一定周期執行一次計時操作:將計數值 i 加 1,如果 i 達到指定閾值(50ms),則將當前秒表計數值 c 加 1,並判斷是否超過20秒,如果超過則將其清零。

需要注意的是,此代碼僅(jin) 僅(jin) 是一個(ge) 簡單的實現,還存在一些問題。例如,由於(yu) 使用了延時函數,這會(hui) 影響程序的實時性。而且,由於(yu) 隻在主循環中更新時鍾顯示,如果程序在處理其他任務時比較繁忙,則可能導致時鍾顯示出現明顯的卡頓或錯誤。因此,在實際應用中需要對代碼進行進一步的優(you) 化和改進。

Tags:七段數碼管,51單片機  
責任編輯:admin
  • 上一篇文章:
  • 下一篇文章: 沒有了
  • 相關文章列表
    三菱PLC和數碼管鏈接和控製程序(初學者珍藏)plc控製數碼管顯示
    七段數碼管顯示原理研究_數碼管顯示0~9對應的段碼
    西門子PLC控製數碼管顯示,停車場PLC程序實例!七段編碼指令SEG,
    51單片機學習筆記直流電機驅動(PWM)C語言程序
    MCU-51單片機直流電機驅動(PWM)51單片機驅動直流電機
    先學51還是先學STM32?STM32和51單片機的區別
    51單片機和STM32單片機的結構有什麽不同
    51單片機、AVR單片機和PIC單片機的IO口操作
    LED數碼管的檢測,LED七段數碼管檢測
    關於51單片機IO引腳的驅動能力與上拉電阻
    51單片機“呼吸燈”程序
    51單片機入門之靜態數碼管電路設計
    單片機數碼管顯示原理
    AT89C51,51單片機1602液晶顯示時鍾程序
    4位單片機數字鍾 電子鍾製作
    51單片機4位數碼管電子鍾源程序
    AT89C2051電腦機箱風扇智能溫控儀,AT89C2051 Temperature contro
    51單片機溫控風扇(含程序+原理圖+仿真+PCB)
    51單片機蜂鳴器播放音樂代碼
    利用單片機AT89S51與ADC0809設計數字電壓表,Voltmeter
    單片機製作的純正弦波逆變器,12V Pure Sine Wave Inverter
    51單片機00-59秒計時器 0-59s Timer
    51單片機按鍵程序中 while(!key)的作用
    51係列單片機尋址方式
    認識單片機引腳【詳解】
    用51單片機設計的無線防盜報警器技術
    51單片機匯編模擬串口通信程序
    51單片機雙極型PWM 的軟件實現
    用51單片機製作的廚房定時器
    51單片機的液晶顯示溫度計程序
    請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
    1分 2分 3分 4分 5分

    還可以輸入 200 個字
    [ 查看全部 ] 網友評論
    關於我們 - 聯係我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
    返回頂部
    刷新頁麵
    下到頁底
    晶體管查詢