Thông báo

Collapse
No announcement yet.

Giúp mình muốn tạo 6 xung có độ rộng 120 độ bằng 8051

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

  • Giúp mình muốn tạo 6 xung có độ rộng 120 độ bằng 8051

    mình muốn tạo 6 xung có độ rộng 120 độ. thời điểm phát xung thay đổi được, để điều chỉnh góc mở cho thy từ 150 - 0 độ. mình dùng timer và ngắt theo sườn. bạn nào cho ý tưởng hay code được không.
    đây là hình ảnh dạng xung. giúp mình nhé! thank! Click image for larger version

Name:	xung.PNG
Views:	2
Size:	18.0 KB
ID:	1422284

  • #2
    đây là code do mình viết ai xem giúp mình với

    Mình viết code xong rùi nhưng mà xung không được tạo ra ở các chân P2. Ai sửa giúp mình với! nản quá!
    #include<REGX51.h>

    /* khoi tao cong vao ra va dinh nghia cac ham
    -------------------------------------------------*/

    void Port2_init();
    void delay_ms();
    void timer0_init(); // su dung timer0 de tao xung chum 5khz, che do 2 8bit tu nap
    void timer1_init(); // su dung timer1 de tinh toan phat xung dk, che do 1 16bit

    /* Khai bao cac bien su dung trong chuong trinh
    - a: bien dem so lan ngat timer0
    - b: bien dem so lan ngat theo suon
    - j: chi so cua mang
    - i:
    - y: goc mo alpha
    */
    unsigned int a=0, b=0, c=0, d=0, y=0, j=30;

    /* bang ung voi cac goc mo alpha tu 150 - 0 do, 30 bac khoi dong, giam 5 do 1 luot */
    unsigned char bang[]={ 0x208D, 0x1F77, 0x1E62, 0x1D4C, 0x1C36, 0x1B20, 0x1A0B, 0x18F5,
    0x17DF, 0x16C9, 0x15B3, 0x149D, 0x1388, 0x1722, 0x115C, 0x1047, 0x0F31, 0x0E1B,
    0x0D05, 0x0BEF, 0x0AD9, 0x09C4, 0x08AE, 0x0798, 0x0683, 0x056D, 0x0457, 0x0341, 0x022C,
    0x0116, 0x0000 };

    /* Trien khai cac ham */
    void Port2_init() // khoi tao port2 lam cong ra
    {
    P2=0x00;
    }
    void delay_ms(unsigned int n) // Tao ra tre ms
    {
    unsigned int i,j;
    for(i=0;i<n;i++) // 1 vong for tao ra tre 1,12ms
    for(j=0;j<140;j++);
    }
    void timer0_init() // chuong trinh con khoi tao ngat
    {

    IE=0x86; // cho phep ngat ngoai 1 va ngat timer0, chi so vector 2,1
    IT1=1; // kich hoat ngat theo suon am o chan INT1
    TMOD=0x12; // chon timer0 che do 2 8bit tu nap, timer1 che do 1 16bit
    TL0=0x9C; TH0=0x9C; // Gia tri nap vao de tao tre 0,1ms
    TR0=1;
    }
    void timer1_init()
    {
    TMOD=0x12;
    TL1=0x00; TH1=0x00; // xoa gia tri thanh ghi
    TR1=1; // khoi dong timer1
    if(TF1==1)
    {
    TR1=0; // dung timer1
    TF1=0; // xoa co ngat
    TL1=0x00; // dem lai tu 00
    TH1=0x00;
    TR1=1; // khoi dong timer1
    }
    }

    // trinh phu ngat tao xung chum 5 khz
    void isr_timer0() interrupt 1
    {
    TR0=0;
    P0_0^=1;
    TR0=1;

    }
    // trinh phu ngat ngoai tai chan INT1
    void isr_INT1() interrupt 2
    {
    b++; c++; dTH1&&0x0F)<<8)||TL1; // gan d = gia tri cua thanh ghi timer1 khi co ngat
    y=bang[j];
    if(b<=1000) // chuong trinh khoi dong den goc mo alpha
    {
    if(c>=42) // t kd= 20s, so bac= 24. alpha 150-30do.
    {
    c=0;
    j--;
    }
    }
    if (j<=6) {y=bang[6];}

    }

    /* CHUONG TRINH CHINH LIEN TUC SO SANH CAC GIA TRI TRONG TIMER1 VOI CAC THOI DIEM
    DE PHAT XUONG DIEU KHIEN RA CAC CHAN CONG P2*/
    main()
    {
    Port2_init();
    delay_ms();
    timer0_init();
    timer1_init();
    while(1)
    {
    // chuong trinh phat xung tren cac chan port P2
    if((((TH1&&0x0f)<<8)||TL1)==d+y){P2_0=1;delay_ms(6 );P2_0=0;} //T1

    if((((TH1&&0x0f)<<8)||TL1)==(d+y+0x2710)){P2_1=1;d elay_ms(6);P2_1=0;} //T2

    if((((TH1&&0x0f)<<8)||TL1)==d+y+0x1A0B){P2_2=1;del ay_ms(6);P2_2=0;} //T3

    if((((TH1&&0x0f)<<8)||TL1)==d+0x0000){P2_3=1;delay _ms(6);P2_3=0;} //T4

    if((((TH1&&0x0f)<<8)||TL1)==d+y+0x3415){P2_4=1;del ay_ms(6);P2_4=0;} //T5

    if((((TH1&&0x0f)<<8)||TL1)==d+y+0x0D05){P2_5=1;del ay_ms(6);P2_5=0;} //T6
    }
    }

    Comment

    Về tác giả

    Collapse

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

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

    Collapse

    • Andrea14
      Vấn đề về tốc độ quay
      bởi Andrea14
      Chào mọi người,

      Tôi muốn mô phỏng sự thay đổi các mùa bằng cách từ từ nghiêng một quả địa cầu 16 inch bằng một động cơ bước nhỏ. Một động cơ bước khác sẽ quay quả địa cầu theo thời gian thực. Hệ thống truyền động...
      12-12-2025, 12:42
    • bqviet
      Trả lời cho Đấu tắt điện cho máy tính bảng
      bởi bqviet
      Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
      06-12-2025, 17:17
    • nguyendinhvan
      Trả lời cho Xin hỏi về mạch thu FM/AM trong catsette
      bởi nguyendinhvan
      Theo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
      05-12-2025, 19:59
    Đang tải...
    X