找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11743|回復: 0
打印 上一主題 下一主題
收起左側

單片機制作—兩位數(shù)碼管顯示 c語言 匯編程序+電路圖

[復制鏈接]
跳轉到指定樓層
樓主
ID:85192 發(fā)表于 2015-7-10 02:41 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 lianlian 于 2015-7-10 02:42 編輯

兩位數(shù)碼管 第一位顯示段名,第二位顯示段


兩位數(shù)碼管第一位顯示段名(A、B、C、D、E、F、G 及H),第二位顯示段,其中,段閃爍。按鍵按下切換下一段的的段名和段顯示。

程序清單(匯編):

;2011 04 05 D:\DPJ\數(shù)碼管段顯\數(shù)碼管段顯2.asm
S0 BIT P3.7
ORG 00H
AJMP MAIN
ORG 0BH
AJMP T0INT
ORG 30H
MAIN:
MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
SETB EA
SETB ET0
SETB TR0
MOV R0,#10
MOV DPTR,#TAB

MAIN1:
ACALL DISP
JB S0,$-2
ACALL DISP
JNB S0,$-2
INC R1
INC R1
CJNE R1,#16,MAIN1
MOV R1,#0
AJMP  MAIN1

DISP:
MOV A,R1
MOVC A,@A+DPTR
MOV P2,A
CLR P3.0
ACALL D1MS
SETB P3.0
INC R1
JNB F0,RT
CLR F0
MOV A,R1
MOVC A,@A+DPTR
MOV P2,A
CLR P3.1
ACALL D1MS
SETB P3.1
RT:

MOV A,R1
DEC A
MOV R1,A
RET

T0INT:
MOV TH0,#3CH
MOV TL0,#0B0H
DJNZ R0,RTI
MOV R0,#10
SETB F0
RTI:
RETI

D1MS:
MOV R7,#25
MOV R6,#20
DJNZ R6,$
DJNZ R7,$-4
RET

TAB:
        
DB      077H;A
DB      001H;A
DB      07CH;b
DB      002H;b
DB      039H;C
DB      004H;C
DB      05EH;d
DB      008H;d
DB      079H;E
DB      010H;E
DB      071H;F
DB      020H;F
DB      06FH;g
DB      040H;g
DB      076H;H
DB      080H;H

END



程序清單(51c):

//2011 04 05  D:\DPJ_C\數(shù)碼管段顯\數(shù)碼管段顯c2.c

  1. #include <reg51.h>
  2. #define uchar unsigned char
  3. uchar code tab[ ]={0x77,0x01,0x7c,0x02,0x39,0x04,0x5e,0x08,
  4.                               0x79,0x10,0x71,0x20,0x6f,0x40,0x76,0x80};
  5. uchar i,j,a,b;
  6. sbit P3_0=P3^0;
  7. sbit P3_1=P3^1;
  8. sbit S0=P3^7;

  9. void delay_ms(unsigned int ms)
  10. {
  11. while(ms--)
  12. for(j=123;j>0;j--);
  13. }

  14. void disp( )
  15. {
  16. P2=tab[i];
  17. P3_0=0;
  18. delay_ms(2);
  19. P3_0=1;
  20. if(b==1)
  21. {
  22.   b=0;
  23.   P2=tab[i+1];
  24.   P3_1=0;
  25.   delay_ms(2);
  26.   P3_1=1;
  27. }
  28. }

  29. void t0init( )
  30. {
  31. TMOD=0x01;
  32. TH0=0x3c;
  33. TL0=0xb0;
  34. EA=1;
  35. ET0=1;
  36. TR0=1;
  37. }

  38. void main( )
  39. {
  40. t0init();
  41. while(1)
  42. {
  43.   disp( );
  44.   while(S0==0)
  45.   {
  46.    disp( );
  47.    if(S0==1)
  48.    i=i+2;
  49.    if(i==16)
  50.    i=0;
  51.   }
  52. }
  53. }

  54. void t0int() interrupt 1
  55. {
  56. TH0=0x3c;
  57. TL0=0xb0;
  58. a++;
  59. if(a==10)
  60. {
  61.   b=1;
  62.   a=0;
  63. }
  64. }
復制代碼



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表