欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: ADC0809多通道測量電壓proteus仿真和源程序 原理圖 [打印本頁]

作者: 51黑ff    時間: 2016-9-26 15:57
標題: ADC0809多通道測量電壓proteus仿真和源程序 原理圖
給51黑電子論壇的朋友們分享一個51單片機+ADC0809多通道(一共8個通道)測量電壓的proteus工程,經單片機ALE的2MHz一分頻后得到1MHz的時鐘提供給ADC0809
數碼管顯示說明:最后一位為通道號,程序中已用兩點隔開
在此為了方便電路連接
實際電路中請用三極管或專用芯片驅動三極管
下面是仿真原理圖:
8通道電壓表的所有資料下載:
ADC0809多通道測電壓.rar (68.79 KB, 下載次數: 380)


部分單片機源程序如下(完整代碼請下載附件):
  1. #include "adc0809.c"
  2. #define LED_Data P2
  3. #define A 10
  4. #define U 11
  5. sbit  LED1 = P3^0;
  6. sbit  LED2 = P3^1;
  7. sbit  LED3 = P3^2;
  8. sbit  LED4 = P3^3;
  9. sbit  dp   = P3^5;
  10. #define LED_slect  P3

  11. static unsigned char dispdata[4];

  12. unsigned char code num[] = {
  13.                                                                                                           0x3f,0x06,0x5b,0x4f,0x66,0x6d,
  14.                                                                                                           0x7d,0x07,0x7f,0x6f,0x77,0x3e
  15.                                                                                                    };

  16. void decodenum(float adv,unsigned char chn)
  17. {
  18.   unsigned int temp;
  19.   temp = (unsigned int)(adv*100);
  20.   dispdata[0] = temp/100;
  21.   dispdata[1] = temp/10%10;
  22.   dispdata[2] = temp%10;
  23.   dispdata[3] = chn;
  24. }

  25. void  dispone(unsigned char LED,bit ifpoint,unsigned char number)   //,number 0--9
  26. {     
  27.         switch(LED)
  28.         {
  29.                 case 0:LED1 = 0;break;
  30.                 case 1:LED2 = 0;break;
  31.                 case 2:LED3 = 0;break;
  32.                 case 3:LED4 = 0;break;
  33.                 default: LED_slect = 0xff;
  34.         }
  35.         if(ifpoint) dp = 1;
  36.         else dp = 0;
  37.         LED_Data = num[number]|0x80;
  38.         delayus(200);
  39.         LED_slect = 0xff;         
  40. }

  41. void disp()
  42. {
  43.         unsigned char i;
  44.         bit point;
  45.         for(i = 0;i<4;i++)
  46.         {
  47.                 if(i == 1) point = 0;
  48.                 else point = 1;
  49.                 dispone(i,point,dispdata[i]);
  50.         }
  51. }
復制代碼

作者: 羅愛軍    時間: 2017-4-3 21:14
,51黑有你更精彩
作者: chunzz    時間: 2017-4-4 02:15
很好,學習了
作者: 老牛牛牛    時間: 2017-5-1 12:37
謝謝樓主 很有用
作者: xiaosongshumh    時間: 2017-10-11 11:20
厲害了
作者: 21asd3as13d2    時間: 2017-12-1 11:20
真不錯
作者: wendu    時間: 2018-2-1 08:35
謝謝樓主,很有用
作者: Mr.curiosity    時間: 2018-5-6 16:31
能請教一下這個可不可以加個按鍵選擇通道的功能嗎,非常感謝~
作者: Ford    時間: 2018-5-20 15:48
強,受教了
作者: Ford    時間: 2018-5-20 15:54
幫忙看下這個吧,做出來了運行不了LED_0        EQU         30H
LED_1         EQU         31H
LED_2         EQU         32H                                   ;存放段碼
ADC                EQU                35H
CLOCK        BIT                P2.4                        ;定義ADC0808時鐘位
ST                 BIT         P2.5
EOC         BIT         P2.6
OE                 BIT         P2.7

                ORG         00H
                SJMP        START
                ORG                0BH
                LJMP        INT_T0

START:        MOV                LED_0,#00H
                MOV                LED_1,#00H
                MOV                LED_2,#00H
                MOV                DPTR,#TABLE                ;段碼表首地址
                MOV                TMOD,#02H
                MOV                TH0,#245
                MOV                TL0,#00H
                MOV                IE,#82H
                SETB        TR0

WAIT:         CLR         ST                                 
                SETB         ST
                CLR         ST                                ;啟動AD轉換
                JNB         EOC,$                        ;等待轉換結束
                SETB         OE
                MOV         ADC,P1                        ;讀取AD轉換結果
                CLR         OE               
                MOV         A,ADC
                MOV         B,#100                        ;AD轉換結果轉換成BCD碼
                DIV         AB
                MOV         LED_2,A
                MOV         A,B
                MOV         B,#10
                DIV         AB
                MOV         LED_1,A
                MOV         LED_0,B
                LCALL        DISP
                SJMP         WAIT

INT_T0:        CPL                CLOCK                         ;提供ADC0808時鐘信號
                RETI

DISP:        MOV                A,LED_0                        ;顯示子程序
                MOVC        A,@A+DPTR
                CLR                P2.3
                MOV                P0,A
                LCALL        DELAY
                SETB        P2.3

                MOV                A,LED_1
                MOVC        A,@A+DPTR
                CLR                P2.2
                MOV                P0,A
                LCALL        DELAY
                SETB        P2.2

                MOV                A,LED_2
                MOVC        A,@A+DPTR
                CLR                P2.1
                MOV                P0,A
                LCALL        DELAY
                SETB        P2.1
                RET

DELAY:        MOV                R6,#10                        ;延時5毫秒
D1:                MOV                R7,#250
                DJNZ        R7,$
                DJNZ        R6,D1
                RET

TABLE:         DB                 3FH,06H,5BH,4FH,66H
                DB                 6DH,7DH,07H,7FH,6FH
                END

QQ截圖20180520155135.png (107.22 KB, 下載次數: 56)

QQ截圖20180520155135.png

作者: lcx187    時間: 2019-1-3 17:40
不錯喲
作者: ZYD阿東    時間: 2019-3-10 10:57
數碼管應該用HC573驅動
作者: lannk    時間: 2019-6-24 13:45
怎么下載?




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1