[Help] Mạch đếm sản phẩm

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • stork192
    Thành viên mới
    • Aug 2011
    • 19

    #1

    [Help] Mạch đếm sản phẩm

    mình đang làm bài tập về mạch đếm sản phẩm sử dụng led hồng ngoại hiển thị kết quả lên LCD, bên cạnh đó còn kích rờle cho băng chuyền hoạt động. Không biết mình code như này có sai chỗ nào hay không mà khi cấp nguồn LCD sáng mà không thấy có tín hiệu gì.

    PHP Code:
    #include <REGX52.H>
    #include <stdio.h>
    #define bat 1;
    #define tat 0;
    #define LCD_RW     P1_1
    #define LCD_RS     P1_0
    #define LCD_EN     P1_2
    sbit Led = P2^0;
    sbit START = P2^2;
    unsigned char nghin ,tram,chuc,donvi;
    char x; 
    long int a;
           
          
    void delay(unsigned long int t)
    {
        unsigned long int i;
        for(i=0;i<t;i++);
            
    }
        void ghi_lenh (unsigned char lcd_lenh)//ghi lenh ra lcd
            {
    
                
                   LCD_RS=0;
                LCD_RW=0;
                
                LCD_EN=1;
                P0=lcd_lenh;
                LCD_EN=0;
                delay(300);
                
    
            }
       void ghi_dulieu (unsigned char lcd_dulieu)
               {
    
               
            LCD_RS=1;
            LCD_RW=0;
        
            LCD_EN=1;
            P0=lcd_dulieu;
            LCD_EN=0;
            delay(300);
                        
            }
    
    //dich chuoi 
      void write_string(char *s)
      {
              while(*s)                                
            {
                    ghi_dulieu(*s);
                
                    s++;
               
        
                
            }
      }
      // khoi tao LCD
          void khoitao_lcd(void)
        {
            
                ghi_lenh (0x02);
                ghi_lenh (0x38);
                ghi_lenh (0x06);
                ghi_lenh (0x0c);
               
        }
            void ngatngoai(void) interrupt 0
            {
                a++;
                nghin=a/1000;
                tram=(a%1000)/100;
                chuc=((a%1000)%100)/10;
                donvi=((a%1000)%100)%10;
                if(a>9999)    a=0;
            }
              
                    void hienthi(void)
                    {
                    
               ghi_lenh(0x03);
               ghi_lenh(0x80);
               ghi_dulieu(nghin + 0x30);
               ghi_dulieu(tram + 0x30);
               ghi_dulieu(chuc + 0x30);
               ghi_dulieu(donvi + 0x30);
                
                
                            
                    }
                
     // Ham chinh
        void main(void)
    {
    while(1)
    { 
       Led = tat;    
       if(START==0){
              Led=bat;      
         delay(50);
        khoitao_lcd();
        a=0;
        IE=0x81;
        IT0=1;
           ghi_lenh(0xc0);
        write_string("san pham");
        while(1)
        {           
           hienthi();                                                                                                                           
        }
        }
    
    }
    } 
    
    Mình dùng KielC để viết và sử dụng vdk AT89S52. Mong ae tận tình chỉ giúp!!!!
  • stork192
    Thành viên mới
    • Aug 2011
    • 19

    #2
    đây là mạch nguyên lý
    [pdf]https://app.box.com/s/o969mapzlakpzklkw9cl
    [eagle]https://app.box.com/s/7urfhipbys37r0nh1pwo

    Comment

    • stork192
      Thành viên mới
      • Aug 2011
      • 19

      #3
      không có bạn nào giúp được ạ?????
      Last edited by stork192; 28-11-2013, 14:55.

      Comment

      • stork192
        Thành viên mới
        • Aug 2011
        • 19

        #4
        không biết bỏ con biến trở ra rồi nối tắt dây lại có hư LCD không mấy bác?

        Comment

        Về tác giả

        Collapse

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

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

        Collapse

        Đang tải...