TLC5620 DAC轉換實驗程序 該實驗程序使用TLC5620中A、B、C、D四個通道中的前兩個通道分別輸出周期相等、幅度均為3.3V的三角波和方波,5620的輸出經過LM358雙運方的反相跟隨后增強了帶負載能力 并且使得輸出的信號電壓位于-3.3V~0V之間,起到了模擬反相的作用。在程序中,RNG位的置位使得輸出幅度增加一倍。
上傳時間: 2017-08-03
上傳用戶:lindor
該程序用事件管理器B的定時器4定時時間來觸發A/D采樣的啟動。采樣時采用級聯模式,一次做16個轉換,轉換通道分別是0~15。轉換完成后,在A/D中斷服務子程序中將轉換結果讀出。該程序做一次A/D采樣。
上傳時間: 2017-09-25
上傳用戶:標點符號
基于ARM-FPGA的IRIG-B碼產生器的研制這是一份非常不錯的資料,歡迎下載,希望對您有幫助!
上傳時間: 2021-12-30
上傳用戶:
在馬達控制類應用中,正交編碼器可以反饋馬達的轉子位置及轉速信號.TM32F10x系列MCU集成了正交編碼器接口,增量編碼器可與MCU直接連接而無需外部接口電路。該應用筆記詳細介紹了STM32F1Ox與正交編碼器的接口,并附有相應的例程,使用戶可以很快地掌握其使用方法.1正交編碼器原理正交編碼器實際上就是光電編碼器,分為增量式和絕對式,較其它檢測元件有直接輸出數字量信號,慣量低,低噪聲,高精度,高分辨率,制作簡便,成本低等優點。增量式編碼器結構簡單,制作容易,一般在碼盤上刻A.B.Z三道均勻分布的刻線,由于其給出的位置信息是增量式的,當應用于伺服領域時需要初始定位格雷碼絕對式編碼器一般都做成循環二進制代碼,碼道道數與二進制位數相同。格富碼絕對式編碼器可直接輸出轉子的絕對位置,不需要測定初始位置,但其工藝復雜、成本高,實現高分辨率、高精度較為困難。本文主要針對增量式正交編碼器,它產生兩個方波信號A和B,它們相差+-90.其符號由轉動方向決定。如下圖所示:圖1:增量式正交編碼器輸出信號波形2 STM32F10x正交編碼器接口詳述STM32F10x的所有通用定時器及高級定時器都集成了正交編碼器接口,定時器的兩個輸入TII和TI2直接與增量式正交編碼器接口,當定時器設為正交編碼器模式時,這兩個信號的邊沿作為計數器的時鐘,而正交編碼器的第三個輸出(機械零位),可連接外部中斷口來觸發定時器的計數器復位.
上傳時間: 2022-06-18
上傳用戶:zhanglei193
便攜式B型超聲診斷儀具有無創傷、簡便易行、相對價廉等優勢,在臨床中越來越得到廣泛的應用。它將超聲波技術、微電子技術、計算機技術、機械設計與制造及生物醫學工程等技術融合在一起。開展該課題的研究對提高臨床診斷能力和促進我國醫療事業的發展具有重要的意義。 便攜式B型超聲診斷儀由人機交互系統、探頭、成像系統、顯示系統構成。其基本工作過程是:首先人機交互系統接收到用戶通過鍵盤或鼠標發出的命令,然后成像系統根據命令控制探頭發射超聲波,并對回波信號處理、合成圖像,最后通過顯示系統完成圖像的顯示。 成像系統作為便攜式B型超聲診斷儀的核心對圖像質量有決定性影響,但以前研制的便攜式B型超聲診斷儀的成像系統在三個方面存在不足:第一、采用的是單片機控制步進電機,控制精度不高,導致成像系統采樣不精確;第二、采用的數字掃描變換算法太粗糙,影響超聲圖像的分辨率;第三、它的CPU多采用的是51系列單片機,測量速度太慢,同時也不便于系統升級和擴展。 針對以上不足,提出了基于FPGA的B型超聲成像系統解決方案,采用Altera公司的EP2C5Q208C8芯片實現了步進電機步距角的細分,使電機旋轉更勻速,提高了采樣精度;提出并采用DSTI-ULA算法(Uniform Ladder Algorithm based on Double Sample and Trilinear Interotation)在FPGA內實現數字掃描變換,提高了圖像分辨率;人機交互系統采用S3C2410-AL作為CPU,改善了測量速度和系統的擴展性。 通過對系統硬件電路的設計、制作,軟件的編寫、調試,結果表明,本文所設計的便攜式B型超聲成像系統圖像分辨率高、測量速度快、體積小、操作方便。本文所設計的便攜式B型超聲診斷儀可在野外作業和搶險(諸如地震、抗洪)中發揮作用,同時也可在鄉村診所中完成對相關疾病的診斷工作。
上傳時間: 2013-05-18
上傳用戶:helmos
超聲理論與技術的快速發展,使超聲設備不斷更新,超聲檢查已成為預測和評價疾病及其治療結果不可缺少的重要方法。超聲診斷技術不僅具有安全、方便、無損、廉價等優點,其優越性還在于它選用診斷參數的多樣性及其在工程上實現的靈活性。 全數字B超診斷儀基于嵌入式ARM9+FPGA硬件平臺、LINUX嵌入式操作系統,是一種新型的、操作方便的、技術含量高的機型。它具有現有黑白B超的基本功能,能夠對超聲回波數據進行靈活的處理,從而使操作更加方便,圖象質量進一步提高,并為遠程醫療、圖像存儲、拷貝等打下基礎,是一種很有發展前景、未來市場的主打產品。全數字B型超聲診斷儀的基本技術特點是用數字硬件電路來實現數據量極其龐大的超聲信息的實時處理,它的實現主要倚重于FPGA技術。現在FPGA已經成為多種數字信號處理(DSP)應用的強有力解決方案。硬件和軟件設計者可以利用可編程邏輯開發各種DSP應用解決方案??删幊探鉀Q方案可以更好地適應快速變化的標準、協議和性能需求。 本論文首先闡述了醫療儀器發展現狀和嵌入式計算機體系結構及發展狀況,提出了課題研究內容和目標。然后從B超診斷原理及全數字B超診斷儀設計入手深入分析了B型超聲診斷儀的系統的硬件體系機構。對系統的總體框架和ARM模塊設計做了描述后,接著分析了超聲信號進行數字化處理的各個子模塊、可編程邏輯器件的結構特點、編程原理、設計流程以及ARM處理模塊和FPGA模塊的主要通訊接口。接著,本論文介紹了基于ARM9硬件平臺的LINUX嵌入式操作系統的移植和設備驅動的開發,詳細描述了B型超聲診斷儀的軟件環境的架構及其設備驅動的詳細設計。最后對整個系統的功能和特點進行了總結和展望。
上傳時間: 2013-05-28
上傳用戶:sssnaxie
38V/100A可直接并聯大功率AC/DC變換器 隨著電力電子技術的發展,電源技術被廣泛應用于計算機、工業儀器儀表、軍事、航天等領域,涉及到國民經濟各行各業。特別是近年來,隨著IGBT的廣泛應用,開關電源向更大功率方向發展。研制各種各樣的大功率,高性能的開關電源成為趨勢。某電源系統要求輸入電壓為AC220V,輸出電壓為DC38V,輸出電流為100A,輸出電壓低紋波,功率因數>0.9,必要時多臺電源可以直接并聯使用,并聯時的負載不均衡度<5%。 設計采用了AC/DC/AC/DC變換方案。一次整流后的直流電壓,經過有源功率因數校正環節以提高系統的功率因數,再經半橋變換電路逆變后,由高頻變壓器隔離降壓,最后整流輸出直流電壓。系統的主要環節有DC/DC電路、功率因數校正電路、PWM控制電路、均流電路和保護電路等。 1 有源功率因數校正環節 由于系統的功率因數要求0.9以上,采用二極管整流是不能滿足要求的,所以,加入了有源功率因數校正環節。采用UC3854A/B控制芯片來組成功率因數電路。UC3854A/B是Unitrode公司一種新的高功率因數校正器集成控制電路芯片,是在UC3854基礎上的改進。其特點是:采用平均電流控制,功率因數接近1,高帶寬,限制電網電流失真≤3%[1]。圖1是由UC3854A/B控制的有源功率因數校正電路。 該電路由兩部分組成。UC3854A/B及外圍元器件構成控制部分,實現對網側輸入電流和輸出電壓的控制。功率部分由L2,C5,V等元器件構成Boost升壓電路。開關管V選擇西門康公司的SKM75GB123D模塊,其工作頻率選在35kHz。升壓電感L2為2mH/20A。C5采用四個450V/470μF的電解電容并聯。因為,設計的PFC電路主要是用在大功率DC/DC電路中,所以,在負載輕的時候不進行功率因數校正,當負載較大時功率因數校正電路自動投入使用。此部分控制由圖1中的比較器部分來實現。R10及R11是負載檢測電阻。當負載較輕時,R10及R11上檢測的信號輸入給比較器,使其輸出端為低電平,D2導通,給ENA(使能端)低電平使UC3854A/B封鎖。在負載較大時ENA為高電平才讓UC3854A/B工作。D3接到SS(軟啟動端),在負載輕時D3導通,使SS為低電平;當負載增大要求UC3854A/B工作時,SS端電位從零緩慢升高,控制輸出脈沖占空比慢慢增大實現軟啟動。 2 DC/DC主電路及控制部分分析 2.1 DC/DC主電路拓撲 在大功率高頻開關電源中,常用的主變換電路有推挽電路、半橋電路、全橋電路等[2]。其中推挽電路的開關器件少,輸出功率大,但開關管承受電壓高(為電源電壓的2倍),且變壓器有六個抽頭,結構復雜;全橋電路開關管承受的電壓不高,輸出功率大,但是需要的開關器件多(4個),驅動電路復雜。半橋電路開關管承受的電壓低,開關器件少,驅動簡單。根據對各種拓撲方案的工程化實現難度,電氣性能以及成本等指標的綜合比較,本電源選用半橋式DC/DC變換器作為主電路。圖2為大功率開關電源的主電路拓撲圖。
上傳時間: 2013-11-13
上傳用戶:ukuk
/*--------- 8051內核特殊功能寄存器 -------------*/ sfr ACC = 0xE0; //累加器 sfr B = 0xF0; //B 寄存器 sfr PSW = 0xD0; //程序狀態字寄存器 sbit CY = PSW^7; //進位標志位 sbit AC = PSW^6; //輔助進位標志位 sbit F0 = PSW^5; //用戶標志位0 sbit RS1 = PSW^4; //工作寄存器組選擇控制位 sbit RS0 = PSW^3; //工作寄存器組選擇控制位 sbit OV = PSW^2; //溢出標志位 sbit F1 = PSW^1; //用戶標志位1 sbit P = PSW^0; //奇偶標志位 sfr SP = 0x81; //堆棧指針寄存器 sfr DPL = 0x82; //數據指針0低字節 sfr DPH = 0x83; //數據指針0高字節 /*------------ 系統管理特殊功能寄存器 -------------*/ sfr PCON = 0x87; //電源控制寄存器 sfr AUXR = 0x8E; //輔助寄存器 sfr AUXR1 = 0xA2; //輔助寄存器1 sfr WAKE_CLKO = 0x8F; //時鐘輸出和喚醒控制寄存器 sfr CLK_DIV = 0x97; //時鐘分頻控制寄存器 sfr BUS_SPEED = 0xA1; //總線速度控制寄存器 /*----------- 中斷控制特殊功能寄存器 --------------*/ sfr IE = 0xA8; //中斷允許寄存器 sbit EA = IE^7; //總中斷允許位 sbit ELVD = IE^6; //低電壓檢測中斷控制位 8051
上傳時間: 2013-10-30
上傳用戶:yxgi5
針對目前使用的RS232接口數字化B超鍵盤存在PC主機啟動時不能設置BIOS,提出一種PS2鍵盤的設計方法?;赪78E052D單片機,采用8通道串行A/D轉換器設計了8個TGC電位器信息采集電路,電位器位置信息以鍵盤掃描碼序列形式發送,正交編碼器信號通過XC9536XL轉換為單片機可接收的中斷信號,軟件接收到中斷信息后等效處理成按鍵。結果表明,在滿足開機可設置BIOS同時,又可實現超聲特有功能,不需要專門設計驅動程序,接口簡單,成本低。 Abstract: Aiming at the problem of the digital ultrasonic diagnostic imaging system keyboard with RS232 interface currently used couldn?蒺t set the BIOS when the PC boot, this paper proposed a design method of PS2 keyboards. Based on W78E052D microcontroller,designed eight TGC potentiometers information acquisition circuit with 8-channel serial A/D converter, potentiometer position information sent out with keyboard scan code sequentially.The control circuit based on XC9536 CPLD is used for converting the mechanical actions of the encoders into the signals that can be identified by the MCU, software received interrupt information and equivalently treatmented as key. The results show that the BIOS can be set to meet the boot, ultrasound specific functionality can be achieved at the same time, it does not require specially designed driver,the interface is simple and low cost.
上傳時間: 2013-10-10
上傳用戶:asdfasdfd
串行編程器源程序(Keil C語言)//FID=01:AT89C2051系列編程器//實現編程的讀,寫,擦等細節//AT89C2051的特殊處:給XTAL一個脈沖,地址計數加1;P1的引腳排列與AT89C51相反,需要用函數轉換#include <e51pro.h> #define C2051_P3_7 P1_0#define C2051_P1 P0//注意引腳排列相反#define C2051_P3_0 P1_1#define C2051_P3_1 P1_2#define C2051_XTAL P1_4#define C2051_P3_2 P1_5#define C2051_P3_3 P1_6#define C2051_P3_4 P1_7#define C2051_P3_5 P3_5 void InitPro01()//編程前的準備工作{ SetVpp0V(); P0=0xff; P1=0xff; C2051_P3_5=1; C2051_XTAL=0; Delay_ms(20); nAddress=0x0000; SetVpp5V();} void ProOver01()//編程結束后的工作,設置合適的引腳電平{ SetVpp5V(); P0=0xff; P1=0xff; C2051_P3_5=1; C2051_XTAL=1;} BYTE GetData()//從P0口獲得數據{ B_0=P0_7; B_1=P0_6; B_2=P0_5; B_3=P0_4; B_4=P0_3; B_5=P0_2; B_6=P0_1; B_7=P0_0; return B;} void SetData(BYTE DataByte)//轉換并設置P0口的數據{ B=DataByte; P0_0=B_7; P0_1=B_6; P0_2=B_5; P0_3=B_4; P0_4=B_3; P0_5=B_2; P0_6=B_1; P0_7=B_0;} void ReadSign01()//讀特征字{ InitPro01(); Delay_ms(1);//----------------------------------------------------------------------------- //根據器件的DataSheet,設置相應的編程控制信號 C2051_P3_3=0; C2051_P3_4=0; C2051_P3_5=0; C2051_P3_7=0; Delay_ms(20); ComBuf[2]=GetData(); C2051_XTAL=1; C2051_XTAL=0; Delay_us(20); ComBuf[3]=GetData(); ComBuf[4]=0xff;//----------------------------------------------------------------------------- ProOver01();} void Erase01()//擦除器件{ InitPro01();//----------------------------------------------------------------------------- //根據器件的DataSheet,設置相應的編程控制信號 C2051_P3_3=1; C2051_P3_4=0; C2051_P3_5=0; C2051_P3_7=0; Delay_ms(1); SetVpp12V(); Delay_ms(1); C2051_P3_2=0; Delay_ms(10); C2051_P3_2=1; Delay_ms(1);//----------------------------------------------------------------------------- ProOver01();} BOOL Write01(BYTE Data)//寫器件{//----------------------------------------------------------------------------- //根據器件的DataSheet,設置相應的編程控制信號 //寫一個單元 C2051_P3_3=0; C2051_P3_4=1; C2051_P3_5=1; C2051_P3_7=1; SetData(Data); SetVpp12V(); Delay_us(20); C2051_P3_2=0; Delay_us(20); C2051_P3_2=1; Delay_us(20); SetVpp5V(); Delay_us(20); C2051_P3_4=0; Delay_ms(2); nTimeOut=0; P0=0xff; nTimeOut=0; while(!GetData()==Data)//效驗:循環讀,直到讀出與寫入的數相同 { nTimeOut++; if(nTimeOut>1000)//超時了 { return 0; } } C2051_XTAL=1; C2051_XTAL=0;//一個脈沖指向下一個單元//----------------------------------------------------------------------------- return 1;} BYTE Read01()//讀器件{ BYTE Data;//----------------------------------------------------------------------------- //根據器件的DataSheet,設置相應的編程控制信號 //讀一個單元 C2051_P3_3=0; C2051_P3_4=0; C2051_P3_5=1; C2051_P3_7=1; Data=GetData(); C2051_XTAL=1; C2051_XTAL=0;//一個脈沖指向下一個單元//----------------------------------------------------------------------------- return Data;} void Lock01()//寫鎖定位{ InitPro01();//先設置成編程狀態//----------------------------------------------------------------------------- //根據器件的DataSheet,設置相應的編程控制信號 if(ComBuf[2]>=1)//ComBuf[2]為鎖定位 { C2051_P3_3=1; C2051_P3_4=1; C2051_P3_5=1; C2051_P3_7=1; Delay_us(20); SetVpp12V(); Delay_us(20); C2051_P3_2=0; Delay_us(20); C2051_P3_2=1; Delay_us(20); SetVpp5V(); } if(ComBuf[2]>=2) { C2051_P3_3=1; C2051_P3_4=1; C2051_P3_5=0; C2051_P3_7=0; Delay_us(20); SetVpp12V(); Delay_us(20); C2051_P3_2=0; Delay_us(20); C2051_P3_2=1; Delay_us(20); SetVpp5V(); }//----------------------------------------------------------------------------- ProOver01();} void PreparePro01()//設置pw中的函數指針,讓主程序可以調用上面的函數{ pw.fpInitPro=InitPro01; pw.fpReadSign=ReadSign01; pw.fpErase=Erase01; pw.fpWrite=Write01; pw.fpRead=Read01; pw.fpLock=Lock01; pw.fpProOver=ProOver01;}
上傳時間: 2013-11-12
上傳用戶:gut1234567