書名: 單片機(jī)C語言程序設(shè)計實訓(xùn)100例作者名: 彭偉編著本章字?jǐn)?shù): 739字更新時間: 2018-12-27 05:12:03
3.7 8只數(shù)碼管滾動顯示單個數(shù)字
本例運(yùn)行時,數(shù)字0~7單個顯示在8只集成式數(shù)碼管的相應(yīng)位置上。
本例電路如圖3-7所示。
程序設(shè)計調(diào)試與實訓(xùn):
本例使用了8只集成式7段共陽數(shù)碼管(SEG-MPX8-CA-BLUE,共陽為CA,共陰為CC),所有數(shù)碼管a引腳并聯(lián)在一起,b,c,d,e,f,g,dp也是分別并聯(lián)的,任何時候發(fā)送的段碼均會傳送到所有數(shù)碼管上,所有數(shù)碼管共陽極是獨立的,本例中各數(shù)碼管的共陽極分別與8只NPN三極管射極相連,程序運(yùn)行時,任一時刻僅允許一只數(shù)碼管的共陽極連接+5V,當(dāng)向P0端口發(fā)送段碼時,相應(yīng)數(shù)字只會顯示在某一只數(shù)碼管上,依次循環(huán)選中8只數(shù)碼管中的一只時,即可形成滾動顯示效果。

圖3-7 8只數(shù)碼管滾動顯示單個數(shù)字電路
要在數(shù)碼管上滾動顯示單個數(shù)字,任一時刻只需要選通一只數(shù)碼管,例如,要在最左邊數(shù)碼管上顯示數(shù)字,對于本例中的共陽數(shù)碼管,其位引腳1(即本例中該數(shù)碼管的共陽極)要設(shè)為1(+5V),由于使用的是NPN三極管,P2.0為1,即P2端口的值為00000001時,第1只三極管導(dǎo)通,對應(yīng)數(shù)碼管共陽極連接+5V,同理,如果需要在第3只數(shù)碼管上顯示數(shù)字,P2端口的值為00000100。
本例將位碼初值設(shè)為0x80,即10000000,for循環(huán)中執(zhí)行循環(huán)左移時,k值將為00000001,00000010,00000100,……,10000000,如此重復(fù)。每次段碼的發(fā)送均與位選通碼對應(yīng),形成單個數(shù)字的循環(huán)滾動顯示。
讀者可修改代碼,使單個數(shù)字從右向左滾動顯示。
源程序代碼:
//----------------------------------------------------------------- // 名稱: 8只數(shù)碼管滾動顯示單個數(shù)字 //----------------------------------------------------------------- // 說明: 數(shù)碼管從左到右依次滾動顯示0~7,程序通過每次僅循環(huán)選通一只數(shù)碼管 // 實現(xiàn)單只數(shù)碼管滾動顯示效果。 // //----------------------------------------------------------------- #include <reg51.h> #include <intrins.h> #define uchar unsigned char #define uint unsigned int //各數(shù)字的數(shù)碼管段碼 uchar code DSY_CODE[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //----------------------------------------------------------------- // 延時 //----------------------------------------------------------------- void DelayMS(uint x) { uchar i; while(x--) for(t = 0; i < 120; i++); } //----------------------------------------------------------------- // 主程序 //----------------------------------------------------------------- void main() { uchar i,k = 0x80; while(1) { for(i = 0; i < 8; i++) { P2 = 0xFF; //關(guān)閉顯示 k = _crol_(k, 1); P0 = DSY_CODE[i]; //發(fā)送數(shù)字段碼 P2 = k; //發(fā)送數(shù)碼管位碼,打開對應(yīng)的數(shù)碼管 DelayMS(300); } } }
- Objective-C Memory Management Essentials
- Mastering Python Scripting for System Administrators
- 深入理解Elasticsearch(原書第3版)
- C++新經(jīng)典
- 零基礎(chǔ)入門學(xué)習(xí)Python(第2版)
- 西門子S7-200 SMART PLC編程從入門到實踐
- Natural Language Processing with Java and LingPipe Cookbook
- 響應(yīng)式架構(gòu):消息模式Actor實現(xiàn)與Scala、Akka應(yīng)用集成
- LabVIEW虛擬儀器入門與測控應(yīng)用100例
- Mastering AWS Security
- Getting Started with Python
- 交互設(shè)計師成長手冊:從零開始學(xué)交互
- JavaEE架構(gòu)與程序設(shè)計
- 優(yōu)化驅(qū)動的設(shè)計方法
- Swift 2 Blueprints