
Monday, November 24, 2008
Technique สลับตำแหน่ง Title จากผลการค้น Google

คุณแม่ไม่เป็นอะไรมาก

Labels:
สุขภาพ
Friday, November 14, 2008
วงจรจับเวลา 99 วินาที ใช้ Microcontroller

วงจรเป็นดังรูปข้างล่างนี้

ส่วนโปรแกรมที่เป็นภาษาซี เขียนด้วย MikroC ก็เป็นดังข้างล่างนี้ครับ
//PIC16F627A
//4MHz Internal OSC
// Two Digit Counter
// 13/11/2008
// Punkky@gmail.com
#define Digit1 PORTA.F0
#define Digit2 PORTA.F1
unsigned short tick;
unsigned short x1;
unsigned short x2;
void interrupt () //Interrupt จะถูกเรียกทุกครั้งที่ Timer1 เกิดการ Overflow นั่นคือจะถูกเรียกทุกวินาทีนั่นเอง
{
PIR1.TMR1IF = 0; // clears TMR1IF
TMR1H = 0x80; //ตั้งค่าเริ่มต้นของ Timer1 เป็น 0x8000 โดยตั้งเฉพาะสองบิตแรก
tick = 1; //tick เป็น 1 ทุก 1 วินาที
}
void main(){
CMCON = 0x07; //Digital I/O for PORTA
TRISA = 0x00;
PORTA = 0x00;
TRISB = 0x00;
PORTB = 0x00;
T1CON = 0x0F;
// Prescaler 1:1 external clock
PIE1.TMR1IE = 1; // enable interupt to start the clock
INTCON = 0xC0; // Set GIE, PEIE
TMR1L = 0x00;
TMR1H = 0x80;
PCON.OSCF = 1; //Internal Clock 4MHz
x1 = 0; //หลักสิบของวินาที
x2 = 0; //หลักหน่วยของวินาที
tick = 0;
while(1){
if(tick){ //เมื่อเวลาผ่านไป 1 วินาที ค่า tick จะเป็น 1
tick = 0;
x2++; //เพิ่มหลักหน่วยของวินาทีขึ้น 1
if(x2>9){ //ถ้าหลักหน่วยมากกว่า เก้า ก็ให้เซ็ตเป็น ศูนย์ และนับหลักสิบขึ้น 1
x2 =0;
x1++;
if(x1>9){ //ถ้าหลักสิบมากกว่า เก้า ก็ให้เซ็ตเป็น ศูนย์ เพื่อกลับไปนับจาก 00 ใหม่
x1 = 0;
}
PORTB = x1; //นำค่าของหลักสิบไปแสดงผล
Digit1 = 1; //สั่งให้ CD4543 นำข้อมูลจาก PORTB ไปแสดงบน 7-Segment
Digit1 = 0; //สั่งให้ CD4543 คงค่าของตัวเลขไว้ โดยไม่ต้องสนใจค่าของ PORTB อีก
}
PORTB = x2; //นำค่าของหลักหน่วยไปแสดงผล
Digit2 = 1; //สั่งให้ CD4543 นำข้อมูลจาก PORTB ไปแสดงบน 7-Segment
Digit2 = 0; //สั่งให้ CD4543 คงค่าของตัวเลขไว้ โดยไม่ต้องสนใจค่าของ PORTB อีก
}
}
}
จำลองการทำงานด้วย Proteus ได้ตามภาพข้างล่าง

Labels:
Microcontroller
Saturday, November 08, 2008
ทำนาฬิกา Digital เล่นๆ (นาฬิกาจริงๆ ไม่ใช่ Flash)

นาฬิกา Digital ทำเองได้ ยังไม่เสร็จ เอามาแปะไว้ก่อน :)
รูปหน้านาฬิกาที่จะทำก็ประมาณนี้

Labels:
Microcontroller,
นาฬิกา
Subscribe to:
Posts (Atom)