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


Browsing this Thread:   1 Anonymous Users






Re: 請問lcd string的顯示
#10
版主
版主


查看用戶資訊
請先確定il 轉換 str[ ] 後的字串是否正確顯示在 Watch Window 裡。如果是 1 的話應該顯示 0x30, 0x30, 0x30, 0x31,0x00 才對。請先確認。
參照:

ltoa(i1,str); // convert timer to string //問題點2.
putrsLCD(str);// 顯示資料 //問題點3

你用錯函數了,putrsLCD( ) 是用來顯示 ROM 的字串值,str[5] 是 RAM 的陣列,請改用 putsLCD( )

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


Re: 請問lcd string的顯示
#9
初級會員
初級會員


查看用戶資訊
也可以試試SPRINTF() 的函試,滿好用的喔!

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


Re: 請問lcd string的顯示
#8
資深會員
資深會員


查看用戶資訊
程式debug 的話
就要有勞板主和其他前輩了
我也會的不多
抱歉啦 !!!

發表於: 2007/11/13 17:34
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 請問lcd string的顯示
#7
新會員
新會員


查看用戶資訊
加了 str[5] 在程式前
可以在watch 看到str 的值變成 i1
但是顯示出來依然是亂碼 是ASCII code 轉換的問題嗎?
請教教我

發表於: 2007/11/13 14:41
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 請問lcd string的顯示
#6
資深會員
資深會員


查看用戶資訊
程式有無錯誤並無細看
但兩個建議
1. AD 初始化程式和OpenLCD() 放在while() 之前執行一次就好
不需要放在迴圈裏面,每次都執行一次
而AD轉換和LCD顯示程式才放在while裡面

2. str[],不指定陣列大小的話,其實和 一般一byte 的變數是一樣的,只佔一個byte, 想當然爾的,有可能會出問題



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


Re: 請問lcd string的顯示
#5
新會員
新會員


查看用戶資訊
我把我的程式貼過來好了,基本上這是一個由a/d 接收數值,做運算,再把數值顯示到lcd的程式,但其中有三個問題點

第一 問題點 :接收進來的值 i 是一個long 的格式,能做乘除法嗎?如能,該如何做?
第二問題點: ltoa(i1,str)是由 i1 轉換過來的string,我如何能知道他是否有轉換過去,能在watch 裡看到嗎?

第三點 現在我都無法把putrsLCD(str) 正確顯示到lcd上,是因為clear memory嗎?該如何補救
但第一列的 putrsLCD("a/d value is "); 可以正常顯示

請各位高手幫幫忙 感激不盡


#include     <p18f4520.h>     //納入微控制器定義檔
#include     <delays.h>         //納入時間延遲函式庫定義檔
#include     <adc.h>            //納入類比訊號轉換函式庫定義檔
#include     "P18F_LCD.h"        //納入LCD函式庫定義檔

// 結構位元定義
#pragma config     BOREN=OFF, BORV = 2, PWRT=ON, WDT=OFF, LVP=OFF 

#define   OSC_CLOCK 10  // 定義時序頻率
void delay_ms(long A) ;// 宣告時間延遲函式原型
void AD_init(void); //adc converter
void lcd_display(void); //lcd display

long  i;  //AD 輸入
long  i1;//數值運算
char str[];


void main()
{
       While(
1)
           {
               
AD_init();
                 
lcd_display();
                 }
}
void AD_init()
{
  
//initial adc
 // 開啟類比訊號轉換模組
//  OpenADC(ADC_FOSC_32 & ADC_LEFT_JUST & ADC_20_TAD,
//          ADC_CH0 & ADC_INT_OFF & ADC_VREFPLUS_VDD & 
//          ADC_VREFMINUS_VSS, 14);
//use an0 measure left sensor 
   
ADCON0=0x01;        // 選擇AN0通道轉換,開啟ADC模組
   
ADCON1=0x0D;        // 使用VDD,VSS為參考電壓,設定AN0~AN1為類比輸入
   
ADCON2=0x3A;        // 結果向左靠齊並設定轉換時間為Fosc/32,採樣時間為20TAD

      
Delay10TCYx(5);    //時間延遲以完成採樣
      
ConvertADC() ;    //進行訊號轉換
      
while(BusyADC());    //等待轉換完成
      
iADRESH ;     //將left solar voltage 結果傳至i
}


void delay_ms(long A) {
//This function is only good for OSC_CLOCK higher than 4MHz
    
long i;
    
int us2TCY;
    
us2TCY=(10*OSC_CLOCK)>>2;    // >>2相當於除以4
    
for(i=0;i<A;i++) Delay100TCYx(us2TCY);        
}

void lcd_display() 
{
        
i1=i;                  //問題點1
   
OpenLCD();                    // 初始化LCD模組
   
WriteCmdLCD0x01 );            // 清除LCD顯示資料
   
LCD_Set_Cursor0);        // 顯示位置回至第0行第0格
   
delay_ms(1);                    // 時間延遲 
   
putrsLCD("a/d value is ");    // 顯示資料
  
   
LCD_Set_Cursor1);        // 顯示位置調至第1行第0格
   
delay_ms(1);                    // 時間延遲

   
ltoa(i1,str); // convert timer to string   //問題點2.
   
putrsLCD(str);// 顯示資料        //問題點3
                                
}


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


Re: 請問lcd string的顯示
#4
資深會員
資深會員


查看用戶資訊
沒看到程式中有給定 i 值
若i 不是數字資料的話??

str 也沒指定陣列大小
可以嗎??

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


Re: 請問lcd string的顯示
#3
新會員
新會員


查看用戶資訊
請問那我應該如何做呢?
是否應該再include 甚麼檔進來?


麻煩你了!謝謝

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


Re: 請問lcd string的顯示
#2
版主
版主


查看用戶資訊
ltoa( ) 轉換完後的ASCII Code 字串是存在 RAM 裡,Clear All Memory 不就是把 RAM 清為零嗎? 所以 RAM 的資料就不再是字串的格式了。

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


請問lcd string的顯示
#1
新會員
新會員


查看用戶資訊
版大您好:
請問要把一個long的變數(數字)顯示在lcd上
之前用

long i ;

char str[];

OpenLCD(); // 初始化LCD模組
WriteCmdLCD( 0x01 ); // 清除LCD顯示資料
LCD_Set_Cursor( 0, 0 ); // 顯示位置回至第0行第0格
delay_ms(1); // 時間延遲

ltoa(i,str); // convert timer to string
putrsLCD(str);// 顯示資料


就可以把 i 這個變數顯示出來
但後來我在debug時下了clear all memory的指令

從此之後顯示的數字就不能顯示,都是一堆亂碼

請問是甚麼原因?
還是我又把程式改錯了!

找了很久,都找不出原因!

謝謝





發表於: 2007/11/12 20:57
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... ]

教育訓練中心

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