Thông báo

Collapse
No announcement yet.

Code Dieu Khien Role On/of

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Code Dieu Khien Role On/of

    Có ai giúp mình viết đoạn code cho 8051 điều khiển Rơle đóng ngắt ko?
    Yêu cầu là sau 1 khoảng thời gian định trước (0~255')đèn ON sáng và ngược lại đèn OFF sáng đồng thời xuất ra led 7 đoạn hiển thị thời gian đếm ngược từ thời điểm thời gian set về 0.

  • #2
    Nguyên văn bởi thanhm Xem bài viết
    Có ai giúp mình viết đoạn code cho 8051 điều khiển Rơle đóng ngắt ko?
    Yêu cầu là sau 1 khoảng thời gian định trước (0~255')đèn ON sáng và ngược lại đèn OFF sáng đồng thời xuất ra led 7 đoạn hiển thị thời gian đếm ngược từ thời điểm thời gian set về 0.
    cái này thiếu gì, mà rất dễ làm. Nếu nhác không làm thì liên hệ ebacson@gmail.com mình gửi cho cả mạch lẫn code.

    Comment


    • #3
      Vậy Thank bạn nhiều nha.Làm ơn gửi cho mình qua địa chỉ YM đi:
      nguyenthanhvina@yahoo.com vì đ/c mail bạn cho mình ko liên hệ được.Đa tạ bạn lần nữa!

      Comment


      • #4
        ebacson thân mến, nếu không có gì cần giữ bí mật thì bạn post lên diễn đàn để mọi người cùng được học hỏi nhé. Trao đổi qua email chỉ với mục đích riêng tư thôi, hãy luôn nghĩ rằng có nhiều người cần sự giúp đỡ của bạn

        Comment


        • #5
          Nguyên văn bởi zeroFILL Xem bài viết
          ebacson thân mến, nếu không có gì cần giữ bí mật thì bạn post lên diễn đàn để mọi người cùng được học hỏi nhé. Trao đổi qua email chỉ với mục đích riêng tư thôi, hãy luôn nghĩ rằng có nhiều người cần sự giúp đỡ của bạn
          Cái này lâu quá rồi tìm mãi không thấy đâu cả, vì lỡ nói rồi nên đành ngồi viết lại vì hơi vội và găm trên board để test nên mình viết không được gọn cho lắm, các bạn thông cảm nhé:
          mạch dùng 2 led 7 đoạn, các bạn xem code để làm mạch cho đúng.
          1 led để báo trạng thái relay.
          dùng 24c04 để lưu thời gian cài đặt.
          và 3 nút bấm, 1 chọn giờ mở, 1 chọn giờ tắt, và 1 để play là lưu cài đặt
          Mình đảm bảo đã test kỹ, chạy tốt.
          phần hiển thị led 7 đoạn do copy lại code của thời xa xưa nên hì hì các bạn phải viết lại cho đẹp.
          HTML Code:
          #include <at89x52.h>
          int i,j,ia,ja;
          int key,key1;
          int time_on, time_off,time_total;
          int temp,tempp;
          long pause,stop;
          sbit relay=P2^7; // Dieu khien khoi dong tu
          //======Phan giao tiep I2C dung rom 24c04=======================
          sbit SCL = P2^4;
          sbit SDA = P2^3;
          //sbit A0 = P0^0;
          //sbit A1 = P0^1;
          //sbit A2 = P0^2;
          //sbit WP = P0^5;
          #define SIG24C 0xA0
          #define WR24C 0x00
          #define RD24C 0x01
          //#define HI24C01 0x00
          //#define HI24C02 0x00
          #define HI24C04 0x02
          //#define HI24C08 0x06
          //#define HI24C16 0x0e
          void TxChar(unsigned char ch);
          void Setup24c(void);
          void Delay(unsigned int loop);
          unsigned char ReadByte(unsigned int addr);
          void WriteByte(unsigned int addr, unsigned char ch);
          void ShiftOut(unsigned char bytout);
          //============I2C=====Doc ghi rom================================
          void Delayi2c(unsigned int loop)
          {
          while(loop--);
          }
          void BaseClock(void)
          {
          Delayi2c(4);
          SCL = 1;
          Delayi2c(4);
          SCL = 0;
          }
          void StartAccess(void)
          {
          SCL = 1;
          SDA = 1;
          Delayi2c(4);
          SDA = 0;
          
          
          Delayi2c(4);
          SCL = 0;
          }
          void StopAccess(void)
          {
          SDA = 0;
          SCL = 1;
          Delayi2c(4);
          SDA = 1;
          Delayi2c(4);
          SCL = 0;
          }
          void Setup24c(void)
          {
          unsigned char i;
          //A0 = 0;
          //A1 = 0;
          //A2 = 0;
          //WP = 0;
          SCL = 1;
          SDA = 1;
          Delayi2c(2);
          for(i=0;i<9;i++)
          BaseClock();
          StartAccess();
          }
          void NoAck(void)
          {
          SDA = 1;
          BaseClock();
          }
          //void Ack(void)
          //{
          //SDA = 0;
          //BaseClock();
          //}
          bit GetAck(void)
          {
          unsigned int i;
          bit bSda;
          SDA = 1;
          Delayi2c(2);
          SCL = 1;
          for(i=0;i<50000;i++)
          {
          Delayi2c(100);
          bSda = SDA;
          if(bSda == 0)
          break;
          }
          SCL = 0;
          return(!bSda);
          }
          bit AckPoll(void)
          {
          unsigned char i;
          for(i=0;i<1000;i++)
          {
          StartAccess();
          ShiftOut(SIG24C);
          if(GetAck())
          return(1);
          }
          return(0);
          }
          void WaitTwr(void)
          {
          Delayi2c(4000);
          }
          void ShiftOut(unsigned char bytout)
          {
          unsigned char i;
          for(i=0;i<8;i++)
          {
          if((bytout & 0x80) == 0)
          SDA = 0;
          else
          SDA = 1;
          BaseClock();
          bytout = bytout << 1;
          }
          }
          unsigned char ShiftIn(void)
          {
          unsigned char i,bytin;
          bytin = 0;
          bytin = bytin | SDA;
          for(i=0;i<7;i++)
          {
          BaseClock();
          bytin = bytin << 1;
          bytin = bytin | SDA;
          }
          return(bytin);
          }
          void WriteByte(unsigned int addr, unsigned char ch)
          {
          unsigned char DeAddr,HiAddr,LoAddr;
          LoAddr = (unsigned char) addr;
          HiAddr = (unsigned char) (addr >> 8);
          DeAddr = SIG24C | ((HiAddr <<1 ) & HI24C04);
          //DeAddr = SIG24C | ((HiAddr <<1 ) & HI24C08);
          StartAccess();
          ShiftOut(DeAddr | WR24C);
          GetAck();
          ShiftOut(LoAddr);
          GetAck();
          ShiftOut(ch);
          GetAck();
          StopAccess();
          WaitTwr();
          AckPoll();
          }
          unsigned char ReadByte(unsigned int addr)
          {
          unsigned char ch,DeAddr,HiAddr,LoAddr;
          ch = 0xff;
          LoAddr = (unsigned char) addr;
          HiAddr = (unsigned char) (addr >> 8);
          DeAddr = SIG24C | ((HiAddr <<1 ) & HI24C04);
          //DeAddr = SIG24C | ((HiAddr <<1 ) & HI24C08);
          StartAccess();
          ShiftOut(DeAddr | WR24C);
          GetAck();
          ShiftOut(LoAddr);
          GetAck();
          StartAccess();
          ShiftOut(DeAddr | RD24C);
          GetAck();
          ch = ShiftIn();
          NoAck();
          StopAccess();
          return(ch);
          }
          //============================================================
          //======Phan hien thi thoi gian dung 2 led 7 doan===============
          //hang chuc
          sbit led1=P0^2;sbit led2=P0^1;sbit led3=P0^0;sbit led4=P1^3;
          sbit led5=P1^2;sbit led6=P1^1;sbit led7=P1^0;sbit led8=P0^6;
          //hang don vi
          sbit led21=P0^5;sbit led22=P0^4;sbit led23=P0^3;sbit led24=P1^7;
          sbit led25=P1^6;sbit led26=P1^5;sbit led27=P1^4;sbit led28=P0^7;
          void tat(void)
          {
          led1=1;led2=1;led3=1;led4=1;led5=1;led6=1;led7=1;
          }
          void tat2(void)
          {
          led21=1;led22=1;led23=1;led24=1;led25=1;led26=1;led27=1;
          }
          void so0(void)
          {
          tat();led1=0;led2=0;led3=0;led4=0;led5=0;led6=0;led7=1;
          }
          void so20(void)
          {
          tat2();led21=0;led22=0;led23=0;led24=0;led25=0;led26=0;led27=1;
          }
          void so1(void)
          {
          tat();led1=0;led2=1;led3=1;led4=0;led5=1;led6=1;led7=1;
          }
          void so21(void)
          {
          tat2();led21=0;led22=1;led23=1;led24=0;led25=1;led26=1;led27=1;
          }
          void so2(void)
          {
          tat();led1=1;led2=0;led3=0;led4=0;led5=0;led6=1;led7=0;
          }
          void so22(void)
          {
          tat2();led21=1;led22=0;led23=0;led24=0;led25=0;led26=1;led27=0;
          }
          void so3(void)
          {
          tat();led1=0;led2=0;led3=1;led4=0;led5=0;led6=1;led7=0;
          }
          void so23(void)
          {
          tat2();led21=0;led22=0;led23=1;led24=0;led25=0;led26=1;led27=0;
          }
          void so4(void)
          {
          tat();led1=0;led2=1;led3=1;led4=0;led5=1;led6=0;led7=0;
          }
          void so24(void)
          {
          tat2();led21=0;led22=1;led23=1;led24=0;led25=1;led26=0;led27=0;
          }
          void so5(void)
          {
          tat();led1=0;led2=0;led3=1;led4=1;led5=0;led6=0;led7=0;
          }
          void so25(void)
          {
          tat2();led21=0;led22=0;led23=1;led24=1;led25=0;led26=0;led27=0;
          }
          void so6(void)
          {
          tat();led1=0;led2=0;led3=0;led4=1;led5=0;led6=0;led7=0;
          }
          void so26(void)
          {
          tat2();led21=0;led22=0;led23=0;led24=1;led25=0;led26=0;led27=0;
          }
          void so7(void)
          {
          tat();led1=0;led2=1;led3=1;led4=0;led5=0;led6=1;led7=1;
          }
          void so27(void)
          {
          tat2();led21=0;led22=1;led23=1;led24=0;led25=0;led26=1;led27=1;
          }
          void so8(void)
          {
          tat();led1=0;led2=0;led3=0;led4=0;led5=0;led6=0;led7=0;
          }
          void so28(void)
          {
          tat2();led21=0;led22=0;led23=0;led24=0;led25=0;led26=0;led27=0;
          }
          void so9(void)
          {
          tat();led1=0;led2=0;led3=1;led4=0;led5=0;led6=0;led7=0;
          }
          void so29(void)
          {
          tat2();led21=0;led22=0;led23=1;led24=0;led25=0;led26=0;led27=0;
          }
          void hienso(int so)
          {
          int a,b;
          //c=so%60;
          //a=c/10;
          //b=c%10;
          a=so/10;
          b=so%10;
          switch(a)
          	{
          	case 0:{so0();break;}
          	case 1:{so1();break;}
          	case 2:{so2();break;}
          	case 3:{so3();break;}
          	case 4:{so4();break;}
          	case 5:{so5();break;}
          	case 6:{so6();break;}
          	case 7:{so7();break;}
          	case 8:{so8();break;}
          	case 9:{so9();break;}
          	}
          	switch(b)
          	{
          	case 0:{so20();break;}
          	case 1:{so21();break;}
          	case 2:{so22();break;}
          	case 3:{so23();break;}
          	case 4:{so24();break;}
          	case 5:{so25();break;}
          	case 6:{so26();break;}
          	case 7:{so27();break;}
          	case 8:{so28();break;}
          	case 9:{so29();break;}
          	}
          }  
          //===============================================================
          
          //========Phan xu ly ngat timer va quet phim=====================
            void delay(unsigned int ms)
          {
          unsigned int i,j;
          for (i=0; i<ms; i++)
          { for (j=0; j<120; j++);
          
          }
          } 
          void timer0_int()
          {
          EA=1;
          TMOD =0x01;
          ET0=1;
          TH0=0x11;
          TL0=0xF;
          TR0=1;  
          }
          
          void timer0(void) interrupt 1
          {
          TH0=0x20; //chinh thoi gian chinh xac
          TL0=0xF;
          j++;
          TF0=0;
          if (j==8) led28=1;
          if (j==16)
          	{
          	led28=0;
          	//lenh trong ngat
          	tempp++;
          	if (tempp==60){temp++;tempp=0;}
          	j=0;
          	//hienso(temp);
           	if (temp==time_on){relay=1;}
          	if (temp==time_total) {relay=0;temp=0;}
          	}		   
          } 
          void quetphim()
          {
           if (P2_0 ==0) key =1;
           if (P2_1 ==0) key =2;
           if (P2_2 ==0) key =3;
          }	
          //========================================================
          //============Chuong trinh chinh==========================
          void main()
          {
          //time_on=5;
          //time_off=5;
          //=======I2C= Doc tu rom=
          Setup24c();
          //WriteByte(1,time_on);
          //WriteByte(2,time_off);
          time_on=ReadByte(1);
          time_off=ReadByte(2);
          stop=ReadByte(3);
          //=======================
          time_total=time_on+time_off;
          j=0;
          ia=0;
          key1=1;
          timer0_int();
          TR0=0;
          temp=0;
          tempp=0;
          pause=0;
          hienso(0);
          relay=0;
          led8=1;
          delay(300);
          if (stop==1){TR0=1;led8=0;}
          while (1)
          {
          Run:
          pause=0;
          key=0;
          if (temp<time_on) hienso(time_on-temp);
          if (temp>=time_on) hienso(time_total-temp);
          //if (temp==time_on){relay=1;}
          //if (temp==time_total) {relay=0;temp=0;}
          quetphim();
          switch(key)
          	{
          	case 1:{
          		delay(300);
          		ia=0;ja=0;
          		while(1)  		
          		{
          			pause++;
          			if (pause>50000) {TR0=1;led8=0;time_on=ReadByte(1);
          			time_off=ReadByte(2);goto Run;}
          		quetphim();				
          		switch(key)
          			{
          			case 1:delay(300);pause=0;
          			if (ia>0){time_on=time_on+5;TR0=0;led8=1;}
          			if (time_on>60) time_on=5;key=5;
          			hienso(time_on);ia++;ja=0;break;
          
          			case 2:delay(300);pause=0;
          			if (ja>0) {time_off=time_off+5;TR0=0;led8=1;}
          			if (time_off>60) time_off=5;key=5;
          			hienso(time_off);ja++;ia=0;break;
          
          			case 3:delay(300);TR0=1;led8=0;
          			ia=0;ja=0;temp=0;j=0;relay=0;
          			time_total=time_on+time_off;
          			//I2C====luu vao rom======
          			WriteByte(1,time_on);
          			WriteByte(2,time_off);
          			time_on=ReadByte(1);
          			time_off=ReadByte(2);
          			//========================
          			goto Run;break;
          			}
          		}
          		break;}
          	case 2:{
          		delay(300);
          		ia=0;ja=0;
          		while(1)  		
          		{
          			pause++;
          			if (pause>50000) {TR0=1;led8=0;
          			time_on=ReadByte(1);
          			time_off=ReadByte(2);goto Run;}			
          		quetphim();				
          		switch(key)
          			{
          			case 1:delay(300);pause=0;
          			if (ia>0){time_on=time_on+5;TR0=0;led8=1;}
          			if (time_on>60) time_on=5;key=5;
          			hienso(time_on);ia++;ja=0;break;
          
          			case 2:delay(300);pause=0;
          			if (ja>0) {time_off=time_off+5;TR0=0;led8=1;}
          			if (time_off>60) time_off=5;key=5;
          			hienso(time_off);ja++;ia=0;break;
          
          			case 3:delay(300);TR0=1;led8=0;
          			ia=0;ja=0;temp=0;j=0;relay=0;
          			time_total=time_on+time_off;
          			//I2C=====Luu vao rom=====
          			WriteByte(1,time_on);
          			WriteByte(2,time_off);
          			time_on=ReadByte(1);
          			time_off=ReadByte(2);
          			//========================
          			goto Run;break;
          			}
          		}
          		break;}
          	case 3:{
          		//so3();
          	   delay(300);
          	   //I2C=======Luu vao rom========
          	   	WriteByte(1,time_on);
          		WriteByte(2,time_off);
          		time_on=ReadByte(1);
          		time_off=ReadByte(2);
          		//========================
          	   ia=0;ja=0;	   
          	   if (TR0==1) {TR0=0;stop=0;led8=1;
          	   				led28=0;WriteByte(3,stop);
          					}
          	   else if (TR0==0){led8=0;stop=1;TR0=1;WriteByte(3,stop);}
          	break;}
          	}
          }
          }
          //=========================end main===============================

          Comment

          Về tác giả

          Collapse

          thanhm Tìm hiểu thêm về thanhm

          Bài viết mới nhất

          Collapse

          Đang tải...
          X