會員登陸
帳號:

密碼:

記住我



忘記密碼?

現在註冊!
網站導航
最新下載
訪問統計 (自2012/5/3)


正在流覽:   1 名訪客





演算法
新會員
註冊日期:
2011/08/02 18:14
所屬群組:
註冊會員
文章: 7
等級: 1; EXP: 60
HP : 0 / 15
MP : 2 / 241
離線
您好:

是否有以下的演算法應用範例參考:

1、3位BCD碼轉成3位數的整數(如個位BCD碼=3,拾位BCD碼=9,佰位BCD碼=1,轉成193整數。


2、當10位A/D轉成數位碼(16碼)時 ,轉成整數的演算法(原來的類比值) ,例如數位碼0xff,0xc0,再轉成整數=5(max)的演算法。

3、皆用C18的。
Tks

1月06日 09:15:46
轉換PDF檔 列印


Re: 演算法
資深會員
註冊日期:
2007/06/05 21:45
所屬群組:
註冊會員
文章: 899
等級: 26; EXP: 77
HP : 0 / 644
MP : 299 / 18147
離線
計算機概論 的說....

>>... BCD碼=3,拾位BCD碼=9,佰位BCD碼=1,轉成193整數

BCD[0]*100+BCD[1]*10+BCD[2]


>> ...當10位A/D轉成數位碼(16碼)時 ,轉成整數的演算法(原來的類比值) ,例如數位碼0xff,0xc0,再轉成整數=5(max)的演算法。

基本上應該是有小數的....除非你講清楚,你在做什麼?

A/D 是類比轉數位...
例: 0 ~ 5 V 轉成 0 ~ 0x3ff(十進制1023)
所以要從 0~ 0x3ff 反算原值(0到5V)
基本上公式為 Voltage = AD值/1024階*5V
AD值 = 0 , Voltage = 0/1024*5V = 0V
AD值 = 1 , Voltage = 0/1024*5V = 4.883mV
AD值 = 2 , Voltage = 0/1024*5V = 9.766mV
...
AD值 = 1023 , Voltage = 0/1024*5V = 4.995V

1月06日 10:54:01
_________________
程式是
依照寫出來(的code),跑出結果
不是依照你想出來的,得到結果

先有需求規格 後有解決方案
轉換PDF檔 列印


Re: 演算法
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 13831
等級: 72; EXP: 0
HP : 1065 / 1775
MP : 4610 / 66074
離線
補充一下, C18 有提供一些轉換函數如 itoa( ), atoi( ) ... 可以參考一下 W401 教育訓練課程裡的第六章節,如下圖所示:


實際應用 ADC 的讀值顯示電壓值,可以參考 "W301 Advance PICC Application" 裡的練習六的寫法,如下:

程式裡顯示電壓值到 mV 是怎樣做到的?
Disp_Temp = (((unsigned long) Temp_Buff ) * 4883 ) / 100 ;
5V / 1024 = 4.883 mV , 要顯示 4.9mV 的精度
不要使用浮點數運算,只要用整數運算即可



Read_ADC
();                                // 讀取 ADC (VR2) 的轉換值
            
Temp_Buff= ADC_Result.Word & 0x3FF;        // 將無用位元遮誚 0
            
Disp_Temp=(((unsigned long)Temp_Buff)*4883)/100;     // 10-bit 解析度,1 LSB=4.883mV
                                                      // 算出實際電壓並取到 0.1mV
    
              
DisplayDigit1(Disp_Temp/10000);            // 顯示 V LCD 第一數字上
            
Disp_Temp=Disp_Temp%10000;                // 取出餘數
                
            
DisplayDigit2(Disp_Temp/1000 );            // 顯示 100mV    
            
Disp_Temp=Disp_Temp%1000;                
    
            
DisplayDigit3(Disp_Temp/100);            // 顯示 10mV
            
Disp_Temp=Disp_Temp%100;
    
            
DisplayDigit4(Disp_Temp/10);            // 顯示 mV
            
Disp_Temp=Disp_Temp%10;
    
            
DisplayDigit5(Disp_Temp);                // 顯示 0.1mV
    
             
SEG_4DP=1 ;                                // 點小數點
    
              
SEG_m = !SEG_m;                                // 顯示 mV 的符號
            
SEG_V= !SEG_V;
//            SEG_BAT=!SEG_BAT;

            
Disp_Count = 20;                        //

附加檔案:



jpg  擷取1.jpg (124.09 KB)
16_586f13a52772f.jpg 969X719 px

jpg  擷取.JPG (123.73 KB)
16_586f13aebfafd.jpg 963X724 px

1月06日 11:49:06
轉換PDF檔 列印


Re: 演算法
新會員
註冊日期:
2011/08/02 18:14
所屬群組:
註冊會員
文章: 7
等級: 1; EXP: 60
HP : 0 / 15
MP : 2 / 241
離線
多謝了。

1月07日 09:21:16
轉換PDF檔 列印


Re: 演算法
新會員
註冊日期:
2011/08/02 18:14
所屬群組:
註冊會員
文章: 7
等級: 1; EXP: 60
HP : 0 / 15
MP : 2 / 241
離線
多謝了。

1月07日 09:23:23
轉換PDF檔 列印






無法在此發表文章
可以在此觀看文章
無法回覆文章
無法編輯自己的文章
無法刪除自己的文章
無法發起投票調查
無法在此投票
無法上傳附加檔案
無法不經審核直接發表文章

[進階搜尋]


搜尋
線上教學影片
網頁捷徑
教育訓練
其它網站連結
電話: 02-25000405
產品技術問題產品技術支援專線:0800-717718 台北02-25088221 新竹03-5778366 Ext. 8600 高雄07-2137830 MicrochipDIRECT 專線: 07-2137830
Powered by XOOPS © 2001-2012 The XOOPS Project