• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
:::


Browsing this Thread:   1 Anonymous Users




(1) 2 »


Re: dsPIC30f4011 A/D 問題
#14
資深會員
資深會員


查看用戶資訊
我覺得你有空多練練 C 程式的基本寫作 對你會很有幫助 不過你有心做一些新的嘗試 還是值得鼓勵

加油

發表於: 2007/12/7 17:45
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: dsPIC30f4011 A/D 問題
#13
初級會員
初級會員


查看用戶資訊
成功解決^^謝謝~終於可以顯示10位元的A/D了

發表於: 2007/12/7 17:27
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: dsPIC30f4011 A/D 問題
#12
資深會員
資深會員


查看用戶資訊
*.c 檔只是 C 程式碼, 要經編譯 連結後做成 .hex 機器碼 才能燒錄到 chip 裡

不是改 c 檔 就會直接產生 hex 檔, MPLAB 是一開發環境 他會去看 project 的設定 去執行需要的編譯 或連結動作 當然主要目的是 產生 hex 檔 或 製作 library...

一般有做變動就需 重新 make hex 檔 有時用 build all 全部做一更新

發表於: 2007/12/7 14:32
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: dsPIC30f4011 A/D 問題
#11
初級會員
初級會員


查看用戶資訊
非常感謝!!

再請問,我改的方式好像是錯誤的步驟,我第一次改的方式是直接去C:\Tutorial\EX11_1_ADC_Manual裡的 C30EVM_LCD.C 筆記本改,但沒有效果,第二次我就去MPLAB開啟EX11_1_ADC_Manual的範例程式後,再他 Source Filec下裡的 C30EVM_LCD.C 改,改完後程式執行要讓他run的時候出現 The project is out of date.Would you like to build it now.

是否還要什麼步驟呢?因為我只是單純的把內容改過後儲存

發表於: 2007/12/7 10:51
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: dsPIC30f4011 A/D 問題
#10
資深會員
資深會員


查看用戶資訊
void put_Num_LCDunsigned int The_Number10 )
{
unsigned int The_Number;
unsigned char Temp_Char_1000Temp_Char_100Temp_Char_10Temp_Char ;

The_Number The_Number10 1000;  //1000 的餘數

Temp_Char_1000 The_Number10 /1000 //取千位數的數字
putcLCDTemp_Char_1000 '0' ) ;

Temp_Char_100 The_Number /100 //取百位數的數字
putcLCDTemp_Char_100 '0' ) ; //轉換為ASCII編碼,'0'的編碼加數字大小
Temp_Char_10 = (The_Number Temp_Char_100*100) /10 //取十位數的數字
putcLCDTemp_Char_10 '0' ) ;
Temp_Char The_Number - ( Temp_Char_100*100 Temp_Char_10 10 ) ; //取個位數的數字
putcLCDTemp_Char '0' ) ;

}


前幾行稍加修改 主要把 put_Num_LCD 的參數改為 unsigned int The_Number10 因 unsigned char 只能處理 8 bit 的資料

再來把原來的 The_Number 設為 1000 的餘數 則原來處理 3 位數的顯示程式可不用更動

然後取千位數 Temp_Char_1000 把他先顯示出來即可

發表於: 2007/12/7 7:26
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: dsPIC30f4011 A/D 問題
#9
初級會員
初級會員


查看用戶資訊
這是"C30EVM_LCD.h"裡put_Num_LCD的程式寫法,如何改為10位元的顯示法呢。



void put_Num_LCD( unsigned char The_Number )
{

unsigned char Temp_Char_100, Temp_Char_10, Temp_Char ;

Temp_Char_100 = The_Number /100 ; //取百位數的數字
putcLCD( Temp_Char_100 + '0' ) ; //轉換為ASCII編碼,'0'的編碼加數字大小
Temp_Char_10 = (The_Number - Temp_Char_100*100) /10 ; //取十位數的數字
putcLCD( Temp_Char_10 + '0' ) ;
Temp_Char = The_Number - ( Temp_Char_100*100 + Temp_Char_10 * 10 ) ; //取個位數的數字
putcLCD( Temp_Char + '0' ) ;
}

發表於: 2007/12/7 5:41
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: dsPIC30f4011 A/D 問題
#8
初級會員
初級會員


查看用戶資訊
謝謝版主和各位先進的熱心幫忙,問題已找出來果然要把
ADCValue = (ADCBUF0 >> 2) 改成
ADCValue = (ADCBUF0)

程式可執行了^^~之前是我軟體操作的錯誤拍謝~

但我執行結果有發現新的問題,程式執行後我調VR2可變電阻,程式未修改前LCD顯示的最大值是255最小值為0,現在程式修改後由於已從8位元改成10位元A/D轉換,因此VR2每ㄧ小格電壓值被除以(1024-1),照理說最大值應為1023最小為0,但我微調時發現當他超過255後LCD所顯示的數字就開始亂跳,我發現問題應該出在最後ㄧ行

put_Num_LCD( ADCValue ) ; // 將類比轉換結果以十進位數字顯示至液晶顯示器

這個函式指令是曾百由這本書第8章所講到的,他的功能和作用

put_Num_LCD( unsigned char ) ; //在lcd上顯示10進位數字引數

而其中的 unsigned char 所表示的數值資料只能是8位元,0-255
是否因此而造成大於255後數值就無法計算造成亂掉的局面,如果要修改
是否就必須從lcd的原型宣告檔案"C30EVM_LCD.h"進入修改。

這是我發現的問題但不知是不是這樣,請先進不令指教。

發表於: 2007/12/6 5:40
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: dsPIC30f4011 A/D 問題
#7
中級會員
中級會員


查看用戶資訊
板主所提的修改應該是很正確的, 但qwert你卻回覆沒有效果...

我想你是不是沒有重新 build 專案, 導致沒有產生新的程式碼!

因為你有提到使用了已有的範例來做.

----------------------------------------------------------------------
重新 build 操作,

請點選 Project -> Build All

發表於: 2007/11/30 10:16
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: dsPIC30f4011 A/D 問題
#6
版主
版主


查看用戶資訊
用Watch Window 配合 Breakpoint 看一下變數的結果。
ADCBUF0 是ADC轉換完成後所存的暫存器。
兩個的值應該是一樣的。

發表於: 2007/11/30 9:59
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: dsPIC30f4011 A/D 問題
#5
初級會員
初級會員


查看用戶資訊
板主你好
void Show_ADC(void)
{
unsigned char dummy ;
unsigned int ADCValue;
.
.
}
不太懂~他不是已經設定為INT了嗎?

發表於: 2007/11/29 20:00
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------