AVR-MCS-PIC-Microcontroller Project
หน้า: 1 [2] 3   ลงล่าง
  พิมพ์  
ผู้เขียน หัวข้อ: AVR-MCS-PIC-Microcontroller Project  (อ่าน 93223 ครั้ง)
JUB
Full Member
member
**

คะแนน81
ออฟไลน์ ออฟไลน์

กระทู้: 1157



« ตอบ #29 เมื่อ: มกราคม 30, 2010, 11:11:36 PM »

ช่วงนี้กำลังเตรียม project อยู่ครับ เฮ้อ... Tongue เหนื่อยๆครับช่วงนี้... Tongue

CountDown Timer (วงจร ตั้งเวลานับถอยหลังได้ 99 นาที)
http://www.youtube.com/v/ExlVhYWdtJU.swf

LED mini Display (MAX7219)
http://www.youtube.com/v/TprImC5wkzo.swf

LED Cube 3x3x3
http://www.youtube.com/v/MHYvfJkJVnY.swf
บันทึกการเข้า

oats3483
member
*

คะแนน1
ออฟไลน์ ออฟไลน์

กระทู้: 2


อีเมล์
« ตอบ #30 เมื่อ: กุมภาพันธ์ 08, 2010, 12:03:09 PM »

ขอบคุณครับพี่ ขอบคุณ
บันทึกการเข้า
JUB
Full Member
member
**

คะแนน81
ออฟไลน์ ออฟไลน์

กระทู้: 1157



« ตอบ #31 เมื่อ: กุมภาพันธ์ 10, 2010, 01:40:59 PM »

Read Temp From DS18S20 to LCD (Big.num!!!)

http://www.youtube.com/v/eBraBavAjDs.swf



source code
http://www.4shared.com/file/_9O58YBP/temp_bignum.html
บันทึกการเข้า
JUB
Full Member
member
**

คะแนน81
ออฟไลน์ ออฟไลน์

กระทู้: 1157



« ตอบ #32 เมื่อ: กุมภาพันธ์ 10, 2010, 08:24:53 PM »

USB<>Serial Converter

ใครไม่มี com port ใช้เอาตัวนี้ไปทำได้เลย ผมลองแล้ว work ดี
ลงทุนไม่ถึง 80 บาท

อยากทำใช้ไปที่
http://www.recursion.jp/prose/
บันทึกการเข้า
JUB
Full Member
member
**

คะแนน81
ออฟไลน์ ออฟไลน์

กระทู้: 1157



« ตอบ #33 เมื่อ: กุมภาพันธ์ 24, 2010, 12:04:42 PM »

multitasking os countdown timer 1-90minute

เป็นเวอร์ชั่นใหม่ โปรแกรมเป็นแบบ  multitask ตอบสนองการใช้งานได้ดีกว่าอันแรกที่เคย post
ไว้ครับวงจรใช้กับของเดิมได้เลย โดยแก้ code ส่วนของ port แล้ว compile ใหม่
โดยใช้ MIDE-Studioในการแก้และ compile....

source code
http://www.4shared.com/file/228584506/8baeeb77/countdown_timer.html
บันทึกการเข้า
JUB
Full Member
member
**

คะแนน81
ออฟไลน์ ออฟไลน์

กระทู้: 1157



« ตอบ #34 เมื่อ: กันยายน 19, 2010, 03:46:36 PM »

Read Temp From DS18S20 to Serial

http://www.youtube.com/v/lGEGO9OY9xk.swf

DQ    connect to P1.0
Serial LCD baud 9600 connect to P3.1(TX)

source code
http://www.4shared.com/file/722LJtiZ/ds1820.html
บันทึกการเข้า
JUB
Full Member
member
**

คะแนน81
ออฟไลน์ ออฟไลน์

กระทู้: 1157



« ตอบ #35 เมื่อ: กันยายน 19, 2010, 09:26:04 PM »

แบบภาษาไทยครับ
โค๊ด:
;//*******************************************************************//;
;//* PROGRAM : DS1820 THAI LANG
;//* DEVICE : AT89C2051
;//* X-TAL : 11.0592MHZ
;//* AUTHOR : SOMLAK MANGNIMIT
;//* DATE : 19/09/2553
;//* VERSION : 1.0BETA
;//* NOTE : THIS PROGRAM IS FREE AND ALL NOT WARRANTY.
;//*******************************************************************//;

DQ BIT P1.0

DSEG
ORG 020H
TIM1: DS 1
TIM2: DS 1
TIM3: DS 1

TEMP_L: DS 1
TEMP_H: DS 1

TX_DATA: DS 1
RX_DATA: DS 1

N1: DS 1
N2: DS 1
N3: DS 1
POINT: DS 1

CSEG
ORG 0000H
SJMP INIT

ORG 0023H ;--->>> SERIAL
PUSH ACC
JBC RI,SER_RX
SER_TX: CLR TI
MOV SBUF,TX_DATA
SER_TX_WAIT: JBC TI,SER_EXIT
AJMP SER_TX_WAIT
SER_RX: MOV RX_DATA,SBUF
SER_EXIT: ;SETB RX_OK
POP ACC
RETI

TABLE_THAI:
CGRAM_ADDR00: DB   00EH,011H,001H,019H,011H,00EH,003H,001H
CGRAM_ADDR01: DB   00DH,015H,015H,015H,017H,019H,000H,000H
CGRAM_ADDR02: DB   01BH,01BH,00AH,00DH,009H,009H,000H,000H
CGRAM_ADDR03: DB   00EH,011H,009H,009H,019H,019H,005H,007H
CGRAM_ADDR04: DB   019H,019H,009H,009H,01FH,019H,000H,000H
CGRAM_ADDR05: DB   000H,000H,000H,000H,000H,000H,00EH,01FH
CGRAM_ADDR06: DB   001H,002H,015H,00DH,005H,005H,002H,000H
CGRAM_ADDR07:  DB   001H,001H,019H,009H,015H,015H,01BH,000H

;//*******************//;
;//* INITIAL DEVIECE *//;
;//*******************//;
INIT: MOV P1,#0FFH
MOV P3,#0FFH
MOV SP,#050H
MOV R0,#07FH
CLR A
MOV @R0,A
DJNZ R0,$-1

CLR TR1
MOV SCON,#052H
MOV TMOD,#022H
MOV TH1,#0FDH
MOV IE,#00010000B
SETB TR1
SETB EA

ACALL DELAY1S

WRITE_THAI: MOV A,#0FEH ; SEND SLCD COMMAND PREFIX
MOV TX_DATA,A
SETB TI
NOP
MOV A,#040H ; WRITE CGRAM COMMAND (WRITE THAI LETTERS)
MOV TX_DATA,A
SETB TI
NOP
MOV A,#000H
MOV DPTR,#TABLE_THAI ; TABLE ADDRESS = 0
MOV B,#8*8 ; WRITE BITMAP 64 LETTERS

WRITE_CGRAM1: CLR A
MOVC A,@A+DPTR ; LOOK-UP TABLE (FOR THAI LETTERS)
MOV TX_DATA,A
SETB TI
NOP
INC DPTR
DJNZ B,WRITE_CGRAM1 ; SKIP IF COMPLETED

MOV TX_DATA,#254
SETB TI
NOP
MOV TX_DATA,#001H
SETB TI
NOP

ACALL RDTEMP ; REMOVE INITIAL START UP RESULT 85.C

ACALL DELAY1S

;//****************//;
;//* MAIN PROGRAM *//;
;//****************//;
MAIN: ACALL RDTEMP
ACALL T_CELCIUS
ACALL SHOW_THAI
AJMP MAIN

;//**********************//;
;//* SHOW TEMP ON RS232 *//;
;//**********************//;
SHOW_THAI: MOV TX_DATA,#0FEH
SETB TI
NOP
MOV TX_DATA,#084H ; DDRAM ADDR. 0X84 (LINE1/5)
SETB TI
NOP
MOV TX_DATA,#005H
SETB TI
NOP
MOV TX_DATA,#0FEH
SETB TI
NOP
MOV TX_DATA,#0C0H ; DDRAM ADDR. 0XC0 (LINE2/1)
SETB TI
NOP
MOV TX_DATA,#000H
SETB TI
NOP
MOV TX_DATA,#001H
SETB TI
NOP
MOV TX_DATA,#002H
SETB TI
NOP
MOV TX_DATA,#003H
SETB TI
NOP
MOV TX_DATA,#004H
SETB TI
NOP
MOV TX_DATA,#" "
SETB TI
NOP
MOV TX_DATA,#"="
SETB TI
NOP
MOV TX_DATA,#" "
SETB TI
NOP
MOV TX_DATA,N1 ; SHOW HUNDRED
SETB TI
NOP
MOV TX_DATA,N2 ; SHOW TEN
SETB TI
NOP
MOV TX_DATA,N3 ; SHOW UNIT
SETB TI
NOP
MOV TX_DATA,#"." ; SHOW .
SETB TI
NOP
MOV TX_DATA,POINT ; SHOW DECIMAL
SETB TI
NOP
MOV TX_DATA,#0DFH ; FOR HD44780 OR COMPATIBLE ONLY <DEGREE SYMBOL>
SETB TI
NOP
MOV TX_DATA,#006H ; WRITE ?
SETB TI
NOP
RET

;//********************//;
;//* TEMP CALCULATION *//;
;//********************//;
;DATA IN TEMP_L REG.
;DATA RETURN N1,N2,N3,DP REG.
T_CELCIUS: MOV A,TEMP_L
CLR C
RRC A ;--->>> TEMP_RD/2
MOV POINT,#"0" ;--->>> SHOW .0 DEGREE
JNC CONVERT1 ;--->>> JUMP IF CARRY = 0
MOV POINT,#"5" ;--->>> SHOW .5 DEGREE
CONVERT1:
MOV B,#100
DIV AB
ADD A,#030H ;--->>> CONVERT BINARY TO BCD
MOV N1,A ;--->>> R0 = HUNDRED UNIT
MOV A,B
MOV B,#10
DIV AB
ADD A,#030H
MOV N2,A ;--->>> R1 = TEN DIGIT
MOV A,B
ADD A,#030H
MOV N3,A ;--->>> R2 = UNIT DEGREE

MOV A,N1
SUBB A,#030H
JNZ CONVERT2 ;--->>> JUMP IF W <> 0
MOV N1,#" " ;--->>> SHOW WHITE SPACE IF TEMP <100 C
CONVERT2:
MOV A,N2
SUBB A,#030H
JNZ CONVERT3 ;--->>> JUMP IF W <> 0
MOV N2,#" " ;--->>> SHOW WHITE SPACEHOW IF TEMP < 10 C
CONVERT3:
RET

;//************************//;
;//* DS1820 PROGRAM GROUP *//;
;//************************//;
RDTEMP: ACALL PRES_DS1820
MOV A,#0CCH ;--->>> SKIP ROM
ACALL WR_DS1820
MOV A,#044H ;--->>> TEMP CONVERT
ACALL WR_DS1820

ACALL DELAY500M

ACALL PRES_DS1820
MOV A,#0CCH ;--->>> SKIP ROM
ACALL WR_DS1820
MOV A,#0BEH ;--->>> READ SCRATCHPAD
ACALL WR_DS1820

ACALL RD_DS1820
MOV TEMP_L,A
ACALL RD_DS1820
MOV TEMP_H,A
RET

;//*****WRITE DEVICE*****//;
WR_DS1820: MOV B,#8
WR_LOOP: CLR DQ
ACALL DELAY15US
RRC A
MOV DQ,C
ACALL DELAY45US
SETB DQ
DJNZ B,WR_LOOP
RET

;//*****READ DEVICE*****//;
RD_DS1820: MOV B,#8
RD_LOOP: CLR DQ
ACALL DELAY15US
SETB DQ
MOV C,DQ
RRC A
ACALL DELAY45US
SETB DQ
DJNZ B,RD_LOOP
RET

;//*****PRESENCE PLUSE*****//;
PRES_DS1820: CLR DQ
ACALL DELAY600US
SETB DQ
ACALL DELAY60US
JNB DQ,DEVICE_PRES
ACALL DELAY600US
SJMP PRES_DS1820

DEVICE_PRES: ACALL DELAY600US
RET

;//*****************//;
;//* DELAY ROUTINE *//;
;//*****************//;
;1.085 X 6 = 6.51
;1.085 X 2 = 2.17

;***** [(1.085 X 6)-(15)]/(1.085 X 2) = 3.9 *****;
DELAY15US: MOV TIM1,#3
DJNZ TIM1,$
RET

;***** [(1.085 X 6)-(45)]/(1.085 X 2) = 17.7 *****;
DELAY45US: MOV TIM1,#17
DJNZ TIM1,$
RET

;***** [(1.085 X 6)-(60)]/(1.085 X 2) = 24.6 *****;
DELAY60US: MOV TIM1,#24
DJNZ TIM1,$
RET

;***** [(1.085 X 6)-(600)]/(1.085 X 2) = 182.3 *****;
DELAY600US: MOV TIM1,#182
NOP
DJNZ TIM1,$-1
RET

DELAY1S: MOV TIM1,#10
SJMP DELAY

DELAY500M: MOV TIM1,#5
SJMP DELAY

DELAY: MOV TIM2,#100
DELAY01: MOV TIM3,#230
DELAY02: NOP
NOP
DJNZ TIM3,DELAY02
DJNZ TIM2,DELAY01
DJNZ TIM1,DELAY
RET

END
บันทึกการเข้า
JUB
Full Member
member
**

คะแนน81
ออฟไลน์ ออฟไลน์

กระทู้: 1157



« ตอบ #36 เมื่อ: กันยายน 19, 2010, 11:07:10 PM »

ลองเอามาควบคุมพัดลมให้ทำงานตาม อุณหภูมิที่เรากำหนด โดยผมลองที่ 33 องศาซี

http://www.youtube.com/v/KkULV3LUFoY.swf


โค๊ด:
;//*******************************************************************//;
;//* PROGRAM : DS1820 THAI LANG
;//* DEVICE : AT89C2051
;//* X-TAL : 11.0592MHZ
;//* AUTHOR : SOMLAK MANGNIMIT
;//* DATE : 19/09/2553
;//* VERSION : 1.0BETA
;//* NOTE : THIS PROGRAM IS FREE AND ALL NOT WARRANTY.
;//*******************************************************************//;

DQ BIT P1.0
LED_R BIT P1.1
LED_G BIT P1.2
FAN BIT P1.3

DSEG
ORG 020H
TIM1: DS 1
TIM2: DS 1
TIM3: DS 1

TEMP_L: DS 1
TEMP_H: DS 1

TX_DATA: DS 1
RX_DATA: DS 1

N1: DS 1
N2: DS 1
N3: DS 1
POINT: DS 1

HITEMP_SET EQU 33
LOWTEMP_SET EQU 30

CSEG
ORG 0000H
SJMP INIT

ORG 0023H ;--->>> SERIAL
PUSH ACC
JBC RI,SER_RX
SER_TX: CLR TI
MOV SBUF,TX_DATA
SER_TX_WAIT: JBC TI,SER_EXIT
AJMP SER_TX_WAIT
SER_RX: MOV RX_DATA,SBUF
SER_EXIT: ;SETB RX_OK
POP ACC
RETI

TABLE_THAI:
CGRAM_ADDR00: DB   00EH,011H,001H,019H,011H,00EH,003H,001H
CGRAM_ADDR01: DB   00DH,015H,015H,015H,017H,019H,000H,000H
CGRAM_ADDR02: DB   01BH,01BH,00AH,00DH,009H,009H,000H,000H
CGRAM_ADDR03: DB   00EH,011H,009H,009H,019H,019H,005H,007H
CGRAM_ADDR04: DB   019H,019H,009H,009H,01FH,019H,000H,000H
CGRAM_ADDR05: DB   000H,000H,000H,000H,000H,000H,00EH,01FH
CGRAM_ADDR06: DB   001H,002H,015H,00DH,005H,005H,002H,000H
CGRAM_ADDR07:  DB   001H,001H,019H,009H,015H,015H,01BH,000H

;//*******************//;
;//* INITIAL DEVIECE *//;
;//*******************//;
INIT: MOV P1,#0FFH
MOV P3,#0FFH
MOV SP,#050H
MOV R0,#07FH
CLR A
MOV @R0,A
DJNZ R0,$-1

CLR TR1
MOV SCON,#052H
MOV TMOD,#022H
MOV TH1,#0FDH
MOV IE,#00010000B
SETB TR1
SETB EA

ACALL DELAY1S

WRITE_THAI: MOV A,#0FEH ; SEND SLCD COMMAND PREFIX
MOV TX_DATA,A
SETB TI
NOP
MOV A,#040H ; WRITE CGRAM COMMAND (WRITE THAI LETTERS)
MOV TX_DATA,A
SETB TI
NOP
MOV A,#000H
MOV DPTR,#TABLE_THAI ; TABLE ADDRESS = 0
MOV B,#8*8 ; WRITE BITMAP 64 LETTERS

WRITE_CGRAM1: CLR A
MOVC A,@A+DPTR ; LOOK-UP TABLE (FOR THAI LETTERS)
MOV TX_DATA,A
SETB TI
NOP
INC DPTR
DJNZ B,WRITE_CGRAM1 ; SKIP IF COMPLETED

MOV TX_DATA,#254
SETB TI
NOP
MOV TX_DATA,#001H
SETB TI
NOP

ACALL RDTEMP ; REMOVE INITIAL START UP RESULT 85.C

ACALL DELAY1S

;//****************//;
;//* MAIN PROGRAM *//;
;//****************//;
MAIN: ACALL RDTEMP
ACALL T_CELCIUS
ACALL SHOW_THAI
ACALL TEMP_COMP
AJMP MAIN


TEMP_COMP: MOV A,TEMP_L
CLR ACC.0
RR A
CLR C
SUBB A,#HITEMP_SET
JNC TOO_HI
SETB LED_R
CLR LED_G
CLR FAN
RET

TOO_HI: CPL LED_R
SETB LED_G
SETB FAN
RET

;//**********************//;
;//* SHOW TEMP ON RS232 *//;
;//**********************//;
SHOW_THAI: MOV TX_DATA,#0FEH
SETB TI
NOP
MOV TX_DATA,#084H ; DDRAM ADDR. 0X84 (LINE1/5)
SETB TI
NOP
MOV TX_DATA,#005H
SETB TI
NOP
MOV TX_DATA,#0FEH
SETB TI
NOP
MOV TX_DATA,#0C0H ; DDRAM ADDR. 0XC0 (LINE2/1)
SETB TI
NOP
MOV TX_DATA,#000H
SETB TI
NOP
MOV TX_DATA,#001H
SETB TI
NOP
MOV TX_DATA,#002H
SETB TI
NOP
MOV TX_DATA,#003H
SETB TI
NOP
MOV TX_DATA,#004H
SETB TI
NOP
MOV TX_DATA,#" "
SETB TI
NOP
MOV TX_DATA,#"="
SETB TI
NOP
MOV TX_DATA,#" "
SETB TI
NOP
MOV TX_DATA,N1 ; SHOW HUNDRED
SETB TI
NOP
MOV TX_DATA,N2 ; SHOW TEN
SETB TI
NOP
MOV TX_DATA,N3 ; SHOW UNIT
SETB TI
NOP
MOV TX_DATA,#"." ; SHOW .
SETB TI
NOP
MOV TX_DATA,POINT ; SHOW DECIMAL
SETB TI
NOP
MOV TX_DATA,#0DFH ; FOR HD44780 OR COMPATIBLE ONLY <DEGREE SYMBOL>
SETB TI
NOP
MOV TX_DATA,#006H ; WRITE ?
SETB TI
NOP
RET

;//********************//;
;//* TEMP CALCULATION *//;
;//********************//;
;DATA IN TEMP_L REG.
;DATA RETURN N1,N2,N3,DP REG.
T_CELCIUS: MOV A,TEMP_L
CLR C
RRC A ;--->>> TEMP_RD/2
MOV POINT,#"0" ;--->>> SHOW .0 DEGREE
JNC CONVERT1 ;--->>> JUMP IF CARRY = 0
MOV POINT,#"5" ;--->>> SHOW .5 DEGREE
CONVERT1:
MOV B,#100
DIV AB
ADD A,#030H ;--->>> CONVERT BINARY TO BCD
MOV N1,A ;--->>> R0 = HUNDRED UNIT
MOV A,B
MOV B,#10
DIV AB
ADD A,#030H
MOV N2,A ;--->>> R1 = TEN DIGIT
MOV A,B
ADD A,#030H
MOV N3,A ;--->>> R2 = UNIT DEGREE

MOV A,N1
SUBB A,#030H
JNZ CONVERT2 ;--->>> JUMP IF W <> 0
MOV N1,#" " ;--->>> SHOW WHITE SPACE IF TEMP <100 C
CONVERT2:
MOV A,N2
SUBB A,#030H
JNZ CONVERT3 ;--->>> JUMP IF W <> 0
MOV N2,#" " ;--->>> SHOW WHITE SPACEHOW IF TEMP < 10 C
CONVERT3:
RET

;//************************//;
;//* DS1820 PROGRAM GROUP *//;
;//************************//;
RDTEMP: ACALL PRES_DS1820
MOV A,#0CCH ;--->>> SKIP ROM
ACALL WR_DS1820
MOV A,#044H ;--->>> TEMP CONVERT
ACALL WR_DS1820

ACALL DELAY500M

ACALL PRES_DS1820
MOV A,#0CCH ;--->>> SKIP ROM
ACALL WR_DS1820
MOV A,#0BEH ;--->>> READ SCRATCHPAD
ACALL WR_DS1820

ACALL RD_DS1820
MOV TEMP_L,A
ACALL RD_DS1820
MOV TEMP_H,A
RET

;//*****WRITE DEVICE*****//;
WR_DS1820: MOV B,#8
WR_LOOP: CLR DQ
ACALL DELAY15US
RRC A
MOV DQ,C
ACALL DELAY45US
SETB DQ
DJNZ B,WR_LOOP
RET

;//*****READ DEVICE*****//;
RD_DS1820: MOV B,#8
RD_LOOP: CLR DQ
ACALL DELAY15US
SETB DQ
MOV C,DQ
RRC A
ACALL DELAY45US
SETB DQ
DJNZ B,RD_LOOP
RET

;//*****PRESENCE PLUSE*****//;
PRES_DS1820: CLR DQ
ACALL DELAY600US
SETB DQ
ACALL DELAY60US
JNB DQ,DEVICE_PRES
ACALL DELAY600US
SJMP PRES_DS1820

DEVICE_PRES: ACALL DELAY600US
RET

;//*****************//;
;//* DELAY ROUTINE *//;
;//*****************//;
;1.085 X 6 = 6.51
;1.085 X 2 = 2.17

;***** [(1.085 X 6)-(15)]/(1.085 X 2) = 3.9 *****;
DELAY15US: MOV TIM1,#3
DJNZ TIM1,$
RET

;***** [(1.085 X 6)-(45)]/(1.085 X 2) = 17.7 *****;
DELAY45US: MOV TIM1,#17
DJNZ TIM1,$
RET

;***** [(1.085 X 6)-(60)]/(1.085 X 2) = 24.6 *****;
DELAY60US: MOV TIM1,#24
DJNZ TIM1,$
RET

;***** [(1.085 X 6)-(600)]/(1.085 X 2) = 182.3 *****;
DELAY600US: MOV TIM1,#182
NOP
DJNZ TIM1,$-1
RET

DELAY1S: MOV TIM1,#10
SJMP DELAY

DELAY500M: MOV TIM1,#5
SJMP DELAY

DELAY: MOV TIM2,#100
DELAY01: MOV TIM3,#230
DELAY02: NOP
NOP
DJNZ TIM3,DELAY02
DJNZ TIM2,DELAY01
DJNZ TIM1,DELAY
RET

END
บันทึกการเข้า
JUB
Full Member
member
**

คะแนน81
ออฟไลน์ ออฟไลน์

กระทู้: 1157



« ตอบ #37 เมื่อ: ธันวาคม 06, 2010, 12:22:40 PM »

Read Temp from DS18S20

http://www.youtube.com/v/LIlZ1FP4ALI.swf

ds1820 ลองใช้กับ 7segment ก็ดูดีนะ.....  Tongue

source code
http://www.4shared.com/file/QgUyBqDa/ds1820_7segment.html
บันทึกการเข้า
JUB
Full Member
member
**

คะแนน81
ออฟไลน์ ออฟไลน์

กระทู้: 1157



« ตอบ #38 เมื่อ: ธันวาคม 16, 2010, 06:23:03 PM »

Counter 4 digit PIC12F683

http://www.youtube.com/v/gQmbwKkPmjA.swf

source code
http://www.4shared.com/file/2FeTycAF/count12f683.html
บันทึกการเข้า
JUB
Full Member
member
**

คะแนน81
ออฟไลน์ ออฟไลน์

กระทู้: 1157



« ตอบ #39 เมื่อ: มกราคม 20, 2011, 07:16:20 PM »

Nokia 5110 GLCD Temp Monitor.


Nokia_temp_v1 by jengmod, on Flickr

Source code
http://www.4shared.com/file/1geXOUmJ/Nokia_temp_v1.html
บันทึกการเข้า
First_soft
member
*

คะแนน0
ออฟไลน์ ออฟไลน์

กระทู้: 6


อีเมล์
« ตอบ #40 เมื่อ: กุมภาพันธ์ 03, 2011, 01:04:08 PM »

ขอบคุณคับ
บันทึกการเข้า
JUB
Full Member
member
**

คะแนน81
ออฟไลน์ ออฟไลน์

กระทู้: 1157



« ตอบ #41 เมื่อ: มีนาคม 18, 2011, 04:09:48 PM »

Dot Matrix V1
เนื่องจากทุนน้อยครับเอามันแค่นี้ก่อน เดี๋ยวรอผมสั่ง dot matrix
ก่อน source ตัวนี้ผมทำ buffer ไว้ 24 byte ครับ
เวลาเรียกใช้ ให้ใส่ค่า address 1-4 ลง acc
โดยเรียกโปรแกรมย่อย setaddress จากนั้น ตามด้วย putchar

ตัวอย่าง....
mov   a,#1
acall   setaddress     ;-->> buffer ตำแหน่งที่1
mov   a,#"A"
acall   putchar     ;-->> เก็บค่า "A" จากตาราง ลง buffer ตำแหน่งที่1

ในส่วนของ scan display เอาค่าที่เก็บจาก buffer ไปใช้ได้เลย
โดยมีคำสั่ง shift display ไว้ให้แล้ว
video ผมถ่ายชัดสุดได้แค่นี้..... ใครมี idea อะไรเอามาแชร์กัน
บ้างนะครับ ทำกันเยอะไปหมด แต่ไม่ค่อยมีรายละเอียด
ตัวเต็มผม open source เหมือนเดิม แต่คงเอาแค่ อ่านข้อความจาก
programmemory เอามาวิ่งแสดงเฉยๆ ที่เหลือไปเขียนต่อกันเอง
เพราะเดี๋ยวจะงงกันซะเปล่าๆ....



source code v1

http://www.4shared.com/file/rhfAv1Jn/dot_matrix_v1.html

http://www.youtube.com/v/E9jQvkyEIQQ.swf

การเลื่อนตัวอักษรไม่ได้ยากเท่าใดนัก ทั้งหมดสามารถทำผ่าน buffer ได้ง่ายๆ
โดยกำหนด buffer ขึ้นมาเท่าจำนวนของ column ในรูปคือ 20 byte
ส่วนอีก 5 byte มีไว้ใช้ buffer ข้อมูลจากการเปิดตาราง แล้วเอามา
พักไว้ที่นี่ step การเลื่อนข้อความเบื้องต้นคือ

1.กำหนดตำแหน่งแรกของ pointer ข้อความ
2.กำหนดตำแหน่ง ที่ character buffer
3.เปิดตารางตัวอักษรจาก pointer
4.นำค่าจากตารางเก็บลง buffer
5.scan display ไว้ระยะหนึ่ง
6.เลื่อนข้อมูล display buffer ทั้งหมด ไปทางซ้าย 1 ครั้ง
แล้วกลับไปข้อ 5. ทำจนครบ 5 ครั้ง
7.เพิ่มค่า pointer กลับไปข้อ 2.

การ scan display ใช้หลักการคล้ายๆกับ 7 segment
คือ กำหนด pointer ที่ตำแหน่งแรก display buffer1 (30H)
แล้วนำค่าที่ pointer ชี้ไปส่งให้ Row Shift register
เพื่อส่งไปยัง dot matrix จากนั้นให้ column on
เพิ่มค่า pointer ทำจนครบ 20 column (ดูรูป)
tip....
คือ data เป็นของ column ไหนก็ให้ column นั้น on
อย่างวงจรที่ผมใช้ column เป็นลบ ผมก็สั่ง ให้ shift bit
นั้นเป็น 0 ครับ... และก่อนจะส่งค่าใดๆทาง row ให้
off ทุก column ก่อนเสมอ ช่วยแก้เบลอได้ 100%
รายละเอียดหลักๆ น่าจะมีเท่านี้ ถ้าได้อะไรใหม่ๆจะมาเล่าให้ฟังอีกที.....


Dot Matrix V2
มาแล้วครับ V2 แก้ bug นิดหน่อยอาจมีเหลือบ้าง ด้วย memory ที่จำกัด
ผมใช้วิธี col-scan ครับ row-scan มันเปลือง mem ความสว่างสู่สีกัน
source ตัวนี้มี macro ใหม่ 2-3 ตัว
เช่น wr_bf เป็นคำสั่งเขียนข้อมูลไปยัง buffer แล้วแต่จะระบุเช่น
ds_buf1-4 เป็นตำแหน่ง display buffer เขียนอะไรออกไปก็เห็นเลย.....
cg_buf1-4 เป็นตำแหน่ง char buffer ไว้เก็บอักษรที่ต้องการแสดง.....

ส่วน PUT_STR_L เป็นคำสั่งใช้ เปิดตาราง เอามาแสดงผลพร้อมกับเลื่อน
ไปทางซ้ายเรือยๆจนกว่าจะเจอ byte ปิด 00h
รายละเอียดที่เหลือจะอธิบายคราวหน้าครับ
source code v2
http://www.4shared.com/file/2Pqja7vO/dot_matrix_8x22_v2.html

http://www.youtube.com/v/tTEgk5_Ft_Y.swf

แจ่มบ่ล่ะ ลงทุน 300 กว่าบาทเอง...... :lol
บันทึกการเข้า
nonmummy
member
*

คะแนน0
ออฟไลน์ ออฟไลน์

กระทู้: 2


อีเมล์
« ตอบ #42 เมื่อ: เมษายน 05, 2011, 09:06:54 PM »

ผมอยากได้ วงจร full duplex intercom พอจะมีไหมครับ ถ้ามีขอรายละเอียด มาเลย นะครับ  อีเมลล์ non_mummy@hotmail.com ครับ  อยากได้มากๆครับ  ขอบคุณครับ lv!
บันทึกการเข้า
JUB
Full Member
member
**

คะแนน81
ออฟไลน์ ออฟไลน์

กระทู้: 1157



« ตอบ #43 เมื่อ: เมษายน 05, 2011, 11:40:38 PM »


http://circuits.medianetwork.co.in/full-duplex-intercom/


http://wara.com/article-484.html

ผมหามาให้ได้เท่านี้ครับ......  Smiley
บันทึกการเข้า
JUB
Full Member
member
**

คะแนน81
ออฟไลน์ ออฟไลน์

กระทู้: 1157



« ตอบ #44 เมื่อ: มิถุนายน 12, 2011, 09:49:41 PM »

Digital temperature controller (7 SEGMENT)
หลังจากหายไปนาน ได้เวลาเปิด code อีกครั้ง กับ Digital temperature controller
เป็น project ที่ไม่ซีเรียสมากแต่เอาไปใช้ได้จริง สามารถคุมได้ทั้งร้อนและเย็น
ตั้งแต่ -55องศา ถึง 125องศาcompare routine สามารถคำนวนและเปรียบเทียบ
ค่าลบได้ด้วย โดยคำนวนร่วมกับ flag tn,th,tl

http://www.youtube.com/v/VDgXL8c7kcA.swf

วงจรครับ


ของจริง...













มาว่ากันเรื่องการคำนวน มีหลักๆก็
TN ค่าอุณหภูมิ ปัจจุบันที่อ่านได้จาก ds18b20
TH ค่าอุณหภูมิ สูงสุดที่เรากำหนด
TL ค่าอุณหภูมิ ต่ำสุดที่เรากำหนด

เริ่มแรกให้คำนวน TH กับ TN ก่อน TN<TH ??
ผมลองสุ่มค่าดังนี้
tn+15 th+10 = tn>th
tn+15 th-10 = tn>th
tn+15 th-15 = tn>th
tn-15 th-20 = tn>th
tn-15 th+15 = tn<th**
การคำนวนให้คิดเครื่องหมายก่อนถ้าเป็นบวกทั้งคู่ใช้ th-tn
ถ้าเป็นลบทั้งคู่ใช้ tn-th แต่ถ้า tn เป็นบวก th เป็นลบจะคิด
แต่เครื่องหมายเพราะยังไง tn ก็ต้องเยอะกว่าแนนอนอยู่แล้ว
ในทางตรงกันข้าม ถ้า tn เป็นลบ th เป็นบวก tn จะมีค่า
น้อยกว่า ก็ข้ามไปคำนวณ tl ต่อไป

TL กับ TN ก่อน TN<TL ??
ผมลองสุ่มค่าดังนี้
tl+15 tn+10 = tn<tl
tl+15 tn-10 = tn<tl
tl+15 tn-15 = tn<tl
tl-15 tn-20 = tn<tl
tl-15 tn+15 = tn>tl**
การคำนวนให้คิดเครื่องหมายก่อนเช่นเดียวกับ th แต่คราวนี้
ใช้ tn เป็นตัวตั้งลบด้วย tl หากเป็นค่าบวกทั้งคู่....
ที่เหลื่อก้จะคำนวณคล้ายๆกันแค่สลับตัวตั้งเท่านั้น.....

การทำงานใน Hot mode (คุมร้อน)
เมื่อ TN ต่ำกว่าหรือเท่ากับ TL รีเลย์จะทำงานและจะตัด
การทำงานจนกว่าค่าของ TN จะสูงกว่าหรือเท่ากับ TH

การทำงานใน Cool mode (คุมเย็น)
คล้าย คุมร้อน แต่สลับกัน...
พอมองภาพออกกันมั๊ยครับ (ทั้งหมดนี่จะไม่มีความหมายหากเขียนด้วย ภาษาc)

Source code v2.0f
http://www.4shared.com/file/gfLqfc-x/Digital_temperature_controller.html

Source code(for nokia5110lcd)
http://www.4shared.com/file/knQq0y6d/Temp_control_by_ds18b20_v10.html

FIRMWARE 4.0F
รุ่นท้ายสุด... ผมปรับแก้ bug จนหมดแล้วครับ
อีกอย่างคือยัดอะไรไม่ได้แล้ว เต็ม2kแล้วจริงๆ อยากใส่ delay time
ให้ รีเลย์ แต่ยัดไม่ลงครับ ก็เลยเอาเท่าที่ได้...

การตั้งค่า กด set ค้างไว้ 1 วิครับมันจะขึ้น HC_x ซึง x ก็คือ ตัวกระพริบ
ถ้าเป็น C กระพริบก็ Cool คุมเย็น ถ้าเป็น H ก็คือ Hot คุมร้อน
กดปุ่ม inc เพื่อตั้งค่า จากนั้นกด set อีกครั้ง หน้าจอจะแสดง Hi_t
ประมาณ1วินาที จากนั้น จะเปลี่ยนเป็นตัวเลข4หลัก คือค่าอุณหภูมิสูง
กดปุ่ม inc เพื่อตั้งค่าจากนั้นเลื่อนไปหลักต่อไปโดยกดปุ่ม set
เมื่อตั้งค่าหลักสุดท้ายเสร็จ กดปุ่ม set อีกครั้ง หน้าจอจะเสดง Lo_t
ประมาณ1วินาที จากนั้น จะเปลี่ยนเป็นตัวเลข4หลัก คือค่าอุณหภูมิต่ำ
กดปุ่ม inc เพื่อตั้งค่าจากนั้นเลื่อนไปหลักต่อไปโดยกดปุ่ม set
เมื่อตั้งค่าหลักสุดท้ายเสร็จ กดปุ่ม set อีกครั้ง หน้าจอจะเสดง Succ
เป้นอันเสร็จการตั้งค่า

การ ลบค่าอุณหภูมิที่ตั้งไว้ทั้งหมด ทำได้โดยกด ปุ่ม set กับ inc ค้าง
ไว้ 1วิ หน้าจอจะแสดง CLr เท่านี้ค่าต่างๆก็จะถูกลบออกหมดแล้ว...

4.0F ผมตัด function ที่เกี่ยวกับ EEPROM ทั้งหมดออกนะครับ
อยากได้ต้องไปเพิ่มกันเองครับ เหลือไว้ให้คิดเองบ้างครับ ชีวิตจะได้
มีรสชาติ...อิอิ คงไปต่อยอดกันเองได้ไม่ยากนะ...

ปล. เกี่ยวกับ error msg.
Er_1 = family code ไม่ตรง หรือไม่ใช่ ds18b20 ที่ต่ออยู่
แต่ผมตัดออกเพาระไม่จำเป็น.
Er_2 = Device not Presence ไม่มีการตอบสนอง ต่อการ
reset บน bus 1-wire ซึ่งตัว ds18b20 อาจจะเสียหรือหลุด
หือสายอาจจะขาดก็ว่าไป.
Er_3 = ค่าอุณหภูมิสูง มีค่าที่น้อยกว่า ค่าอุณหภูมิต่ำ.
Er_4 = ค่าอุณหภูมิสูง และหรือ ค่าอุณหภูมิต่ำ มีค่าเกินย่านวัด
คือ -55 ถึง +125 องศา.
Er_5 = อันนี้เกี่ยวกับ EEPROM ทั้งหมด 4.0F จะไม่มี

Source code v4.0f
http://www.4shared.com/file/ozlAOxSW/Digital_temperature_controller.html
บันทึกการเข้า
JUB
Full Member
member
**

คะแนน81
ออฟไลน์ ออฟไลน์

กระทู้: 1157



« ตอบ #45 เมื่อ: มิถุนายน 23, 2011, 12:42:51 PM »

เปิด source วันนี้เสนอ project ยามว่าง เนื่องมาจากที่บ้านผม
มีเครื่องซักผ้าแบบ กึ่ง อัตโนมือ... เวลาปั่นเสร็จมันจะไม่เตื่อนใดๆทั้งสิ้น
ส่วนระหว่างปั่น ผมก็จะมานั่งเล่น internet มันก็จะเพลินจนเนิ่นนาน
เลยเวลาตากผ้าหรือเวลาหมดแดด ก็เลยทำเครื่องเตือนเป็น CountDown
ขึ้นมาจะได้ไม่เล่นเพลินจนลืมตากผ้าดังกล่าว...เฮอๆๆ

http://www.youtube.com/v/ISDyS7gfiAI.swf

วงจร


ของจริง














รายละเอียดการใช้งาน
CountDown ตัวนี้มีด้วยกันหลักๆ 3 โหมด คือ
1-99 วินาที,1-99 นาที,1-99 ชั่วโมง
แต่ละโหมด จะมีย่อย อีก 4 แบบ คือ ตั้งเวลาปิด,เปิด ให้ alarm หรือไม่ alarm
โดย dot1 หากติดคือเปิด alarm ไม่ติดคือปิด alarm
ส่วน dot2 ถ้าติดคือ การตั้งเวลาเปิด ถ้าไม่ติดคือ การตั้งเวลาปิด

A = sec
b = min
C = hour


ปุ่ม Set ทำงานสองหน้าที่
กดปล่อย = start,stop
กดค้าง  = set

การตั้งเวลาทำได้โดยกด set ค้างไว้ประมาน 1วินาทีจะได้ยินเสียง beep 1ครั้ง
หน้าจอจะแสดง mode ให้กด + ตั้งค่า mode ตามต้องการ จากนั้นกด set 1ครั้ง
จะเป็นการตั้งค่าหลัก สิบ กด + เลือก 0-9 จากนั้นกด set 1ครั้ง เป็นการตั้งหลัก
หน่วย กด + เพื่อตั้งค่า กด set 1ครั้ง ตัวเลขจะหยุดกระพริบ กด set 1ครั้ง
จะเห็น dot2 กระพริบแสดงว่าเวลาเริ่มเดินแล้ว ในระหว่างเวลานับถอยหลังอยู่
สามารถหยุดได้โดยกด set 1ครั้งหรือกด set ค้างไว้ประมาน 1วินาที
จะได้ยินเสียง beep 1ครั้ง เป็นการกลับไปตั้งค่าใหม่อีกครั้ง...

เปิด alarm
เมื่อการนับถอยหลังเสร็จสิ้น จะเกิด alarm ประมาณ 30วินาที
จากนั้นจะหยุดไปเอง ถ้าในระหว่างเกิด alarm อยู่แล้วต้องการปิด
ให้กด set ค้างไว้ประมาน 1วินาทีจะได้ยินเสียง beep 1ครั้ง
alarm จะหยุด...

Source Code v1.0 แบบเต็มๆไม่มีตัด...
http://www.4shared.com/file/0kusRLlr/CountDown_Timer_3Mode_With_Ala.html
Source Code v1.2 ใส่ alarm relay เพิ่ม...
http://www.4shared.com/file/JkcU-G-f/CountDown_Timer_3Mode_With_Ala.html
บันทึกการเข้า
PR-TRAFFIC
member
*

คะแนน2
ออฟไลน์ ออฟไลน์

กระทู้: 41


« ตอบ #46 เมื่อ: กันยายน 22, 2011, 05:11:49 PM »

ถึงคุณ JUB ครับ
ผมทำเค้าเตอร์ 5 หลัก[99999]  เริ่มต้นที่ 0 โดยบวกขึ้นทีละ 1
ผมเขียนโค้ดโดย .Basic  ซึ่งมันนับได้ถึง ประมาณ 65000
เพราะว่า สุดความสามารถของ Basic  แล้ว  [กำหนด Variables เต็มที่แล้ว  NUM  VAR  Word]
ผมอยากได้เป็น ภาษาซี  ผมมีค่าน้ำชา กาแฟ ให้ครับผม
ชื่อ ณรงค์  E,Mail: pr-traffic@hotmail.com   tel. 0898635099
บันทึกการเข้า
JUB
Full Member
member
**

คะแนน81
ออฟไลน์ ออฟไลน์

กระทู้: 1157



« ตอบ #47 เมื่อ: กันยายน 22, 2011, 07:08:27 PM »

ถึงคุณ JUB ครับ
ผมทำเค้าเตอร์ 5 หลัก[99999]  เริ่มต้นที่ 0 โดยบวกขึ้นทีละ 1
ผมเขียนโค้ดโดย .Basic  ซึ่งมันนับได้ถึง ประมาณ 65000
เพราะว่า สุดความสามารถของ Basic  แล้ว  [กำหนด Variables เต็มที่แล้ว  NUM  VAR  Word]
ผมอยากได้เป็น ภาษาซี  ผมมีค่าน้ำชา กาแฟ ให้ครับผม
ชื่อ ณรงค์  E,Mail: pr-traffic@hotmail.com   tel. 0898635099

Basic ลองแบ่งเป็น 2 word ได้หรือป่าวครับ...

คุยทาง mail ได้ครับ jengmod@จีเมลล์.คอม
หรือ http://www.facebook.com/pages/mcs51asm/220545897976536
บันทึกการเข้า
Dumrong007
member
*

คะแนน0
ออฟไลน์ ออฟไลน์

กระทู้: 87


อีเมล์
« ตอบ #48 เมื่อ: กันยายน 22, 2011, 08:51:07 PM »


   ขอบคุณ ขอบคุณ ขอบคุณ ขอบคุณพี่ครับ พอจะมีวงจร CountDown ที่ใช้ pic ไหมครับ ขอหน่อยพอดีผมมีแต่บอร์ดอัดโปรแกรมของ PIC นะครับ
ของโปรแกรมด้วยนะครับ ขอบคุณล่วงหน้าครับ

 ขอบคุณ ขอบคุณ ขอบคุณ ขอบคุณ ขอบคุณ ขอบคุณ ขอบคุณ ขอบคุณ ขอบคุณ ขอบคุณ ขอบคุณ ขอบคุณ ขอบคุณ ขอบคุณ ขอบคุณ ขอบคุณ ขอบคุณ ขอบคุณ ขอบคุณ ขอบคุณ ขอบคุณ ขอบคุณ
บันทึกการเข้า
Dumrong007
member
*

คะแนน0
ออฟไลน์ ออฟไลน์

กระทู้: 87


อีเมล์
« ตอบ #49 เมื่อ: กันยายน 22, 2011, 09:12:25 PM »

นี่เมลผมครับ tim0314singha@gmail.com

ส่งให้หน่อยน่ะ   ขอบคุณ ขอบคุณ ขอบคุณ ขอบคุณ ขอบคุณ ขอบคุณ ขอบคุณ ขอบคุณ ขอบคุณ ขอบคุณ ขอบคุณ
บันทึกการเข้า
JUB
Full Member
member
**

คะแนน81
ออฟไลน์ ออฟไลน์

กระทู้: 1157



« ตอบ #50 เมื่อ: กันยายน 23, 2011, 02:46:10 AM »

นี่เมลผมครับ tim0314singha@gmail.com

ส่งให้หน่อยน่ะ   ขอบคุณ ขอบคุณ ขอบคุณ ขอบคุณ ขอบคุณ ขอบคุณ ขอบคุณ ขอบคุณ ขอบคุณ ขอบคุณ ขอบคุณ

http://www.turbokeu.com/myprojects/countdown3.htm
บันทึกการเข้า
JUB
Full Member
member
**

คะแนน81
ออฟไลน์ ออฟไลน์

กระทู้: 1157



« ตอบ #51 เมื่อ: กันยายน 29, 2011, 11:10:18 AM »

หลังจากได้เขียน c ด้วย Keil ก็เกิดอาการมันส์มือเลยเอางานเก่าๆที่เคยทำ
เป็น asm มาแปลงและใส่ลูกเล่นเพิ่ม code อาจยังมั่วๆอยู่นะครับ
เพิ่งหัดเขียนเมื่อวาน ใครเอาไปปรับปรุงแล้วมาโพสบอกกันด้วยนะครับ

http://www.youtube.com/v/2SznN6wCn64.swf

demo มันทำได้เกือบๆเท่า GLCD นั่นแหละแต่มั่นติดตรง CGROM
ที่มีแค่ 8 ตัว... แต่ผมลองแล้วใช้ได้ดีในระดับหนึ่งเลย เลยเอามาให้
เพื่อนๆลองใช้กันเป็น SPI Driver ได้ไม่ต้องไปเสียเวลาเขียนใหม่...

Source Code
http://www.4shared.com/file/CDrbNf5o/SPI.html
บันทึกการเข้า
JUB
Full Member
member
**

คะแนน81
ออฟไลน์ ออฟไลน์

กระทู้: 1157



« ตอบ #52 เมื่อ: กันยายน 29, 2011, 11:12:18 AM »

ว่างๆระหว่างรอ บอร์ด v6 ป๋ามิน ทำแบบใหญ่มาเยอะลองทำแบบเล็กๆบ้าง
ทำจากอะไหล่เก่าๆ 7seg ตัวนี้รู้สึกว่าจะแกะมาจาก meter taxi เก่าๆ ตอนนั้น
ซื้อมา 20 บาท มีอยู่ 2ตัว ตัวใหญ่ๆอีก 2 ตัว ราคา 20 บาทคุ้มมากมาย



[youtube]yZx0jkBzixw[/youtube]

ครั้งนี้ผมไม่อธิบายมาก source code ผมดัดแปลงจาก code ที่เคยทำมาแล้ว
เอามาแก้นิสหน่อยก็ทำงานได้เลย ตัวนี้ว่าจะออกแบบ pcb ให้เป็นเรื่องเป็นราว
ไม่รู้จะไปได้แค่ไหน

โปรเจคผมเน้นง่ายๆทำตามได้ไม่ยากนัก ลองไปต่อยอดเป็น display แบบ
อื่นๆดูครับแล้วเอามาโชว์หน่อยก็ดี










Source code keil C + PCB PDF format. + PCB EAGLE format.
http://www.4shared.com/file/wDGrhopu/LED_Clock.html
บันทึกการเข้า
kong2550
member
*

คะแนน0
ออฟไลน์ ออฟไลน์

กระทู้: 1


« ตอบ #53 เมื่อ: ตุลาคม 19, 2011, 11:18:17 AM »

เก่งมากเลย เป็นวิทยาทานให้คนอื่นๆ
มีคนแบบนี้เยอะๆ ชาติไทยเจริญรุ่งเรืองแน่นอน
สุดยอดมากกกก   

 lv!
บันทึกการเข้า
JUB
Full Member
member
**

คะแนน81
ออฟไลน์ ออฟไลน์

กระทู้: 1157



« ตอบ #54 เมื่อ: พฤศจิกายน 09, 2011, 07:47:14 PM »

ด้นเขียนจนเสร็จ... Smiley

http://www.youtube.com/v/BrWxfUtzF2A.swf



ไม่รู้จะอธิบายอะไร ถ้าสงสัย post ถามนะครับ...Smiley
Source Code (Keil C)
http://www.4shared.com/file/k_i2WxyU/CLCD_Clock.html
บันทึกการเข้า
JUB
Full Member
member
**

คะแนน81
ออฟไลน์ ออฟไลน์

กระทู้: 1157



« ตอบ #55 เมื่อ: พฤศจิกายน 09, 2011, 07:50:49 PM »

source ดัดแปลงจาก asm ของ at89s8252 ของ บ. ett ทำไว้เป็นตัวอย่าง แจ่มใช้ได้
ในวิดีโอดูไม่สวย ของจริงวิ่งได้ลื่นไหลดี Algorithms ผมเห็นแล้วยังงงในตอนแรกแต่ไม่ยาก

http://www.youtube.com/v/Hcter9UdISg.swf

ประมาณว่า เราแบ่งและBufferข้อมูลเป็นสี่ชุดเท่ากัน ได้แก่
1.วรรณยุกต์
2.สระบน
3.ตัวอักษร
4.สระล่าง

และมี Algorithms ของการเก็บโดยเฉพาะ (ดูได้จาก source code ของ ett) ตัวอย่างเช่น
สระบน และ วรรณยุกต์ จะตรวจสอบ สระบน ก่อน และตามด้วย วรรณยุกต์ หาก สระบน
ว่างหรือไม่มี Buffer สระบนจะถูกแทนที่ด้วย วรรณยุกต์ เพื่อป้องกันสระลอยเท้งเต้งเป็นต้น

เมื่อได้ข้อมูลที่แยกเรียบร้อยแล้ว ก็จะนำข้อมูลไปเปิดตาราง โดยมี pointer เป็นตัวกำหนดตำแหน่ง
ของข้อมูลที่อยู่ในตาราง ของตัวหนังสือแต่ละตัว เช่นข้อมูลตัวหนังสือหนึ่งตัว มีขนาด 6 byte
ตัว pointer นี่แหละ ที่จะเป็นตัวชี้ว่าให้เริ่ม fetch ข้อมูล byte ไหน

ทีเหลือก็เป็น การส่งให้ Display ต่อไป ดูเหมือนง่าย แต่ผมเขียนอยู่ 3 วัน (ไม่เคยทำไทยมาก่อน) :lol
แต่พอเข้าใจ Algorithms แล้วไม่ยากเลย ง่ายมากๆ แถมเอาความรู้ที่ได้ไปปรับใช้กับ GLCD ได้อีก

งดตอบทุกคำถามเกี่ยวกับ code ครับ...:victory:
Source Code MPLAB-C18 for pic18f2550@20Mhz
ไฟล์ใหม่ครับไฟล์เดิมใช้ไม่ได้นะใครโหลดไป ก่อน 26ตุลา54เวลา16.42น มาโหลดไปใหม่
http://www.4shared.com/file/VtPp1QUF/Dot16x32.html
บันทึกการเข้า
JUB
Full Member
member
**

คะแนน81
ออฟไลน์ ออฟไลน์

กระทู้: 1157



« ตอบ #56 เมื่อ: พฤศจิกายน 09, 2011, 07:53:12 PM »

ว่างๆ เลยเอา 7 segment serial มา upgrade ใช้ AT89LP4052 @18.432Mhz
จี๊ดมาก มี Ram 256 Byte เอามาเป็น fifo-buffer แบบเวอร์ๆมากถึง 160 byte
การแสดงผลออกมาเนียนกว่าใช้ AT89C2051 มาก เลยเอามาลองทำ code lock
แบบ 7 segment ดู.. ก็แปลกไปอีกแบบ เพราะผมเคยเห็นแต่ CLCD...

http://www.youtube.com/v/62-IsaNNCuE.swf

การทำงาน
หน้าจอปรกกติ สามารถป้อน password 4 หลักได้ทันที
ถ้า password ถูกต้องจะแสดง pass กระพริบ 3 ครั้ง
ถ้า password ผิด จะแสดง err
ในระหว่างการป้อน password ถ้าต้องการลบให้กด * แล้วป้อนใหม่ได้

การเปลี่ยน password
กด # จะแสดง P-[xxxx]ใส่ password เดิม ถ้า password ผิด จะแสดง err
ถ้า password ถูกต้องจะแสดง n-[xxxx] ใส่ password ใหม่
ถ้า password ผิด จะแสดง err ถ้า password ถูกต้องจะแสดง A-[xxxx]
ยืนยัน password ใหม่อีกครั้ง ถ้า password ใหม่ถูกต้องจะแสดง pass

ลองไปต่อยอดกันดูครับ...:victory:

Source Code Keil C
http://www.4shared.com/file/UVu2ov4f/Code_lock.html
บันทึกการเข้า
kiano♥
kiano555@gmail.com
กลุ่มสนับสนุนLSV+มีน้ำใจ
member
****

คะแนน337
ออฟไลน์ ออฟไลน์

กระทู้: 570


การให้น่าภูมิใจกว่าได้รับ Line ID : Tech64

kiano555@windowslive.com kiano555@yahoo.com
เว็บไซต์ อีเมล์
« ตอบ #57 เมื่อ: พฤศจิกายน 09, 2011, 11:22:50 PM »

555 พี่ JUB ก็เอามาตุนไว้ด้วยหรอ LED Matrix นั่นน่ะ ผมก็จัดมา 1 ชิ้น จนบัดเด่วนี้ยังไม่มีเวลาลองเล่นเลย ยังกองอยู่่ในกล่องไปรษณีย์เหมือนเดิม
บันทึกการเข้า
หน้า: 1 [2] 3   ขึ้นบน
  พิมพ์  
 
กระโดดไป: