เครื่องนับเม็ดยาอัตโนมัติ ใครพอเขียนโปรแกรม PIC โดยใช้ภาษา C ได้ช่วยแนะนำหน่อยนะครับ ผมต้องการคนช่วย
LSVคลังสมองออนไลน์ "ปีที่21"
มีนาคม 29, 2024, 07:55:37 AM *
ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น
 
   หน้าแรก   ช่วยเหลือ เข้าสู่ระบบ สมัครสมาชิก  
หน้า: [1]   ลงล่าง
  พิมพ์  
ผู้เขียน หัวข้อ: เครื่องนับเม็ดยาอัตโนมัติ ใครพอเขียนโปรแกรม PIC โดยใช้ภาษา C ได้ช่วยแนะนำหน่อยนะครับ ผมต้องการคนช่วย  (อ่าน 7889 ครั้ง)
kumnan
member
*

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

กระทู้: 5


อีเมล์
« เมื่อ: กุมภาพันธ์ 03, 2012, 04:26:48 PM »

ใครพอเขียนโปรแกรม PIC โดยใช้ภาษา C ได้ช่วยแนะนำหน่อยนะครับ ผมต้องการคนช่วยเหลือนะครับ

การทำงานของเครื่องเป็นแบบนี้นะครับ

1.เมื่อเปิดเครื่ิองจอ LCD จะเเสดงข้อความ START หลังจากนั้นจะแสดงข้อความว่า ENTER PILL จากนั้นผู้ใช้ก็จะป้อนค่าจำนวนเม็ดยาผ่านทาง keypad แล้วกด Enter(#)
2.เครื่องจะเเสดงข้อความ ENTER CONTAINER จากนั้นผู้ใช้ก็จะป้อนค่าจำนวนขวดยาที่ต้องการผ่านทาง keypad แล้วกด Enter(#)
3.เครื่องจะทำการนับโดยในขณะที่นับเครื่องจะเเสดงผลการนับผ่านทาง 7-segment จำนวน 2 ชุด โดยชุดเเรกจะเป็นจำนวนเม็ดยา และชุดที่สองเป็นจำนวนขวด

***ตัวอย่าง ต้องการนับเม็ดยาจำนวนขวดละ 100 เม็ด จำนวน 10 ขวด เมื่อนับยาได้ 100 เม็ดแรก 7-segment ชุดเเรกจะไปเริ่มนับที่ 0 ใหม่ แต่ชุดที่ 2 ซึ่งเป็นชุดแสดงผลจำนวนขวด จะเเสดงค่าเป็น 1 และจะเพิ่มขึ้นเรื่อยๆๆจนกว่าจะครบตามจำนวนขวดที่ตั้งไว้

กูรูท่านใดพอที่จะเขียนให้ผมดูเป็นตัวอย่าง จะเป็นพระคุณอย่างยิ่งครับ ตอนนี้งานนี้เร่งมาก ต้องส่งวันพฤหัสนี้แล้วใครพอที่จะเขียนได้ ขอรบกวนหน่อยนะครับ  ขอบคุณมากครับ เอก
 


บันทึกการเข้า

kiano♥
kiano555@gmail.com
กลุ่มสนับสนุนLSV+มีน้ำใจ
member
****

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

กระทู้: 570


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

kiano555@windowslive.com kiano555@yahoo.com
เว็บไซต์ อีเมล์
« ตอบ #1 เมื่อ: กุมภาพันธ์ 04, 2012, 12:41:29 AM »

โปรแกรมเขียนได้ง่าย แต่ปัญหาจะติดตรงที่ท่านทำระบบกลไกลการนับยา การเปลี่ยน เลื่อนขวดยา เม็ดยา ยังไง??
บันทึกการเข้า
kumnan
member
*

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

กระทู้: 5


อีเมล์
« ตอบ #2 เมื่อ: กุมภาพันธ์ 06, 2012, 01:49:09 AM »

ด้านกลไกผมศึกษาแล้วก็ออกแบบไว้หมดเกือบหมดแล้วอะครับ ส่วนการเลื่อนขวดยาก็เป็นแบบ MAnual ครับ แต่ผมมาติดตรงโปรแกรมอะครับ ตรงส่งพฤหัสนี้แล้วผมยังทามไม่เส็ดเลยครับ รบกวนพี่ๆๆช่วยเขียนให้ผมเป็นแนวทางหน่อยนะครับ ขอบคุณมากๆๆครับ
บันทึกการเข้า
JUB
Full Member
member
**

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

กระทู้: 1157



« ตอบ #3 เมื่อ: กุมภาพันธ์ 06, 2012, 10:24:57 AM »

Software มันขึ้นตรงกับ Hardware ที่ออกแบบไว้ครับ ให้คนในนี้มานั่งหลับตาเขียน
มันก็ยากนิสนึงลองอธิบายหรือมีรูปมาประกอบซิครับว่า Hardware ที่ออกแบบนั้นทำงานยังไง
ใช้อะไรตรวจจับ สัญญาณที่ได้เป็นยังไง เผื่อจะพอช่วยๆกันได้
บันทึกการเข้า
kumnan
member
*

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

กระทู้: 5


อีเมล์
« ตอบ #4 เมื่อ: กุมภาพันธ์ 06, 2012, 11:38:55 AM »

ขอบคุณครับ

ส่วนนี้คือการทำงานของเครื่องนะครับซึ่งของผมมีวิธีการทำงานเหมือนกันกับเครื่องตัวนี้เลยครับลองดูนะครับ

http://www.youtube.com/watch?v=fRovq7jCv_Q
บันทึกการเข้า
JUB
Full Member
member
**

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

กระทู้: 1157



« ตอบ #5 เมื่อ: กุมภาพันธ์ 06, 2012, 01:26:16 PM »

โค๊ด:
//====================================
// Progarm  :Up Down Counter
// Author   :Somlak Mangnimit
// Date     :24/01/2012
// Device   :Pic16f876
//====================================

#include    <htc.h>
#define     _XTAL_FREQ 20000000
__CONFIG(FOSC_HS&WDTE_OFF&PWRTE_OFF&LVP_OFF);

#define     Segment_Port            PORTB
#define     Common_Digit1_Hi        PORTAbits.RA2 = 1
#define     Common_Digit2_Hi        PORTAbits.RA3 = 1
#define     Common_Digit1_Low       PORTAbits.RA2 = 0
#define     Common_Digit2_Low       PORTAbits.RA3 = 0
#define     Switch_Up               PORTAbits.RA0
#define     Switch_Down             PORTAbits.RA1

const unsigned char seg_tab[] = {
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

volatile unsigned char Count,system_count,Button_state;
volatile bit digit_sel;

//====================================
// Scan
//====================================
void Scan(void){
while(!TMR0IF);
TMR0IF = 0;
TMR0 = 100;
Common_Digit1_Low;
Common_Digit2_Low;
digit_sel = ~digit_sel;
    if(digit_sel){
        Segment_Port = ~seg_tab[(Count/10)%10];
        Common_Digit1_Hi;
    }

    else{
        Segment_Port = ~seg_tab[Count%10];
        Common_Digit2_Hi;
    }
}

//====================================
// Setup
//====================================
void Setup(void){
PORTA = 0x00;
PORTA = 0x00;
TRISA = 0x03;
TRISB = 0x00;
PSA = 0;    //Timer0 Prescaler
PS2 = 1;
PS1 = 0;
PS0 = 0;    //1:32
T0CS = 0;   //Internal clock source
TMR0 = 100;
ADCON1 =0x06;
}

//====================================
// Main
//====================================
void main(void){
Setup();

    while(1){
        Scan();
        system_count++;

//---------- Button State 0 ----------
        if(Button_state==0){
            if(!Switch_Up||!Switch_Down){
                Button_state = 1;
                system_count = 0;
            }
        }

//---------- Button State 1 ----------
        if(Button_state==1&&system_count==10){
            if(!Switch_Up){
                if(Count<99){Count++;}
                Button_state = 2;
            }

            else if(!Switch_Down){
                if(Count){Count--;}
                Button_state = 2;
            }

            else{
                Button_state = 0;
            }
        }

//---------- Button State 2 ----------
        if(Button_state==2){
            if(Switch_Up&&Switch_Down){
                Button_state = 0;
            }
        }
    }
}
บันทึกการเข้า
kumnan
member
*

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

กระทู้: 5


อีเมล์
« ตอบ #6 เมื่อ: กุมภาพันธ์ 06, 2012, 01:48:23 PM »

ขอบคุณพี่ๆมากนะครับ ว่าเเต่ว่าตัวนี้เป็นแค่โค้ดของตัวนับใช่มั้ยครับ
บันทึกการเข้า
JUB
Full Member
member
**

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

กระทู้: 1157



« ตอบ #7 เมื่อ: กุมภาพันธ์ 06, 2012, 03:10:13 PM »

Up Down Counter ครับ

http://www.youtube.com/v/FOgaaawhReQ.swf
บันทึกการเข้า
หน้า: [1]   ขึ้นบน
  พิมพ์  
 
กระโดดไป:  

Powered by MySQL Powered by PHP Powered by SMF 1.1 RC2 | SMF © 2001-2006, Lewis Media

lsv2555Please follow the new website at https://www.pohchae.com

Valid CSS!