① 大家幫忙啊:C語言編寫七段數碼管顯示0到16數字的程序
外中斷0接一按鍵碧正,模擬檢測上層乘客。
#include<reg51.h>
#defineucharunsignedchar
#defineuintunsignedint悔盯悔
sbitP2_0=P2^0;
sbitP2_1=P2^1;
uchara=16,time;
bitflag0,flag1;
ucharcodetab[]={
0x3F,/*0*/
0x06,/*1*/
0x5B,/*2*/
0x4F,/*3*/
0x66,/*4*/
0x6D,/*5*/
0x7D,/*6*/
0x07,/*7*/
0x7F,/*8*/
0x6F,/*9*/
};
voiddelay_ms(uintms)
{
uchari;
while(ms--)
for(i=0;i<123;i++);
}
voidINTinit()
{
TMOD=0x01;
EA=1;
EX0=1;
IT0=1;
ET0=1;
TR0=1;
TH0=0x3c;
TL0=0xb0;
}
voiddisp()
{
P0=tab[a/10];
P2_0=0;
delay_ms(3);
P2_0=1;
P0=tab[a%10];
P2_1=0;
delay_ms(3);
P2_1=1;
}
voidmain()
{
INTinit();
while(1)
{
if(a>4)
flag0=1;
else
flag0=0;
if(!flag0)
disp();
else
則悔 {
if(flag1)
disp();
}
}
}
voidEX0INT()interrupt0
{
a--;
if(a==0)
EA=0;
}
voidT0INT()interrupt1
{
TH0=0x3c;
TL0=0xb0;
time++;
if(time==5)
{
time=0;
flag1=!flag1;
}
}
② 關於7段數碼管顯示問題
7段數碼管其實是八段,有時小數點沒有使用,所以常說7段,
顯示原理是這樣的
數碼管首先從上到右,到下到左,到中間,最後到小數點分別標記為abcdefgdp八段其中小數點位DP為最高位,a段為最低位,要想顯示什麼字告祥纖符只需要使對應的段發光即可,一般的習慣是單片機的埠的最低位接a段,次低位接b段,...最高位(如p0.7)接dp,顯示碼宴歷從高往低表示為為dpgfedcba
如要顯示「1」,只需要將b、c段點亮即可,若是共陰極,片選是低電平選中,某一段輸出高電平點亮,即顯襪仿示碼為00000110即0x06,其他的依照該方法類推
你給的碼表為共陰極的。
共陽極的恰巧相反!
數碼管的示意圖如下圖所示
③ 三菱plc要在七段數碼管顯示10應該怎麼寫程序
比如說把把10傳送到D0中,再用解碼指令把D0中數據解碼就可以,而且還要注意七段數碼管的接線正確,希望能對你有所幫助。
④ 用結構方式描述的七段數碼管的verilog代碼怎麼寫
mole SEG7_LUT (
input [3:0] iDIG,
output reg [6:0] oSEG
);
always@(iDIG)
begin
case(iDIG)
4'h1: oSEG = 7'b1111001;
4'h2: oSEG = 7'b0100100;
4'h3: oSEG = 7'搏姿b0110000;
4'h4: oSEG = 7'b0011001;
4'h5: oSEG = 7'b0010010;
4'h6: oSEG = 7'b0000010;
4'h7: oSEG = 7'扮銀鍵b1111000;
4'h8: oSEG = 7'b0000000;
4'h9: oSEG = 7'b0011000;
4'ha: oSEG = 7'b0001000;
4'hb: oSEG = 7'b0000011;
4'hc: oSEG = 7'b1000110;
4'hd: oSEG = 7'b0100001;
4'he: oSEG = 7'b0000110;
4'hf: oSEG = 7'b0001110;
default: oSEG = 7'b1000000;
endcase
end
endmole
//輸入型號IDIG是你想顯示的數,用4位二進制數表示
//oSEG輸出信廳巧號,對應數碼管的7個段
⑤ 七段數碼管顯示10個數字
CD4511是一個用於驅動共陰極 LED (數碼管)顯示器的 BCD 碼—七段碼解碼器,特點如下:具有BCD轉換、消隱和鎖存控制、七段解碼及驅動功能的CMOS電路能提供較大的拉電流。可直接驅動LED顯示器。CD4511 是一片 CMOS BCD—鎖存/7 段解碼/驅動器,引腳排列如圖 2 所示。其中a b c d 為 BCD 碼輸入,a為最低位。LT為燈測試端,加高電平時,顯示器正常顯示,加低電平時,顯示器一直顯示數碼「8」,各筆段都被點亮,以檢查顯示器是否有故障。BI為消隱功能端,低電平時使所有筆段均消隱,正常顯示時, B1端應加高電平。另外 CD4511有拒絕瞎鋒偽碼的特點,當輸入數據越過十進制數9(1001)時,顯示字形也自行消隱。LE是鎖存控制端,高電平時鎖存,低電平時傳輸數據。a~g是 7 段輸出,可驅動共陰LED數碼管。另外,CD4511顯示數「6」時,a段消隱;顯示數「9」時,d段消隱,所以顯示6、9這兩個數時,字形不太美觀 圖3是 CD4511和CD4518配合而成一位計數顯示電路,若要多位計數,只需將計數器級聯,每級輸出接一隻 CD4511 和 LED 數碼管即可。所謂共陰 LED 數碼管是指 7 段 LED 的陰極是連在一起的,在應用中應接地。限流電阻要根據電源電壓來選取,電源電壓5V時可使用300Ω的限流電阻。用CD4511實現LED與單片機的並行介面方法如下圖: (略)CD4511 引 腳 圖其功能介紹如下: BI:4腳是消隱輸入控制端,當BI=0 時,不管其它輸入端狀態如何,七段數碼管均處於熄滅(消隱)狀衡神衫態,不顯示數字。 LT:3腳是測試輸入端,當BI=1,LT=0 時,解碼輸出全為1,不管輸入 DCBA 狀態如何,七段均發亮,顯示「8」。它主要用來檢測數碼管是否損壞。 LE:鎖定控制端,當LE=0時,允許解碼輸出。 LE=1時解碼器是鎖定保持狀態,解碼器輸出被保持在LE=0時的數值。 A1、A2、A3、A4、為8421BCD碼輸入端。 a、b、c、d、e、f、g:為解碼輸出端,輸出為高電咐腔平1有效。 CD4511的內部有上拉電阻,在輸入端與數碼管筆段端接上限流電阻就可工作1. CD4511的引腳 CD4511具有鎖存、解碼、消隱功能,通常以反相器作輸出級,通常用以驅動LED。其引腳圖如3-2所示。 各引腳的名稱:其中7、1、2、6分別表示A、B、C、D;5、4、3分別表示LE、BI、LT;13、12、11、10、9、15、14分別表示 a、b、c、d、e、f、g。左邊的引腳表示輸入,右邊表示輸出,還有兩個引腳8、16分別表示的是VDD、VSS。 2. CD4511的工作原理 CD4511的工作真值表如表3-2 鎖存功能 解碼器的鎖存電路由傳輸門和反相器組成,傳輸門的導通或截止由控制端LE的電平狀態。 當LE為「0」電平導通,TG2截止;當LE為「1」電平時,TG1截止,TG2導通,此時有鎖存作用。如圖3-3(3)解碼 CD4511解碼用兩級或非門擔任,為了簡化線路,先用二輸入端與非門對輸入數 據B、C進行組合,得出、、、四項,然後將輸入的數據A、D一起用或 非門解碼。 (4)消隱 BI為消隱功能端,該端施加某一電平後,迫使B端輸出為低電平,字形消隱。消隱控制電路如圖3-4所示。 消隱輸出J的電平為 J= =(C+B)D+BI如不考慮消隱BI項,便得J=(B+C)D據上式,當輸入BCD代碼從1010---1111時,J端都為「1」電平,從而使顯示器中的字形消隱。輸 入 輸 出 LEBILIDCBAabcdefg顯示 XX0XXXX11111118X01XXXX0000000消隱 011110011901110100000000消隱 01110110000000消隱 01111000000000消隱 01111010000000消隱 01111100000000消隱 0111111000000消隱 111XXXX鎖 存 鎖存 表3-2 CD 4511的真值表 8421 BCD 碼對應的顯示見下圖 :選用共陰極數碼管,對於 CD4511 ,它與數碼管的基本連接方式如下圖 :
⑥ 共陰極7段數碼管顯示C程序
單片機7段數碼管動態顯示程序代碼及其說明如下:
#include <reg51.h>
#include <intrins.h>
#include<math.h>
unsigned char data dis_digit; //dis_digit---位選通值, 傳送到P2口用於選通當
//前數碼管的數值, 如等於0xfe時,選通P2.0口數碼管
unsigned char code dis_code[11]={0xc0,0xf9,0xa4,0xb0, // 0, 1, 2, 3
(6)七段數碼管0到10源碼擴展閱讀:
驅動方式:
直流驅動。
是指每個數碼管的每一個段碼都由一個單片機的I/O埠進行驅動,或者豎羨螞使用如BCD碼二-十進制解碼器解碼進行驅動。優點是編程簡單,顯示亮度高,缺點是佔用I/O埠多。
動態顯示驅動:
是將所有數碼管通過分時輪流控制各個數碼管的的COM端,就使各個數碼管輪流受控顯示。將所有數碼管的8個顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個數碼管的公共極COM增加位選通控制電路,位選通由各自獨立的I/O線控制。
當單片機輸出字形碼時,所有數碼管都接收到相同的字形碼,但究竟是那個數碼管會顯示出字形,取決於單片機對位選通COM端電路的控制,所以我們只要將需要余埋顯示的數碼管的選通控制打開,該位就顯示出字形,沒派空有選通的數碼管就不會亮。
⑦ 求單片機實驗七段數碼管顯示實驗程序
/* ch03-3-4.c - 七段LED數碼管實驗程序 */
//==聲明區=================================================
#include<reg51.h> //定義8051寄存器的頭文件,P2-17~19
#define SEG P0 //定義七段LED數碼管接至Port 0
/*聲明七段LED數碼管驅動信號數組(共陽)*/
char code TAB[10]={0xc0,0xf9,0xa4,0xb0,0x99, //數字0-4
0x92,0x83,0xf8,0x80,0x98}; //數字5-9
void delay(int); //聲明延遲函數
//==主程序==========================================
main() //主程序開始
{ unsigned char i; //聲明無符號變數i
while(1) //無窮循環,程序一直跑
for(i=0;i<10;i++) //顯示0-9,共10次
{ SEG=TAB[i]; //顯示數字
delay(500); //延遲500×1m=0.5秒
} //for循環結束
} //主程序結束
//==子程序==========================================
/* 延遲函數,延遲約x×1ms */
void delay (int x) //延遲函數開始
{ int i,j; //聲明整形變數i,j
for (i=0;i<x;i++) //計數x次,延遲x×1ms
for (j=0;j<160;j++); //計數120次,延遲1ms
} //延遲函數結束
⑧ 單片機七段數碼管循環顯示0-FC語言程序
這要看你的數碼管是共陰還是共陽的哈。還有和單片機IO口的鏈接情況缺螞稿。然後對應IO口將相應的''0-F編碼。
如下面是我的開發板的一位數碼管的顯示程序,你在上面做些修改就是了哈!
#include <reg51.h>
#include <intrins.h>
#define NOP() _nop_() /* 定義空指令 */
void delay(unsigned int i); //函數聲名
// 此表為 LED 的字模
unsigned char code LED7Code[] = {~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F,~0x77,~0x7C,~0x39,~0x5E,~0x79,~0x71};
main()
{
unsigned int LedNumVal=1 ,C ; //定伏孝義變數
while(1)
{
if (++C>物純= 300)
{ LedNumVal++ ; //每隔300個掃描周期加一次
C =0; //每隔300個掃描清零
}
// 將字模送到P0口顯示
P0 = LED7Code[LedNumVal%10]&0x7f; //LED7 0x7f為小數點 共陰和共陽此處也是不一樣;
delay(150); //調用延時程序
}
}
/*****************************************************************
* *
* 延時程序 *
* *
*****************************************************************/
void delay(unsigned int i)
{
char j;
for(i; i > 0; i--)
for(j = 200; j > 0; j--);
}
⑨ 常見七段數碼管的真值表怎麼記憶
數碼管的段碼指的是數碼管在顯示不同的數字時,其8個陽極(共陰數碼管)或8個陰極(共陽數碼管)的電平高低對應蠢余的二進制數據顯示不同的數字該代碼是不同的。例如,共陰數碼管要顯示虧檔笑數字8不帶小數點,其各個陽極的電平高低用二進製表示為01111111,化成十六進制為0x7f,最高位的0代表小數點那銷含個陽極是低電平,若是共陽數碼管則代碼剛好相反,二進制為10000000。
⑩ 共陰七段數碼管0~9代碼怎麼設置的,設置原理是什麼
共陰七段數碼管的0~9代碼設置方法如下:數碼管位數(ABCDEFG) 數碼管代爛鏈碼0 11111101 01100002 11011013 11110014 01100115 10110116 10111117 11100008 11111119 1110011共陰七段數碼管的原理是,在共陰七段數碼管中,各個數碼管的陽極(即數碼管的LED燈的正極)都是獨立的,而七段數碼管的陰極(即數碼管的LED燈的負極)是共用的。因此,當數碼管飢逗孫需要顯示某個數字時,需要先將該數字的代碼輸出到相應的七段數碼管的陰極上,然後再通過將相應的陽極置高電平,來點亮該數字在數碼管上的顯示。通過控制不同數碼管的陽極顯示不同的數字,就可以在共陰七段數碼管上實現同時顯示多個數字的功能指穗。