User Tag List

kết quả từ 1 tới 4 trên 4

Ðề tài: chuong trinh vi xu ly

  
  1. #1
    Thành viên mới thanhhai81's Avatar
    Tham gia
    Apr 2007
    Bài viết
    5
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    chuong trinh vi xu ly

    minh dang lam do an hoc ky, minh co chuong trinh C ma minh khong hieu ve C lam .minh goi chuong trinh nay cho cac bac xem va giai thich cac dong lenh lam gi va xem co sai cho nao khong? giuo minh voi

    #include <reg52.h>
    #include <stdio.h>

    void timer0int(void);
    char *Puts(char* str);

    float read_temp1(void);
    float read_temp1_filter(void);


    char cputick;
    char buffer[24];
    char pulseE;

    char timer3;
    char temp;
    char vout;
    int x1,x2,x3,x4,x5;

    sbit RS=P1^6;
    sbit E =P1^4;
    sbit RW=P1^5;

    sbit CLK=P1^2;
    sbit Data=P1^1;
    sbit CS=P1^3;

    sbit CHG=P3^0;

    int readADC(char n)
    {
    int k;
    char i,channel;
    k=0;

    CS=0;

    if(n==0) channel= 0x0d;
    else channel=0x0f;

    for (i=0;i<4;i++)
    {
    CLK = 0;

    if(channel&8) Data =1;
    else Data = 0;
    CLK =1;
    channel <<=1;
    }

    Data = 1;
    CLK =0;

    for(i=0; i<12;i++)
    {
    k<<=1;
    CLK =1;
    CLK=0;
    if(Data) k|=1;
    else k &=~1;
    }
    CS =1;

    return k&=0xfff;
    }


    void timer0int(void) interrupt 1 using 1

    {
    TH0 |=0xdc;
    cputick++;
    }


    pause(int j)
    { int i;
    for (i=0;i<j;i++)
    continue;
    }


    pulesE()
    {
    E =1;
    ;
    E =0;
    }


    void delay(int m)
    {
    int j;
    for(j=0;j<=m;j++)
    continue;
    }

    LCDWI (char n)
    {
    RW =0;
    RS=0;
    E =0;
    P0=n;
    E =1;
    E =0;
    pause(50);
    }


    LCDWD(char n)
    {
    RW=0;
    RS=1;
    E=0;
    P0=n;
    E=1;
    E=0;
    pause(50);
    }

    print_LCD(char a,char *s)
    {
    LCDWI(a);
    while(*s != 0)
    LCDWD(*s++);
    }


    i_LCD()
    {
    RS=0;
    E=0;
    P0=0x30;pulesE();delay(10);pulesE();delay(1);pules E();delay(1);
    P0=0x20;pulesE();pulesE();pulesE();
    LCDWI(0x38);
    LCDWI(0x0c);
    LCDWI(0x06);
    LCDWI(1);
    delay(50);
    }

    print_ADC()
    {
    char buffer[20];
    if(++timer3<50)
    {
    timer3=0;
    sprintf(buffer,"%0.1fC %0.1fF",read_temp1_filter(),read_temp1_filter()*9/5+32);
    print_LCD(0xc0,buffer);
    }
    }

    int low_pass_filter1(void)
    {
    x5=x4;
    x4=x3;
    x3=x2;
    x2=x1;
    x1=readADC(0);
    return(x1+x2+x3+x4+x5)/5;
    }

    float read_temp1_filter(void)
    {
    return(0.0323*low_pass_filter1()-15.615);
    }


    void main()
    {
    i_LCD();
    print_LCD(0x80,"LCD Thermometer");
    TMOD |= 0x01;
    TR0 = 1;
    cputick = 0;
    EA = 1;
    ET0 = 1;

    for(Click here to enlarge
    {
    while(!TF0)
    continue;
    TF0=0;
    print_ADC();
    }
    }

    CHỦ ĐỀ TƯƠNG TỰ:


  2. #2
    Thành viên mới vitah's Avatar
    Tham gia
    Nov 2006
    Bài viết
    23
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Caí này hình như viết = Keil ! Rảnh thì up sơ đồ mạch lên đi. Dễ xem hơn


  3. #3
    Banned traihole's Avatar
    Tham gia
    Jul 2007
    Bài viết
    51
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    chiu chang hieu y do dinh lam gi thi ai ma giup duoc
    phai noi so wa y do dinh lam cai quai gi voi no thi nguoi ta moi biet ma giup chu


  4. #4
    Thành viên tích cực nguyen.geo's Avatar
    Tham gia
    Apr 2007
    Nơi Cư Ngụ
    Hà Nội
    Bài viết
    434
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Theo tôi thì đoạn chương trình này thực hiện các công việc sau :
    - Đoạn chương trình : i_LCD và những chương trình nằm trong nó để khởi tạo LCD 8 bit.
    - Đoạn : readADc() và low_pass_filter1 là nhiệm vụ đọc giá trị từ ADC và Lấy giá trị trung bình ( Đây là 1 hình thức lọc chống nhiễu )
    - Đoạn : Print_ADC() Hiển thì giá trị đo được và tính toán theo thuật toán của bạn và hiển thì vể đầu dòng 2 của LCD đồng thời truyền ra COM Port.
    nói chung đại khái chương trình này theo tôi làm nhiệm vụ như thế. nhưng thực ra chương trình này còn nhiều điều bất cập và cần bàn thêm. vả lại chương trình này vẫn chưa đúng. Các bạn vẫn phải sữa lại nhiều.


Quyền Sử Dụng Ở Diễn Ðàn

  • Bạn không được gửi luồng mới
  • Bạn không được trả lời bài viết
  • Bạn không được gửi file đính kèm
  • Bạn không được sửa bài viết của mình
  •