พิมพ์หน้านี้ - AVR-MCS-PIC-Microcontroller Project

LSVคลังสมองออนไลน์ "ปีที่21"

► อิเล็กทรอนิกส์ ► => หุ่นยนต์-pcb-เทคโนโลยี่ใหม่ => ข้อความที่เริ่มโดย: JUB ที่ พฤศจิกายน 02, 2008, 11:16:19 PM



หัวข้อ: AVR-MCS-PIC-Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ พฤศจิกายน 02, 2008, 11:16:19 PM
ท่านใด load file ไม่ได้หรือมองไม่เห็นรูป pm หาผมพร้อมกับ email ตัวท่านเองและชื่อของ project นั้นๆ แล้วผมจะส่ง file ให้ไปครับ... :)

ขี้เกียจขึ้นหัวข้อใหม่บ่อยๆครับรวมมันไว้หัวข้อเดียวเลย lsv-smile

RC5 DECODEDER  demo


หัวข้อ: Re: MCS Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ พฤศจิกายน 06, 2008, 01:46:31 PM
Frequency counter


หัวข้อ: Re: MCS Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ พฤศจิกายน 12, 2008, 01:04:13 AM
CountDown Timer 0-99 Minute or 0-99 Hour Demo


หัวข้อ: Re: MCS Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ พฤศจิกายน 14, 2008, 12:26:17 AM
LED Siren Flash

http://www.youtube.com/v/R4P-nwfkaq4.swf

ว่างครับ เลยลองทำไฟกระพริบLED ที่เขาเอาไว้แทนไซเรนแบบไฟหมุนแบบเก่า เอาไปดัดแปลงทำต่อได้ตามสะดวกครับ
มี code asm ให้ด้วย ลองศึกษาการทำงานกันดู


หัวข้อ: Re: MCS Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ พฤศจิกายน 28, 2008, 03:24:04 PM
ไฟวิ่ง 5 รูปแบบ แปลง Code มาจาก PIC16F84 ครับ ทำงานได้เหมือนกัน  lsv-smile


หัวข้อ: Re: MCS Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ ธันวาคม 03, 2008, 02:37:32 PM
RS232 ควบคุมการเปิดปิด หลอดไฟได้8ตำแหน่ง โดยใช้ Command line ผ่านโปรแกรม Hyper terminal หรือโปรแกรม terminal อื่นๆ
สืบเนื่องมาจากผมมี Com เก่าอยู่ 1 เครื่องมันใช้งาน Dos ได้อย่างเดียว(เก่ามาก) บวกกับดูหนังเรื่อง  Jurassic Park ภาคแรกเมื่อวาน ที่เขาใช้ com
ระบบ Unix ควบคุมระบบต่างๆใน Park ผ่าน Command line ก็เลยเกิดโปรเจคนี้ขึ้น หากไม่เข้าใจตรงไหน Post ทิ้งไว้หากมีเวลาผมจะมาตอบให้ ;D


หัวข้อ: Re: MCS Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ ธันวาคม 08, 2008, 04:37:21 PM
Serial C-LCD

เชื่อมต่อ กับ mcu โดยใช้ขาเพียง 3 ขา
1.Data
2.V+5
3.GND

รายละเอียดเพิ่มเติม
www.seetron.com/slcds.htm
www.ipst-microbox.com/store/manual/slcd16x2_e.pdf


หัวข้อ: Re: MCS Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ ธันวาคม 09, 2008, 11:59:40 AM
Firmware กับ asm code *ใช้ทดสอบ* กับจอ Serial LCD

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

[youtube]xcv8AFFgra4[/youtube]


หัวข้อ: Re: MCS Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ มีนาคม 17, 2009, 12:46:45 PM
Count down timer 0-99 min 1 of 2...  :P


หัวข้อ: Re: MCS Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ มีนาคม 17, 2009, 12:50:19 PM
Count down timer 0-99 min 2 of 2...  :P


หัวข้อ: Re: MCS Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ พฤษภาคม 20, 2009, 07:29:14 PM
Countdown Timer 99 min V3.5c


หัวข้อ: Re: MCS Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ พฤษภาคม 20, 2009, 07:34:12 PM
Counter 4 Digit V1.0a

ตัวเลขใหญ่ อ่านง่าย นับได้ 9999 ความถี่ขณะนับไม่ควรเกิน 10 ครั้งต่อวินาที


หัวข้อ: Re: MCS Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ มิถุนายน 01, 2009, 11:08:40 AM
COUNTER 8 DIGIT firmware V1.2a (Free...!!! version) for AT89C2051  :P


หัวข้อ: Re: MCS Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ มิถุนายน 01, 2009, 11:18:18 AM
PSX to LCD

อ่าน ค่า Key Pad ของ Joy Playstation ไปแสดงที่ LCD มี Source Program เป็น asm
เอาไปดัดแปลงใช้ในงาน ที่ต้องการใช้ Joy ควบคุมได้ รองรับ ทั้ง Digital และ Analog


หัวข้อ: Re: MCS Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ มิถุนายน 01, 2009, 11:20:37 AM
Serial LCD v1.0F free...!!! version...  :P


หัวข้อ: Re: MCS Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ มิถุนายน 07, 2009, 05:43:04 PM
Thai Clock For Serial LCD Backpack(R)

J-Project Serial LCD v4.6 and v5.0 (v2.0 thru v4.5 and v1.0f not support)
This project use AT89C2051 microcontroller (Baud 9600 X-tal 11.059MHz)

P3.1 Connect to Serial LCD
P3.2 Connect to Increment switch
P3.3 Connect to Set switch
P3.7 Connect to Speaker

Slcd v1.0f ให้เปลี่ยนค่าเวลา Initial จาก 1 วินาที เป็น 5 วินาที


หัวข้อ: Re: MCS Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ มิถุนายน 23, 2009, 08:45:36 PM
Frequency Counter

Test on P80c31 SBC run@11.0592MHz and ET-EM8/32 EpromEmulator
AT89C2051 compatible


หัวข้อ: Re: MCS Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ มิถุนายน 23, 2009, 09:00:55 PM
Readkey playstation joypad v2

แก้ไขในส่วนแสดงผลใหม่... :P


หัวข้อ: Re: MCS Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ มิถุนายน 23, 2009, 09:03:17 PM
DS1307 Serial LCD Real Time Clock

100%support j-project Slcd v5.0 (Slcd v1.0f แก้ start up initial จาก 1วินาที เป็น 5วินาที)
ใช้กับ AT89C2051 ได้


หัวข้อ: Re: MCS Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ กรกฎาคม 06, 2009, 03:19:49 PM
Large Clock v1.0

จริงๆแล้วไม่ได้ตั้งใจจะทำนาฬิกาครับ คือเมื่อเดือนที่แล้วโน้น ไปเดินตลาดนัดแถวบ้าน
เจอ LED Display อันใหญ่เหมือนกัน ตัวเลขสูงเกือบ 5 นิ้ว มี 5 หลัก น่าจะเป็นป้ายแสดงค่า
น้ำหนักเพราะเห็นมี "กก" ต่อท้ายอยู่ คงเป็นอย่างอื่นไปไม่ได้แน่ คนขายบอกว่าใช้ได้
ต่อกันอยู่พักนึง เขาก็ขายให้ในราคา 170 บาท ผมกะว่ายังไง IC ที่อยู่บน Board ก็เกินคุ้มแล้ว
พอเอามาลองที่บ้าน IC เสียเรียบทั้ง Board เลย (...เฮ้อเวร...T T) แต่ LED ยังใช้ได้หมด
กำลังจะรื้อ LED ไปทำไฟวิ่ง ก็มาสะดุดเห็น บน PCB เขาเขียนว่า"UNIVERSAL LARGE DISPLAY"
และบน Board ก็มีที่ใส่ DS1302 และลังถ่าน CR2032 มาให้ ก็เลยเอามาทำนาฬิกาน่าจะเหมาะสุด...

Hardware : ET-CPSB31 V2.0(R1)
CPU 80C32
DS1307 On Board
Settime Sw Port1.0
Increment Sw Port1.1
8255 PortA Connect 8bit 74HC374 Bus
8255 PortB0 Connect ck pin 74HC374 of digit1
8255 PortB1 Connect ck pin 74HC374 of digit2
8255 PortB2 Connect ck pin 74HC374 of digit3
8255 PortB3 Connect ck pin 74HC374 of digit4
8255 PortB4 Connect ck pin 74HC374 of digit5


หัวข้อ: Re: MCS Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ กรกฎาคม 06, 2009, 03:23:52 PM
โปรแกรมตัวอย่าง ใช้กับ ET-CPSB31 V2.0(R1)

มีสองโปรแกรมครับ ใช้กับ RTC DS1307 กับ ADC AD0832 ซึ่งตอนนี้ DS1202 ผมหาซื้อไม่ได้แล้ว
(DS1302 น่าจะยังมีอยู่) แต่ผมมี DS1307 อยู่หลายตัว ประกอบกับ ET-CPSB31 V2.0 รุ่น (R1) นี้
ได้เพิ่ม socket DS1307 มาให้ด้วย ส่วน LTC1298 ก็แพงมาก(ที่ es ตัวละสองร้อยกว่า) ก็เลยเอา
AD0832 มาแทน ใครใช้ Board ตัวนี้อยู่ก็เอาไปลองได้เลย ส่วนใครที่ไม่ได้ใช้ CPU 8032ของ Dallas
ที่มี Serial com สองชุด ลองเอา

MCS-51 Virtual Serial Port

โปรแกรมเลียนแบบ port รับส่ง serial data 9600bps @11.059mhz ไปลองดูได้เลย
โดยต่อสาย RS232 เข้าที่ CH1 ของ Board หรือกำหนดเองได้ตามใจชอบ...
และต้องบอกก่อนเลยว่าผมไม่ได้มีส่วนได้เสียใดๆกับบริษัทเหล่านี้นะครับ
ผมซื้อมาทดลองเองทั้งนั้น (หมดไปหลายเงินแล้ว...555)


หัวข้อ: Re: MCS Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ กรกฎาคม 06, 2009, 03:27:24 PM
Security Keypad v1.0


หัวข้อ: Re: MCS Microcontroller Project
เริ่มหัวข้อโดย: rush ที่ กรกฎาคม 25, 2009, 11:34:54 AM
file ที่เป็นนาม .hex นี้สามารถโหลดมาแล้วนำไปใช้ได้เลยหรือเปล่าครับ หรือว่าผมจะต้องเขียนโค้ดขึ้นมาใหม่


หัวข้อ: Re: MCS Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ กรกฎาคม 28, 2009, 12:55:10 PM
อ้างจาก: rush
file ที่เป็นนาม .hex นี้สามารถโหลดมาแล้วนำไปใช้ได้เลยหรือเปล่าครับ หรือว่าผมจะต้องเขียนโค้ดขึ้นมาใหม่

ใช้ได้เลยครับถ้า ใช้ hardware เดียวกันกับที่ผมใช้ หรือที่ผมระบุไว้ว่าใช้กับ mcs เบอร์ใดๆก็นำไปใช้กับเบอร์นั้นๆได้เลย


หัวข้อ: Re: MCS Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ กรกฎาคม 28, 2009, 12:57:20 PM
Security keypad for ET-CPSB31

at89c2051 not compatible
keypad connect to portc of 8255
lcd 16x1 connect to lcd port 20pin


หัวข้อ: Re: MCS Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ กรกฎาคม 28, 2009, 01:01:41 PM
ตัวอย่างการเขียนโปรแกรม ภาษา ASM โดยการประกาศ Macro ทำให้ง่ายต่อการเขียนและเรียกใช้งาน

**หลักการคือ**
1.เรียบเรียงการทำงานในแต่ละส่วนว่ามีการทำงานแบบใดบ้าง
2.กำหนดและแยกการทำงานออกทีละส่วน
3.นำการทำงานที่แยกออกมาได้แล้ว ไปประกาศ Macro และเขียน asm ใน macro body
4.เรียบเรียงว่ามี การทำงานใดที่ซ้ำกัน หรือ สามารถนำมาต่อกันใน macro เดียวกันได้
5.เขียนโปรแกรม โดยเรียก macro ในแต่ละส่วนตามลำดับของโปรแกรม

**ข้อดีของการทำแบบนี้**
1.คือลดความสับสนในการเขียนโปรแกรมหากโปรแกรมมีความซับซ้อนมากๆ
2.การแก้ไขและะพัฒนาเป็นไปอย่างรวดเร็ว หากกำหนดและแยกการทำงานออกเป็นส่วนๆ
3.การส่งผ่านค่าตัวแปรเป็นไปอย่างง่ายดาย
4.หากแยก file macro ใว้ จะสามารถเอาไปใช้กับการเขียนโปรแกรมอื่นๆในครั้งต่อๆไปได้

**ข้อเสีย**
1.เหมาะกับผู้ที่เคยเขียน ภาษา ASM มาบ้างแล้วพอสมควร
2.ใช้พื้นที่ของหน่วยความจำมากกว่าการเขียนแบบปรกติ(ไม่ใช้macro)
3.หากจัดระเบียบหรือแยกการทำงานของ program ออกไม่ดี จะเกิดความสับสนได้ง่ายมากกว่า

โค๊ด:
;//****************************//;
;//* Program: LED flash       *//;
;//* Assembler: ASEM-51       *//;
;//* Author: Somlak Mangnimit *//;
;//* Date: 24/07/2009         *//;
;//****************************//;

;//****MACRO INCLUDE FILE****//;
$IC (SETPORT.INC)
$IC (INITIAL.INC)
$IC (DELAYMS.INC)
;//**************************//;

;//CPU RESET JUMP TO ORG 0030H
ORG 0000H
JMP 0030H

;//MAIN PROGRAM
ORG 0030H

;//MACRO INITIAL
INITIAL

;//START LOOP
LOOP:

PORT1 (10101010B) ;//SET PORT MACRO
DELAYMS (200) ;//MACRO DELAY  200MS
PORT1 (01010101B) ;//SET PORT MACRO
DELAYMS (200) ;//MACROD ELAY 200MS

;//END LOOP
JMP LOOP

;//END OF PROGRAM
END


หัวข้อ: Re: MCS Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ สิงหาคม 29, 2009, 09:48:10 AM
Stepper Motor controller

ใช้กับ AT89C2051 run@12MHz
สั่งหมุนซ้ายขวาปรับความเร็วได้ (มีวงจร กับ hex)


หัวข้อ: Re: MCS Microcontroller Project
เริ่มหัวข้อโดย: samark ที่ กันยายน 28, 2009, 11:51:30 AM
ขอเบอร์ติดต่อกลับด้วยครับ
ส่งมาที่ samark@automation.co.th
มีเรื่อง PIC จะถามครับ
ขอบคุณอย่างสูง


หัวข้อ: Re: MCS Microcontroller Project
เริ่มหัวข้อโดย: trex600 ที่ มกราคม 04, 2010, 05:00:51 PM
 kiss6


หัวข้อ: Re: MCS Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ มกราคม 30, 2010, 11:11:36 PM
ช่วงนี้กำลังเตรียม project อยู่ครับ เฮ้อ... :P เหนื่อยๆครับช่วงนี้... :P

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


หัวข้อ: Re: MCS Microcontroller Project
เริ่มหัวข้อโดย: oats3483 ที่ กุมภาพันธ์ 08, 2010, 12:03:09 PM
ขอบคุณครับพี่ kiss6


หัวข้อ: Re: MCS Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ กุมภาพันธ์ 10, 2010, 01:40:59 PM
Read Temp From DS18S20 to LCD (Big.num!!!)

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

(http://www.electoday.com/home/attachment/201009/21/562_1285066207Eo1X.jpg)

source code
http://www.4shared.com/file/_9O58YBP/temp_bignum.html


หัวข้อ: Re: AVR,MCS Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ กุมภาพันธ์ 10, 2010, 08:24:53 PM
USB<>Serial Converter

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

อยากทำใช้ไปที่
http://www.recursion.jp/prose/


หัวข้อ: Re: AVR,MCS Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ กุมภาพันธ์ 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


หัวข้อ: Re: AVR,MCS Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ กันยายน 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


หัวข้อ: Re: AVR,MCS Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ กันยายน 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


หัวข้อ: Re: AVR,MCS Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ กันยายน 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


หัวข้อ: Re: AVR,MCS Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ ธันวาคม 06, 2010, 12:22:40 PM
Read Temp from DS18S20

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

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

source code
http://www.4shared.com/file/QgUyBqDa/ds1820_7segment.html


หัวข้อ: Re: AVR,MCS Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ ธันวาคม 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


หัวข้อ: Re: AVR-MCS-PIC-Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ มกราคม 20, 2011, 07:16:20 PM
Nokia 5110 GLCD Temp Monitor.

(http://farm6.static.flickr.com/5286/5372638566_ec6a1824e5.jpg) (http://www.flickr.com/photos/57376748@N03/5372638566/)
Nokia_temp_v1 (http://www.flickr.com/photos/57376748@N03/5372638566/) by jengmod (http://www.flickr.com/people/57376748@N03/), on Flickr

Source code
http://www.4shared.com/file/1geXOUmJ/Nokia_temp_v1.html


หัวข้อ: Re: AVR-MCS-PIC-Microcontroller Project
เริ่มหัวข้อโดย: First_soft ที่ กุมภาพันธ์ 03, 2011, 01:04:08 PM
ขอบคุณคับ


หัวข้อ: Re: AVR-MCS-PIC-Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ มีนาคม 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 เอามาวิ่งแสดงเฉยๆ ที่เหลือไปเขียนต่อกันเอง
เพราะเดี๋ยวจะงงกันซะเปล่าๆ....

(http://www.electoday.com/home/attachment/201103/8/562_1299591943CaGS.jpg)

source code v1

http://www.4shared.com/file/rhfAv1Jn/dot_matrix_v1.html (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%
รายละเอียดหลักๆ น่าจะมีเท่านี้ ถ้าได้อะไรใหม่ๆจะมาเล่าให้ฟังอีกที.....
(http://www.electoday.com/home/attachment/201102/27/562_1298785790NCzq.jpg)

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.4shared.com/file/2Pqja7vO/dot_matrix_8x22_v2.html)

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

แจ่มบ่ล่ะ ลงทุน 300 กว่าบาทเอง...... :lol


หัวข้อ: Re: AVR-MCS-PIC-Microcontroller Project
เริ่มหัวข้อโดย: nonmummy ที่ เมษายน 05, 2011, 09:06:54 PM
ผมอยากได้ วงจร full duplex intercom พอจะมีไหมครับ ถ้ามีขอรายละเอียด มาเลย นะครับ  อีเมลล์ non_mummy@hotmail.com ครับ  อยากได้มากๆครับ  ขอบคุณครับ lv!


หัวข้อ: Re: AVR-MCS-PIC-Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ เมษายน 05, 2011, 11:40:38 PM
(http://lh4.ggpht.com/_FdGFE8NBDgc/TAT4B010izI/AAAAAAAAC8w/96NmZWfl1VI/full-duplex-intercom-circuit-diagram.GIF)
http://circuits.medianetwork.co.in/full-duplex-intercom/

(http://www.redcircuits.com/Intercom.GIF)
http://wara.com/article-484.html

ผมหามาให้ได้เท่านี้ครับ......  :)


หัวข้อ: Re: AVR-MCS-PIC-Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ มิถุนายน 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

วงจรครับ
(http://www.electoday.com/home/attachment/201107/15/562_1310708906MK80.jpg)

ของจริง...
(http://www.electoday.com/home/attachment/201106/12/562_13078899044WG4.jpg)
(http://www.electoday.com/home/attachment/201106/12/562_13078899576ZrG.jpg)

(http://www.electoday.com/home/attachment/201106/28/562_1309284810Xp3g.jpg)
(http://www.electoday.com/home/attachment/201106/28/562_1309284829M3Qm.jpg)
(http://www.electoday.com/home/attachment/201106/28/562_1309284841E7ka.jpg)
(http://www.electoday.com/home/attachment/201106/28/562_1309284859ZEPE.jpg)
(http://www.electoday.com/home/attachment/201106/28/562_1309284875Jg8Y.jpg)
(http://www.electoday.com/home/attachment/201106/28/562_1309284892mjmm.jpg)
(http://www.electoday.com/home/attachment/201106/28/562_1309284905N887.jpg)
(http://www.electoday.com/home/attachment/201106/28/562_1309284930876u.jpg)
(http://www.electoday.com/home/attachment/201106/28/562_1309284941k1sT.jpg)

มาว่ากันเรื่องการคำนวน มีหลักๆก็
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 (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 (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 (http://www.4shared.com/file/ozlAOxSW/Digital_temperature_controller.html)


หัวข้อ: Re: AVR-MCS-PIC-Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ มิถุนายน 23, 2011, 12:42:51 PM
เปิด source วันนี้เสนอ project ยามว่าง เนื่องมาจากที่บ้านผม
มีเครื่องซักผ้าแบบ กึ่ง อัตโนมือ... เวลาปั่นเสร็จมันจะไม่เตื่อนใดๆทั้งสิ้น
ส่วนระหว่างปั่น ผมก็จะมานั่งเล่น internet มันก็จะเพลินจนเนิ่นนาน
เลยเวลาตากผ้าหรือเวลาหมดแดด ก็เลยทำเครื่องเตือนเป็น CountDown
ขึ้นมาจะได้ไม่เล่นเพลินจนลืมตากผ้าดังกล่าว...เฮอๆๆ

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

วงจร
(http://www.electoday.com/home/attachment/201107/15/562_1310708891X1fI.jpg)

ของจริง
(http://www.electoday.com/home/attachment/201106/24/562_1308936331tob3.jpg)
(http://www.electoday.com/home/attachment/201106/24/562_1308936319bkht.jpg)
(http://www.electoday.com/home/attachment/201106/24/562_13089363417975.jpg)
(http://www.electoday.com/home/attachment/201106/24/562_1308936355HNtZ.jpg)
(http://www.electoday.com/home/attachment/201106/24/562_13089363683312.jpg)
(http://www.electoday.com/home/attachment/201106/24/562_1308936379Z3lO.jpg)
(http://www.electoday.com/home/attachment/201106/24/562_130893639099fU.jpg)
(http://www.electoday.com/home/attachment/201106/24/562_1308936401uByN.jpg)
(http://www.electoday.com/home/attachment/201106/24/562_1308936412o25P.jpg)
(http://www.electoday.com/home/attachment/201106/24/562_1308936424s6Dj.jpg)
(http://www.electoday.com/home/attachment/201106/24/562_1308936436cBZF.jpg)
(http://www.electoday.com/home/attachment/201106/25/562_1308983317EkGm.jpg)
(http://www.electoday.com/home/attachment/201106/25/562_1308983295GAnL.jpg)

รายละเอียดการใช้งาน
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 (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 (http://www.4shared.com/file/JkcU-G-f/CountDown_Timer_3Mode_With_Ala.html)


หัวข้อ: Re: AVR-MCS-PIC-Microcontroller Project
เริ่มหัวข้อโดย: PR-TRAFFIC ที่ กันยายน 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


หัวข้อ: Re: AVR-MCS-PIC-Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ กันยายน 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


หัวข้อ: Re: AVR-MCS-PIC-Microcontroller Project
เริ่มหัวข้อโดย: Dumrong007 ที่ กันยายน 22, 2011, 08:51:07 PM

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

 thank2 thank2 thank2 thank2 thank2 thank2 thank2 thank2 thank2 thank2 thank2 thank2 thank2 thank2 thank2 thank2 thank2 thank2 thank2 thank2 thank2 thank2


หัวข้อ: Re: AVR-MCS-PIC-Microcontroller Project
เริ่มหัวข้อโดย: Dumrong007 ที่ กันยายน 22, 2011, 09:12:25 PM
นี่เมลผมครับ tim0314singha@gmail.com

ส่งให้หน่อยน่ะ   thank2 thank2 thank2 thank2 thank2 thank2 thank2 thank2 thank2 thank2 thank2


หัวข้อ: Re: AVR-MCS-PIC-Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ กันยายน 23, 2011, 02:46:10 AM
นี่เมลผมครับ tim0314singha@gmail.com

ส่งให้หน่อยน่ะ   thank2 thank2 thank2 thank2 thank2 thank2 thank2 thank2 thank2 thank2 thank2

http://www.turbokeu.com/myprojects/countdown3.htm


หัวข้อ: Re: AVR-MCS-PIC-Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ กันยายน 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 (http://www.4shared.com/file/CDrbNf5o/SPI.html)


หัวข้อ: Re: AVR-MCS-PIC-Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ กันยายน 29, 2011, 11:12:18 AM
ว่างๆระหว่างรอ บอร์ด v6 ป๋ามิน ทำแบบใหญ่มาเยอะลองทำแบบเล็กๆบ้าง
ทำจากอะไหล่เก่าๆ 7seg ตัวนี้รู้สึกว่าจะแกะมาจาก meter taxi เก่าๆ ตอนนั้น
ซื้อมา 20 บาท มีอยู่ 2ตัว ตัวใหญ่ๆอีก 2 ตัว ราคา 20 บาทคุ้มมากมาย

(http://www.electoday.com/home/attachment/201109/8/562_13154548662Is5.jpg)

[youtube]yZx0jkBzixw[/youtube]

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

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

(http://www.electoday.com/home/attachment/201109/15/562_13160944175evf.jpg)

(http://www.electoday.com/home/attachment/201110/18/562_13189077282HwG.jpg)
(http://www.electoday.com/home/attachment/201110/18/562_1318907732W22x.jpg)
(http://www.electoday.com/home/attachment/201110/18/562_1318907740l15b.jpg)
(http://www.electoday.com/home/attachment/201110/18/562_131890774467dr.jpg)
(http://www.electoday.com/home/attachment/201110/18/562_1318907749P20p.jpg)
(http://www.electoday.com/home/attachment/201110/18/562_1318907755bOME.jpg)

Source code keil C + PCB PDF format. + PCB EAGLE format.
http://www.4shared.com/file/wDGrhopu/LED_Clock.html (http://www.4shared.com/file/wDGrhopu/LED_Clock.html)


หัวข้อ: Re: AVR-MCS-PIC-Microcontroller Project
เริ่มหัวข้อโดย: kong2550 ที่ ตุลาคม 19, 2011, 11:18:17 AM
เก่งมากเลย เป็นวิทยาทานให้คนอื่นๆ
มีคนแบบนี้เยอะๆ ชาติไทยเจริญรุ่งเรืองแน่นอน
สุดยอดมากกกก   

 lv!


หัวข้อ: Re: AVR-MCS-PIC-Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ พฤศจิกายน 09, 2011, 07:47:14 PM
ด้นเขียนจนเสร็จ... :)

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

(https://lh3.googleusercontent.com/-7TDA0HyILaQ/To0VxL91sZI/AAAAAAAAAWE/3S55p_xpR7w/s800/schematic.jpg)

ไม่รู้จะอธิบายอะไร ถ้าสงสัย post ถามนะครับ...:)
Source Code (Keil C)
http://www.4shared.com/file/k_i2WxyU/CLCD_Clock.html (http://www.4shared.com/file/k_i2WxyU/CLCD_Clock.html)


หัวข้อ: Re: AVR-MCS-PIC-Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ พฤศจิกายน 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 (http://www.4shared.com/file/VtPp1QUF/Dot16x32.html)


หัวข้อ: Re: AVR-MCS-PIC-Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ พฤศจิกายน 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 (http://www.4shared.com/file/UVu2ov4f/Code_lock.html)


หัวข้อ: Re: AVR-MCS-PIC-Microcontroller Project
เริ่มหัวข้อโดย: kiano♥ ที่ พฤศจิกายน 09, 2011, 11:22:50 PM
555 พี่ JUB ก็เอามาตุนไว้ด้วยหรอ LED Matrix นั่นน่ะ ผมก็จัดมา 1 ชิ้น จนบัดเด่วนี้ยังไม่มีเวลาลองเล่นเลย ยังกองอยู่่ในกล่องไปรษณีย์เหมือนเดิม


หัวข้อ: Re: AVR-MCS-PIC-Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ พฤศจิกายน 09, 2011, 11:37:33 PM
555 พี่ JUB ก็เอามาตุนไว้ด้วยหรอ LED Matrix นั่นน่ะ ผมก็จัดมา 1 ชิ้น จนบัดเด่วนี้ยังไม่มีเวลาลองเล่นเลย ยังกองอยู่่ในกล่องไปรษณีย์เหมือนเดิม

ก็เพิ่งเอามาเล่นนั่นล่ะ ดองไว้นานเดี๋ยวเปื่อย... ;D


หัวข้อ: Re: AVR-MCS-PIC-Microcontroller Project
เริ่มหัวข้อโดย: PIC16 ที่ ธันวาคม 29, 2011, 01:17:17 PM
พี่ JUB ครับ สอบถามหน่อยครับผมกำลังหัดเขียนภาษาแอสแซมบลี้ โดยใช้ PIC ครับ 
MOVLW .150
MOVWF TRM0
คืออะไรครับ


หัวข้อ: Re: AVR-MCS-PIC-Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ ธันวาคม 29, 2011, 02:48:28 PM
MOVLW .150
คือการย้ายค่าคงที่ ค่า decimal 150 ไปที่ Working Register
ให้ลองดูที่คำสั่ง MOVLW โดย MOV คือ move หรือย้าย L ในที่นี้คือ 150 และ W คือ Working Register

MOVWF TMR0

อันนี้ก็เช่นเดียวกัน แต่ต้นทางคือ W และปลายทางคือ F หรือ File Register ก็คือ TMR0 นั่นเอง

เมื่อจบสองคำสั่งนี้ TMR0 จะมีค่าเท่ากับ decimal 150 หรือ 0x96 ครับ


หัวข้อ: Re: AVR-MCS-PIC-Microcontroller Project
เริ่มหัวข้อโดย: PIC16 ที่ ธันวาคม 31, 2011, 11:40:47 AM
ขอบคุณครับพี่ JUB ที่ให้ความรู้
เดี๋ยวมีอะไรจะสอบถามเข้ามาใหม่ครับ lv! lv!


หัวข้อ: Re: AVR-MCS-PIC-Microcontroller Project
เริ่มหัวข้อโดย: PIC16 ที่ มกราคม 02, 2012, 10:10:26 AM
พี่ JUB ครับสอบถามหน่อยครับ

GOTO $+1  หรือว่า  GOTO $+3    เป็นคำสั่งหน่วงเวลา ใช่หรือเปล่าครับ ถ้าหน่วงจะหน่วงกี่ mS ครับ

GOTO $-1  หรือว่า  GOTO $-3     เป็นคำสั่งหน่วงเวลา เหมือนข้างบนหรือเปล่าครับ  เครื่องหมาย  +, -  ต่างกันยังไงครับ
                 
                            cry2!! cry2!!


หัวข้อ: Re: AVR-MCS-PIC-Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ มกราคม 02, 2012, 04:09:50 PM
พี่ JUB ครับสอบถามหน่อยครับ
GOTO $+1  หรือว่า  GOTO $+3    เป็นคำสั่งหน่วงเวลา ใช่หรือเปล่าครับ ถ้าหน่วงจะหน่วงกี่ mS ครับ
GOTO $-1  หรือว่า  GOTO $-3     เป็นคำสั่งหน่วงเวลา เหมือนข้างบนหรือเปล่าครับ  เครื่องหมาย  +, -  ต่างกันยังไงครับ

GOTO $+1    ตัว $ คือตำแหน่ง PC หรือ Program counter และ goto $ หมายถึง กระโดดไปยังตำแหน่งปัจจุบัน
ก็คือกระโดดอยู่กับที่

ถ้า goto $-1 คือกระโดดไปตำแหน่งก่อนหน้า 1 ตำแหน่งนับจากตำแหน่งปัจจุบัน
ถ้า goto $+1 คือกระโดดไปตำแหน่งถัดไป 1 ตำแหน่งนับจากตำแหน่งปัจจุบัน

ส่วนการกระทำจะใช้เวลาเท่าไรนั้นขึ้นอยู่กับ XTAL/4 เท่ากับเวลาที่เสียไป 1 m-cycle ต่อจำนวนการกระโดด


หัวข้อ: Re: AVR-MCS-PIC-Microcontroller Project
เริ่มหัวข้อโดย: PIC16 ที่ มกราคม 02, 2012, 09:37:54 PM
ต้องขอบคุณพี่ JUB อีกครับ ที่เสียสละเวลาเข้ามาตอบคำถามของผม
ขอบคุณมากครับ พี่ JUB lv! lv!


หัวข้อ: Re: AVR-MCS-PIC-Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ พฤษภาคม 22, 2012, 05:16:19 PM
ลองเขียน code แบบง่ายๆ interface กับอุปกรณ์ต่างๆ
จะค่อยๆทยอย up นะ ผมไม่ได้จับ avr มานานเหมือนกัน
มาเรียนไปด้วยกันครับ ใครมีอะไรแนะนำ ผมยินดีครับ
มาแลกเปลี่ยนความรู้กัน

dev. board กับ programmer ที่ผมมี
(https://fbcdn-sphotos-a.akamaihd.net/hphotos-ak-snc7/s720x720/582612_339411519439973_257730430941416_856905_296531149_n.jpg)
(https://fbcdn-sphotos-a.akamaihd.net/hphotos-ak-ash4/420826_297924336922025_1345059022_n.jpg)
ลาย PCB ครับ เอาไปทำแล้วมาเล่นไปพร้อมๆกัน
http://www.4shared.com/rar/oJYyo0bU/P-8515dev.html

1.clcd 16x2
(http://www.electoday.com/home/attachment/201204/16/562_1334557606GoU8.jpg)
http://www.4shared.com/rar/H41Ugvh8/P-CLCD.html

2.max7219
(http://www.electoday.com/home/attachment/201204/16/562_1334557618CNm3.jpg)
http://www.4shared.com/rar/XXQmuYUp/P-MAX7219.html

3.simple project LCD Clock มันเดินไม่ตรงนะทำให้ดูเสยๆ
http://www.youtube.com/v/vOjUT_GpK3A
http://www.4shared.com/rar/0RDacVlB/P-LcdClock.html

4.Usart
(http://www.electoday.com/home/attachment/201204/16/562_133456467251eF.jpg)
http://www.4shared.com/rar/rlzi0TTh/P-USART.html

5.Keypad 4x4
(http://www.electoday.com/home/attachment/201204/16/562_1334577496Hzge.jpg)
http://www.4shared.com/rar/0AlTy6Mq/P-KEYPAD.html

6.simple project LCD Clock DS1307
(http://www.electoday.com/home/attachment/201204/17/562_1334663180NTmU.jpg)
http://www.4shared.com/rar/tL65mgQn/P-DS1307.html

7.DS1307mini
(https://fbcdn-sphotos-a.akamaihd.net/hphotos-ak-snc7/577647_344712372243221_257730430941416_868326_1811127481_n.jpg)
http://www.4shared.com/rar/WuNBzHYa/P-RTCMini.html

8.DS1820
(http://www.electoday.com/home/attachment/201204/20/562_1334910441MtCt.jpg)
http://www.4shared.com/rar/aRW4V3zM/P-ds1820.html


หัวข้อ: Re: AVR-MCS-PIC-Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ มิถุนายน 15, 2012, 05:24:53 PM
source code มาแล้วครับ  :)


หัวข้อ: Re: AVR-MCS-PIC-Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ มิถุนายน 16, 2012, 11:13:51 AM
LM35 Temperature Sensors (PIC16F887)

http://www.youtube.com/v/9ON2-KuZx8w

ปรับ Vref+ (RA4)ให้ได้ 1 โวลท์นะครับ output ของ lm35 อยู่ในระดับ 10mv/c
เช่นวัดได้ 0.317 โวลท์ แปลงเป็นอุณหภูมิได้ 31.7C เป็นต้น
การเปลี่ยนแปลงไวกว่า DS1820 ใช้วัดอุณหภูมิในบรรยากาศ
ได้เป็นอย่างดี code ไม่ได้ optimize นะครับเขียนแบบด้นสด

edit1. การปรับแต่งหา digital meter ตั้งย่านวัดไม่เกิน 2volt วัดขา Vout
ของ LM35 แล้วปรับ Vref+ (RA4) ให้ค่าตรงกับ 7segment เป็นอันใช้ได้

http://www.4shared.com/rar/PuF3enX6/LM35.html


One Button Control 4 Relay (PIC16F887)

อธิบายหน่อยนึง โปรแกรมเป็น state machine ครับ
เน้นการตอบสนองที่ราบรื่น

http://www.youtube.com/v/Ar-WbSZG3rk

การควบคุมจะเป็นแบบ toggle
กด 1 ครั้ง toggle channel 1
กด 2 ครั้ง toggle channel 2
กด 3 ครั้ง toggle channel 3
กด 4 ครั้ง toggle channel 4
กดค้าง ปิดทุก channel

การกดทุกๆหนึ่งครั้งจะทำให้ COUNT+1 และ TIMERCNT จะเป็น 0
ซึ่ง TIMERCNT จะเป็นเวลาหน่วงก่อน Execute คำสั่งตามค่าของ
COUNT. ซึ่งผมตั้งไว้ที่ 500ms. การกดเพื่อควบคุม แต่ละ channel
ช่วงการกดจะต้องไม่เกิน 500ms ในแต่ล่ะช่วง

หากกดค้างไว้ไม่ว่าในช่วงใดๆก็ตามจะปิดทุก channel

ส่วนในเรื่อง Beep sound
จากการทดลอง หาก Gen. เสียงโดย toggle pin มันจะมี
ปัญหาเรื่องการตอบสนองตอนกดปุ่มซึ่งต้องไปหยุดอยู่ที่
Sound Gen. routine มันเลยสะดุดๆ ผมเลย Gen. จาก PWM
แทน ซึ่ง work มากๆ

http://www.4shared.com/rar/iDzOOF9J/OneButton_withBeep.html


Control Servo motor (PIC16F887)

มาเล่น servo motor กันมั่ง

http://www.youtube.com/v/xnzf6ghAkKI

หลักการไม่มีอะไรมากครับ เอา timer 2 ตัวมาทำ โดยใช้ timer1 ทำฐานเวลา
ที่ 20 ms เพื่อ set port ทุกๆ 20ms และใช้ timer0 เป็นตัว clr port ตาม
เวลาที่กำหนด ตัวแปรการปรับมุมได้จากการอ่านค่าจาก ADC ความละเอียด
ที่ทำได้ อยูที่ 143 step

โดยอันดับแรกเมื่อ timer1 เกิด interrupt จะ set servo pin และ reload
ค่า duty ลง timer0 พร้อมกับ enable interrupt ของ timer0 เมื่อ timer0
over flow ก็จะเกิด interrupt ไป clear servo pin และปิด interrupt
ของตัว timer0 เอง เป็นโปรแกรมง่ายๆลองเอาไปต่อยอดกัน

ปล. servo ที่ผมใช้ค่าเวลากว้าง ถ้าใช้กับยี่ห้ออื่นให้ปรับที่ servo_min
กับ servo_max เอาครับ

http://www.4shared.com/rar/f7Xwjfj8/SERVO_MOTOR.html



หัวข้อ: Re: AVR-MCS-PIC-Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ กรกฎาคม 12, 2012, 05:40:48 PM
http://www.youtube.com/v/d0rjfx6_E1U


หัวข้อ: Re: AVR-MCS-PIC-Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ กันยายน 28, 2012, 03:41:39 PM
IR Decode NEC Protocol (WinAVR + ATmega8A)

•ว่างอยู่1วันหลังจากส่งงานหมด พอมีเวลาเล่น HC-SR04 โดยใช้ input capture
ลองผิดๆถูกอยู่พักนึงบวกกับได้กระทู้นี้ช่วย เลยไปได้ไวหน่อย ขอบคุณป๋า samira ด้วยครับ
www.electoday.com/bbs/viewthread.php?tid=14149&highlight=%2Bsamira (http://www.electoday.com/bbs/viewthread.php?tid=14149&highlight=%2Bsamira)
http://www.youtube.com/v/3ViTo0AsX9M

•แต่ project นี้ไม่ได้เกี่ยวอะไรกับ HC-SR04 แต่มันเป็นความต่อเนื่อง บวกกับคันมือ
อยากลอง เลยไปหยิบ remote ในกองขยะมาได้ตัวนึง ซึ่งเป็น remote dvd จีน
ใช้ nec protocol ซึ่งรูปแบบของ ir nec นี้ถูกใช้อย่างมากในสินค้าจากจีน
แทบจะทุกอย่างเลยก็ว่าได้ โดย protocol มีรูปแบบและหน้าตาดังนี้
(http://www.electoday.com/home/attachment/201209/28/562_13488015311HdH.jpg)

ข้อมูลประกอบไปด้วย
1.Address
2.Logical Inverse Address
3.Command
4.Logical Inverse Command
•การตรวจสอบข้อมูล Address และ Command จะใช้การ Inverse แล้วเทียบกับ Logical Inverse
เป็นการตรวจสอบแบบง่ายๆและเพิ่มความน่าเชื่อถือของข้อมูลที่ได้รับว่ามีความถูกต้อง
•แนวการถอดระหัสหรือ algorithm ผมด้นๆมั่วๆเอาเองนึกอะไรได้ก็เขียนมันส่ง อาจจะยังไม่ค่อยดีเท่าไร
ตอนนี้ยังรับ repeat pulse ไม่ได้ เอาไว้จะปรับปรุงให้ดีขึ้นใน version ต่อๆไป

•โดยผมแบ่ง state ออกเป็น 4 state ตามภาพ โดยจะสลับบิตICES1เพื่อให้เกิด interruptที่สัญญาณ
ขอบขาขึ้นและขอบขาลง ที่เหลือดูรายละเอียดจากcodeนะครับถ้าอธิบายสงสัยจะยืดยาว
(http://www.electoday.com/home/attachment/201209/28/562_1348801520wWDW.jpg)

•ตอน debug ส่งออก serial port เพื่อดู key code
(http://www.electoday.com/home/attachment/201209/28/562_1348801506ckBK.jpg)

•ต่อกันง่ายๆผ่าน arduino v3.3 มีled4ดวงเอาไว้ลอง command
(http://www.electoday.com/home/attachment/201209/28/562_1348801567WRW1.jpg)

โค๊ด:
//--------------------------------------------------
//Program :IR Decode (NEC Protocol)
//Author :Somlak Mangnimit
//Date :27/09/2012
//Mcu :ATmega8A
//Xtal :16Mhz
//Compiler :WinAVR 20100110
//Version   :1.0
//Note  :-
//--------------------------------------------------
#define F_CPU 16000000UL
#include <util/delay.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdio.h>
#define BAUD_RATE 9600

static int usart_putc(char c, FILE *stream);
static FILE mystdout = FDEV_SETUP_STREAM(usart_putc, NULL,_FDEV_SETUP_WRITE);
volatile unsigned char buffer[4],ir_state,bit_flag,bit_cnt,byte_cnt,ndat;
volatile unsigned long BIT_BUF;
enum{rem_state1,rem_state2,rem_state3,rem_state4};

#define ICCR_RISING()       TCCR1B |= (1<<ICES1);
#define ICCR_FALLING()      TCCR1B &= ~(1<<ICES1);

#define ICCR_ENABLE()       TIMSK |= (1<<TICIE1);
#define ICCR_DISABLE()      TIMSK &= ~(1<<TICIE1);

#define LED_ON()            PORTB |= (1<<PB5);
#define LED_OFF()           PORTB &= ~(1<<PB5);

#define Adr                 buffer[0]
#define AdrInv              buffer[1]
#define Cmd                 buffer[2]
#define CmdInv              buffer[3]

//timer
void initial(void){
TCCR1B |= (1<<CS12);            //prescaler clk/256
TIMSK |= (1<<TICIE1);           //input capture interrupt enable
sei();                          //global interrupt enable
}

//put usart
static int usart_putc(char c , FILE *stream){
    if(c == '\n')
    usart_putc('\r', stream);
    loop_until_bit_is_set(UCSRA, UDRE);
    UDR = c;
    return 0;
}

//usart initial
void usart_initial(void){
    DDRD |= (1<<PD1);
    UBRRH = (((F_CPU/BAUD_RATE)/16)-1)>>8; // set baud rate
    UBRRL = (((F_CPU/BAUD_RATE)/16)-1);
    UCSRB = (1<<RXEN)|(1<<TXEN); // enable Rx & Tx
    UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); // config USART; 8N1
    stdout = &mystdout;
}

//test logical inverse
unsigned char log_inv(unsigned char a,unsigned char b){
    a ^= a;
    if(a==b){return 0;}
    else{return 1;}
}

//main
int main(void){
DDRB |= (1<<PB5)|(1<<PB3);
DDRC |= (1<<PC3)|(1<<PC2)|(1<<PC1)|(1<<PC0);
initial();
usart_initial();
    LED_ON();
    _delay_ms(300);
    LED_OFF();

    for(;;){
        ndat = 0;
        while(!ndat);
        if(log_inv(Adr,AdrInv)&&log_inv(Cmd,CmdInv)){
            switch(Cmd){
                case 12:
                    PORTC ^= (1<<PC0);
                break;

                case 6:
                    PORTC ^= (1<<PC1);
                break;

                case 5:
                    PORTC ^= (1<<PC2);
                break;

                case 79:
                    PORTC ^= (1<<PC3);
                break;

                case 1:
                    PORTC &= ~(1<<PC3)&(1<<PC2)&(1<<PC1)&(1<<PC0);
                //end case
            }
        }
        printf("Address = %d\nLogical Inverse Address = %d\nCommand = %d\nLogical Inverse Command = %d\n\n",
        buffer[0],buffer[1],buffer[2],buffer[3]);
    }

}

//reset ir state
void RESET_IR(void){
    ir_state = rem_state1;
    bit_flag = 0;
    byte_cnt = 0;
    bit_cnt = 0;
    ICCR_FALLING();
    LED_OFF();
}

//isr input capture
ISR(TIMER1_CAPT_vect){
LED_ON();
    switch(ir_state){
        case rem_state1:
            ir_state = rem_state2;
            ICCR_RISING();
            TCNT1 = 0;
        break;

        case rem_state2:
            BIT_BUF = ICR1;
            BIT_BUF = BIT_BUF*10000/625;
            if(BIT_BUF>9000-200&&BIT_BUF<9000+200){
            ir_state = rem_state3;}
            else{RESET_IR();break;}
            ICCR_FALLING();
            TCNT1 = 0;
        break;

        case rem_state3:
            BIT_BUF = ICR1;
            BIT_BUF = BIT_BUF*10000/625;
            if(BIT_BUF>4400-200&&BIT_BUF<4400+200){
            ir_state = rem_state4;}
            else{RESET_IR();break;}
            ICCR_RISING();
        break;

        case rem_state4:
            if(!bit_flag){
                bit_flag = 1;
                ICCR_FALLING();
                TCNT1 = 0;
            }else{
                bit_flag = 0;
                BIT_BUF = ICR1;
                BIT_BUF = BIT_BUF*10000/625;
                buffer[byte_cnt] >>= 1;         //LSB
                if(BIT_BUF>1500&&BIT_BUF<1700){
                buffer[byte_cnt] |= 0x80;}
                else if(BIT_BUF>300&&BIT_BUF<600){
                buffer[byte_cnt] &= ~0x80;}
                else{RESET_IR();break;}
                ICCR_RISING();
            }

            if(++bit_cnt>15){
                if(++byte_cnt>3){RESET_IR();ndat = 1;}
                else{bit_cnt = 0;}
            }
        //end case
    }
    TIFR |= (1<<ICF1);              //clear flag by write one
}


หัวข้อ: Re: AVR-MCS-PIC-Microcontroller Project
เริ่มหัวข้อโดย: JUB ที่ ตุลาคม 02, 2012, 07:43:44 AM
AVR cop siren กะจะเอามาทำ home security  tongue3

http://www.youtube.com/v/5ZRCmB5jtBo