色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

您好,歡迎來電子發燒友網! ,新用戶?[免費注冊]

您的位置:電子發燒友網>電子元器件>數碼管>

數碼管動態掃描顯示01234567程序(三種方案) - 全文

2018年01月29日 11:24 電子發燒友整理 作者: 用戶評論(0

數碼管由于價格便宜,使用簡單,在電器特別是家電領域(比如空調、熱水器和冰箱等)得到了極為廣泛的應用。在高校電子信息類專業單片機的教學過程中,數碼管動態顯示及實現方法是學生普遍反映較難掌握的內容。鑒于此,本文為大家帶來三個數碼管動態掃描顯示01234567程序介紹。

數碼管動態掃描顯示01234567程序一

原理圖

8個數碼管它的數據線并聯接到JP5, 位控制由8個PNP型三級管驅動后由JP8引出。

數碼管動態掃描顯示01234567程序(三種方案)

程序流程圖

數碼管動態掃描顯示01234567程序(三種方案)

匯編語言參考程序

ORG 0000H

AJMP MAIN

ORG 0080H

MAIN:

CLR P2.0 選中第一個數碼管

MOV P0,#28H 顯示0

LCALL DELAY 調用延時ORG

MOV P0,#0FFH 關顯示

SETB P2.0

CLR P2.1 選中第二個數碼管

MOV P0,#7EH 顯示1

LCALL DELAY

MOV P0,#0FFH

SETB P2.1

CLR P2.2 選中第三個數碼管

MOV P0,#0A2H 顯示2

LCALL DELAY

MOV P0,#0FFH

SETB P2.2

CLR P2.3 選中第四個數碼管

MOV P0,#62H 顯示3

LCALL DELAY

MOV P0,#0FFH

SETB P2.3

CLR P2.4 選中第五個數碼管

MOV P0,#74H 顯示4

LCALL DELAY

MOV P0,#0FFH

SETB P2.4

CLR P2.5 選中第六個數碼管

MOV P0,#61H 顯示5

LCALL DELAY

MOV P0,#0FFH

SETB P2.5

CLR P2.6 選中第七個數碼管

MOV P0,#21H 顯示6

LCALL DELAY

MOV P0,#0FFH

SETB P2.6

CLR P2.7 選中第八個數碼管

MOV P0,#7AH 顯示7

LCALL DELAY

SETB P2.7

MOV P0,#0FFH

AJMP MAIN 重新開始

DELAY: 延時子程序

MOV R7,#2

D1: MOV R6,#25

D2: DJNZ R6,D2

DJNZ R7,D1

RET

END

c語言參考程序

#include p=""> >

#define uchar unsigned char //宏定義,為方便編程

#define uint unsigned int

#define DIGI P0 //宏定義,將P1口定義為數碼管

#define SELECT P2 //宏定義,將P2定義為數碼管選擇口

uchar digivalue[]={0x28,0x7e,0x0a2,0x62,0x74,0x61,0x21,0x7a,0x20,0x60};

//顯示的數字數組,依次為0,1,。。,9

uchar select[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //選擇數碼管數組,依次選擇1,2,。。,8

void delay() //延遲函數,決定數碼管跳變的間隔時間

{

uchar ii=200; //若發現數碼管閃爍,調節這里即可

while(ii--);

}

char code SST516[3] _at_ 0x003b; //仿真器插入代碼

main() //主函數

{

uchar i=0;

while(1)

{

for(i=0;i<8;i++) //8個數碼管輪流顯示

{

SELECT=select[i]; //選擇第i個數碼管

IGI=digivalue[i]; //顯示i

delay();

}

}

數碼管動態掃描顯示01234567程序二——51單片機動態顯示共陽數碼管01234567

原理圖

數碼管動態掃描顯示01234567程序(三種方案)

c語言程序

程序如下:

#include< p=""> <>

#define uint unsigned int

#define uchar unsigned char

//共陽數碼管段碼表0-F

uchar code smg_dw[]={

0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,

0xc6,0xa1,0x86,0x8e};

//數碼管段位碼表0-F

//uchar code smg_wm[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //顯示01234567

uchar code smg_wm[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//顯示76543210

void delay_ms(uint); //延時子函數聲明

void main()

{

uchar i;

while(1)

{

for(i=0;i<8;i++)

{

P2=smg_wm[i];//選位碼

P0=smg_dw[i];//選段碼

delay_ms(5);//延時5ms

}

}

}

void delay_ms(uint z) //帶參數延時子函數

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

數碼管動態掃描顯示01234567程序三——CD4094數碼管動態顯示

動態顯示原理:原理上同一時刻只有一位LED是點亮的,但只要掃描的頻率足夠高(一般大于25Hz),由于人眼的視覺暫留特性,直觀上感覺卻是連續點亮的,這就是常說的動態掃描顯示。

動態掃描的頻率有一定的要求,頻率太低,LED將出現閃爍現象。如頻率太高,由于每個LED點亮的時間太短,LED的亮度太低,所以一般均取幾個ms左右為宜。

DG3000 動態顯示頭文件display_s.h

//----------------------------------------------------------

//程序作用:顯示頭文件display_s.h

//----------------------------------------------------------

#ifndef _display_

#define _display_

#include < p=""> <>

sbit SDA=P2^6; //定義顯示管腳

sbit CLK=P2^7;

unsigned char data display_bit;

unsigned char code

led[20]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf,0x89,0x8C};

//定義段碼

//延時程序

void delay(unsigned int k)

{ unsigned int i,j;

for(i=0;i

for(j=0;j<100;j++);

}

//數據傳輸

void send(unsigned char a)

{

unsigned char i;

for(i=0;i<8;i++)

{

if(_crol_(a,i)&0x80)

SDA=1;

else

SDA=0;

CLK=0;

CLK=1;

}

}

//顯示程序 8位LED數碼管掃描

void display(unsigned char display_buffer[8])

{

unsigned char i,k;

display_bit=0xfe;

for(i=0;i<8;i++)

{

k=led[display_buffer[i];

send(k);

P0=display_bit;

delay(0x01);

P0=0xff;

display_bit=_crol_(display_bit,1);

}

display_bit=0xfe;

8位數碼管動態顯示01234567(C51程序)

//----------------------------------------------------------

//程序作用:動態掃描顯示01234567

//----------------------------------------------------------

#include< p=""> <>

#include p=""> >

main()

{

unsigned char

a[8]={0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7};//顯示01234567

while(1)

{

display(a); //顯示數據

}

}

8.5 8位數碼管動態顯示01234567(匯編)

;----------------------------------------------------------

;程序作用:8位數碼管動態顯示01234567(匯編)

;----------------------------------------------------------

;定義變量

DBUF DATA 40H ;顯示緩沖區首址

SP_BT DATA 60H ;堆棧指針初值

; LED 位選

LED_CS1 BIT P0.0

LED_CS2 BIT P0.1

LED_CS3 BIT P0.2

LED_CS4 BIT P0.3

LED_CS5 BIT P0.4

LED_CS6 BIT P0.5

LED_CS7 BIT P0.6

LED_CS8 BIT P0.7

;4094接口

SDA_4094 BIT P2^6

CLK_4094 BIT P2^7

ORG 0000H

AJMP MAIN

;-------------------------------

ORG 0030H

MAIN: MOV SP,#60H

MOV R0,#0FFH;單元清零

RES1: MOV @R0,#0

DJNZ R0,RES1

MOV DBUF,#00H;顯示數據

MOV DBUF+1,#01H

MOV DBUF+2,#02H

MOV DBUF+3,#03H

MOV DBUF+4,#04H

MOV DBUF+5,#05H

MOV DBUF+6,#06H

MOV DBUF+7,#07H

SAMP1:

LCALL DIR ;調用顯示

SJMP SAMP1

;------------------------------------------------------

;顯示數據

;-------------------------------------------------------

DIR:

;顯示程序

MOV DPTR,#TABLE

MOV A,DBUF

MOVC A,@A+DPTR

ACALL DISP_da ;送段碼輸出

CLR LED_CS1 ;選通第1位數碼管

LCALL DELAY_4094

SETB LED_CS1 ;關閉顯示

MOV A,DBUF+1

MOVC A,@A+DPTR

//ANL A,#7FH;加小數點

ACALL DISP_da ;送段碼輸出

CLR LED_CS2;選通第1位數碼管

LCALL DELAY_4094

SETB LED_CS2;關閉顯示

MOV A,DBUF+2

MOVC A,@A+DPTR

ACALL DISP_da ;送段碼輸出

CLR LED_CS3 ;選通第1位數碼管

LCALL DELAY_4094

SETB LED_CS3 ;關閉顯示

MOV A,DBUF+3

MOVC A,@A+DPTR

ACALL DISP_da ;送段碼輸出

CLR LED_CS4;選通第1位數碼管

LCALL DELAY_4094

SETB LED_CS4;關閉顯示

MOV A,DBUF+4

MOVC A,@A+DPTR

ACALL DISP_da ;送段碼輸出

CLR LED_CS5 ;選通第1位數碼管

LCALL DELAY_4094

SETB LED_CS5 ;關閉顯示

MOV A,DBUF+5

MOVC A,@A+DPTR

// ANL A,#7FH;加小數點

ACALL DISP_da ;送段碼輸出

CLR LED_CS6;選通第1位數碼管

LCALL DELAY_4094

SETB LED_CS6;關閉顯示

MOV A,DBUF+6

MOVC A,@A+DPTR

ACALL DISP_da ;送段碼輸出

CLR LED_CS7 ;選通第1位數碼管

LCALL DELAY_4094

SETB LED_CS7 ;關閉顯示

MOV A,DBUF+7

MOVC A,@A+DPTR

ACALL DISP_da ;送段碼輸出

CLR LED_CS8;選通第1位數碼管

LCALL DELAY_4094

SETB LED_CS8;關閉顯示

;-------------------------------------

RET

TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;0~9

DB 88H,83H,0C6H,0A1H,86H,8EH ;A~F

;-------------------------延時子程序---------------------------------

DELAY_4094: MOV R4,#2 ;延時程序3,精確延時1000微秒

D_4094:MOV R5,#248

DJNZ R5,$

DJNZ R4,D_4094

RET

DISP_DA:

MOV R3,#08H

DUP: RLC A

MOV SDA_4094,C

CLR CLK_4094

SETB CLK_4094

DJNZ R3,DUP

RET

END

上一頁123全文

非常好我支持^.^

(7) 58.3%

不好我反對

(5) 41.7%

( 發表人:李建兵 )

      發表評論

      用戶評論
      評價:好評中評差評

      發表評論,獲取積分! 請遵守相關規定!

      ?
      主站蜘蛛池模板: 日本人添下面的全过程| 国产精品无码人妻在线| 97色伦图片7778久久| 在线精彩视频在线观看免费| 又紧又大又爽精品一区二区| 亚洲色欲国产AV精品综合| 亚洲人成网站在线播放| 亚洲欧美强伦一区二区另类| 亚洲偷偷自拍免费视频在线| 亚洲一日韩欧美中文字幕在线| 亚洲中文无码AV在线观看| 一本道高清到手机在线| 最近中文字幕完整版免费| 中国xxxxxz| 99热在线视频| 国产成人免费片在线视频观看| 国产精品一区二区20P| 国际老妇高清在线观看| 老熟女重囗味GRANNYBBW| 欧美69xxx| 特级毛片AAAAAA| 制服的微热| 国产成人在线网站| 久久久久久久久人体| 日本久久久久久久做爰片日本 | 国产青青草原| 老少配xxxxx欧美| 天天躁日日躁狠狠躁中文字幕老牛| 亚洲精品伊人久久久久| 9久久免费国产精品特黄 | 四虎视频最新视频在线观看| 夜夜精品视频一区二区| 成人在线视频免费观看| 黄 色 网 站 免 费 涩涩屋| 日本bbwhd| 伊人久久大香线蕉综合色啪| 富婆找黑人老外泻火在线播放| 精品人伦一区二区三区潘金莲| 欧美怡红院视频一区二区三区| 亚洲免费视频网站| 国产成人女人在线视频观看|