Thông báo

Collapse
No announcement yet.

Cần giúp đỡ:về truyền thông nối tiếp bất đồng bộ rs232

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

  • Cần giúp đỡ:về truyền thông nối tiếp bất đồng bộ rs232

    Mình đang làm bài tập lớp về rs232 truyền nhiệt độ.Nhưng mình không biết làm sao mã hóa được thông số truyền lên máy tính và từ máy tính gửi về LCD và so sánh 2 giá trị này.Mình mong các bạn giúp đỡ
    Mình cảm ơn rất nhiều

    // truyen nhan du lieu nhiet do bang may tinh voi vi dieu khien
    #include<16f887.h>
    #device ADC=10
    #fuses HS,NOWDT,NOLVP,NOPROTECT,PUT
    #use DELAY(CLOCK=20000000)
    #use rs232(baud=9600,parity=N,xmit=PIN_C6,RCV=PIN_C7,bi ts=8)//KHAI BAO VA DINH CAU HINH CHO UART
    #define DATA OUTPUT_D
    #define RS PIN_E0
    #define RW PIN_E1
    #define EN PIN_E2
    UNSIGNED CHAR CHUOI[2];
    UNSIGNED CHAR HANG1[20]={"NAME:PHAM TUAN ANH"};
    UNSIGNED CHAR HANG2[17]={"ID CODE:10112188"};
    UNSIGNED CHAR HANG3[11]={"DAT TRUOC:"};
    UNSIGNED CHAR HANG4[13]={"TEMPERATURE:"};
    unsigned char KQD,CH,DV,KQT,CH1,DV1;//thong so so nhiet do,KQD la ket qua do nhiet do cua adc,KQT la nhiet do dat truoc do may tinh tuyen xuong
    unsigned char DT_TM,DT_RC;//duu lieu truyen nhan nhiet do
    INT K,TT;
    void cd()
    {
    if(!INPUT(PIN_B0))
    {
    DELAY_MS(2);
    if(!INPUT(PIN_B0))
    {
    DELAY_MS(2);
    TT=1;
    WHILE(!INPUT(PIN_B0));
    }
    }
    }
    void ghi_lcd(INT1 CH_RS,UNSIGNED CHAR DATA_LCD)
    {
    DATA(DATA_LCD);
    OUTPUT_BIT(RS,CH_RS);
    OUTPUT_BIT(RW,0);
    OUTPUT_BIT(EN,1);
    OUTPUT_BIT(EN,0);
    DELAY_MS(5);
    }
    void setup_lcd()
    {
    DELAY_MS(30);
    ghi_lcd(0,0x38);
    ghi_lcd(0,0x38);
    ghi_lcd(0,0x38);
    ghi_lcd(0,0x0C);
    ghi_lcd(0,0x06);
    ghi_lcd(0,0x01);
    }
    //giai ma lcd
    void gmlcd()
    {
    DV=(KQD%10)+0X30;CH=(KQD/10)+0X30;
    DV1=(KQT%10)+0X30;CH1=(KQT/10)+0X30;
    }
    //hien thi lcd
    void htlcd()
    {
    gmlcd();
    //! ghi_lcd(0,0XA1);
    //! ghi_lcd(1,CH1);
    //! ghi_lcd(1,DV1);
    ghi_lcd(0,0XE1);
    ghi_lcd(1,CH);
    ghi_lcd(1,DV);
    }
    //do nhiet do va hien thi len lcd
    void nhietdo()
    {
    KQD=0;
    KQD=READ_ADC();
    DELAY_MS(1);
    KQD=(KQD/2.046);
    htlcd();
    }
    //truyen thong so nhiet do len may tinh
    void truyendulieu()
    {
    WHILE(!INPUT(PIN_B0))
    {
    DT_TM=KQD+0X30;
    PUTCHAR(DT_TM);
    //PUTCHAR(DV);
    DELAY_MS(1);
    TT=0;
    }
    }
    //nhan nhiet do dat truoc tu may tinh gui vao
    #INT_RDA
    void nhandulieu()
    {
    CHUOI[K++]=GETCHAR();
    }
    //so sanh 2 thong so nhiet do voi nhau
    void sosanh()
    {
    nhandulieu();
    if(KQT<KQD) OUTPUT_HIGH(PIN_B1);
    if(KQT>KQD) OUTPUT_LOW(PIN_B1);
    }
    void main()
    {
    int M;
    //xet cau hinh chan
    SET_TRIS_B(0X01);
    OUTPUT_B(0Xff);
    SET_TRIS_C(0X80);
    OUTPUT_C(0X80);
    SET_TRIS_D(0X00);
    SET_TRIS_E(0X00);
    OUTPUT_D(0X00);
    OUTPUT_E(0X00);
    setup_lcd();
    ghi_lcd(0,0x80);
    //cau hinh adc
    SETUP_ADC(ADC_CLOCK_DIV_2);
    SETUP_ADC_PORTS(SAN0);
    SET_ADC_CHANNEL(0);
    //NGAT RS232
    ENABLE_INTERRUPTS(INT_RDA);
    ENABLE_INTERRUPTS(GLOBAL);
    ghi_lcd(0,0X80);
    for(M=0;M<20;M++)
    {
    ghi_lcd(1,HANG1[M]);
    }
    ghi_lcd(0,0XC0);
    for(M=0;M<17;M++)
    {
    ghi_lcd(1,HANG2[M]);
    }
    ghi_lcd(0,0X94);
    for(M=0;M<11;M++)
    {
    ghi_lcd(1,HANG3[M]);
    }
    ghi_lcd(0,0XD4);
    for(M=0;M<13;M++)
    {
    ghi_lcd(1,HANG4[M]);
    }
    while(true)
    {
    htlcd();
    nhietdo();
    truyendulieu();
    // sosanh();
    DELAY_MS(5);
    }
    }


    đây là link mình có file mô phỏng do mình không biết add file nên các bạn thông cảm
    Cần giúp - Lập trình rs232 truyền nhận thông số | Cộng đồng cơ điện tử Việt Nam | Mechatronics

  • #2
    có bạn nào giúp mình với
    Mình đang cần gấp lắm

    Comment

    Về tác giả

    Collapse

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

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

    Collapse

    • 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
    • afrendly
      Trả lời cho Đấu tắt điện cho máy tính bảng
      bởi afrendly
      Có vẻ ngoài hiểu biết của mình rồi. Cuối cùng mình quyết định tìm mua 2 pin trên Shopee, giá 200K thay vào. Tuy nhận pin được 1%, sạc mãi không vào nhưng cũng mở được máy lên. Vậy cũng tạm. Cảm ơn bạn đã hỗ trợ nhé....
      04-12-2025, 01:27
    • nick22
      Trả lời cho Máy điện châm ?
      bởi nick22
      Đúng như bạn nói, máy điện châm hiện nay trên thị trường đã khá đa dạng về mẫu mã, chức năng và giá thành.
      01-12-2025, 13:23
    Đang tải...
    X