1. THÔNG BÁO TUYỂN ADMIN DIỄN ĐÀN 2013
    Tìm kiếm nhà trọ - Ở ghép
    THÔNG BÁO BÁN ÁO SPKT.NET CHO THÀNH VIÊN DIỄN ĐÀN


    HÃY TÌM KIẾM Ở ĐÂY TRƯỚC KHI ĐẶT CÂU HỎI
    {xen:phrase loading}

ai giúp mình giải thích mạch này nha!

Thảo luận trong 'Đồ án môn học' bắt đầu bởi minh872002, 10 Tháng một 2011.

  1. minh872002 New Member

    Số bài viết: 16
    Đã được thích: 0
    Điểm thành tích: 0
    mình ko hiểu mấy về mạch này ,mong các pro giải tích giùm nhé .thank

    anh 1
    [IMG]

    [IMG]


    [IMG]

    [IMG]

    [IMG]

    và đây là code chưong trình pro giúp nha ,mới làm quen với lập trình keik-c nên cũng chưa hiểu lắm .Nếu đc mấy pro giúp chú thích đằng sau mấy câu lệnh nha.thank

    #include <AT89x51.h>
    #include <intrins.h>
    #include <math.h>
    #include <stdio.h>

    #define serin P0_6
    #define rck P0_5
    #define sck P0_7
    #define cb P3_2
    #define led P2_5
    #define start P1_3
    #define stop P1_4
    // khai bao bien
    int giay=0,count;
    int sodem=0;
    int ma7doan[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
    int ma[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
    //==========CAC CHUONG TRINH CON
    ///////ngat timer 0////////////
    void isr_timer0() interrupt 1 using 1
    {
    TH0=-50000,TL0=-50000;
    count++; if(count>20) { count = 0; giay++; }
    }

    void send_2_595(int temp)
    {
    int i;
    sck=0;
    for(i=0;i<8;i++)
    {
    serin = temp&ma[7-i];
    sck=1;
    sck=0;
    }

    }
    void hienthi(int sdem)
    {
    int chuc,dvi;
    chuc = ma7doan[sdem/10]; //hien thi 0 khi nhan dc ko fai la so
    dvi = ma7doan[sdem%10];
    send_2_595(dvi); send_2_595(chuc);
    rck=1; //Chot du lieu
    rck=0;
    }
    void main()
    {
    int isled = 0,ktso=0,isrun=1;
    TMOD=0x01; //timer0 che do 1 16b
    TH0=-50000;
    TL0=-50000;
    TR0=1;
    TR1=1;
    IE=0x82; //cho phep ngat timer0
    led = 1;
    while (1)
    {
    if((ktso!=sodem)&&((sodem%10)==0)&&(sodem>0)&&isled==0) {giay=0; led=0; isled=1; ktso = sodem; }
    if(giay>3) {giay=10; led=1; isled = 0;}
    hienthi(sodem);
    if(cb==0)
    { while(cb==0){}
    if(isrun==0) { if(sodem<100)sodem++; else sodem = 0; }
    }
    if(start==0) {while(start==0){} isrun = 0; }
    if(stop==0) {while(stop==0){} isrun = 1; }
    }
    }
  2. vuongspk Member

    Số bài viết: 392
    Đã được thích: 2
    Điểm thành tích: 18
  3. duykhanh271284 New Member

    Số bài viết: 76
    Đã được thích: 0
    Điểm thành tích: 0
  4. minh872002 New Member

    Số bài viết: 16
    Đã được thích: 0
    Điểm thành tích: 0
  5. hoantien Member

    Số bài viết: 359
    Đã được thích: 1
    Điểm thành tích: 18
    khối đầu tiên: sử dung thanh ghi dịch 595 để truyền dữ liệu nối tiếp ra ngoài hiển thị lên 2 led.
    khối thứ 2: miễn bình loạn
    khối thứ 3: sử dụng hồng ngoại để đém sản phẩm, khi chưa có sản phẩm thì led thu nhận được hồng ngoại, điên áp tai ngõ ra đưa vào opamp so sánh với điện áp chuẩn, điện áp này lớn hơn chuẩn nên ngõ ra mức 0. khi có sp, led thu không nhận được hồng ngoại, làm điện áp ra giảm, điện áp này so sanh với điện áp chuẩn-> bé hơn-> ngỏ ra opamp mức 1. điện ngõ ra của opamp này mức 1 hay 0 sẽ kích Q25 dẫn hay tắt, tương ứng với ngõ ra của Q25 la mức 0 hay 1. nghĩa là luc này tín hiệu bi đảo lại so với tin hiệu ở ngõ ra opamp. kết qua là: có sp thi mưc 0, không có sp thì mức 1. tín hiệu này được đưa vào vđk để xử lý.
    Khối thứ 4: miễn bàn nốt
    khối cuối: tin hiệu từ P2.5 của vđk xuất ra là 0 hay 1 thì tương ứng Q2 dẫn hay tắt. Q2 dẫn thi làm led sáng, đồng thời co điện đưa vào domino để kích relay
  6. minh872002 New Member

    Số bài viết: 16
    Đã được thích: 0
    Điểm thành tích: 0
    thank ơn bạn nhiều nha.

    mình không hiểu đoạn code này lắm máy bạn giúp nha .thank

    if((ktso!=sodem)&&((sodem%10)==0)&&(sodem>0)&&isled==0) {giay=0; led=0; isled=1; ktso = sodem; }
  7. hoantien Member

    Số bài viết: 359
    Đã được thích: 1
    Điểm thành tích: 18
    đầu tiên là biến sodem chia lấy phần dư với 10, kết quả sẽ được so sánh với 0, nếu bằng thì bằng 1, khac thì bằng 0. tương tự như vậy với sodem>0, isled==0 và ktso!=sodem . kết quả 4 phép toán này sẽ and lại với nhau. Nếu kết quả bằng 1 thì, thực hiện lệnh kế { giây = 0, led= 0, ...}. còn nếu kết quả bằng 0 thì thui!
  8. minh872002 New Member

    Số bài viết: 16
    Đã được thích: 0
    Điểm thành tích: 0
    thank pro ,ko bít mạch trên xây dựng sơ đồ giải thuật như thế nào vậy .giúp mình nha
  9. hoantien Member

    Số bài viết: 359
    Đã được thích: 1
    Điểm thành tích: 18
    giải thuật rất đơn giản: đầu tiên cho biến đếm bằng 0, tín hiệu sp được đưa vào P3.2 là chân INT0, ta khởi tạo ngắt cạnh xuống. khi xảy ra ngắt, tăng biến đếm lên 1 đơn vị, rui so sánh với 100, nếu = 100 thì xóa biến đếm, còn hok thì thui. kiểm tra xong thì mình tách số đếm ra BCD tiêp theo là hiển thị rùi JMP từ đầu.
    Tách ra BCD thi chỉ cần lấy số đó chia 10, kết quả lưu vào biến chục, số dư lưu vào biến đơn vị.
    Hiển thị cũng hok có gì răc rối: từ biến đơn vị ta lấy ra mã 7đoạn, lưu mã này vào 1 biến hoăc thanh ghi. sau đó and với 01h rùi xoay để out lần lượt dữ liệu ra, làm tương tự với biến chục. sau khi dịch xong toàn bộ 16 bit thì ta nhip xung chốt để đưa va chốt dữ liệu ra led.
    thế là xong.
    con cái relay thì mình chả biết làm gì cả!
  10. croket_2512 Moderator

    Số bài viết: 2,190
    Đã được thích: 17
    Điểm thành tích: 38
    Giới tính: Nam
  11. minh872002 New Member

    Số bài viết: 16
    Đã được thích: 0
    Điểm thành tích: 0
    uh đúng là mắc ngựoc ,mình chỉnh lại rồi ,tk
    cảm ơn nhiều .:d
  12. chanhvan08 New Member

    Số bài viết: 384
    Đã được thích: 0
    Điểm thành tích: 0
    Không có sản phẩm là mức 0, có sản phẩm là mức 1!
  13. nguyenhongvu_ckd08 New Member

    Số bài viết: 300
    Đã được thích: 0
    Điểm thành tích: 0
    ê hoantien cái hình trong flash này ở đâu thế tự làm ah :-?:-?:-?
  14. hoantien Member

    Số bài viết: 359
    Đã được thích: 1
    Điểm thành tích: 18
    không phải!, nó bị đảo lại so với ngõ ra ở opamp

    kiếm trên mạng đó mà!
  15. chanhvan08 New Member

    Số bài viết: 384
    Đã được thích: 0
    Điểm thành tích: 0
  16. minh872002 New Member

    Số bài viết: 16
    Đã được thích: 0
    Điểm thành tích: 0
  17. chanhvan08 New Member

    Số bài viết: 384
    Đã được thích: 0
    Điểm thành tích: 0
  18. minh872002 New Member

    Số bài viết: 16
    Đã được thích: 0
    Điểm thành tích: 0
  19. hoantien Member

    Số bài viết: 359
    Đã được thích: 1
    Điểm thành tích: 18
  20. minh872002 New Member

    Số bài viết: 16
    Đã được thích: 0
    Điểm thành tích: 0
    khối relay của sơ đồ trên là : khi sản phẩm đếm lên tới 10 ,20,30 ... thì lúc này led sáng kéo theo loa sáng theo ,sau mỗi xung nhịp loa báo thời gian là khoảng 3 giây sau đó tắt .vậy thì giải thuật của khối relay phải thế nào bạn .Giúp mình cái giải thuật relay này cái nha.tk
  21. hoantien Member

    Số bài viết: 359
    Đã được thích: 1
    Điểm thành tích: 18
    đêm tới 10, 20, 30... tức là hàng đon vị băng 0 và hàng chục khác 0. Do đó, khi bạn giải mã hex to bcd xong, nhận được giá trị hàng chục và hàng đơn vị thì bạn kiểm tra 2 giá trị này. nếu hàng đơn vị = 0 và hàng chục khác 0 thi bạn nhảy vào 1 chương trinh con để kích loa kêu đồng thời khởi tạo ngắt timer sau 3s sẽ tắt chuông mà hok làm ảnh hưởng tới chuong trính chính!

Chia sẻ trang này