ช่วยด้วยครับ มือใหม่ไมโครอย่างแรง

  • 7 Replies
  • 2411 Views

จากวงจรข้างบนนี้ครับ ผมต้องการเขียนMicrocontroller[AT89C51] ด้วยภาษา C อ้างอิง จะต้องเขียนไฟล์ที่HEXยังไง

อยากให้พี่ๆในนี้ เขียนเป็น Cให้ดูหน่อยครับ  จะนำไปดัดแปลง

*

Offline JENG

  • *****
  • 808
  • รู้ทุกเรื่องเว้นเรื่องจริง
    • View Profile
สรุปจากวงจรถ้าจะเขียนลง mcu มี 2 in คือ S1 ,S2 และ 1 out คือ C1

Code: [Select]
void main(void){

    for(;;){
        if(!S1&&S2){
            C1 = High;
        }

        if(S1&&!S2){
            C1 = Low;
        }

    }

}

รอท่านอื่นต่อ...
สามารถติดตาม electoday ได้ที่

Facebook
www.facebook.com/groups/coopmicro

Google+
https://plus.google.com/communities/103482067769375459277

☺☺☺ความรู้ และความฉลาด ไม่ใช่สิ่งเดียวกัน จะมีประโยชน์อะไร ถ้าฉลาดแต่อยู่ในกะลา☺☺☺

จากรูปที่ให้มาเป็นวงจรรีเลย์ มีสวิตซ์ 2 ตัว S1 เป็น NO กับ S2 เป็น NC เพื่อว่าจะได้ทำการอินเตอร์ล็อกได้

โค๊ดนี้ S1 S2 จะเป็น NO หมด

Code: [Select]
void main(void)
{
     C1 = OFF;

      while(1)
      {
            if(S1==push)
           {
              C1 = ON;
            }
            if(S2==push)
            {
              C1 = OFF;
             }
       }
}

อันนี้ใช้สวิตซ์ตัวเดี่ยว

Code: [Select]
void main(void)
{
     C1 = 0;
     

      while(1)
      {
            if(S1==push)
           {
              C1 ^= 1;             
            }
         
       }
}

บอกตามตรงครับ ผ่านมา 10 กว่าปี ดูสัญลักษณ์ไม่เป็นเลยครับ  รบกวนหน่อยครับ หาข้อมูลได้จากหัวข้อไหนบ้าง จะได้ตามทันครับ  ขอบคุณครับ

จากกระทู้ที่ผมเคยตั้งคำถามไว้ครับ http://www.electoday.com/index.php?topic=1288.0


ตอนนี้ผมหัดเล่น Microcontroller [AT89C51] ตัวนี้อยู่ครับ ผมอยากจะเขียนให้มันแสดงผลเป้นPLC แบบ 20x4 ครับอยากจะให้แสดงผลคำว่าอะไรสักอย่างเช่น hello

อยากจะให้พี่แนะนำหน่อยครับนั้งงมมา2วันแล้วครับ จับต้นชนปลายไม่ถูกเลย


ตอนนี้เท่าที่หาได้คือ
Code: [Select]
#include<reg51.h>


#define cmd_port P3


#define data_port P2


#define q 100


 sbit rs = cmd_port^0;  //register select pin
 sbit rw = cmd_port^1;  // read write pin
 sbit e = cmd_port^6;  //enable pin
 
 void delay(unsigned int msec)  // Function to provide time delay in msec.
 {
  int i,j ;
  for(i=0;i<msec;i++)
  for(j=0;j<1275;j++);
 }


 void lcd_cmd(unsigned char item)  //Function to send command to LCD
 {
  data_port = item;
  rs= 0;
  rw=0;
  e=1;
  delay(1);
  e=0;
 }


 void lcd_data(unsigned char item)  //Function to send data to LCD
 {
  data_port = item;
  rs= 1;
  rw=0;
  e=1;
  delay(1);
  e=0;
 }


 void main()
 {


  lcd_cmd(0x38);  // for using 8-bit 2 row mode of LCD
  delay(100);


  lcd_cmd(0x0E);  // turn display ON for cursor blinking
  delay(100);
 
  lcd_cmd(0x01);  //clear screen
  delay(100);


  lcd_cmd(0x06);  //display ON
  delay(100);


  lcd_cmd(0x86);  // bring cursor to position 6 of line 1
  delay(100);


  lcd_data('้hello');
 }

*

Offline JENG

  • *****
  • 808
  • รู้ทุกเรื่องเว้นเรื่องจริง
    • View Profile
ลองกับอะไรครับ sim หรือ ต่อจริง
สามารถติดตาม electoday ได้ที่

Facebook
www.facebook.com/groups/coopmicro

Google+
https://plus.google.com/communities/103482067769375459277

☺☺☺ความรู้ และความฉลาด ไม่ใช่สิ่งเดียวกัน จะมีประโยชน์อะไร ถ้าฉลาดแต่อยู่ในกะลา☺☺☺


@moochat D1เป็นรีเลย์รูปสีเหลี่ยมจะเป็นคอยล์ ส่วนรูปสวิตท์เป็นหน้า contact

@bompople ในโค็ด function lcd_data รับค่าเป็น character ลองวนลูปสั่งที่ละตัวอักษรดูครับ