หน้า 6 จากทั้งหมด 28 หน้า หน้าแรกหน้าแรก 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... หน้าสุดท้ายหน้าสุดท้าย
สรุปผลการค้นหา 101 ถึง 120 จากทั้งหมด 553

กระทู้: Mcu ไมโครคอนโทรเลอร์ ทำอะไร ๆ ก็ทำได้ ถ้าทำเป็น

  1. #101
    TTC - .... Wait.... TTC-Member
    สมัครเมื่อ
    Sep 2011
    User ID
    22939
    Status
    Offline
    โพส
    135

    มาตรฐาน ตอบ: Mcu ไมโครคอนโทรเลอร์ ทำอะไร ๆ ก็ทำได้ ถ้าทำเป็น

    อ้างอิง โพสต้นฉบับโดยคุณ Yanyong ดูโพส
    เสร็จเรียบร้อยครับ
    สำหรับ mikro C ใช้เป็นคำสั่ง Kick Down
    การทำงานคือ
    - ถ้ากดคันเร่งแบบเรื่อย ๆ จะไม่มีอะไรเปลี่ยน
    - ถ้าเส้นกระตุก นิด จะเข้าสู่การ หลอก Sensor 2 ตัว คือ AT2,AF (ต้องต่อ วงจรออกไปคุมอีกนะครับ)
    - ถ้ากดแบบ เฟ้น ๆ อีกหน่อยก็ จะ หลอก AT2,AF,MAP
    - สุดท้าย ถ้า กระเทือบลงไปฟืดเดียว ลึก มิด จั๊ด ก็ - ปิด คอมส์แอร์ ,หลอก sensor AT2,AF,MAP,WT
    ทุกข้อที่กล่าวมา จะ ยกเลิกเมื่อ ถอนคันเร่งมาที่จุด ที่เริ่ม กระชาก ขอรับ
    ส่วน ภาคการหลอก Sensor จะขอกล่าวในวาระ ต่อไป ครับ
    Code ภาษา C ข้างล่าง ให้เป็นแนวทางการพัฒนานะครับ
    ส่วน HEX File และ Proteus File ก็ให้เป็นตัวอย่างไปลองกันดูได้ครับ

    อ่อ Proteus ให้ใช้ Ver 7 ขึ้นไปนะครับ Ver 6 จะ Error
    /////////////////////////////////////////////////////////////
    #define beep1 PORTC.F3 //BC548 BUZZER 12V
    #define Dis PORTC.F4 //DISPLAY CONTROL

    unsigned long int pedal1,pedal2,pedal_v,x;
    unsigned char v1,v2,v3;
    void main()
    {
    TRISA=0XFF;
    TRISB=0x00;
    TRISC=0X00;
    TRISD=0X00;
    TRISE=0X00;
    PORTB=0X00;
    PORTC=0X00;
    PORTD=0X00;
    PORTE=0X00;
    Lcd_Init(&PORTD);
    Lcd_Cmd(LCD_Clear);
    Lcd_Cmd(lcd_cursor_off);
    Dis=1;
    Lcd_Out(1,5,"POWER ON");
    delay_ms(1000);
    for(x=0;x<3;x++)
    {
    beep1=1;
    delay_ms(50);
    beep1=0;
    delay_ms(50);
    }
    while(1)
    {
    pedal_v=Adc_Read(0);
    pedal_v=pedal_v*489/1000;
    v1=pedal_v/100;
    v2=(pedal_v%100)/10;
    v3=pedal_v%10;
    Lcd_Out(2,2,"PEDAL");
    Lcd_Chr(2,8,v1+48);
    Lcd_Chr(2,9,'.');
    Lcd_Chr(2,10,v2+48);
    Lcd_Chr(2,11,v3+48);
    Lcd_Chr(2,14,'V');
    Delay_ms(100);
    pedal1=Adc_Read(0);
    delay_ms(1000);
    pedal2=Adc_Read(0);
    {
    loop1:
    if(pedal2>=(pedal1+100)&pedal2<(pedal1+200))
    {
    Lcd_Cmd(LCD_Clear);
    PORTB=0X17;
    Lcd_Out(1,1,"ON AT2 AF");
    Delay_ms(100);
    pedal2=Adc_Read(0);
    while(pedal2>=pedal1) {goto loop1;}
    }
    }
    loop2:
    if(pedal2>=(pedal1+200)&pedal2<(pedal1+405))
    {
    Lcd_Cmd(LCD_Clear);
    PORTB=0x1F;
    Lcd_Out(1,2,"ON AT2 AF MAP");
    Delay_ms(100);
    pedal2=Adc_Read(0);
    while(pedal2>=pedal1) {goto loop2;}
    }
    loop3:
    if(pedal2>=(pedal1+405))
    {
    Lcd_Cmd(LCD_Clear);
    PORTB=0x0F;
    Lcd_Out(1,1,"ON AT2 AF MAP WT"); Delay_ms(100);
    Lcd_Out(2,3,"COM AIR OFF");Delay_ms(100);
    pedal2=Adc_Read(0);
    while(pedal2>=pedal1) {goto loop3;}
    }
    else {
    PORTB=0X10;
    Lcd_Cmd(LCD_Clear);
    Delay_ms(200);
    Lcd_Out(1,2,"PEDAL ACTIVE");
    Delay_ms(100);
    }
    }
    }
    น้ายงครับ รบกวนส่งไฟล์ให้ทีครับ อันนี้ไฟล์มันหมดอายุแล้วครับ กำลังศึกษาตามน้าๆไปติดๆครับ ผมจะลองมาคาลิเบสในprotus ครับ ส่งมาที่เมล์ผมก้อใด้ครับ pokneed@hotmail.com
    ผมไม่เข้าใจการเขียนฟังชั่นบางอย่าง ฟังชั่นพื้นฐานพอใด้อยู่ครับ เด๋วมีไรจะให้น้ายงสอนนะครับ
    แก้ไขครั้งล่าสุดโดย pokneed : 21-02-2012 เมื่อ 16:20

  2. #102
    สมาชิกถาวร TTC-Member
    สมัครเมื่อ
    Jul 2009
    User ID
    7708
    Status
    Offline
    โพส
    1,114

    มาตรฐาน ตอบ: Mcu ไมโครคอนโทรเลอร์ ทำอะไร ๆ ก็ทำได้ ถ้าทำเป็น

    อ้างอิง โพสต้นฉบับโดยคุณ pokneed ดูโพส
    น้ายงครับ รบกวนส่งไฟล์ให้ทีครับ อันนี้ไฟล์มันหมดอายุแล้วครับ กำลังศึกษาตามน้าๆไปติดๆครับ ผมจะลองมาคาลิเบสในprotus ครับ ส่งมาที่เมล์ผมก้อใด้ครับ pokneed@hotmail.com
    ผมไม่เข้าใจการเขียนฟังชั่นบางอย่าง ฟังชั่นพื้นฐานพอใด้อยู่ครับ เด๋วมีไรจะให้น้ายงสอนนะครับ
    ได้ครับ
    เดียวต้องไปค้นดูในกรุก่อนนะครับ
    วางใว้นาน ไม่รู้ตัวใหน version ใหน
    เอาเป็นว่าบอกกันแบบ row-to-row เลยเนาะ
    /////////////////////////////////////////////////////////////
    #define beep1 PORTC.F3 //BC548 BUZZER 5V ขา C3 ต่อออกขับ buzzer
    #define Dis PORTC.F4 //DISPLAY CONTROL ขานี้ ต่อเข้า LCD เอาไว้สั่งกระพริบเวลาที่เสียงเตือนดังจะได้สดุดตา

    unsigned long int pedal1,pedal2,pedal_v,x; //ประกาศตัวแปลเพื่อใช้คำนวนเปรียบเทียบ ค่า -23000 > +24000 (ประมาณ)เปิดตำราประกอบเอง
    unsigned char v1,v2,v3; //ประกาศตัวแปลอีกแบบ ค่า 0-255
    void main()//กำหนดหัวข้อหลัก
    {
    TRISA=0XFF;// Port A ทั้งหมดเป็น Input ระหัสฐาน2 = 1111 1111 ( TRIS_)
    TRISB=0x00;//Port B ทั้งหมดเป็น output ระหัสฐาน2 = 0000 0000
    TRISC=0X00;//เหมือนข้างบน
    TRISD=0X00;//เหมือนข้างบน
    TRISE=0X00;;//เหมือนข้างบน
    PORTB=0X00;//ทีนี้ตรงนี้จะสั่งเป็น PORT_ก็คือเคลียค่า PORT_ ให้เป็น 0 หรือดับไฟเมื่อเริ่ม Program
    PORTC=0X00;//เหมือนข้างบน
    PORTD=0X00;//
    PORTE=0X00;//
    Lcd_Init(&PORTD);//สั่งกำหนด PORTD เป็นขาสั่งงาน LCD
    Lcd_Cmd(LCD_Clear);//เคลียจอก่อน
    Lcd_Cmd(lcd_cursor_off);//ปิดจุดกระพริบบน LCD
    Dis=1;//เปิดสัญญานไฟที่เราต่อไว้จ่ายให้ LCD เป็นความต้องการส่วนตัว ฮุฮุ
    Lcd_Out(1,5,"POWER ON");//แสดงข้อความเมื่อเปิดระบบทำงาน
    delay_ms(1000);
    for(x=0;x<3;x++)
    {
    beep1=1;
    delay_ms(50);
    beep1=0;
    delay_ms(50);
    }
    while(1)//ในขณะที่เปิดไฟเลี้ยงวงจุอยู่ให้ทำงานข้างล่างนี้
    {
    pedal_v=Adc_Read(0);// pedal_v= สัญญาน อะนาล็อค V จาก Sensor เข้าที่ขานี้ในที่นี้คือ สัญญาน คันเร่งหลัก
    pedal_v=pedal_v*489/1000;//กำหนดค่าที่อ่านมาได้แล้ทำการหารออก เพื่อแสดงผลออก LCD
    v1=pedal_v/100;//ผลจากการหาร100 เป็นหลัก Volte เพื่อแสดงผลออก LCD ของ V1
    v2=(pedal_v%100)/10;//หลักหลังจุดทศนิยม
    v3=pedal_v%10;//หลักหลังจุดทศนิยมถัดไป
    Lcd_Out(2,2,"PEDAL");//แสดงผลออก LCD =PEDAL
    Lcd_Chr(2,8,v1+48);//แสดงผลออก LCD เช่น 1
    Lcd_Chr(2,9,'.');//แสดงผลออก LCD คือ 1 .
    Lcd_Chr(2,10,v2+48);//แสดงผลออก LCD เช่น 1.2
    Lcd_Chr(2,11,v3+48);//แสดงผลออก LCD เช่น 1.25
    Lcd_Chr(2,14,'V');แสดงผลออก LCD LCD เช่น 1.25 V
    Delay_ms(100);
    pedal1=Adc_Read(0);//ให้ pedal1=สัญญาน อะนาล็อค V จาก Sensor เข้าที่ขานี้ในที่นี้คือ สัญญาน คันเร่งหลัก
    delay_ms(1000);//หน่วงเวลา 1 วินาที
    pedal2=Adc_Read(0);//อ่านค่าคันเร่งอีกที แต่เก็บค่าใว้ในค่าที่ 2 เพื่อเปรียบเทียบกัน
    {
    loop1:
    if(pedal2>=(pedal1+100)&pedal2<(pedal1+200))//ถ้าคันเร่งค่าที่2 มากกว่าหรือเท่ากับ ค่าคันเร่งที่ 1 +100 (100*.00489=1.489V)
    {
    Lcd_Cmd(LCD_Clear);//ให้ทำงานภายในงาเล็บปีกกานี้ ทั้งหมด
    PORTB=0X17;//ค่านี้ต้องตรงกันกับขาที่ต่อไปคุมสัญญาน ที่จะหลอก คือ portb=0001 0111
    //ตาม Program ที่ผมเขียนคือ สัญญาน - Com Air---Water temp---Air Temp2---Air Temp1---Airflow .....
    Lcd_Out(1,1,"ON AT2 AF");//แสดงผลออก LCD
    Delay_ms(100);
    pedal2=Adc_Read(0);//อ่านค่าคันเร่งเป็นข้อมูลส่วนที่ 2 อีกครั้งเพื่อคำนวนว่าคันเร่งยังถูกเร่งอยู่หรือเปล่า
    while(pedal2>=pedal1) {goto loop1;}//ถ้ายังเร่งอยู่ให้กลับวนซ้ำอยู่ที่นี่ จนกว่าจะลดคันเร่งน้อยกว่า ค่าที่เก็บไว้ ค่าที่ 1
    }
    }
    loop2:
    if(pedal2>=(pedal1+200)&pedal2<(pedal1+405))///ส่วนนี้ก็เปรียบเทียบจากข้างบนก็จะคล้ายกัน แต่เปิด Sensor ต่างกันตามชอบครับ
    {
    Lcd_Cmd(LCD_Clear);
    PORTB=0x1F;
    Lcd_Out(1,2,"ON AT2 AF MAP");
    Delay_ms(100);
    pedal2=Adc_Read(0);
    while(pedal2>=pedal1) {goto loop2;}
    }
    loop3:
    if(pedal2>=(pedal1+405))
    {
    Lcd_Cmd(LCD_Clear);
    PORTB=0x0F;
    Lcd_Out(1,1,"ON AT2 AF MAP WT"); Delay_ms(100);
    Lcd_Out(2,3,"COM AIR OFF");Delay_ms(100);
    pedal2=Adc_Read(0);
    while(pedal2>=pedal1) {goto loop3;}
    }
    else {//// ถ้าการกดคันเร่งไม่ขึ้นเร็วเกินค่าที่ตั้งไว้เลย จะไม่ทำการใด ๆ
    PORTB=0X10;
    Lcd_Cmd(LCD_Clear);
    Delay_ms(200);
    Lcd_Out(1,2,"PEDAL ACTIVE");//แสดงข้อความตามชอบ แต่ต้องไม่เกินค่าที่ LCD แสดงผลได้ครับ
    Delay_ms(100);
    }
    }
    }
    หวังว่าจะมีแต่รถแรง ๆ ครับ
    แก้ไขครั้งล่าสุดโดย Yanyong : 24-02-2012 เมื่อ 08:30

  3. #103
    TTC - .... Wait.... TTC-Member
    สมัครเมื่อ
    Sep 2011
    User ID
    22939
    Status
    Offline
    โพส
    135

    มาตรฐาน ตอบ: Mcu ไมโครคอนโทรเลอร์ ทำอะไร ๆ ก็ทำได้ ถ้าทำเป็น

    อ้างอิง โพสต้นฉบับโดยคุณ Yanyong ดูโพส
    ได้ครับ
    เดียวต้องไปค้นดูในกรุก่อนนะครับ
    วางใว้นาน ไม่รู้ตัวใหน version ใหน
    ขอบคุณมากเลยครับ กำลังศึกษาครับ --ชุดpic เด็กน้อยของผมซื้อมา ตั้ง2ปีละ เพิ่งมาเริ่มเรียนครับ

    น้ายงมี ทัชสแกน เวอร์ชั่นที่ไม่ต้องติดตั้งไหมครับ ถ้ามีจัดให้ผมทีนะครับ นี่อีแมวผมครับ pokneed@hotmail.com รบกวนน้าอีกละ
    แก้ไขครั้งล่าสุดโดย pokneed : 22-02-2012 เมื่อ 22:32

  4. #104
    สมาชิกถาวร TTC-Member
    สมัครเมื่อ
    Jul 2009
    User ID
    7708
    Status
    Offline
    โพส
    1,114

    มาตรฐาน ตอบ: Mcu ไมโครคอนโทรเลอร์ ทำอะไร ๆ ก็ทำได้ ถ้าทำเป็น

    อ้างอิง โพสต้นฉบับโดยคุณ pokneed ดูโพส
    ขอบคุณมากเลยครับ กำลังศึกษาครับ --ชุดpic เด็กน้อยของผมซื้อมา ตั้ง2ปีละ เพิ่งมาเริ่มเรียนครับ

    น้ายงมี ทัชสแกน เวอร์ชั่นที่ไม่ต้องติดตั้งไหมครับ ถ้ามีจัดให้ผมทีนะครับ นี่อีแมวผมครับ pokneed@hotmail.com รบกวนน้าอีกละ
    น้า Jindee ยังมาแถวนี้บ้างหรือเปล่าครับ
    ผมขอ Keygen ของ Thinstall อีกที่ครับ ของเก่า โดน McAfee ฆ่าตายเกลี้ยงเลยครับ ไม่ได้ zip ไว้ด้วย
    ***
    Program Thinstall เป็น Program การสร้าง Program ติดตั้งทั้งหลาย จากเครื่อง 1
    แล้วนำไปใช้กับเครื่องอื่น โดยไม่ต้องติดตั้งครับ
    แก้ไขครั้งล่าสุดโดย Yanyong : 20-08-2013 เมื่อ 09:03

  5. #105
    TTC - .... Wait.... TTC-Member
    สมัครเมื่อ
    Sep 2011
    User ID
    22939
    Status
    Offline
    โพส
    135

    มาตรฐาน ตอบ: Mcu ไมโครคอนโทรเลอร์ ทำอะไร ๆ ก็ทำได้ ถ้าทำเป็น

    อ้างอิง โพสต้นฉบับโดยคุณ Yanyong ดูโพส
    น้า Jindee ยังมาแถวนี้บ้างหรือเปล่าครับ
    ผมขอ Keygen ของ Thaiinstall อีกที่ครับ ของเก่า โดน McAfee ฆ่าตายเกลี้ยงเลยครับ ไม่ได้ zip ไว้ด้วย
    ***
    Program Thaiinstall เป็น Program การสร้าง Program ติดตั้งทั้งหลาย จากเครื่อง 1
    แล้วนำไปใช้กับเครื่องอื่น โดยไม่ต้องติดตั้งครับ
    น้ายง ใช่อันนี้ป่าวครับ ฝากใว้2ที่ครับ เผื่อโหลดที่ใดไม่ใด้ครับ
    http://www.upload-thai.com/download....f309d381aba99d
    http://file2.uploadfile.biz/i/MXEMMEIMEVXMDX

  6. #106
    สมาชิกถาวร TTC-Member
    สมัครเมื่อ
    Jul 2009
    User ID
    7708
    Status
    Offline
    โพส
    1,114

    มาตรฐาน ตอบ: Mcu ไมโครคอนโทรเลอร์ ทำอะไร ๆ ก็ทำได้ ถ้าทำเป็น

    กลับไปอ่านข้างบนครับ อับแล้วครับ

  7. #107
    TTC - .... Wait.... TTC-Member
    สมัครเมื่อ
    Sep 2011
    User ID
    22939
    Status
    Offline
    โพส
    135

    มาตรฐาน ตอบ: Mcu ไมโครคอนโทรเลอร์ ทำอะไร ๆ ก็ทำได้ ถ้าทำเป็น

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

  8. #108
    สมาชิกถาวร TTC-Member
    สมัครเมื่อ
    Jul 2009
    User ID
    7708
    Status
    Offline
    โพส
    1,114

    มาตรฐาน ตอบ: Mcu ไมโครคอนโทรเลอร์ ทำอะไร ๆ ก็ทำได้ ถ้าทำเป็น

    อ้างอิง โพสต้นฉบับโดยคุณ pokneed ดูโพส
    โป๊ะเชะเลยครับน้ายง ละเอียดมากครับ อย่างงี้เข้าใจไวดีครับ แล้งวงจรครับ อย่าบอกนะว่าให้ผมแกะเอง โอ้วแม่เจ้า
    ฮฺฮฺฮฺ Downloadซ๊ะ
    อาจแตกต่างกันบ้าง ลองทำความเข้าใจดูครับ เพราะทำใว้หลาย version งง เองครับ
    แต่ที่ up ก็ใช้งานได้เลยครับ แต่ศึกษา วงจรอีกนิดหน่อยครับ บอกหมด มันจะไม่ได้คิด
    ความรู้จะได้แน่น ๆ 5 5 5 5
    แก้ไขครั้งล่าสุดโดย Yanyong : 27-02-2012 เมื่อ 07:53

  9. #109
    TTC - .... Wait.... TTC-Member
    สมัครเมื่อ
    Sep 2011
    User ID
    22939
    Status
    Offline
    โพส
    135

    มาตรฐาน ตอบ: Mcu ไมโครคอนโทรเลอร์ ทำอะไร ๆ ก็ทำได้ ถ้าทำเป็น

    เอาเป็นว่าบอกกันแบบ row-to-row เลยเนาะ
    /////////////////////////////////////////////////////////////
    #define beep1 PORTC.F3 //BC548 BUZZER 5V ขา C3 ต่อออกขับ buzzer
    #define Dis PORTC.F4 //DISPLAY CONTROL ขานี้ ต่อเข้า LCD เอาไว้สั่งกระพริบเวลาที่เสียงเตือนดังจะได้สดุดตา

    unsigned long int pedal1,pedal2,pedal_v,x; //ประกาศตัวแปลเพื่อใช้คำนวนเปรียบเทียบ ค่า -23000 > +24000 (ประมาณ)เปิดตำราประกอบเอง
    unsigned char v1,v2,v3; //ประกาศตัวแปลอีกแบบ ค่า 0-255
    void main()//กำหนดหัวข้อหลัก
    {
    TRISA=0XFF;// Port A ทั้งหมดเป็น Input ระหัสฐาน2 = 1111 1111 ( TRIS_)
    TRISB=0x00;//Port B ทั้งหมดเป็น output ระหัสฐาน2 = 0000 0000
    TRISC=0X00;//เหมือนข้างบน
    TRISD=0X00;//เหมือนข้างบน
    TRISE=0X00;;//เหมือนข้างบน
    PORTB=0X00;//ทีนี้ตรงนี้จะสั่งเป็น PORT_ก็คือเคลียค่า PORT_ ให้เป็น 0 หรือดับไฟเมื่อเริ่ม Program
    PORTC=0X00;//เหมือนข้างบน
    PORTD=0X00;//
    PORTE=0X00;//
    Lcd_Init(&PORTD);//สั่งกำหนด PORTD เป็นขาสั่งงาน LCD
    Lcd_Cmd(LCD_Clear);//เคลียจอก่อน
    Lcd_Cmd(lcd_cursor_off);//ปิดจุดกระพริบบน LCD
    Dis=1;//เปิดสัญญานไฟที่เราต่อไว้จ่ายให้ LCD เป็นความต้องการส่วนตัว ฮุฮุ
    Lcd_Out(1,5,"POWER ON");//แสดงข้อความเมื่อเปิดระบบทำงาน
    delay_ms(1000);
    for(x=0;x<3;x++)
    {
    beep1=1;
    delay_ms(50);
    beep1=0;
    delay_ms(50);
    }
    while(1)//ในขณะที่เปิดไฟเลี้ยงวงจุอยู่ให้ทำงานข้างล่างนี้
    {
    pedal_v=Adc_Read(0);// pedal_v= สัญญาน อะนาล็อค V จาก Sensor เข้าที่ขานี้ในที่นี้คือ สัญญาน คันเร่งหลัก
    pedal_v=pedal_v*489/1000;//กำหนดค่าที่อ่านมาได้แล้ทำการหารออก เพื่อแสดงผลออก LCD
    v1=pedal_v/100;//ผลจากการหาร100 เป็นหลัก Volte เพื่อแสดงผลออก LCD ของ V1
    v2=(pedal_v%100)/10;//หลักหลังจุดทศนิยม
    v3=pedal_v%10;//หลักหลังจุดทศนิยมถัดไป
    Lcd_Out(2,2,"PEDAL");//แสดงผลออก LCD =PEDAL
    Lcd_Chr(2,8,v1+48);//แสดงผลออก LCD เช่น 1
    Lcd_Chr(2,9,'.');//แสดงผลออก LCD คือ 1 .
    Lcd_Chr(2,10,v2+48);//แสดงผลออก LCD เช่น 1.2
    Lcd_Chr(2,11,v3+48);//แสดงผลออก LCD เช่น 1.25
    Lcd_Chr(2,14,'V');แสดงผลออก LCD LCD เช่น 1.25 V
    Delay_ms(100);
    pedal1=Adc_Read(0);//ให้ pedal1=สัญญาน อะนาล็อค V จาก Sensor เข้าที่ขานี้ในที่นี้คือ สัญญาน คันเร่งหลัก
    delay_ms(1000);//หน่วงเวลา 1 วินาที
    pedal2=Adc_Read(0);//อ่านค่าคันเร่งอีกที แต่เก็บค่าใว้ในค่าที่ 2 เพื่อเปรียบเทียบกัน
    {
    loop1:
    if(pedal2>=(pedal1+100)&pedal2<(pedal1+200))//ถ้าคันเร่งค่าที่2 มากกว่าหรือเท่ากับ ค่าคันเร่งที่ 1 +100 (100*.00489=1.489V)
    {
    Lcd_Cmd(LCD_Clear);//ให้ทำงานภายในงาเล็บปีกกานี้ ทั้งหมด
    PORTB=0X17;//ค่านี้ต้องตรงกันกับขาที่ต่อไปคุมสัญญาน ที่จะหลอก คือ portb=0001 0111
    //ตาม Program ที่ผมเขียนคือ สัญญาน - Com Air---Water temp---Air Temp2---Air Temp1---Airflow .....

    Lcd_Out(1,1,"ON AT2 AF");//แสดงผลออก LCD
    Delay_ms(100);
    pedal2=Adc_Read(0);//อ่านค่าคันเร่งเป็นข้อมูลส่วนที่ 2 อีกครั้งเพื่อคำนวนว่าคันเร่งยังถูกเร่งอยู่หรือเปล่า
    while(pedal2>=pedal1) {goto loop1;}//ถ้ายังเร่งอยู่ให้กลับวนซ้ำอยู่ที่นี่ จนกว่าจะลดคันเร่งน้อยกว่า ค่าที่เก็บไว้ ค่าที่ 1
    }
    }
    loop2:
    if(pedal2>=(pedal1+200)&pedal2<(pedal1+405))///ส่วนนี้ก็เปรียบเทียบจากข้างบนก็จะคล้ายกัน แต่เปิด Sensor ต่างกันตามชอบครับ
    {
    Lcd_Cmd(LCD_Clear);
    PORTB=0x1F;
    Lcd_Out(1,2,"ON AT2 AF MAP");
    Delay_ms(100);
    pedal2=Adc_Read(0);
    while(pedal2>=pedal1) {goto loop2;}
    }
    loop3:
    if(pedal2>=(pedal1+405))
    {
    Lcd_Cmd(LCD_Clear);
    PORTB=0x0F;
    Lcd_Out(1,1,"ON AT2 AF MAP WT"); Delay_ms(100);
    Lcd_Out(2,3,"COM AIR OFF");Delay_ms(100);
    pedal2=Adc_Read(0);
    while(pedal2>=pedal1) {goto loop3;}
    }
    else {//// ถ้าการกดคันเร่งไม่ขึ้นเร็วเกินค่าที่ตั้งไว้เลย จะไม่ทำการใด ๆ
    PORTB=0X10;
    Lcd_Cmd(LCD_Clear);
    Delay_ms(200);
    Lcd_Out(1,2,"PEDAL ACTIVE");//แสดงข้อความตามชอบ แต่ต้องไม่เกินค่าที่ LCD แสดงผลได้ครับ
    Delay_ms(100);
    }
    }
    }
    หวังว่าจะมีแต่รถแรง ๆ ครับ

    ทำแทบสีเอาใว้เผื่อมีคนผ่านมาจะใด้ไม่ตาลายและไม่งงครับ ผมลองเทสดูแล้ว เดาทางวงจรและโปรแกรมพอใด้เยอะละ แต่ติดเรื่องการอ่านโค๊ดบ้างพอสมควรครับ และที่สำคัญ จอlcdทำงานยังไงผมยังงงอยู่เลย จะสั่งมานยังไงเอ่ย

  10. #110
    สมาชิกถาวร TTC-Member
    สมัครเมื่อ
    Jan 2008
    User ID
    996
    Status
    Offline
    โพส
    777

    มาตรฐาน ตอบ: Mcu ไมโครคอนโทรเลอร์ ทำอะไร ๆ ก็ทำได้ ถ้าทำเป็น

    ใช้ mikroC เป็นคอมไพเลอร์ lcd กับ ADC เป็นไลบรารี่มาตรฐานอ่ะครับ ลองโหลดคู่มือมาดูอธิบายไว้ละเอียดครับ

    http://www.mikroe.com/pdf/mikroc_pic...anual_v100.pdf

  11. #111
    สมาชิกถาวร TTC-Member
    สมัครเมื่อ
    Jul 2009
    User ID
    7708
    Status
    Offline
    โพส
    1,114

    มาตรฐาน ตอบ: Mcu ไมโครคอนโทรเลอร์ ทำอะไร ๆ ก็ทำได้ ถ้าทำเป็น

    อ้างอิง โพสต้นฉบับโดยคุณ iGnUs ดูโพส
    ใช้ mikroC เป็นคอมไพเลอร์ lcd กับ ADC เป็นไลบรารี่มาตรฐานอ่ะครับ ลองโหลดคู่มือมาดูอธิบายไว้ละเอียดครับ

    http://www.mikroe.com/pdf/mikroc_pic...anual_v100.pdf
    Mikro C PRO กับ Mikro C กับ Mikro Basic การเขียน Code ค่อนข้างจะต่างกันพอประมาณครับ
    ซึ่งไม่สามารถ เอา Code ของแต่ละตัว มา Compare กันได้ต้องแก้ไขอีกที่
    แต่ถ้าท่านใด ชำนาญ ทั้งหมดก็อ่าน Code แล้วมาเรียบเรียงใหม่ได้เช่นกันครับ
    แต่ผมเขียนเป็นแค่ Mikro C ระดับเริ่มต้นเท่านั้นครับ ยังไม่ถึงขั้น
    และการเขียนคำสั่ง LCD ใน ทั้ง 3 Compiler ก็ต่างกันอยู่ครับเขียนแทนกันเลยไม่ได้ครับผม
    แก้ไขครั้งล่าสุดโดย Yanyong : 06-03-2012 เมื่อ 08:59

  12. #112
    สมาชิกถาวร TTC-Member
    สมัครเมื่อ
    Jan 2008
    User ID
    996
    Status
    Offline
    โพส
    777

    มาตรฐาน ตอบ: Mcu ไมโครคอนโทรเลอร์ ทำอะไร ๆ ก็ทำได้ ถ้าทำเป็น

    ตัววิธีโปรแกรม C กับ C Pro ต่างกันด้วยเหรอครับ นึกว่า C Pro จะมี library ให้มาเยอะกว่าซะอีก

  13. #113
    TTC - .... Wait.... TTC-Member
    สมัครเมื่อ
    Sep 2011
    User ID
    22939
    Status
    Offline
    โพส
    135

    มาตรฐาน ตอบ: Mcu ไมโครคอนโทรเลอร์ ทำอะไร ๆ ก็ทำได้ ถ้าทำเป็น

    ก่ะว่าจะหันไปคบกับ อะดุยโน่ แล้วคับ

  14. #114
    สมาชิกถาวร TTC-Member
    สมัครเมื่อ
    Jan 2008
    User ID
    996
    Status
    Offline
    โพส
    777

    มาตรฐาน ตอบ: Mcu ไมโครคอนโทรเลอร์ ทำอะไร ๆ ก็ทำได้ ถ้าทำเป็น

    รบกวนสมาชิกดูโค้ดหน่อยครับ กะลังศึกษาเรื่องอินเตอร์รัปโดยใช้ timer (ตอนนี้ใช้ timer0 ของ PIC)
    คือผมโค้ดตามตัวอย่างโดยเลือกให้อินเตอร์รับทุกๆ 0.01 วินาที นับให้ครบ 6 วินาทีแล้วสลับ logic ของขา RE0 วนไปเรื่อยๆ

    ทีนี้อินเตอร์รับแรกมันก็สลับให้อยู่คือจาก 0 เป็น 1 แต่พอ reset cnt=0 พอครบ 6 วินาทีถัดมามันดันไม่สลับ logic จาก 1 เป็น 0 ให้ทั้งๆที cnt ก็นับต่อไปเรื่อยๆใน ISR
    เลยงงๆว่าผมโค้ดอะไรผิดหรือเปล่าฝากน้าๆช่วยดูนิดนึงครับ เป็น MikroC นะครับ

    Code:
    sbit LED at RE0_bit;
    unsigned short cnt=0;
     
    // Interrupt Handler
    void interrupt()
    {
    // Timer0 Interrupt - Freq = 99.65 Hz - Period = 0.010035 seconds
    if (INTCON.TMR0IF ==1) // timer 0 interrupt flag
    {
    INTCON.TMR0IF = 0; // clear the flag
    INTCON.TMR0IE = 1; // reenable the interrupt
    TMR0 = 60; // reset the timer preset count
    }
    }
     
    // code starts here...
    void main()
    {
    // setup porte to show the interrupts by blibking LEDs
    TRISE = 0x00; // PORT is all output...to show the interrupts
    PORTE = 0; // start with all outputs low
    //Timer0 Registers Prescaler= 256 - TMR0 Preset = 60 - Freq = 99.65 Hz - Period = 0.010035 seconds
    OPTION_REG.T0CS = 0; // bit 5 TMR0 Clock Source Select bit...0 = Internal Clock (CLKO) 1 = Transition on T0CKI pin
    OPTION_REG.T0SE = 0; // bit 4 TMR0 Source Edge Select bit 0 = low/high 1 = high/low
    OPTION_REG.PSA = 0; // bit 3 Prescaler Assignment bit...0 = Prescaler is assigned to the Timer0
    OPTION_REG.PS2 = 1; // bits 2-0 PS2:PS0: Prescaler Rate Select bits
    OPTION_REG.PS1 = 1;
    OPTION_REG.PS0 = 1;
    TMR0 = 60; // preset for timer register
    cnt=0;
    LED=0;
    // Interrupt Registers
    INTCON = 0; // clear the interrpt control register
    INTCON.TMR0IE = 1; // bit5 TMR0 Overflow Interrupt Enable bit...1 = Enables the TMR0 interrupt
    INTCON.TMR0IF = 0; // bit2 clear timer 0 interrupt flag
    INTCON.GIE = 1; // bit7 global interrupt enable
     
    do
     {
     if (cnt==600)
     {
      LED = ~LED;
      cnt=0;
     }
     } while(1) ; //endless loop
    }

    ** แก้ไขได้แล้วครับ นั่งงงอยู่หลายวันเพิ่งมาเข้าใจต้องเปลี่ยนพอร์ต ADC จาก Analog เป็น Digital ก่อนอ่ะครับ ADCON1= 0b0110
    แก้ไขครั้งล่าสุดโดย iGnUs : 10-03-2012 เมื่อ 15:17

  15. #115
    สมาชิกถาวร TTC-Member
    สมัครเมื่อ
    Jul 2009
    User ID
    7708
    Status
    Offline
    โพส
    1,114

    มาตรฐาน ตอบ: Mcu ไมโครคอนโทรเลอร์ ทำอะไร ๆ ก็ทำได้ ถ้าทำเป็น

    สนับสนุนคนกล้าคิด กล้าทำครับ
    ผมก็มือใหม่ครับ สู้ ๆ

  16. #116
    TTC - .... Wait.... TTC-Member
    สมัครเมื่อ
    Sep 2011
    User ID
    22939
    Status
    Offline
    โพส
    135

    มาตรฐาน ตอบ: Mcu ไมโครคอนโทรเลอร์ ทำอะไร ๆ ก็ทำได้ ถ้าทำเป็น

    หายไปหลายวัน เน็ทเน่า(โดนตัด) อิอิ กลับมาไหม่ จากที่ศึกษาตามน้าๆ เริ่มจะเข้าใจ แต่ฟั่งชั่นลึกๆยังไม่เข้าใจ ผมอยากให้เปรียบเทียบแรงดันไฟฟ้า สมมุติรับเข้ามา0-5v แต่ผมไม่ต้องการให้เกิน 4.7v ถ้ารับเข้ามาเกินให้จ่ายไม่เกิน4.7 ซึ่งพอจะเทียบใด้จาก โปรแกรมด้านบน ตามนี้ครับ รบกวนน้าอธิบายทีครับ คือผมจะทำตัวปลดบู๊สแบบป้องกันกล่องไปในตัว ปัจจุบันใช้ซีเนอร์ไดโอดอยู่ กลัวไดโอดช๊อดลงกราว์ละกล่องเน่าแน่เลยครับ

    ตัวแปร BOOT in // ให้อ่านค่าตัวแปร ว่ามีค่า <=3.6V,= ให้ส่งค่าออกตามที่รับมา
    วนลูป 100ms //วน
    อ่านค่าตัวแปร boot in //ให้อ่านค่าตัวแปร >=3.6 ,=ให้ส่งค่า 3.6V


    ประมาณนี้ครับ ผมต้องใช้ฟังชั่นไหน ในการกำหนด Vครับ
    pedal1=adc_read(0);//ให้ pedal1=สัญญาน อะนาล็อค v จาก sensor เข้าที่ขานี้ในที่นี้คือ สัญญาน คันเร่งหลัก
    delay_ms(1000);//หน่วงเวลา 1 วินาที
    pedal2=adc_read(0);//อ่านค่าคันเร่งอีกที แต่เก็บค่าใว้ในค่าที่ 2 เพื่อเปรียบเทียบกัน
    {
    loop1:
    If(pedal2>=(pedal1+100)&pedal2<(pedal1+200))//ถ้าคันเร่งค่าที่2 มากกว่าหรือเท่ากับ ค่าคันเร่งที่ 1 +100 (100*.00489=1.489v)
    แก้ไขครั้งล่าสุดโดย pokneed : 17-03-2012 เมื่อ 08:47

  17. #117
    สมาชิกถาวร TTC-Member
    สมัครเมื่อ
    Jan 2008
    User ID
    996
    Status
    Offline
    โพส
    777

    มาตรฐาน ตอบ: Mcu ไมโครคอนโทรเลอร์ ทำอะไร ๆ ก็ทำได้ ถ้าทำเป็น

    อ้างอิง โพสต้นฉบับโดยคุณ pokneed ดูโพส
    หายไปหลายวัน เน็ทเน่า(โดนตัด) อิอิ กลับมาไหม่ จากที่ศึกษาตามน้าๆ เริ่มจะเข้าใจ แต่ฟั่งชั่นลึกๆยังไม่เข้าใจ ผมอยากให้เปรียบเทียบแรงดันไฟฟ้า สมมุติรับเข้ามา0-5v แต่ผมไม่ต้องการให้เกิน 4.7v ถ้ารับเข้ามาเกินให้จ่ายไม่เกิน4.7 ซึ่งพอจะเทียบใด้จาก โปรแกรมด้านบน ตามนี้ครับ รบกวนน้าอธิบายทีครับ คือผมจะทำตัวปลดบู๊สแบบป้องกันกล่องไปในตัว ปัจจุบันใช้ซีเนอร์ไดโอดอยู่ กลัวไดโอดช๊อดลงกราว์ละกล่องเน่าแน่เลยครับ

    ตัวแปร BOOT in // ให้อ่านค่าตัวแปร ว่ามีค่า <=3.6V,= ให้ส่งค่าออกตามที่รับมา
    วนลูป 100ms //วน
    อ่านค่าตัวแปร boot in //ให้อ่านค่าตัวแปร >=3.6 ,=ให้ส่งค่า 3.6V


    ประมาณนี้ครับ ผมต้องใช้ฟังชั่นไหน ในการกำหนด Vครับ
    ไม่แน่ใจว่าเข้าใจถูกหรือเปล่านะครับ
    คือน้าต้องการให้ output ที่ออกจากขา MCU เป็น 3.6V กรณีที่อ่าน ADC มาได้ >=3.6V แบบนี้ใช่ป่ะครับ
    ถ้าใช่ผมคิดว่าต้องใช้ PWM อ่ะครับ จริงๆก็ไม่เคยใช้เหมือนกันอาศัยอากู๋ช่วยนิดหน่อยครับ

  18. #118
    TTC - .... Wait.... TTC-Member
    สมัครเมื่อ
    Sep 2011
    User ID
    22939
    Status
    Offline
    โพส
    135

    มาตรฐาน ตอบ: Mcu ไมโครคอนโทรเลอร์ ทำอะไร ๆ ก็ทำได้ ถ้าทำเป็น

    อ้างอิง โพสต้นฉบับโดยคุณ ignus ดูโพส
    ไม่แน่ใจว่าเข้าใจถูกหรือเปล่านะครับ
    คือน้าต้องการให้ output ที่ออกจากขา mcu เป็น 3.6v กรณีที่อ่าน adc มาได้ >=3.6v แบบนี้ใช่ป่ะครับ
    ถ้าใช่ผมคิดว่าต้องใช้ pwm อ่ะครับ จริงๆก็ไม่เคยใช้เหมือนกันอาศัยอากู๋ช่วยนิดหน่อยครับ
    ใช่เลยครับ แล้วใช้ pwm ไปคุมอะไรครับ เพราะ pwm มันจ่ายออกมาเป็นพสัลใช่ไหมครับ
    ***ฮ่อฮ่อ *** ผมเข้าใจละ PWM แต่ทีนี้เราจะกำหนดคาบเวลามันยังไงนี่สิ ผมหาในอากู๋ อ่านยังไม่เข้าใจเลยครับ
    แก้ไขครั้งล่าสุดโดย pokneed : 17-03-2012 เมื่อ 16:42

  19. #119
    สมาชิกถาวร TTC-Member
    สมัครเมื่อ
    Jan 2008
    User ID
    996
    Status
    Offline
    โพส
    777

    มาตรฐาน ตอบ: Mcu ไมโครคอนโทรเลอร์ ทำอะไร ๆ ก็ทำได้ ถ้าทำเป็น

    อ้างอิง โพสต้นฉบับโดยคุณ pokneed ดูโพส
    ใช่เลยครับ แล้วใช้ pwm ไปคุมอะไรครับ เพราะ pwm มันจ่ายออกมาเป็นพสัลใช่ไหมครับ
    ***ฮ่อฮ่อ *** ผมเข้าใจละ PWM แต่ทีนี้เราจะกำหนดคาบเวลามันยังไงนี่สิ ผมหาในอากู๋ อ่านยังไม่เข้าใจเลยครับ
    ไม่แน่ใจเหมือนกันครับ เดี๋ยวลองไปหาหนังสืออ่านก่อน
    ถ้าให้เดา ก็ใช้ duty cycle = 3.6/5.0 V = 72%

    code generate ตามลิ้งค์ครับ
    http://www.micro-examples.com/public...alculator.html

  20. #120
    TTC - .... Wait.... TTC-Member
    สมัครเมื่อ
    Sep 2011
    User ID
    22939
    Status
    Offline
    โพส
    135

    มาตรฐาน ตอบ: Mcu ไมโครคอนโทรเลอร์ ทำอะไร ๆ ก็ทำได้ ถ้าทำเป็น

    Zzzzzzzzzzzzz

หน้า 6 จากทั้งหมด 28 หน้า หน้าแรกหน้าแรก 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... หน้าสุดท้ายหน้าสุดท้าย

ข้อมูลกระทู้

Users Browsing this Thread

ในขณะนี้มี 1 ท่านดูกระทู้อยู่. (0 สมาชิกและ 1 ผู้เยี่ยมชม)

Bookmarks

กฎการโพสข้อความ

  • ท่าน ไม่สามารถ ตั้งกระทู้ใหม่ได้
  • ท่าน ไม่สามารถ ตอบกระทู้ได้
  • ท่าน ไม่สามารถ แนบไฟล์ได้
  • ท่าน ไม่สามารถ แก้ไขข้อความโพสได้
  •  
  • BB code สถานะ เปิด
  • Smilies สถานะ เปิด
  • [IMG] สถานะ เปิด
  • [VIDEO] code is เปิด
  • HTML สถานะ ปิด