دوست عزیز، به سایت علمی نخبگان جوان خوش آمدید

مشاهده این پیام به این معنی است که شما در سایت عضو نیستید، لطفا در صورت تمایل جهت عضویت در سایت علمی نخبگان جوان اینجا کلیک کنید.

توجه داشته باشید، در صورتی که عضو سایت نباشید نمی توانید از تمامی امکانات و خدمات سایت استفاده کنید.
نمایش نتایج: از شماره 1 تا 2 , از مجموع 2

موضوع: # مدار محاسبه فاصله از طریق امواج آلتراسونیک بوسیله میکروکنترلر

  1. #1
    همکار تالار برق
    رشته تحصیلی
    برق صنعتی
    نوشته ها
    199
    ارسال تشکر
    66
    دریافت تشکر: 327
    قدرت امتیاز دهی
    30
    Array

    پیش فرض # مدار محاسبه فاصله از طریق امواج آلتراسونیک بوسیله میکروکنترلر



    • سلام...........
      قبلا از این مدار گذاشته بودم.............
      ولی این کامل و بهتره..............
      امیدوارم خوشتون بیاد.............
      یا علی................
    • راستی برنامه هارو میتونین دانلود کنیند.............
    • ولی من خودم دانلود شدشو واستون گذاشتم..............

      • در این پروژه با نحوه بدست آوردن فاصله از طریق امواج<u> آلتراسونیک </u>آشنا می شوید.حداقل فاصله محاسبه شده توسط این مدار 28 سانتی متر و حداکثر آن 3.6 متر است.



    قطعات مورد نیاز

    1. 2 عددسنسور آلتراسونیک گیرنده و فرستنده
    2. 1 عدد آیسی LM833
    3. 1 عدد آیسی LM358
    4. 1 عدد آیسی 4011
    5. 1 عدد آیسی 4069
    6. 1 عدد آیسی میکرو">PIC 16F873
    7. 1 عدد رگولاتور 7805
    8. 1 عدد رگولاتور 7809
    9. 3 عدد ترانزیستور 2SA1015
    10. 3 عدد ترانزیستور 2S1815
    11. 3 عدد 7SEGMENT آند مشترک
    12. 1 عدد کریستال 4MHz
    13. 2 عدد خازن)22P
    14. 7 عدد مقاومت 330 اهم
    15. 1 عدد پتا نسیو متر 1 کیلو اهم
    16. 6 عدد مقاومت 5.6 کیلو اهم
    17. 6 عدد خازن 0.1 میکرو فاراد
    18. 3 عدد خازن 1000 پیکو فاراد
    19. 1 عدد 100 میکرو فاراد
    20. 2 عدد دیود 1SS106

    سنسور آلتراسونیک

    این سنسور به صورت دو pack مجزای گیرنده و فرستنده موجو د می باشد.این دو سنسوربه صورت یک پک(pack) واحد نیز وجود دارد. فرکانس تولید شده توسط این سنسور 40 کیلو هرتز می باشد.به شماتیک درونی این سنسور در شکل زیر توجه کنید.


    میکروکنترلر میکرو">PIC 16F873


    در این مدار از ویژگی تولید امواج (A/D) آنالوگ به دیجیتال این آیسی و ههچنین از آن جهت محاسبه و درایو کردن 7segment ها جهت نمایش فاصله نیز استفاده شده است.

    LM833

    این آیسی جهت تقویت امواج آلتراسونیک به میزان 60 <u>دسی بل</u>(db) در قسمت گیرنده مورد استفاده قرار می گیرد.

    LM538

    این آیسی جهت آشکار سازی امواج آلتراسونیک، در این مدار مورد استفاده قرار می گیرد.

    4011

    امواج آلتراسونیک تقویت شده توسط دو آیسی فوق، توسط این آیسی hold یا نگهداری می شود.،و وارد میکروکنترلر می شود .،عملکرد این آیسی در این مدار به نوعی شبیه فلیپ فلاپ نوع D است.این آیسی همانطور که در شکل ملاحظه می کنید.، دارای 4 گیت NAND است.


    رگولاتور 7805

    این آیسی جهت تثبیت ولتاژ به میزان 5 ولت جهت مصارف قطعاتی که این حد از ولتاژ برای آنها تعریف شده مورد استفاده قرار می گیرد.

    رگولاتور 7809

    این آیسی نیز جهت تثبیت ولتاژ به میزان 9 ولت در مدار مورد استفاده قرار می گیرد.


    ترانزیستور 1815

    این ترانزیستور از نوع npn است .،در این مدار ترانزیستور 1815 جهت درایو کردن آیسی 4069 (not buffer) با تغذیه 9 ولت مورد استفاده قرار می گیرد.،فعال شدن این ترانزیستور توسط میکروکنترلر انجام می گیرد.



    ترانزیستور1015

    این ترانزیستور از نوع pnp است.،و بیشتر جهت درایو کردن 7segmentوled مورد استفاده قرار می گیرد.



    4069

    این آیسی دارای 6 عدد بافر not است.،در این مدار این آیسی جهت درایو کردن سنسور آلتراسونیک در قسمت فرستنده مورد استفاده قرار می گیرد.


    خازن

    خازنها در مدار جهت حذف جریان dc وعبور جریان متغییر مورد استفاده قرار می گیرد.،همچنین عمل حذف نویز را در مدار نیز انجام می دهند.خازنهای سرامیکی در فرکانسهای بالا کاربرد دارند.،خازنهای مولتی لایر نیز از نوع سرامیک هستند.با این تفاوت که تعداد لایه بیشتری دارند.و در فرکانسهای بالا عملکرد بهتری به خاطر چند لایه بودن از نوع سرامیکی دارند. خازنهای الکترولیتی بیشتر جهت حذف نویز در منابع تغذیه کاربرد دارند و دارای جهت مثبت و منفی هستند.،در هنگام اتصال آنها بر روی برد به جهت مثبت و منفی آنها دقت کنید.




    نقشه مدار

    در این مدار به نوع خازنها توجه کنید.سه نوع خازن مولتی لایر ، الکترولیت و سرامیکی مورد استفاده قرار گرفته است.همانطور که در نقشه ملاحظه می کنید.،این خازنها با حروف اولشان مشخص هستند.c نمایانگر خازن سرامیکی ، m نمایانگر خازن مو لتی لایر و E نمایانگر خازن الکترولیت است.

    توضیحات مدار


    در زیر شکل مدار تقویت سیگنال را مشاهده می کنید.هنگامیکه امواج آلتراسونیک توسط سنسور گیرنده آلتراسونیک که در نقشه با RX مشخص شده است.،دریافت می شود.،به میزان 60 دسی بل تقویت می شو د.40 دسی بل در مرحله اول و 20 دسی بل در مرحله دوم تقویت می شو د.عمل تقویت به میزان 60 دسی بل را آیسی LM388 انجام می دهد.9 ولت ورودی توسط تقسیم ولتاژ دو مقاومت10K به میزان 4.5 ولت کاهش می یابد.،و وارد پایه مثبت <u>آپ امپ</u> می شود.


    در زیر شکل مدار آشکار ساز را مشاهده می کنید.در این قسمت از مدار تنها نصف موج را پس از عبور از دیود خواهیم داشت.دیود دیگر منفی نصف موج حاصل شده را حذدف می کند.
    dc موج و پوش آن نیز توسط خازن حذف می شود.

    در قسمت بعدی مدار امواج پس از عبور از دیودها وخازن وارد پایه 3 آیسی LM358 می شود.همانطور که در شکل ملاحظه می کنید.، فیدبک در پایه منفی آپ امپ این آیسی وجود ندارد.در این حالت خروجی به سرعت به اشباع می رود.
    بنابر قوانین مدار در تقسیم ولتاژ در مدارات سری ولتاژ ثابتی را در پایه منفی خواهیم داشت.زمانیکه ورودی مثبت که از قسمت قبلی مدار تحریک می شود.،ولتاژش اندکی بیشتر از VCC باشد.خروجی به سرعت در ولتاژ VCC قرار می گیرد.عکس این مطلب نیز وجود دارد.،زمانیکه ولتاژ در پایه 3 اندکی کمتر از ولتاژ در پایه 2 باشد.خروجی به سرعت صفر می شود.به شکل این قسمت از مدار در شکل زیر توجه کنید.

    عکس پیدا نشد

    در این قسمت امواج وارد مرحله hold یا نگهداری می شوند.عملکرد این قسمت از مدار به نوعی شبیه به فلیپ فلاپ (flip flop) نوع D است.




    قسمت انتقال امواج آلتراسونیک
    در قسمت انتقال از آیسی معکوس کننده یا invertor استفاده شده است.در هر سر این سنسور دو بافر NOT به صورت موازی یا parallel با هم قرار دارند.این کار برای افزایش توان انتقال است.در پایه مثبت فاز اصلی ودر پایه منفی سنسور 180 درجه همان فاز را خواهیم داشت.خازن نیز در این قسمت جهت حذف جریان d c است.


    نمایش فاصله
    در این مدار از 3 عدد 7Segment جهت نمایش فاصله استفاده شده است.در این مدار 7segmentها از نوع آند مشترک هستند.
    این 7segment دارای پایه مشترک مثبت است است.،که با منفی شدن پایه های a,b,c,d,e,f,g توسط میکروکنترلر فاصله را نشان می دهد.



    سرعت صوت

    سرعت صوت در دماهای مختلف متفاوت است.به طور مثال سرعت صوت در دمای صفر درجه سانتی گراد331.5m/s است.و سرعت صوت در دمای 40 درجه سانتی گراد355.5m/s است.سرعت صوت در دماهای مختلف از رابطه زیر تبعیت می کند.
    X=V*T

    عکس پیدا نشد


    با توجه به فرمول سرعت،سرعت رابطه مستقیمی با زمان دارد.به طور مثال سرعت نور در دمای صفر درجه سانتی گراد331.5m/s است.،اگر فاصله ما تا دیوار 2m باشد.با احتساب برگشت نور 4m می شود.بنابراین مدت زمان برگشت موج به سنسور گیرنده از رابطه زیر حساب می شود.
    X=V*T, T=4/331.5, T=0.01206



    برنامه اسمبلی دانلود برنامه اسمبلی (اینم دانلود شده ی اسمبلی اگه نخواستین گزینه ی دانلودش هست)
    ;************************************************* *******
    ;
    ; Ultrasonic Range Meter
    ;
    ; Device : PIC16F873
    ; Author : Seiichi Inoue
    ;************************************************* *******

    list p=pic16f873
    include p16f873.inc
    __config _hs_osc & _wdt_off & _pwrte_on & _lvp_off
    errorlevel -302 ;Suppress bank warning

    ;**************** Label Definition ********************
    cblock h'20'
    s_count ;Send-out pulse count adr
    s_adj ;Adjustment data address
    s_adj_count ;Rotate value save adr
    s_digit ;Digit cont work address
    g_time1 ;Guard timer address 1
    g_time2 ;Guard timer address 2
    p_countl ;Propagation L cnt adr
    p_counth ;Propagation H cnt adr
    digit_cnt ;Digit counter head adr
    disp_ha ;Digit head address
    disp_u ;1st digit address
    disp_t ;10th digit address
    disp_h ;100th digit address
    seg7_ha ;7 segLED table head adr
    seg70 ;Pattern 0 set adr
    seg71 ;Pattern 1 set adr
    seg72 ;Pattern 2 set adr
    seg73 ;Pattern 3 set adr
    seg74 ;Pattern 4 set adr
    seg75 ;Pattern 5 set adr
    seg76 ;Pattern 6 set adr
    seg77 ;Pattern 7 set adr
    seg78 ;Pattern 8 set adr
    seg79 ;Pattern 9 set adr
    seg7a ;Pattern A set adr
    seg7b ;Pattern B set adr
    endc

    ra1 equ h'01' ;RA1 port designation
    ra2 equ h'02' ;RA2 port designation
    ra3 equ h'03' ;RA3 port designation
    ra5 equ h'05' ;RA5 port designation

    ccp1 equ h'02' ;CCP1(RC2) designation

    seg7_0 equ b'01000000' ;-gfedcba Pattern 0
    seg7_1 equ b'01111001' ; Pattern 1
    seg7_2 equ b'00100100' ; Pattern 2
    seg7_3 equ b'00110000' ; Pattern 3
    seg7_4 equ b'00011001' ; Pattern 4
    seg7_5 equ b'00010010' ; Pattern 5
    seg7_6 equ b'00000010' ; Pattern 6
    seg7_7 equ b'01111000' ; Pattern 7
    seg7_8 equ b'00000000' ; Pattern 8
    seg7_9 equ b'00010000' ; Pattern 9
    seg7_a equ b'01111111' ; Detect error
    seg7_b equ b'00100011' ; Illegal int

    ;**************** Program Start ***********************
    org 0 ;Reset Vector
    goto init
    org 4 ;Interrupt Vector
    goto int

    ;**************** Initial Process *********************
    init

    ;*** Port initialization
    bsf status,rp0 ;Change to Bank1
    movlw b'00000001' ;AN0 to input mode
    movwf trisa ;Set TRISA register
    clrf trisb ;RB port to output mode
    movlw b'00000100' ;RC2/CCP1 to input mode
    movwf trisc ;Set TRISC register

    ;*** Ultrasonic sending period initialization (Timer0)
    movlw b'11010111' ;T0CS=0,PSA=0,PS=1:256
    movwf option_reg ;Set OPTION_REG register
    bcf status,rp0 ;Change to Bank0
    clrf tmr0 ;Clear TMR0 register

    ;*** Capture mode initialization (Timer1)
    movlw b'00000001' ;Pre=1:1 TMR1=Int TMR1=ON
    movwf t1con ;Set T1CON register
    clrf ccp1con ;CCP1 off

    ;*** A/D converter initialization
    movlw b'01000001' ;ADCS=01 CHS=AN0 ADON=ON
    movwf adcon0 ;Set ADCON0 register
    bsf status,rp0 ;Change to Bank1
    movlw b'00001110' ;ADFM=0 PCFG=1110
    movwf adcon1 ;Set ADCON1 register
    bcf status,rp0 ;Change to Bank0

    ;*** Display initialization (Timer2)
    movlw disp_u ;Set digit head address
    movwf disp_ha ;Save digit head sddress
    movlw h'0a' ;"Detect error" data
    movwf disp_u ;Set 1st digit
    movwf disp_t ;Set 10th digit
    movwf disp_h ;Set 100th digit
    movlw d'3' ;Digit counter
    movwf digit_cnt ;Set digit counter
    movlw seg70 ;Set 7seg head address
    movwf seg7_ha ;Save 7seg head address
    movlw seg7_0 ;Set 7segment pattern 0
    movwf seg70 ;Save pattern 0
    movlw seg7_1 ;Set 7segment pattern 1
    movwf seg71 ;Save pattern 1
    movlw seg7_2 ;Set 7segment pattern 2
    movwf seg72 ;Save pattern 2
    movlw seg7_3 ;Set 7segment pattern 3
    movwf seg73 ;Save pattern 3
    movlw seg7_4 ;Set 7segment pattern 4
    movwf seg74 ;Save pattern 4
    movlw seg7_5 ;Set 7segment pattern 5
    movwf seg75 ;Save pattern 5
    movlw seg7_6 ;Set 7segment pattern 6
    movwf seg76 ;Save pattern 6
    movlw seg7_7 ;Set 7segment pattern 7
    movwf seg77 ;Save pattern 7
    movlw seg7_8 ;Set 7segment pattern 8
    movwf seg78 ;Save pattern 8
    movlw seg7_9 ;Set 7segment pattern 9
    movwf seg79 ;Save pattern 9
    movlw seg7_a ;Set 7segment pattern A
    movwf seg7a ;Save pattern A
    movlw seg7_b ;Set 7segment pattern B
    movwf seg7b ;Save pattern B
    movlw b'00011110' ;OPS=1:4,T2=ON,EPS=1:16
    movwf t2con ;Set T2CON register
    bsf status,rp0 ;Change to Bank1
    movlw d'157' ;157x64=10048usec
    movwf pr2 ;Set PR2 register
    bsf pie1,tmr2ie ;TMR2IE=ON
    bcf status,rp0 ;Change to Bank0


    ;*** Interruption control
    movlw b'11100000' ;GIE=ON,PEIE=ON,T0IE=ON
    movwf intcon ;Set INTCON register

    wait
    goto $ ;Interruption wait

    ;*************** Interruption Process *****************
    int
    movfw pir1 ;Read PIR1 register
    btfsc pir1,ccp1if ;Capture occurred ?
    goto capture ;Yes. "Capture"
    btfsc pir1,tmr2if ;TMR2 time out ?
    goto led_cont ;Yes. "LED display"
    movfw intcon ;Read INTCON register
    btfsc intcon,t0if ;TMR0 time out ?
    goto send ;Yes. "Pulse send"

    ;*************** Illegal interruption *****************
    illegal
    movlw h'0b' ;Set Illegal disp digit
    addwf seg7_ha,w ;Seg7 H.Adr + digit
    movwf fsr ;Set FSR register
    movfw indf ;Read seg7 data
    movwf portb ;Write LED data
    bcf porta,ra1 ;RA1=ON
    bcf porta,ra2 ;RA2=ON
    bcf porta,ra3 ;RA3=ON
    goto $ ;Stop

    ;************ END of Interruption Process **************
    int_end
    retfie

    ;*************** Pulse send-out Process ****************
    send
    bcf intcon,t0if ;Clear TMR0 int flag
    clrf tmr0 ;Timer0 clear

    ;*** Received Pulse detection check
    movfw portc ;Read PORTC register
    btfsc portc,ccp1 ;Detected ?
    goto detect_off ;Yes. Detected
    movlw h'0a' ;"Detect error" data
    movwf disp_u ;Set 1st digit
    movwf disp_t ;Set 10th digit
    movwf disp_h ;Set 100th digit

    ;*** Receive pulse detector off
    detect_off
    bcf porta,ra5 ;Set detector OFF

    ;*** Capture start
    clrf tmr1h ;Clear TMR1H register
    clrf tmr1l ;Clear TMR1L register
    clrf ccpr1h ;Clear CCPR1H register
    clrf ccpr1l ;Clear CCPR1L register
    movlw b'00000101' ;CCP1M=0101(Capture)
    movwf ccp1con ;Set CCP1CON register
    bsf status,rp0 ;Change to Bank1
    bsf pie1,ccp1ie ;CCP1 interruptin enable
    bcf status,rp0 ;Change to Bank0
    bcf pir1,ccp1if ;Clear CCP1 int flag

    ;*** 40KHz pulse send ( 0.5 msec )
    movlw d'20' ;Send-out pulse count
    movwf s_count ;Set count
    s_loop
    call pulse ;Call pulse send sub
    decfsz s_count,f ;End ?
    goto s_loop ;No. Continue

    ;*** Get adjustment data
    bsf adcon0,go ;Start A/D convert
    ad_check
    btfsc adcon0,go ;A/D convert end ?
    goto ad_check ;No. Again
    movfw adresh ;Read ADRESH register
    movwf s_adj ;Save converted data

    movlw d'5' ;Set rotate value
    movwf s_adj_count ;Save rotate value
    ad_rotate
    rrf s_adj,f ;Rotate right 1 bit
    decfsz s_adj_count,f ;End ?
    goto ad_rotate ;No. Continue
    movfw s_adj ;Read rotated value
    andlw b'00000111' ;Pick-up 3 bits
    addlw d'54' ;(0 to 7) + 54 = 54 to 61
    movwf s_adj ;Save adjustment data

    ;*** Capture guard timer ( 1 milisecound )
    movlw d'2' ;Set loop counter1
    movwf g_time1 ;Save loop counter1
    g_loop1 movlw d'124' ;Set loop counter2
    movwf g_time2 ;Save loop counter2
    g_loop2 nop ;Time adjust
    decfsz g_time2,f ;g_time2 - 1 = 0 ?
    goto g_loop2 ;No. Continue
    decfsz g_time1,f ;g_time1 - 1 = 0 ?
    goto g_loop1 ;No. Continue

    ;*** Receive pulse detector on
    bsf porta,ra5 ;Set detector ON

    goto int_end

    ;*************** Pulse send-out Process ****************
    pulse
    movlw b'00010000' ;RC4=ON
    movwf portc ;Set PORTC register
    call t12us ;Call 12usec timer
    clrf portc ;RC4=OFF
    goto $+1
    goto $+1
    nop
    return

    ;*************** 12 microseconds timer *****************
    t12us
    goto $+1
    goto $+1
    goto $+1
    goto $+1
    nop
    return

    ;****************** Capture Process ********************
    capture
    bcf pir1,ccp1if ;Clear CCP1 int flag

    clrf p_countl ;Clear L count
    clrf p_counth ;Clear H count
    clrf ccp1con ;CCP1 off

    division
    movfw s_adj ;Read adjustment data
    subwf ccpr1l,f ;Capture - adjust
    btfsc status,z ;Result = 0 ?
    goto division2 ;Yes. "R = 0"
    btfsc status,c ;Result < 0 ?
    goto division1 ;No. "R > 0"
    goto division3 ;Yes."R < 0"

    division1 ;( R > 0 )
    movlw d'1' ;Set increment value
    addwf p_countl,f ;Increment L count
    btfss status,c ;Overflow ?
    goto division ;No. Continue
    incf p_counth,f ;Increment H count
    goto division ;Jump next

    division2 ;( R = 0 )
    movfw ccpr1h ;Read CCPR1H
    btfss status,z ;CCPR1H = 0 ?
    goto division1 ;No. Next
    movlw d'1' ;Set increment value
    addwf p_countl,f ;Increment L count
    btfss status,c ;Overflow ?
    goto digit_set ;Jump to digit set
    incf p_counth,f ;Increment H count
    goto digit_set ;Jump to digit set

    division3 ;( R < 0 )
    movfw ccpr1h ;Read CCPR1H
    btfss status,z ;CCPR1H = 0 ?
    goto division4 ;No. Borrow process
    goto digit_set ;Jump to digit set

    division4
    decf ccpr1h,f ;CCPR1H - 1
    movlw d'255' ;Borrow value
    addwf ccpr1l,f ;CCPR1L + 255
    incf ccpr1l,f ;CCPR1L + 1
    goto division1 ;Next

    ;**************** Digit Set Process ********************
    digit_set
    clrf disp_u ;Clear 1st digit
    clrf disp_t ;Clear 10th digit
    clrf disp_h ;Clear 100th digit

    ;*** 100th digit
    digit_h
    movlw d'100' ;Divide value
    subwf p_countl,f ;Digit - divide
    btfsc status,z ;Result = 0 ?
    goto digit_h2 ;Yes. "R = 0"
    btfsc status,c ;Result < 0 ?
    goto digit_h1 ;No. "R > 0"
    goto digit_h3 ;Yes."R < 0"

    digit_h1 ;( R > 0 )
    incf disp_h,f ;Increment 100th count
    goto digit_h ;Jump next

    digit_h2 ;( R = 0 )
    movfw p_counth ;Read H counter
    btfss status,z ;H counter = 0 ?
    goto digit_h1 ;No. Next
    incf disp_h,f ;Increment 100th count
    goto digit_t ;Jump to 10th digit pro

    digit_h3 ;( R < 0 )
    movfw p_counth ;Read H counter
    btfss status,z ;H counter = 0 ?
    goto digit_h4 ;No. Borrow process
    movlw d'100' ;Divide value
    addwf p_countl,f ;Return over sub value
    goto digit_t ;Jump to 10th digit pro

    digit_h4
    decf p_counth,f ;H counter - 1
    movlw d'255' ;Borrow value
    addwf p_countl,f ;L counter + 255
    incf p_countl,f ;L counter + 1
    goto digit_h1 ;Next

    ;*** 10th digit
    digit_t

    ;*** Range over check
    movfw disp_h ;Read 100th digit
    sublw d'9' ;9 - (100th digit)
    btfsc status,z ;Result = 0 ?
    goto digit_t0 ;Yes. "R = 0"
    btfsc status,c ;Result < 0 ?
    goto digit_t0 ;No. "R > 0"
    movlw h'0a' ;"Detect error" data
    movwf disp_u ;Set 1st digit
    movwf disp_t ;Set 10th digit
    movwf disp_h ;Set 100th digit
    goto int_end

    digit_t0
    movlw d'10' ;Divide value
    subwf p_countl,f ;Digit - divide
    btfsc status,z ;Result = 0 ?
    goto digit_t1 ;Yes. "R = 0"
    btfsc status,c ;Result < 0 ?
    goto digit_t1 ;No. "R > 0"
    goto digit_t2 ;Yes."R < 0"

    digit_t1 ;( R >= 0 )
    incf disp_t,f ;Increment 10th count
    goto digit_t ;Jump next

    digit_t2 ;( R < 0 )
    movlw d'10' ;Divide value
    addwf p_countl,f ;Return over sub value
    goto digit_u ;Jump to 1st digit pro

    ;*** 1st digit
    digit_u
    movfw p_countl ;Read propagetion counter
    movwf disp_u ;Save 1st count

    goto int_end

    ;**************** LED display control *****************
    led_cont
    bcf pir1,tmr2if ;Clear TMR2 int flag

    movfw digit_cnt ;Read digit counter
    movwf s_digit ;Save digit counter
    decfsz s_digit,f ;1st digit ?
    goto d_check1 ;No. Next
    bsf porta,ra1 ;RA1=OFF
    bsf porta,ra2 ;RA2=OFF
    bcf porta,ra3 ;RA3=ON
    goto c_digit ;Jump to digit cont
    d_check1
    decfsz s_digit,f ;10th digit ?
    goto d_check2 ;No. 100th digit
    bsf porta,ra1 ;RA1=OFF
    bcf porta,ra2 ;RA2=ON
    bsf porta,ra3 ;RA3=OFF
    goto c_digit ;Jump to digit cont
    d_check2
    bcf porta,ra1 ;RA1=ON
    bsf porta,ra2 ;RA2=OFF
    bsf porta,ra3 ;RA3=OFF

    c_digit
    decf digit_cnt,w ;Digit count - 1
    addwf disp_ha,w ;Digit H.Adr + count
    movwf fsr ;Set FSR register
    movfw indf ;Read digit
    addwf seg7_ha,w ;Seg7 H.Adr + digit
    movwf fsr ;Set FSR register
    movfw indf ;Read seg7 data
    movwf portb ;Write LED data

    decfsz digit_cnt,f ;Digit count - 1
    goto int_end ;Jump to interrupt end
    movlw d'3' ;Initial value
    movwf digit_cnt ;Set initial value
    goto int_end ;Jump to interrupt end

    ;************************************************* *******
    ; END of Ultrasonic Range Meter
    ;************************************************* *******

    end




    برنامهHEX(این دانلود شدش اگه اینجوریم نخواستین ته همین کدها گزینه ی دانلودش هست فقط حتما انتهای مطلب و بخونید)
    :020000000528D1
    :08000800442883160130850035
    :10001000860104308700D7308100831281010130CE
    :100020009000970141309F0083160E309F0083128D
    :100030002A30A9000A30AA00AB00AC000330A800A7
    :100040002E30AD004030AE007930AF002430B0002B
    :100050003030B1001930B2001230B3000230B400B9
    :100060007830B5000030B6001030B7007F30B800EF
    :100070002330B9001E30920083169D3092008C14FC
    :100080008312E0308B0043280C080C1996288C183A
    :10009000EF280B080B1956280B302D078400000899
    :1000A0008600851005118511542809000B11810166
    :1000B000070807195F280A30AA00AB00AC008512B8
    :1000C0008F018E01960195010530970083160C155E
    :1000D00083120C111430A0008820A00B6C281F156F
    :1000E0001F1970281E08A1000530A200A10CA20B48
    :1000F000762821080739363EA1000230A4007C3062
    :10010000A5000000A50B8128A40B7F288516552883
    :1001100010308700902087018D288E28000008006D
    :100120009128922893289428000008000C11A60119
    :10013000A7019701210895020319A7280318A128F0
    :10014000B0280130A607031C9A28A70A9A28160887
    :10015000031DA1280130A607031CB928A70AB92846
    :100160001608031DB428B9289603FF309507950A91
    :10017000A128AA01AB01AC016430A6020319C5286D
    :100180000318C328CA28AC0ABC282708031DC328A3
    :10019000AC0AD5282708031DD0286430A607D52827
    :1001A000A703FF30A607A60AC3282C08093C031999
    :1001B000E0280318E0280A30AA00AB00AC0055285C
    :1001C0000A30A6020319E7280318E728E928AB0A32
    :1001D000D5280A30A607EC282608AA0055288C1036
    :1001E0002808A300A30BF8288514051585110129FB
    :1001F000A30BFE2885140511851501298510051509
    :10020000851528032907840000082D0784000008AD
    دانلود برنامه hex
    برای کار با میکروکنترلر، برنامه HEX را از طریق پروگرامر میکروکنترلر های خانواده میکرو">PIC در داخل میکروکنترلر LOAD کنید.







    ویرایش توسط BEN HOR : 22nd December 2010 در ساعت 02:54 PM



    به دادم برس گریه...............
    دلم خیلی گرفته.......................
    نگو از دوری کی..............................
    نپرس از چی گرفته..................................

  2. 2 کاربر از پست مفید BEN HOR سپاس کرده اند .


  3. #2
    کاربر جدید
    رشته تحصیلی
    مهندسی برق الکترونیک
    نوشته ها
    1
    ارسال تشکر
    0
    سپاس شده 1 در 1 پست
    قدرت امتیاز دهی
    0
    Array

    پیش فرض پاسخ : # مدار محاسبه فاصله از طریق امواج آلتراسونیک بوسیله میکروکنترلر

    dorood az che noe sensori estefade kardid؟




    لطفا فقط و فقط بصورت فارسی تاپی نمایید
    با تشکر
    مدیریت تالار
    ویرایش توسط مدیر تالار برق : 10th December 2012 در ساعت 02:42 PM دلیل: تذکر

  4. کاربرانی که از پست مفید navid7143 سپاس کرده اند.


اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. مقاله ی کامل درباره ی Steganography
    توسط avtkurd در انجمن بخش مقالات نرم افزار
    پاسخ ها: 2
    آخرين نوشته: 5th January 2012, 12:56 AM
  2. ‍استفاده از بيو ليچينگ در هيدرو متالو‍‍ژي
    توسط محسن آزماینده در انجمن فراوری مواد معدنی
    پاسخ ها: 0
    آخرين نوشته: 6th December 2010, 12:56 PM
  3. ‍استفاده از بيو ليچينگ در هيدرو متالو‍‍ژي
    توسط محسن آزماینده در انجمن فراوری مواد معدنی
    پاسخ ها: 0
    آخرين نوشته: 6th December 2010, 12:54 PM
  4. تبیین فلسفی از رویکرد مکانیکی و آشوب به تئوری سازمان
    توسط ریپورتر در انجمن مجموعه مدیریت اجرایی
    پاسخ ها: 0
    آخرين نوشته: 15th October 2010, 06:06 PM
  5. معرفت شناسي در انديشه استاد مطهري
    توسط آبجی در انجمن معرفت شناسی
    پاسخ ها: 2
    آخرين نوشته: 12th August 2010, 12:14 PM

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •