<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于單片機ATmega16的CCD驅動電路的設計

          基于單片機ATmega16的CCD驅動電路的設計

          作者: 時間:2010-10-22 來源:網絡 收藏

          TCD1304工作時需要SH、ICG和ФM 3路驅動信號。SH的周期表示光信號積累時間,即積分時間,ICG和SH是同步的,ФM是主脈沖,其典型值為2 MHz。OS表示信號輸出,每4個ФM脈沖周期對應1位信號周期??梢钥闯?,TCD1304工作時需要的驅動信號比較簡單,完全可以用ATmega16來產生。
          3 電路設計及實驗結果
          3.1 電路設計

           基于ATmega16的TCD1304的驅動電路如圖4所示。


          使用ATmega16的timer0的CTC工作模式產生2 MHz的方波,并由輸出腳OC0輸出,然后經過施密特反向器整形后輸出作為ФM(即圖4中的FM);使用timer1的相位與頻率修正PWM模式產生一定周期的波形,由OC1A腳輸出,同樣經過施密特反向器整形后輸出作為ICG;將ICG波形經過延時和變窄處理后得到SH信號。圖4中還給出了ATmega16的復位電路。單片機工作時使用系統(tǒng)內部時鐘8MHz,timer1采用8分頻(即1 MHz)作為時鐘輸入。部分的單片機程序如下:
            初始化部分:
            LDI TEMP, $00
            OUT TCCR0, TEMP
            OUT TCNT0, TEMP
            OUT TCNT1L, TEMP
            OUT TCNT1H, TEMP
            OUT TIMSK, TEMP
            設置timer1和timer0的相關寄存器:
            LDI TEMP, $80
            OUT TCCR1A, TEMP
            LDI TEMP, $00
            OUT OCR1AH, TEMP
            LDI TEMP, $04
            OUT OCR1AL, TEMP
            LDI TEMP, $0e
            OUT ICR1H, TEMP
            LDI TEMP, $74;
            OUT ICR1L, TEMP
            
            LDI TEMP, $02;
            OUT OCR0, TEMP
            啟動輸出:
            LDI TEMP, $71
            OUT TCCR0, TEMP
            NOP
            LDI TEMP, $12
            OUT TCCR1B, TEMP
           在程序中,由輸出腳OC0輸出的是2 MHz方波,通過寄存器OCR0和TCCR0來確定。輸出腳OC1A輸出的波形周期為T=7.4 ms(ICR1·2·1 μs),對應CCD的最短積分時間。改變timer1的寄存器的設置就可以調整積分時間。



          關鍵詞: 功率模塊

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();