freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于單片機的函數(shù)發(fā)生器論文-資料下載頁

2024-10-22 13:29本頁面

【導讀】信號發(fā)生器,它是一種用于產(chǎn)生標準信號的電子儀器,隨著科學技術(shù)的發(fā)展,對它的要求越來越高。在工業(yè)生產(chǎn)和科研中利用信號發(fā)生器輸出的信號,可以對。常用的信號發(fā)生器絕大部分是由模擬電路構(gòu)成的,當這種模擬信。波、三角波、方波和鋸齒波四種常用低頻信號。可以通過鍵盤選擇波型和輸入任。另外,我采用KEIL,以達到驗證作品功能的目的,并且做出一塊測。波形曲線均可以用三角函數(shù)方程式來表示。測中具有十分廣泛的用途。及其它自動測試設(shè)備的組成部分。程大大簡化,降低檢測費用并極大地提高檢測精度。信號發(fā)生器的頻率覆蓋范圍更可高達9kHz~4GHz。超高頻:頻率范圍1MHz以上,可達幾十兆赫茲。高頻、低頻和超低頻信號發(fā)生器,大多使用文氏橋振蕩電路,即RC振蕩電路,通過改變電容和電阻值,改變頻率。其零點不可調(diào),而且價格也比較貴,一般在幾百元左右。波和高頻波一般是不用的,一般用中頻,即幾十HZ到幾十KHZ。

  

【正文】 。結(jié)構(gòu)分別如圖 37, 38所示。 圖 36 zlg7289與單片機的鏈接 圖 37 共陰極 圖 38 共陽極 圖 39 管腳圖 其中:圖 37 為管腳圖,從 a— g 管腳輸入不同的字段碼,可顯示不同的數(shù)字或字符(其字形碼見表 5)??梢姽碴帢O和共陽極的字段碼互為反碼 。 表 5 字段碼表 ………………83H7C HBFFH00“ 滅 ”88H77HA00HFFH8 .90H6F H9C 7H38HL80H7F H891H6EHYF 8H07H7C EH31HT82H7D H6C 1H3EHU92H6D H58C H73HP99H66H48EH71HFB 0H4F H386H79HEA 4H5B H2A 1H5EHDF 9H06H1C 6H39HCC 0H3F H0共陽極字段碼共陰極字段碼顯示字符共陽極字段碼共陰極字段碼顯示字符………………滅.共陽極字段碼共陰極字段碼顯示字符共陽極字段碼共陰極字段碼顯示字符 2. LED 動態(tài)顯示方式 LED 動態(tài)顯示是將所有的數(shù)碼管的段選線并接在一起,用一個 I/O 口控 制,公共端不是直接接地(共陰極)或電源(共陽極),而是通過相應(yīng)的 I/O 口線控制。如圖 310 所示。 D3 D2 D1 D0I / O ( 1)I / O ( 2) 圖 310 LED動態(tài)掃描 本設(shè)計采用的時 使用 2 片 壓,這樣就可以方便的控制最大輸出電壓。 兩個 ADC0832 的連接方式如圖 311 圖 311 具體的對于本設(shè)計是把 DAC0832(1)的輸出作為了 ADCO832(2)的參考電壓,于是 輸出信號的峰峰值可 由 DAC0832(2)的所連接的運放的輸出 控制 。由于 DAC0832存在的非線性,輸出信號的幅值存在一定的誤差。 第 4 章 系統(tǒng) 軟件 設(shè)計 信號頻率數(shù)據(jù)采集程序 本設(shè)計 將各種波形的數(shù)據(jù)固定在單片機的程序存儲器里,通過改變這些數(shù)據(jù)的輸出速度來改變信號的頻率,然后通過改變 D/A 轉(zhuǎn)換器的參考點要來改變信號的峰峰值,電路較為簡單,成本較低 。 方法一:輸入正弦波的采樣點數(shù)如下: TABLE1: DB 128,136,145,154,163,171,179,187,195,202,209,216,222,228,233 DB 238,242,246,249,251,253,254,255,255,254,253,251 DB 249,246,242,238,233,228,222,216,209,202,195,187,179 DB 171,163,154,145,136,128,119,110,101,92,84,76,68,60 DB 53,46,39,33,27,22,17,13,9,6,4,2,1,0,0,1,2,4,6,9,13,17 DB 22,27,33,39,46,53,60,68,76,84,92,101,110,119 通過輸出的兩點間的延時來實現(xiàn)調(diào)頻的功能。我們通過兩個機器周期的語句作為調(diào)頻的最小時間單位,通過循環(huán)次數(shù)來控制時間,假設(shè)波形點數(shù)為 n,輸入頻率為 f,每個頻段的最小分辨率為 x 方法二:直接輸入計算式: 2 1592 6y 59 si n( ) 128128 x??? ? ? 本設(shè)計我們采用方法二進行設(shè)計出正弦波。 DAC0832 是 8位的 D/A 轉(zhuǎn)換器件,其工作電壓是 0— 5V,當輸入 00數(shù)字量的時候,輸出為 0V 電壓;當輸入 80 數(shù)字量的時候,輸出為 電壓;當輸入 FF數(shù)字量的時候,輸 出為 5V 電壓。單片機的 I/O 輸出均為 +5 V 的 TTL 電平,因此產(chǎn)生的正弦波幅值為 + V。將一個周期內(nèi)的正弦波形等分為 256 份,那么第 1點的角度為 0176。,對應(yīng)的正弦值為 176。;第 2 點的角度為 360176。 /256,對應(yīng)的正弦值為 ( 360176。 /256 ) ??,如此計算下去,將這些模擬量正弦值都轉(zhuǎn)換為單極性方式下的數(shù)字量,得到一張按照點號順序排列的正弦波波形數(shù)據(jù)表格 [11]。而每次送到 74LS373 的八位數(shù)字量是根據(jù)查正弦波形數(shù)據(jù)表格而得到。 其實在計算正弦波形數(shù)據(jù)的時候,并不需要算出整個 0— 2π區(qū)間的每一個值,而只需計算出 0—21π中的值就行,其他區(qū)間的值都可以通過對 0—21π中的值取不同的變換。比如21π — π的值可以和 0—21π值一一對應(yīng),而π — 2π的值可以對 0— π區(qū)間的值取反得到。計算值可以用 C語言編程得到。 幅度公式為 Y=[ 1+sin( N6490)] ( N=0,1,2?? 64) 相應(yīng)的 Y值數(shù)字化后的遞增量δ =2555≈ 那么每一個點相對于起一個點的遞增率為 A=δ 12 YY ? ( Y2 當前的點, Y1為前一個點) 所以每一個點的數(shù)字量與遞增率 A成一一對應(yīng)關(guān)系。 程序如下: zhengxianbo() { int x,y。 while(1) { for(x=0。x128。x++) { y=59*sin(2**x/128)+128。 DA0832A = y。 } } } 波產(chǎn)生 1.產(chǎn)生三角波的原理 設(shè)個自變量 i讓它不斷地自加 1,直到加到 255 時, t=i ,對 t 進行不斷地自減一直到減到 t=0,然后再不斷地重復上述過程進而產(chǎn)生三角波。 2.程序流程圖見圖 41 開 始0,ii? ? ?255i ? i ??Y NY255 ,tt? ? ?0t ?Nt ?? 圖 41 三角波流程圖 void sanjiaobo() { uchar i = 1,temp=0x00。 while(1) { DA0832A=temp。 temp+=i。 if(temp==0xc0||temp==0x00) i=0i。 } } 產(chǎn)生 1.產(chǎn)生方波的原理 設(shè)個自變量 i=0 使之延時一段時間,再另 i=255 時在延時與 i=0 相同的時間,然后在重復上述過程。 42 開 始0,i ? 延 時255 ,i ? 延 時 圖 42 方波流程圖 3.程序 fangbo() { uchar i。 CS=1。 while(1) { if(i0x7f) DA0832A=0x00。 if(i=0x7f) DA0832A=0xff。 i++。 if(i==0xff) i=0。 } } 1.產(chǎn)生鋸齒波的原理 鋸齒波中的斜線用一個個小臺階來逼近,在一個周期內(nèi)從最小值開始逐步遞增,當達到最大值后又回到最小值,如此循環(huán),當臺階間隔很小時,波形基本上近似于直線。適當選擇循環(huán)的時間,可以得到不同周期的鋸齒波。鋸齒波發(fā)生原理與方波類似,只是高低兩個延時的常數(shù)不同,所以用延時法,來產(chǎn)生鋸齒波 ,設(shè)個自變量 i讓它不斷地自加 1,直到加到 255, DAC0832 可以又自動歸 0,然后再不斷地重復上述過程進而產(chǎn)生鋸齒波。 2.程序流程圖見圖 43 開 始0,ii? ? ?255i ?i??Y 0N ? 圖 43 鋸齒波流程圖 3.程序 juchi() { uchar temp=0x00。 while(1) { DA0832A=temp++。 if(temp==0xc0) temp=0。 } } zlg7289檢測程序 程序 include include include typedef unsigned char uchar。 sbit CS=P1^0。 sbit CLK=P1^1。 sbit DIO=P1^2。 sbit KEY=P1^3。 //需要在 INT 區(qū)把 KEY 用跳線冒跳到 INT0,其余四個跳到 VCC //這樣, P3^2 就相當于直接連接到 key uchar half_hign。 uchar half_low。 bdata uchar _data。 sbit mos_bit=_data^7。 sbit low_bit=_data^0。 void delay_50us() { uchar i。 for (i=0。 i6。 i++){。} } void delay_8us() { uchar i。 for (i=0。 i1。 i++){。} } void delay_50ms() { uchar i,j。 for(j=0。j50。j++) for(i=0。i125。i++){。} } void delay_5s() { uchar i = 100。 while(i) delay_50ms()。 } void send(uchar sebuf) { uchar i。 _data=sebuf。 CLK=0。 CS=0。 delay_50us()。 for(i=0。i8。i++) { delay_8us()。 DIO=mos_bit。 CLK=1。 delay_8us()。 _data=_data1。 CLK=0。 } DIO=0。 } uchar receive(void) { uchar i,rebuf。 CLK=1。 delay_50us()。 for(i=0。i8。i++) { _data=_data1。 low_bit=DIO。 CLK=1。 delay_8us()。 CLK=0。 delay_8us()。 } rebuf=_data。 DIO =1。 CS=1。 return rebuf。 } void reset(void) { DIO=1。 delay_50ms()。 send(0xa4)。 CS=1。 } /* 7289 顯示程序 , addr 為顯示位置 范圍 0~7, dat 為現(xiàn)實內(nèi)容 */ void display(uchar addr,uchar dat) { if(addr0 || addr 7) return。 send(0xc8 + addr)。 delay_50us()。 send(dat)。 CS=1。 } /* 發(fā)送雙字節(jié)命令 */ void sendmand(uchar addr,uchar dat) { send(addr)。 delay_50us()。 send(dat)。 CS=1。 } /* 獲取鍵盤的位置碼 */ uchar getkeycode(uchar dat) { uchar key。 switch(dat) { case 0x2f: key = 0x01。break。 case 0x27: key = 0x02。break。 case 0x1f: key = 0x03。break。 case 0x17: key = 0x04。break。 case 0x0f: key = 0x05。break。 case 0x07: key = 0x06。break。 case 0x2e: key = 0x07。break。 case 0x26: key = 0x08。break。 case 0x1e: key = 0x09。break。 case 0x16: key = 0x10。break。 case 0x0e: key = 0x11。break。 case 0x06: key = 0x12。break。 case 0x2d: key = 0x13。break。 case 0x25: key = 0x14。break。 case 0x1d: key = 0x15。break。 case 0x15: key = 0x16。break。 case 0x0d: key = 0x17。break。 case 0x05: key = 0x18。break。 case 0x2c: key = 0x19。break。 case 0x24: key = 0x20。break。 case 0x1c: key = 0x21。break。 case 0x14: key = 0x22。break。 case 0x0c: key = 0x23。break。 case 0x04: key = 0x24。break。 default: key = 0xee。break。 } return key。 } main()
點擊復制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1