全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:6347
推到 Plurk!
推到 Facebook!

[求救]如何用C產生sin弦波???

答題得分者是:mymj
yusome66
一般會員


發表:7
回覆:4
積分:2
註冊:2003-11-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-11-12 23:12:43 IP:218.160.xxx.xxx 未訂閱
我是要做正弦脈波寬度調變電路的,先製作三相電壓命令產生電路及三角波電路。 在三相電壓命令產生電路中,由數位開關DAC08、電壓控制振盪器(VCO)CD4046、計數器CD4040、、2732ROM及DAC08所組成。 其中由數位開關DAC08、電壓控制振盪器(VCO)CD4046組成一數位式頻率產生電路;CD4040各輸出腳之方波波形頻率會已除二之頻率遞減,以作為ROM之位址解碼線。。ROM中燒錄著sinθ及sin(θ-2Π/3)一週期之資料,此資料為用c語言撰寫的程式所產生得二進位檔,經由萬用燒錄器燒錄於ROM2732。 經由CD4040之輸出位址,將燒錄於ROM2732的弦波資料,依序由資料匯流排輸出之D/A而產生Va*、Vb*及Vc*三相控制命令。 想請問這顆ROM2732的C語言程式要怎麼寫呢?找了一些資料,導師不會,去問其他老師說不對,叫我們自己改...我不會程式語言,有人可以幫幫我嗎?求助無門啊..(專題發表就要到了...救命..不想延畢阿!!!)感謝~!!! yusome66@yahoo.com.tw (書中好像提到ROM2732有8k記憶體,這實驗只應用到512bytes作為一週期弦波之資料。)
frederick
中階會員


發表:101
回覆:108
積分:66
註冊:2002-08-01

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-11-13 01:32:21 IP:210.244.xxx.xxx 未訂閱
yusome66: 我想您要的是一個table表格。 1. 一週期是0~360度。 2. DAC08不是數位開關,是數位/類比轉換器。 這顆是8位元的。也就是有0~255的變化量。 3. 那您就把0~360度對應到0~255,您就可算出一格是幾度。 4. 如果要製作表格,可先在PC上用C或您熟悉的語言利用數學函式來換算出第3 點所對應的值(算出來總會差一兩度,解析度不夠嘛,但總是差強人意拉)。 5. 可先把第四點所換算的結果輸出到螢幕上,看換算對否。在進一步地把它轉成16進制資料,再存成檔案。 6. 把所存的檔案直接燒到ROM中。 7. 裝上您的電路,用示波器量一量吧。 希望以上七點至少能給您一個思考的方向。 如果有誤,還請站上大老指教,謝謝!
yusome66
一般會員


發表:7
回覆:4
積分:2
註冊:2003-11-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-11-13 22:11:17 IP:218.160.xxx.xxx 未訂閱
引言: yusome66: 我想您要的是一個table表格。 1. 一週期是0~360度。 2. DAC08不是數位開關,是數位/類比轉換器。 這顆是8位元的。也就是有0~255的變化量。 3. 那您就把0~360度對應到0~255,您就可算出一格是幾度。 4. 如果要製作表格,可先在PC上用C或您熟悉的語言利用數學函式來換算出第3 點所對應的值(算出來總會差一兩度,解析度不夠嘛,但總是差強人意拉)。 5. 可先把第四點所換算的結果輸出到螢幕上,看換算對否。在進一步地把它轉成16進制資料,再存成檔案。 6. 把所存的檔案直接燒到ROM中。 7. 裝上您的電路,用示波器量一量吧。 希望以上七點至少能給您一個思考的方向。 如果有誤,還請站上大老指教,謝謝!
非常謝謝你~!!! 可是......我不會寫C(對程式語言有恐懼感)...>_<"
mymj
版主


發表:132
回覆:486
積分:608
註冊:2002-10-25

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-11-13 22:53:08 IP:203.67.xxx.xxx 未訂閱
首先我對你的"正弦脈波寬度調變電路"有些疑問,你是否可將想產生的波型劃出貼上. 你的目的該是利用一個方波產生器產生脈波然後送到一個總除256的電路,這除256是以除2,4,8,16,32...256共八個輸出點,利用此輸出連接到ROM的位址輸入端,而ROM的DATA端連到dac08的數位輸入端如此只要控制ROM的位址就可令DAC輸出ROM中DATA的對應值(設ROM中已少燒錄有DATA) 關於ROM內容參考松崗出版 8051單晶片實作寶典 鄧錦城編著(適用時請買一本,不要影印)第十一章答案在P633 634 635    努力吧!本擬貼一張圖,不過......還是自行努力比例實在 .    我很好奇,不知你所要交的報告是 高職?專科?大學?可否告知?    < >一分耕耘,一分收穫? < >
yusome66
一般會員


發表:7
回覆:4
積分:2
註冊:2003-11-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-11-26 03:32:22 IP:218.160.xxx.xxx 未訂閱
引言: 首先我對你的"正弦脈波寬度調變電路"有些疑問,你是否可將想產生的波型劃出貼上. 你的目的該是利用一個方波產生器產生脈波然後送到一個總除256的電路,這除256是以除2,4,8,16,32...256共八個輸出點,利用此輸出連接到ROM的位址輸入端,而ROM的DATA端連到dac08的數位輸入端如此只要控制ROM的位址就可令DAC輸出ROM中DATA的對應值(設ROM中已少燒錄有DATA) 關於ROM內容參考松崗出版 8051單晶片實作寶典 鄧錦城編著(適用時請買一本,不要影印)第十一章答案在P633 634 635 努力吧!本擬貼一張圖,不過......還是自行努力比例實在 .
謝謝~~,我有在單晶片實做寶典上找到,是在D/A轉換有產生弦波的程式。但是我需要的是用c寫的程式,至於是用Tourbo c還是c 我也不清楚,謝謝你的熱心回應。請問像產生弦波的程式8051要找D/A轉換的章節,那找c要找哪個部分會有呢?要我寫是寫不出來的,我只能去找書上有寫的...ㄞ~不懂程式真是痛苦ㄚ~>_<~ 我是二專的專題.救命ㄚ~
mymj
版主


發表:132
回覆:486
積分:608
註冊:2002-10-25

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-11-26 22:37:31 IP:211.74.xxx.xxx 未訂閱
根據你的需求(用到ROM)該是利用硬體來作SIN 波,為何有C語言得問題? 你是否可以將你的問題說明清楚? 之前回覆的 "ROM內容參考松崗出版 8051單晶片實作寶典 鄧錦城編著"已經將答案告訴你了?那裡不是有個SINWAVETABLE 那就是你要燒到ROM的資料(注意那是10進制)    
yusome66
一般會員


發表:7
回覆:4
積分:2
註冊:2003-11-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-12-14 17:44:05 IP:218.160.xxx.xxx 未訂閱
引言: 根據你的需求(用到ROM)該是利用硬體來作SIN 波,為何有C語言得問題? 你是否可以將你的問題說明清楚? 之前回覆的 "ROM內容參考松崗出版 8051單晶片實作寶典 鄧錦城編著"已經將答案告訴你了?那裡不是有個SINWAVETABLE 那就是你要燒到ROM的資料(注意那是10進制) >< face="Verdana, Arial, Helvetica"> 真的非常謝謝你,我使用記事本將SINWAVETABLE 的值輸入,127,130,133,136,139,142,145,148 151,154,157,160,163,166,169,172 175,178,181,184,186,189,192,194 197,200,202,205,207,209,212,214 216,218,221,223,225,227,229,230 232,234,235,237,239,240,241,243 244,245,246,247,248,249,250,250 251,252,252,253,253,253,253,253 254,253,253,253,253,253,252,252 251,250,250,249,248,247,246,245 244,243,241,240,239,237,235,234 232,230,229,227,225,223,221,218 216,214,212,209,207,205,202,200 197,194,192,189,186,184,181,178 175,172,169,166,163,160,157,154 151,148,145,142,139,136,133,130 126,123,120,117,114,111,108,105 102, 99, 96, 93, 90, 87, 84, 81 78, 75, 72, 69, 67, 64, 61, 59 56, 53, 51, 48, 46, 44, 41, 39 37, 35, 32, 30, 28, 26, 24, 23 21, 19, 18, 16, 14, 13, 12, 10 9, 8, 7, 6, 5, 4, 3, 3 2, 1, 1, 0, 0, 0, 0, 0 0, 0, 0, 0, 0, 0, 1, 1 2, 3, 3, 4, 5, 6, 7, 8 9, 10, 12, 13, 14, 6, 8, 19 21, 23, 24, 26, 28, 30, 32, 35 37, 39, 41, 44, 46, 48, 51, 53 56, 59, 61, 64, 67, 69, 72, 75 78, 81, 84, 87, 90, 93, 96, 99 102,105,108,111,114,117,120,123 然後用x8051編譯產生.obj再link後產生.HEX,然後用萬用燒錄器燒錄燒入。 但ic放上電路後,data bus沒有弦波波形產生;我把SINWAVETABLE中的資料數值的","號全部去掉在燒,結果也是一樣量沒波形??
mymj
版主


發表:132
回覆:486
積分:608
註冊:2002-10-25

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-12-15 00:30:11 IP:210.68.xxx.xxx 未訂閱
你的問題可能在資料產生的過程發生問題 1.將燒好rom的放到燒錄器,讀回資料簡檢查數據是否正確第一筆資料是97,9A... 2.上述資料其實可以以EXCEL模擬產生並產生為16進制碼(想一想,不難的) 3.所貼電路圖模糊,是否重貼? 4.如果資料無誤,請檢查TP1是否有脈波,2732的12345678(ADDRESS BUS)是否有脈波 5.檢查2732的 DATA BUS 各腳是否有信號 6.上述沒有問題後就容易了    < >< >
jason dan
一般會員


發表:25
回覆:31
積分:11
註冊:2005-05-17

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-05-30 23:39:14 IP:220.136.xxx.xxx 未訂閱
yusome66先生你好 , 我想問你ㄉ是 你此電路圖有用到cd4040這科計數器, 據我所知他是12位元二進位計數器 是否可提供一下這顆ic的功能接腳說明及相關資料?? 我超想知道的, 可否講一下??拜託
hh3632bone
一般會員


發表:5
回覆:9
積分:2
註冊:2004-10-02

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-05-31 10:24:02 IP:220.134.xxx.xxx 未訂閱
建議你先用現有的軟體或程式(matlab,c,vb...)來跑出一個完整週期的正弦波 ,並將資料記錄下來,再根據你所需要的正弦波的頻率來將這筆資料完整送出 ex. 若將sin記錄為360點的數值資料 如果要1hz,那就是程式要寫為每秒需送360點,也就是每1/360秒就將你 的資料送出一次 程式多做就會,不要放棄
阿信
版主


發表:111
回覆:983
積分:813
註冊:2005-03-10

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-05-31 10:30:46 IP:61.66.xxx.xxx 未訂閱
你的東西就是    1.把SinTable寫到ROM 2.依序把ROM裡面的值讀出來 3.用DAC08轉成類比信號 4.跟三角波做比較產生PWM弦波信號    所以跟"C語言"完全沒有關係 純粹是硬體     --------------------------------    ROM不是這樣燒的吧 要用x8051  要像這樣才行
DB 127,130,133,136,139,142,145,148
DB 151,154,157,160,163,166,169,172
...
然後燒完要讀出來檢查 電路動作原理你懂嗎? TP1要有方波 CD4040的輸出要計數(也是方波) 2732輸出SinTable TP4,TP5要有弦波輸出 ------------------- 美好的事物 稍縱即逝
系統時間:2024-05-15 23:04:01
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!