• slider image 442
  • slider image 492
  • slider image 493
  • slider image 494
  • slider image 495
  • slider image 496
  • slider image 488
  • slider image 491
:::

論壇索引


Board index » All Posts (mechwu)




Re: PIC12F675 該如何使用 ICD2 燒錄或模擬???
#81
資深會員
資深會員



8 pin 的可以用 ICD2 燒錄,但不能用 ICD2 模擬

14 pin 的 PIC12F675-ICD 才能用 ICD2 模擬

詳見

http://ww1.microchip.com/downloads/en/DeviceDoc/51292h.pdf

發表於: 2005/1/26 9:44
頂部


Re: cc5x台灣代理商
#82
資深會員
資深會員


http://www.bknd.com/cc5x/index.shtml

The compiler is mainly sold directly to end users by B Knudsen Data. Please visit the BUY NOW page. The distributors are very few and are not listed on these WEB pages.

Edition EXTENDED STANDARD
Single user license (US $) $520 $250

這種網路價,代理商沒得賺

發表於: 2005/1/25 23:10
頂部


Re: 關于EEPROM的讀寫問題
#83
資深會員
資深會員


參照:

xfsmart 寫道:
我將右邊的範例程式在電路上麵調試過,怎么會還是齣現亂碼啊,請問一下各位高手,關于MICROCHIP的3-wire的EEPROM應該怎么樣讀寫啊,我現在使用的是組閤語言,各位能否給我提供源程式參考一下,謝謝!!!!


您是要用 PIC 內部的 Data EEPROM

還是要用 外接的 EEPROM ?

如果要用組語玩外接的 EEPROM ... 玩過 IIC bus 嗎?

先看看 EEPROM 討論區吧

如果不懂 IIC 的話,建議您改用 CCS-C


發表於: 2005/1/25 23:04
頂部


Re: HI-TECH C的問題?
#84
資深會員
資深會員


參照:

elecy 寫道:
如何使用SWAPF的功能呀~~好像沒有巨集耶~


Hi-Tech C:

在定义文件中定义:#define swap(x) asm("swapf x,f")

c代码中应用: swap(x);

http://www.goldenchip.com.cn/gdbbs/di ... melimit=&operator=&page=1

CCS-C:
#define swap(a)   #asm SWAPF a,F #endasm

void main( )
{
   
int8 x=0x45;
   
swap(x);
   
#asm SWAPF x,f #endasm // 這兩行效果相同
...


發表於: 2005/1/21 20:00
頂部


Re: LCD顯示
#85
資深會員
資深會員


參照:

xfsmart 寫道:
我使用的是HI-TECH的編譯軟體,是不是也可以適當的改變LCD_init(),也可以應用printf指令將float格式在LCD上麵顯示齣來?


有人這麼說

http://www.goldenchip.com.cn/gdbbs/di ... melimit=&operator=&page=2

發表於: 2005/1/19 22:36
頂部


Re: LCD顯示
#86
資深會員
資深會員


參照:

cct1210 寫道:
...文中提到
<只要那四條 data 線在同一個 PORT 就好,其他三條可以隨意變更,把 LCD.C 改幾行就好。>
請教一下,要如何修改LCD.C,使得其他三條可以隨意變更?



這兩天剛測過

#include <18F452.H>
#fuses HS, NOPROTECT, NOWDT, NODEBUG, NOLVP, PUT
#use delay(clock=20000000)
#use rs232(baud=115200,xmit=PIN_C6,rcv=PIN_C7)

#include <xie_lcd.c>

void main( )
{
int8 x=0;

delay_ms(500);
set_adc_ports( NO_ANALOGS );
set_adc( ADC_OFF );
delay_ms(500);

lcd_init();

printf("\r\nHello world !");
printf(lcd_putc,"Hello world ! ");

while(1)
{
lcd_gotoxy(1,2); printf(lcd_putc,"x = %u ",x);

printf("%u ",x++); delay_ms(500); output_toggle(PIN_A4);
}
}

LCD 驅動程式

// xie_lcd.c

// LCD_pin Wu Xie
// --------------------------
// D4 B4 RA0
// D5 B5 RA1
// D6 B6 RA2
// D7 B7 RA3
// -- -- RA4 System LED always output
// enable A5 RA5
// rw B2 RC0
// rs B1 RC5
// --------------------------

int1 lcd_fail = TRUE; // 2004/02/28 新增

struct { int8 data : 4; // Wu
int8 unused: 2;
} lcd;
#byte lcd = 0xF80 // PORTA

#bit lcd_enable = 0xF80.5 // PORTA.5 for lcd_enable
#bit lcd_rw = 0xF8B.0 // LATC.0
#bit lcd_rs = 0xF8B.5 // LATC.5

#bit tris_lcd_enable= 0xF92.5 // TRISA5
#bit tris_lcd_rw = 0xF94.0 // TRISC0
#bit tris_lcd_rs = 0xF94.5 // TRISC5

void set_tris_to_read_lcd(void)
{
set_tris_a(0b11001111);
tris_lcd_rw = 0;
tris_lcd_rs = 0;
}

void set_tris_to_write_lcd(void)
{
set_tris_a(0b11000000);
tris_lcd_rw = 0;
tris_lcd_rs = 0;
}


#define lcd_type 2 // 0=5x7, 1=5x10, 2=2 lines
#define lcd_line_two 0x40 // LCD RAM address for the second line

// The following bytes need to be sent to the LCD to start it up.
int8 const LCD_INIT_STRING[4] = {0x20 | (lcd_type << 2), 0xc, 1, 6};

int8 lcd_read_byte()
{
int8 low,high;

set_tris_to_read_lcd(); // set_tris_b(LCD_READ); Wu

lcd_rw = 1;
delay_cycles(1);
lcd_enable = 1; // lcd.enable = 1; Wu
delay_cycles(1);
high = lcd.data;
lcd_enable = 0;
delay_cycles(1);
lcd_enable = 1;
delay_us(1);
low = lcd.data;
lcd_enable = 0;

set_tris_to_write_lcd(); // set_tris_b(LCD_WRITE); Wu

return( (high<<4) | low);
}


void lcd_send_nibble( int8 n )
{
lcd.data = n;
delay_cycles(1);
lcd_enable = 1;
delay_us(2);
lcd_enable = 0;
}


void lcd_send_byte( int8 address, int8 n )
{
int8 i = 250; // 2004/02/28

set_tris_to_write_lcd(); // set_tris_lcd(LCD_WRITE); // Wu, 2003/07/03

lcd_rs = 0;
while ( bit_test(lcd_read_byte(),7) )
{
delay_us ( 6 ); // 2004/02/28

if ( --i == 0 )
{
lcd_fail = TRUE; // 2004/02/28
break;
}
}
lcd_rs = address;
delay_cycles(1);
lcd_rw = 0;
delay_cycles(1);
lcd_enable = 0;
lcd_send_nibble(n >> 4);
lcd_send_nibble(n & 0xf);
// return i; // return '0' if failed to initialize LCD
}

void lcd_init()
{
int8 i;

lcd_fail = FALSE; // 2004/02/28

tris_lcd_enable = 0; // set as output, Wu

set_tris_to_write_lcd(); // set_tris_b(LCD_WRITE); Wu

lcd_rs = 0;
lcd_rw = 0;
lcd_enable = 0; delay_ms(30);
for(i=1;i<=3;++i) { lcd_send_nibble(3); delay_ms( 10); }
lcd_send_nibble(2);
for(i=0;i<=3;++i) lcd_send_byte(0,LCD_INIT_STRING[i]);
}

void lcd_gotoxy( int8 x, int8 y)
{
int8 address;

if(y!=1) address=lcd_line_two;
else address=0;
address+=x-1;
lcd_send_byte(0,0x80|address);
}

void lcd_putc( char c)
{
if ( !lcd_fail ) // 2004/02/28
{
switch (c) {
case '\f' : lcd_send_byte(0,1);
delay_ms(2);
break;
case '\n' : lcd_gotoxy(1,2); break;
case '\b' : lcd_send_byte(0,0x10); break;
default : lcd_send_byte(1,c); break;
}
}
}

char lcd_getc( int8 x, int8 y)
{
char value;

lcd_gotoxy(x,y);
lcd_rs=1;
value = lcd_read_byte();
lcd_rs=0;
return(value);
}

void lcd_cursor_mode(int8 x, y, int1 cursor_display_on, char_blink_on) // Wu
{
int8 display_mode = 0x0C;
if (cursor_display_on) bit_set(display_mode, 1);
if (char_blink_on) bit_set(display_mode, 0);
lcd_gotoxy(x,y);
lcd_send_byte(0, display_mode );
}

void lcd_display_mode(int1 char_display_on, cursor_display_on, char_blink_on) // Wu
{
int8 display_mode = 0x08;
if (char_display_on) bit_set(display_mode, 2);
if (cursor_display_on) bit_set(display_mode, 1);
if (char_blink_on) bit_set(display_mode, 0);
lcd_send_byte(0, display_mode );
}


先用 CCS 原版的啦

HD44780

http://home.iae.nl/users/pouweha/lcd/lcd.shtml

發表於: 2005/1/19 1:00
頂部


Re: 何謂BANDGAP
#87
資深會員
資深會員


Google -> search bandgap ... you got it !

http://www.ece.utexas.edu/~holberg/lecture_notes/bandgap.pdf

這篇文章的第一句話應改為 General voltage reference have ...

http://www.veeco.com/learning/learning_lattice.asp

發表於: 2005/1/15 13:51
頂部


Re: LCD顯示
#88
資深會員
資深會員


不要去修改 LCD.C,也不必去改,你只要修改主程式就好

在主程式引入 LCD.C 之前設定就好,如下:

#define use_portb_lcd // 加這行就用 PORTB
//#define use_portd_lcd // 加這行就用 PORTD
#include <lcd.c>
void main()
{
...
}

原因,在 LCD.C 裡面有這行,就會依據你的設定來選擇
#if defined use_portb_lcd
...

程式庫裡的,盡量不要改,若要改的話,就先複製到你的主程式所在的工作目錄,再改個名字,例如 LCD_for_proj_01.c
這樣才好做版本的管理。

若使用 CCS ,建議您去買一套 CCS 的實驗板,才好搭配他的範例程式去測試,若出現問題時,直接去 CCS 的討論區發問就好,那裡有許多樂於助人的高手,兩天之內一定會有答覆的。我選擇 CCS 的兩個主要原因就是 (1) 功能超強的 printf 和 (2)因為他的討論區非常非常的好。在 CCS 的 IDE 底下,用滑鼠點選 HELP -> Tech Support 就可以發 e-mail 去給 CCS,通常有點慢,討論區比較有用。

CCS 實驗板:
http://www.ccsinfo.com/hardware.shtml
CCS 討論區:
http://www.ccsinfo.com/forum/

你的 PORTB 為何不能用?我也想不通。我用 PORTB 接 LCD 已經三年了,F877, F45x 都沒問題啊。更改 LCD 接線也都沒問題,只要那四條 data 線在同一個 PORT 就好,其他三條可以隨意變更,把 LCD.C 改幾行就好。

去買個 CCS 的實驗板吧

我當初買的是
http://www.ccsinfo.com/ace.shtml
含 LCD/Keypad Kit 和 Experimenter's Kit
刷信用卡,一星期後收到,打開盒子,三十分鐘搞定 LCD,當時的心情真是爽啊,呵呵。

Experimenter's Kit 裡面的週邊 IC 也十分有用。

學校或學生就用超便宜的教育版吧
http://www.ccsinfo.com/education.shtml

CCS-C 比較像 PC 的 Turbo-C,
Hi-Tech 和 C18 我都沒用過,要請版主出馬囉。
他們的 printf 好像沒有 CCS 的那麼強喔。

C 語言的原作者 K&R 說,第一個 C 程式應該是 printf("Hello world !"),詳見 "The C Programming Language" ,
http://www.ccsinfo.com/newtopiccbooks.shtml
我覺得,第二個 C 程式用 printf(lcd_putc,"x = %f", 3.1416) 就更爽了,呵呵。


發表於: 2005/1/15 13:36
頂部


Re: LCD顯示
#89
資深會員
資深會員


先看看範例 C:\Program Files\PICC\Examples\EX_LCDKB.C

把 main 改成下面這樣

void main()
{
lcd_init();
lcd_putc("\fHello world !\n");
printf(lcd_putc, "x = %f", 3.1416 );
while(1);
}

如果還不行的話 ... 看看 LCD 接線是否有誤, LCD 對比設定是否有誤 (對比線 Vo 接地就好), LCD 的驅動晶片是 HD44780 相容的嗎? 你的 LCD 的型號是啥?

發表於: 2005/1/10 22:21
頂部


Re: PICDEM Z 2.4 GHz 台灣有賣嗎
#90
資深會員
資深會員


參照:

tedc 寫道:
禾伸堂可以幫忙訂購.
(02)26596720-206蕭先生
不過要訂金而且4-6 week 才能拿到


多謝啦
4-6 week ...
我決定要兩邊壓寶囉,看看誰的板子好,呵呵

發表於: 2005/1/7 20:06
頂部



« 1 ... 6 7 8 (9) 10 11 12 ... 16 »



:::

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... ]

教育訓練中心

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