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}

BÁO CÁO VDK GIỮA KÌ

Thảo luận trong 'Báo cáo giửa kỳ' bắt đầu bởi duytien, 25 Tháng mười 2008.

  1. lehungduong87 Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
  2. lehungduong87 Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    Báo cáo giữa kỳ vdk [IMG]
    1) -Họ tên sinh viên:
    -MSSV:lê hùng dưỡng
    -Email: lêhùngdưỡng@yahoo.com
    -Điện thoại:

    2) -Tên đề tài thực hiện:hiện thị mã số sinh viên(chớp tắt,chạy)
    -Mô tả vấn tắt các yêu cầu cần giải quyết:
    +Em đã tham khảo cost của đoạn chương trình quét led hiện thị mã số sinh viên .
    nội dung hiện thị của mạch là :05112010 sau đó mã số này sẽ chớp tắt 10 lần ,rồi từng số một chạy từ trái sang phải và sau đó ngược lại,tiếp đến là lập lại từ đầu
    +yêu cầu là hiển thị rồi cần phải chớp tắt
    +quét từng led một (với khoảng thời gian 1s) để số chạy từ trái sang phải,ngược lại


    3) -Các phương án có thể lựa chọn, ưu điểm của từng phương án.
    +Lúc đầu em định lấy cost quet led của thầy dạy trên lớp nhưng em thấy cách quét này phù hợp với các hướng làm mạch đếm sản phẩm,0000-9999, đồng hồ hơn .
    +phương án của em là chọn cách quest đơn giản hơn để dễ dàng hơn khi điều khiễn chớp tắt , đây là một đoạn trích nhỏ để làm minh họa:
    org 0h
    chinh: mov r7,#100
    main:
    mov p0,#0c0h
    mov p2,#001h
    lcall delay
    mov p2,#00h

    mov p0,#92h
    mov p2,#02h
    lcall delay
    mov p2,#00h

    mov p0,#0f9h
    mov p2,#00000100b
    lcall delay
    mov p2,#00h

    mov p0,#0f9h
    mov p2,#00001000b
    lcall delay
    mov p2,#00h

    mov p0,#0a4h
    mov p2,#00010000b
    lcall delay
    mov p2,#00h

    mov p0,#0c0h
    mov p2,#00100000b
    lcall delay
    mov p2,#00h

    mov p0,#0f9h
    mov p2,#01000000b
    lcall delay
    mov p2,#00h

    mov p0,#0c0h
    mov p2,#10000000b
    lcall delay
    mov p2,#00h

    mov tmod,#0000001b
    mov th0,#high(-50)
    mov tl0 ,#low (-50)
    setb tr0
    jnb tf0,$
    clr tf0
    clr tr0
    djnz r7,main
    mov r1,#100
    lam: mov p0,#0ffh
    mov p2,#001h
    lcall delay
    mov p2,#00h

    mov p0,#0ffh
    mov p2,#02h
    lcall delay
    mov p2,#00h

    mov p0,#0ffh
    mov p2,#00000100b
    lcall delay
    mov p2,#00h

    mov p0,#0ffh
    mov p2,#00001000b
    lcall delay
    mov p2,#00h

    mov p0,#0ffh
    mov p2,#00010000b
    lcall delay
    mov p2,#00h

    mov p0,#0ffh
    mov p2,#00100000b
    lcall delay
    mov p2,#00h

    mov p0,#0ffh
    mov p2,#01000000b
    lcall delay
    mov p2,#00h

    mov p0,#0ffh
    mov p2,#10000000b
    lcall delay
    mov p2,#00h
    mov tmod,#0000001b
    mov th0,#high(-50)
    mov tl0 ,#low (-50)
    setb tr0
    jnb tf0,$
    clr tf0
    clr tr0
    djnz r1,lam
    inc a
    cjne a,#6,nhay1
    vì quét 8 led nên hơi dài, đoạn cost còn dài nữa nhưng chương trình dễ hiểu.
    4) -Sơ đồ mạch nguyên lý,layout ở dưới:
    mach vi dieu khien
    [IMG]
    [IMG]
    mch led7doan
    [IMG]
    [IMG]
    5) -Lưu đồ giải thuật.:
    [IMG]
    -Code chương trình dạng text.:
    http://www.mediafire.com/?jgtgxpox449

    6) Hình ảnh hoặc đoạn phim ngắn mô tả về mô hình đã thi công khi đang hoạt động:
    [IMG]
    video o day:
    http://www.mediafire.com/?mxg50bh3tnb

    7)Kết quả đạt được, hạn chế của đề tài và phương hướng phát triển.
    +kết quả mạch chạy bình thường nhưng do hàn dỏm nên hai số 0 cuối mã led vào chưa đủ
    +mạch còn hơi đơn giản ,chương trình dài
    phương hướng phát triển:
    +lúc đầu định làm thêm nút cài đặt số lần chớp tắt nhưng không nghĩ ra(chắc phải tham khảo)
    +sử dụng thêm nút nhấn ngắt ngoài để hiện thị năm học,thêm nút chạy ,dừng

    file mạch điện :file eagle
    http://www.mediafire.com/?1ytnfmmtmcm

    8) Các nguồn tài liệu theo tác giả là có giá trị nhất trong khi làm đề tài :
    Tài liệu tham khảo chính chủ yếu trong sách 8051_tống văn on,hoàng đức hải
    Và nhờ các anh 04 ở cùng phòng trợ giúp cùng với các bài giảng của thầy
    cảm ơn thầy và các bạn ,chúc tất cả mọi người đều qua vđk. [IMG]
  3. phphong22 Guest

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

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    *<span style="font-family:Arial">HỌ VÀ TÊN SV:TRẦN MINH NHẬT
    MSSV:05111068_LỚP:051112A
    EMAIL:nickkie7703@yahoo.com
    SỐ ĐT:0947370748
    *<u><span style="font-size:18pt;line-height:100%">ĐỀ TÀI : ĐIỀU KHIỂN LED 7 MÀU CHẠY NHIỀU KIỂU.</span></u>
    yêu cầu
    -viết chương trình điều khiển led 7 màu bằng ngô�n ngữ assembly
    -hiển thị 10 led 7 m àu với với 7 màu và các kiểu chạy: sáng tắt dần,chạy dồn.chớp tắt...v...v...
    -nút nhấn reset :cho quá trình làm lại từ đầu.
    -dùng 30 chân của port 0 1 2 3 để điều khiển 10 led 7 đoạn
    *sơ lược về led 7 màu:
    LED 7 MÀU SIÊU SÁNG (SUPPER FLUX LED HAY LED SIÊU QUANG THÔNG)
    GỒM 3 MÀU CƠ BẢN:RED,BLUE,GREEN.
    LED NÀY LÀ LED VUÔNG TRONG ĐÓ CÓ 3 CHÂN MAX ,1 CHÂN NGUỒN 3 CHÂN MAX GỒM 1 CHÂN MÀU ĐỎ(RED),1 CHÂN MÀU XANH LÁ (GREEN),1 CHÂN MÀU XANH NƯỚC BIỂN(BLUE)
    ĐƯỜNG K�NH LED TỪ 3-5mm TUỲ LOẠI
    * PHƯƠNG PHÁP ĐIỀU KHIỂN LED 7 MÀU
    TỪ 3 MÀU CƠ BẢN,TA TRỘN CÁC CHÂN MAX VỚI NHAU THÀNH 7 MÀU KHÁC NHAU
    CÔNG THỨC TRỘN MÀU:TRỘN TỪ 2 CHÂN MAX TRỞ LÊN,TRỘN 3 CHÂN THÌ RA MÀU TRẮNG</span>
    [IMG]
    [IMG]
    *MẠCH NGUYÊN LÝ VÀ MẠCH IN:
    -MẠCH NGUYÊN LÝ:
    [IMG]
    -MẠCH IN:
    +MẠCH LED:
    [IMG]
    +MẠCH VI ĐIỀU KHIỂN:
    [IMG]
    *NHỮNG KHÓ KHĂN KHI THỰC HIỆN:
    -PHẢI HẠN TRỞ DÒNG NHƯ THẾ NÀO ĐỂ TRỘN MÀU RA ĐỀU NHAU.
    -TRÁNH TRỘN MÀU KO ĐỀU LÀM MẤT MÀU.
    -KHI TRỘN MÀU THÌ CHÂN ĐỎ CÓ TRỞ NHỎ HƠN 2 CHÂN MÀU XANH,VÌ VẬY KHI HẠN DÒNG CÁC CHÂN SAI THÌ KO LÊN MÀU.
    *C�CH GIẢI QUYẾT KH� KHĂN
    -SAU KHI MỎ BẰNG ĐIỆN TRỞ THÌ THẤY GẮN TRỞ R220 OHM THÌ MÀU TRỘN ĐỀU ĐẸP
    -KHI GẮN TRỞ 380 OHM THÌ ĐỎ SÁNGMẠNH,GẮN TRỞ 120 OHM THÌ ĐỎ SÁNG YẾU
    *HƯỚNG PHÁT TRIỂN
    -C� THỂ TĂNG SỐ LƯỢNG LED THAM GIA ĐẺ KHÔNG PHÍ PORT BẰNG CÁCH DÙNG IC CHỐT 74 HC573
    -HƯỚNG PHÁT TRIỂN LÀM MODULE QUANG BÁO LED 7 MÀU.
    ĐOẠN VIDEO CHƯƠNG TRÌNH:
    M4D0h2bPcW8
    LINK DOWN ĐOẠN CODE VÀ FILE POWER POINT:
    http://www.mediafire.com/?sharekey=fe6133c...2db6fb9a8902bda

    ĐOẠN CODE CHƯƠNG TR�NH:
    org 000h
    td: mov p0,#0ffh
    mov p1,#0ffh
    mov p2,#0ffh
    mov p3,#0ffh
    lcall delay
    ;mau xanh sang
    mov p0,#10110110b
    mov p1,#01101101b
    mov p2,#11011011b
    mov p3,#11110110b
    lcall delay
    ;mau do sang
    mov p0,#01101101b
    mov p1,#11011011b
    mov p2,#10110110b
    mov p3,#11101101b
    lcall delay
    ;mau vang sang
    mov p0,#11011011b
    mov p1,#10110110b
    mov p2,#01101101b
    mov P3,#11011011b
    lcall delay
    ;tron 1 va 2
    mov p0,#00100100b
    mov p1,#01001001b
    mov p2,#10010010b
    mov p3,#11100100b
    lcall delay
    ;tron 1 va 3
    mov p0,#10010010b
    mov p1,#00100100b
    mov p2,#01001001b
    mov p3,#11010010b
    lcall delay
    ;tron 2 va 3
    mov p0,#01001001b
    mov p1,#10010010b
    mov p2,#00100100b
    mov p3,#11001001b
    lcall delay
    ;tron 1, 2,3
    mov p0,#00000000b
    mov p1,#00000000b
    mov p2,#00000000b
    mov p3,#00000000b
    lcall delay
    mov p0,#11111111b
    mov p1,#11111111b
    mov p2,#11111111b
    mov p3,#11111111b
    lcall delay
    ;*************************************************************
    ;sang chay len mau xanh
    mov p0,#11111110b
    lcall delay1
    mov p0,#11110111b
    lcall delay1
    mov p0,#10111111b
    lcall delay1
    mov p0,#11111111b

    mov p1,#11111101b
    lcall delay1
    mov p1,#11101111b
    lcall delay1
    mov p1,#01111111b
    lcall delay1
    mov p1,#11111111b

    mov p2,#11111011b
    lcall delay1
    mov p2,#11011111b
    lcall delay1
    mov p2,#11111111b

    mov p3,#11111110b
    lcall delay1
    mov p3,#11110111b
    lcall delay1
    mov p3,#11111111b
    lcall delay1
    ;chay nguoc lai
    mov p3,#11110111b
    lcall delay1
    mov p3,#11111110b
    lcall delay1
    mov p3,#11111111b

    mov p2,#11011111b
    lcall delay1
    mov p2,#11111011b
    lcall delay1
    mov p2,#11111111b

    mov p1,#01111111b
    lcall delay1
    mov p1,#11101111b
    lcall delay1
    mov p1,#11111101b
    lcall delay1
    mov p1,#11111111b

    mov p0,#10111111b
    lcall delay1
    mov p0,#11110111b
    lcall delay1
    mov p0,#11111110b
    lcall delay1
    mov p0,#11111111b
    lcall delay1
    ;********************************************************************
    ;sang chay len mau do
    mov p0,#11111101b
    lcall delay1
    mov p0,#11101111b
    lcall delay1
    mov p0,#01111111b
    lcall delay1
    mov p0,#11111111b

    mov p1,#11111011b
    lcall delay1
    mov p1,#11011111b
    lcall delay1
    mov p1,#11111111b

    mov p2,#11111110b
    lcall delay1
    mov p2,#11110111b
    lcall delay1
    mov p2,#10111111b
    lcall delay1
    mov p2,#11111111b

    mov p3,#11111101b
    lcall delay1
    mov p3,#11101111b
    lcall delay1
    mov p3,#11111111b
    lcall delay1
    ;chay nguoc lai
    mov p3,#11101111b
    lcall delay1
    mov p3,#11111101b
    lcall delay1
    mov p3,#11111111b

    mov p2,#10111111b
    lcall delay1
    mov p2,#11110111b
    lcall delay1
    mov p2,#11111110b
    lcall delay1
    mov p2,#11111111b

    mov p1,#11011111b
    lcall delay1
    mov p1,#11111011b
    lcall delay1
    mov p1,#11111111b

    mov p0,#01111111b
    lcall delay1
    mov p0,#11101111b
    lcall delay1
    mov p0,#11111101b
    lcall delay1
    mov p0,#11111111b
    lcall delay1
    ;**************************************************
    ;sang chay len mau vang
    mov p0,#11111011b
    lcall delay1
    mov p0,#11011111b
    lcall delay1
    mov p0,#11111111b

    mov p1,#11111110b
    lcall delay1
    mov p1,#11110111b
    lcall delay1
    mov p1,#10111111b
    lcall delay1
    mov p1,#11111111b

    mov p2,#11111101b
    lcall delay1
    mov p2,#11101111b
    lcall delay1
    mov p2,#01111111b
    lcall delay1
    mov p2,#11111111b

    mov p3,#11111011b
    lcall delay1
    mov p3,#11011111b
    lcall delay1
    mov p3,#11111111b
    lcall delay1
    ;chay nguoc lai
    mov p3,#11011111b
    lcall delay1
    mov p3,#11111011b
    lcall delay1
    mov p3,#11111111b

    mov p2,#01111111b
    lcall delay1
    mov p2,#11101111b
    lcall delay1
    mov p2,#11111101b
    lcall delay1
    mov p2,#11111111b

    mov p1,#10111111b
    lcall delay1
    mov p1,#11110111b
    lcall delay1
    mov p1,#11111110b
    lcall delay1
    mov p1,#11111111b

    mov p0,#11011111b
    lcall delay1
    mov p0,#11111011b
    lcall delay1
    mov p0,#11111111b
    lcall delay1
    ;*************************************************************
    ;chay tung den mau 1 va 2
    mov p0,#11111100b
    lcall delay1
    mov p0,#11100111b
    lcall delay1
    mov p0,#00111111b
    lcall delay1
    mov p0,#11111111b

    mov p1,#11111001b
    lcall delay1
    mov p1,#11001111B
    lcall delay1
    mov p1,#01111111b
    mov p2,#11111110b
    lcall delay1
    mov p1,#11111111b

    mov p2,#11110011b
    lcall delay1
    mov p2,#10011111b
    lcall delay1
    mov p2,#11111111b

    mov p3,#11111100b
    lcall delay1
    mov p3,#11100111b
    lcall delay1
    mov p3,#11111111b
    lcall delay1
    ;chay nguoc lai
    mov p3,#11100111b
    lcall delay1
    mov p3,#11111100b
    lcall delay1
    mov p3,#11111111b

    mov p2,#10011111b
    lcall delay1
    mov p2,#11110011b
    lcall delay1

    mov p1,#01111111b
    mov p2,#11111110b
    lcall delay1

    mov p2,#11111111b

    mov p1,#11001111b
    lcall delay1
    mov p1,#11111001b
    lcall delay1
    mov p1,#11111111b

    mov p0,#00111111b
    lcall delay1
    mov p0,#11100111b
    lcall delay1
    mov p0,#11111100b
    lcall delay1
    mov p0,#11111111b
    lcall delay1
    ;*************************************************************
    ;chay tung den mau 1 va 3
    mov p0,#11111010b
    lcall delay1
    mov p0,#11010111b
    lcall delay1
    mov p0,#10111111b
    mov p1,#11111110b
    lcall delay1
    mov p0,#11111111b

    mov p1,#11110101b
    lcall delay1
    mov p1,#10101111b
    lcall delay1
    mov p1,#01111111b
    mov p2,#11111101b
    lcall delay1
    mov p1,#11111111b

    mov p2,#11101011b
    lcall delay1
    mov p2,#01011111b
    lcall delay1
    mov p2,#11111111b

    mov p3,#11111010b
    lcall delay1
    mov p3,#11010111b
    lcall delay1
    mov p3,#11111111b
    lcall delay1
    ;chay nguoc lai
    mov p3,#11010111b
    lcall delay1
    mov p3,#11111010b
    lcall delay1
    mov p3,#11111111b

    mov p2,#01011111b
    lcall delay1
    mov p2,#11101011b
    lcall delay1

    mov p1,#01111111b
    mov p2,#11111101b
    lcall delay1
    mov p2,#11111111b
    mov p1,#10101111b
    lcall delay1
    mov p1,#11110101b
    lcall delay1

    mov p0,#10111111b
    mov p1,#11111110b
    lcall delay1
    mov p1,#11111111b

    mov p0,#11010111b
    lcall delay1
    mov p0,#11111010b
    lcall delay1
    mov p0,#11111111b
    lcall delay1
    ;*************************************************************
    ;chay tung den mau 2 va 3
    mov p0,#11111001b
    lcall delay1
    mov p0,#11001111b
    lcall delay1
    mov p0,#01111111b
    mov p1,#11111110b
    lcall delay1
    mov p0,#11111111b

    mov p1,#11110011b
    lcall delay1
    mov p1,#10011111b
    lcall delay1
    mov p1,#11111111b

    mov p2,#11111100b
    lcall delay1
    mov p2,#11100111b
    lcall delay1
    mov p2,#00111111b
    lcall delay1
    mov p2,#11111111b

    mov p3,#11111001b
    lcall delay1
    mov p3,#11001111b
    lcall delay1
    mov p3,#11111111b
    lcall delay1
    ;chay nguoc lai
    mov p3,#11001111b
    lcall delay1
    mov p3,#11111001b
    lcall delay1
    mov p3,#11111111b

    mov p2,#00111111b
    lcall delay1
    mov p2,#11100111b
    lcall delay1
    mov p2,#11111100b
    lcall delay1
    mov p2,#11111111b

    mov p1,#10011111b
    lcall delay1
    mov p1,#11110011b
    lcall delay1

    mov p0,#01111111b
    mov p1,#11111110b
    lcall delay1
    mov p1,#11111111b
    mov p0,#11001111b
    lcall delay1
    mov p0,#11111001b
    lcall delay1
    mov p0,#11111111b
    lcall delay1
    ;************************************************************
    ;chay tung den 3 mau
    mov p0,#11111000b
    lcall delay1
    mov p0,#11000111b
    lcall delay1
    mov p0,#00111111b
    mov p1,#11111110b
    lcall delay1
    mov p0,#11111111b

    mov p1,#11110001b
    lcall delay1
    mov p1,#10001111b
    lcall delay1
    mov p1,#01111111b
    mov p2,#11111100b
    lcall delay1
    MOV P1,#11111111b

    mov p2,#11100011b
    lcall delay1
    mov p2,#00011111b
    lcall delay1
    mov p2,#11111111b

    mov p3,#11111000b
    lcall delay1
    mov p3,#11000111b
    lcall delay1
    mov p3,#11111111b
    lcall delay1
    ;chay nguoc lai
    mov p3,#11000111b
    lcall delay1
    mov p3,#11111000b
    lcall delay1
    mov p3,#11111111b

    mov p2,#00011111b
    lcall delay1
    mov p2,#11100011b
    lcall delay1

    mov p1,#01111111b
    mov p2,#11111100b
    lcall delay1
    mov p2,#11111111b
    mov p1,#10001111b
    lcall delay1
    mov p1,#11110001b
    lcall delay1

    mov p0,#00111111b
    mov p1,#11111110b
    lcall delay1
    mov p1,#11111111b
    mov p0,#11000111b
    lcall delay1
    mov p0,#11111000b
    lcall delay1
    mov p0,#11111111b
    lcall delay1
    ;*************************************************************
    ;sang don mau 1
    mov p0,#11111110b
    lcall delay1
    mov p0,#11110110b
    lcall delay1
    mov p0,#10110110b
    lcall delay1

    mov p1,#11111101b
    lcall delay1
    mov p1,#11101101b
    lcall delay1
    mov p1,#01101101b
    lcall delay1

    mov p2,#11111011b
    lcall delay1
    mov p2,#11011011b
    lcall delay1

    mov p3,#11111110b
    lcall delay1
    mov p3,#11110110b
    lcall delay1

    ;sang don mau 2
    mov p0,#11111101b
    lcall delay1
    mov p0,#11101101b
    lcall delay1
    mov p0,#01101101b
    lcall delay1

    mov p1,#11111011b
    lcall delay1
    mov p1,#11011011b
    lcall delay1

    mov p2,#11111110b
    lcall delay1
    mov p2,#11110110b
    lcall delay1
    mov p2,#10110110b
    lcall delay1

    mov p3,#11111101b
    lcall delay1
    mov p3,#11101101b
    lcall delay1

    ;sang don len mau 3
    mov p0,#11111011b
    lcall delay1
    mov p0,#11011011b
    lcall delay1

    mov p1,#11111110b
    lcall delay1
    mov p1,#11110110b
    lcall delay1
    mov p1,#10110110b
    lcall delay1

    mov p2,#11111101b
    lcall delay1
    mov p2,#11101101b
    lcall delay1
    mov p2,#01101101b
    lcall delay1

    mov p3,#11111011b
    lcall delay1
    mov p3,#11011011b
    lcall delay1

    ;sang don mau 1 va 2
    mov p0,#11111100b
    lcall delay1
    mov p0,#11100100b
    lcall delay1
    mov p0,#00100100b
    lcall delay1

    mov p1,#11111001b
    lcall delay1
    mov p1,#11001001b
    lcall delay1
    mov p1,#01001001b

    mov p2,#11111110b
    lcall delay1
    mov p2,#11110010b
    lcall delay1
    mov p2,#10010010b
    lcall delay1

    mov p3,#11111100b
    lcall delay1
    mov p3,#11100100b
    lcall delay1

    ;sang don mau 1 va 3
    mov p0,#11111010b
    lcall delay1
    mov p0,#11010010b
    lcall delay1
    mov p0,#10010010b

    mov p1,#11111110b
    lcall delay1
    mov p1,#11110100b
    lcall delay1
    mov p1,#10100100b
    lcall delay1
    mov p1,#00100100b

    mov p2,#11111101b
    lcall delay1
    mov p2,#11101001b
    lcall delay1
    mov p2,#01001001b
    lcall delay1

    mov p3,#11111010b
    lcall delay1
    mov p3,#11010010b
    lcall delay1

    ;sang don mau 2 va 3
    mov p0,#11111001b
    lcall delay1
    mov p0,#11001001b
    lcall delay1
    mov p0,#01001001b

    mov p1,#11111110b
    lcall delay1
    mov p1,#11110010b
    lcall delay1
    mov p1,#10010010b
    lcall delay1

    mov p2,#11111100b
    lcall delay1
    mov p2,#11100100b
    lcall delay1
    mov p2,#00100100b
    lcall delay1

    mov p3,#11111001b
    lcall delay1
    mov p3,#11001001b
    lcall delay1

    ;sang don 3 mau
    mov p0,#11111000b
    lcall delay1
    mov p0,#11000000b
    lcall delay1
    mov p0,#00000000b

    mov p1,#11111110b
    lcall delay1
    mov p1,#11110000b
    lcall delay1
    mov p1,#10000000b
    lcall delay1
    mov p1,#00000000b

    mov p2,#11111100b
    lcall delay1
    mov p2,#11100000b
    lcall delay1
    mov p2,#00000000b
    lcall delay1


    mov p3,#11111000b
    lcall delay1
    mov p3,#11000000b
    lcall delay1
    ;**************************************************************
    ;sang don tung den mau 1
    mov p0,#11111110b
    lcall delay1
    mov p0,#11110111b
    lcall delay1
    mov p0,#10111111b
    lcall delay1
    mov p0,#11111111b

    mov p1,#11111101b
    lcall delay1
    mov p1,#11101111b
    lcall delay1
    mov p1,#01111111b
    lcall delay1
    mov p1,#11111111b

    mov p2,#11111011b
    lcall delay1
    mov p2,#11011111b
    lcall delay1
    mov p2,#11111111b

    mov p3,#11111110b
    lcall delay1
    mov p3,#11110111b
    lcall delay1

    mov p0,#11111110b
    lcall delay1
    mov p0,#11110111b
    lcall delay1
    mov p0,#10111111b
    lcall delay1
    mov p0,#11111111b

    mov p1,#11111101b
    lcall delay1
    mov p1,#11101111b
    lcall delay1
    mov p1,#01111111b
    lcall delay1
    mov p1,#11111111b

    mov p2,#11111011b
    lcall delay1
    mov p2,#11011111b
    lcall delay1
    mov p2,#11111111b

    mov p3,#11110110b
    lcall delay1

    mov p0,#11111110b
    lcall delay1
    mov p0,#11110111b
    lcall delay1
    mov p0,#10111111b
    lcall delay1
    mov p0,#11111111b

    mov p1,#11111101b
    lcall delay1
    mov p1,#11101111b
    lcall delay1
    mov p1,#01111111b
    lcall delay1
    mov p1,#11111111b

    mov p2,#11111011b
    lcall delay1
    mov p2,#11011111b
    lcall delay1


    mov p0,#11111110b
    lcall delay1
    mov p0,#11110111b
    lcall delay1
    mov p0,#10111111b
    lcall delay1
    mov p0,#11111111b

    mov p1,#11111101b
    lcall delay1
    mov p1,#11101111b
    lcall delay1
    mov p1,#01111111b
    lcall delay1
    mov p1,#11111111b

    mov p2,#11011011b
    lcall delay1


    mov p0,#11111110b
    lcall delay1
    mov p0,#11110111b
    lcall delay1
    mov p0,#10111111b
    lcall delay1
    mov p0,#11111111b

    mov p1,#11111101b
    lcall delay1
    mov p1,#11101111b
    lcall delay1
    mov p1,#01111111b
    lcall delay1

    mov p0,#11111110b
    lcall delay1
    mov p0,#11110111b
    lcall delay1
    mov p0,#10111111b
    lcall delay1
    mov p0,#11111111b

    mov p1,#11111101b
    lcall delay1
    mov p1,#01101111b
    lcall delay1


    mov p0,#11111110b
    lcall delay1
    mov p0,#11110111b
    lcall delay1
    mov p0,#10111111b
    lcall delay1
    mov p0,#11111111b

    mov p1,#01101101b
    lcall delay1


    mov p0,#11111110b
    lcall delay1
    mov p0,#11110111b
    lcall delay1
    mov p0,#10111111b
    lcall delay1

    mov p0,#11111110b
    lcall delay1
    mov p0,#10110111b
    lcall delay1

    mov p0,#10110110b
    lcall delay1
    ;sang don len tung den mau 2
    mov p0,#11111101b
    lcall delay1
    mov p0,#11101111b
    lcall delay1
    mov p0,#01111111b
    lcall delay1
    mov p0,#11111111b

    mov p1,#11111011b
    lcall delay1
    mov p1,#11011111b
    lcall delay1
    mov p1,#11111111b

    mov p2,#11111110b
    lcall delay1
    mov p2,#11110111b
    lcall delay1
    mov p2,#10111111b
    lcall delay1
    mov p2,#11111111b

    mov p3,#11111101b
    lcall delay1
    mov p3,#11101111b
    lcall delay1

    mov p0,#11111101b
    lcall delay1
    mov p0,#11101111b
    lcall delay1
    mov p0,#01111111b
    lcall delay1
    mov p0,#11111111b


    mov p1,#11111011b
    lcall delay1
    mov p1,#11011111b
    lcall delay1
    mov p1,#11111111b

    mov p2,#11111110b
    lcall delay1
    mov p2,#11110111b
    lcall delay1
    mov p2,#10111111b
    lcall delay1
    mov p2,#11111111b

    mov p3,#11101101b
    lcall delay1

    mov p0,#11111101b
    lcall delay1
    mov p0,#11101111b
    lcall delay1
    mov p0,#01111111b
    lcall delay1
    mov p0,#11111111b

    mov p1,#11111011b
    lcall delay1
    mov p1,#11011111b
    lcall delay1
    mov p1,#11111111b

    mov p2,#11111110b
    lcall delay1
    mov p2,#11110111b
    lcall delay1
    mov p2,#10111111b
    lcall delay1

    mov p0,#11111101b
    lcall delay1
    mov p0,#11101111b
    lcall delay1
    mov p0,#01111111b
    lcall delay1
    mov p0,#11111111b

    mov p1,#11111011b
    lcall delay1
    mov p1,#11011111b
    lcall delay1
    mov p1,#11111111b

    mov p2,#11111110b
    lcall delay1
    mov p2,#10110111b
    lcall delay1

    mov p0,#11111101b
    lcall delay1
    mov p0,#11101111b
    lcall delay1
    mov p0,#01111111b
    lcall delay1
    mov p0,#11111111b

    mov p1,#11111011b
    lcall delay1
    mov p1,#11011111b
    lcall delay1
    mov p1,#11111111b

    mov p2,#10110110b
    lcall delay1

    mov p0,#11111101b
    lcall delay1
    mov p0,#11101111b
    lcall delay1
    mov p0,#01111111b
    lcall delay1
    mov p0,#11111111b

    mov p1,#11111011b
    lcall delay1
    mov p1,#11011111b
    lcall delay1

    mov p0,#11111101b
    lcall delay1
    mov p0,#11101111b
    lcall delay1
    mov p0,#01111111b
    lcall delay1
    mov p0,#11111111b

    mov p1,#11011011b
    lcall delay1

    mov p0,#11111101b
    lcall delay1
    mov p0,#11101111b
    lcall delay1
    mov p0,#01111111b
    lcall delay1

    mov p0,#11111101b
    lcall delay1
    mov p0,#01101111b
    lcall delay1

    mov p0,#01101101b
    lcall delay1
    ;********************************************************
    ;sang don len tung den mau 3

    mov p0,#11111011b
    lcall delay1
    mov p0,#11011111b
    lcall delay1
    mov p0,#11111111b

    mov p1,#11111110b
    lcall delay1
    mov p1,#11110111b
    lcall delay1
    mov p1,#10111111b
    lcall delay1
    mov p1,#11111111b

    mov p2,#11111101b
    lcall delay1
    mov p2,#11101111b
    lcall delay1
    mov p2,#01111111b
    lcall delay1
    mov p2,#11111111b

    mov p3,#11111011b
    lcall delay1
    mov p3,#11011111b
    lcall delay1

    mov p0,#11111011b
    lcall delay1
    mov p0,#11011111b
    lcall delay1
    mov p0,#11111111b

    mov p1,#11111110b
    lcall delay1
    mov p1,#11110111b
    lcall delay1
    mov p1,#10111111b
    lcall delay1
    mov p1,#11111111b

    mov p2,#11111101b
    lcall delay1
    mov p2,#11101111b
    lcall delay1
    mov p2,#01111111b
    lcall delay1
    mov p2,#11111111b

    mov p3,#11011011b
    lcall delay1

    mov p0,#11111011b
    lcall delay1
    mov p0,#11011111b
    lcall delay1
    mov p0,#11111111b

    mov p1,#11111110b
    lcall delay1
    mov p1,#11110111b
    lcall delay1
    mov p1,#10111111b
    lcall delay1
    mov p1,#11111111b

    mov p2,#11111101b
    lcall delay1
    mov p2,#11101111b
    lcall delay1
    mov p2,#01111111b
    lcall delay1

    mov p0,#11111011b
    lcall delay1
    mov p0,#11011111b
    lcall delay1
    mov p0,#11111111b

    mov p1,#11111110b
    lcall delay1
    mov p1,#11110111b
    lcall delay1
    mov p1,#10111111b
    lcall delay1
    mov p1,#11111111b

    mov p2,#11111101b
    lcall delay1
    mov p2,#01101111b
    lcall delay1

    mov p0,#11111011b
    lcall delay1
    mov p0,#11011111b
    lcall delay1
    mov p0,#11111111b

    mov p1,#11111110b
    lcall delay1
    mov p1,#11110111b
    lcall delay1
    mov p1,#10111111b
    lcall delay1
    mov p1,#11111111b

    mov p2,#01101101b
    lcall delay1

    mov p0,#11111011b
    lcall delay1
    mov p0,#11011111b
    lcall delay1
    mov p0,#11111111b

    mov p1,#11111110b
    lcall delay1
    mov p1,#11110111b
    lcall delay1
    mov p1,#10111111b
    lcall delay1

    mov p0,#11111011b
    lcall delay1
    mov p0,#11011111b
    lcall delay1
    mov p0,#11111111b

    mov p1,#11111110b
    lcall delay1
    mov p1,#10110111b
    lcall delay1

    mov p0,#11111011b
    lcall delay1
    mov p0,#11011111b
    lcall delay1
    mov p0,#11111111b

    mov p1,#10110110b
    lcall delay1

    mov p0,#11111011b
    lcall delay1
    mov p0,#11011111b
    lcall delay1

    mov p0,#11011011b
    lcall delay1
    ;*****************************************************************
    ;chay vo 2 ben mau 1
    mov p0,#11111110b
    mov p3,#11110111b
    lcall delay1
    mov p0,#11110111b
    mov p3,#11111110b
    lcall delay1

    mov p3,#11111111b
    mov p0,#11111111b

    mov p0,#10111111b
    mov p2,#11011111b
    lcall delay1

    mov p0,#11111111b
    mov p2,#11111111b

    mov p1,#11111101b
    mov p2,#11111011b
    lcall delay1

    mov p1,#11111111b
    mov p2,#11111111b

    mov p1,#01101111b
    lcall delay1

    mov p0,#11111111b
    mov p1,#11111111b
    mov p2,#11111111b
    mov p3,#11111111b
    lcall delay1

    ;chay ra 2 ben mau 1
    mov p1,#01101111b
    lcall delay1
    mov p1,#11111101b
    mov p2,#11111011b
    lcall delay1

    mov p1,#11111111b
    mov p2,#11111111b

    mov p0,#10111111b
    mov p2,#11011111b
    lcall delay1

    mov p0,#11111111b
    mov p2,#11111111b

    mov p0,#11110111b
    mov p3,#11111110b
    lcall delay1
    mov p0,#11111110b
    mov p3,#11110111b
    lcall delay1
    mov p0,#11111111b
    mov p1,#11111111b
    mov p2,#11111111b
    mov p3,#11111111b
    lcall delay1
    ;***************************************************
    ;chay vo 2 ben mau 2
    mov p0,#11111101b
    mov p3,#11101111b
    lcall delay1
    mov p0,#11101111b
    mov p3,#11111101b
    lcall delay1

    mov p3,#11111111b

    mov p0,#10111111b
    mov p2,#10111111b
    lcall delay1

    mov p0,#11111111b

    mov p1,#11111011b
    mov p2,#11110111b
    lcall delay1
    mov p1,#11011111b
    mov p2,#11111110b
    lcall delay1

    mov p0,#11111111b
    mov p1,#11111111b
    mov p2,#11111111b
    mov p3,#11111111b
    lcall delay1
    ;chay ra 2 ben mau 2
    mov p1,#11011111b
    mov p2,#11111110b
    lcall delay1
    mov p1,#11111011b
    mov p2,#11110111b
    lcall delay1

    mov p1,#11111111b

    mov p0,#10111111b
    mov p2,#10111111b
    lcall delay1

    mov p2,#11111111b

    mov p0,#11101111b
    mov p3,#11111101b
    lcall delay1
    mov p0,#11111101b
    mov p3,#11101111b
    lcall delay1
    mov p0,#11111111b
    mov p1,#11111111b
    mov p2,#11111111b
    mov p3,#11111111b
    lcall delay1
    ;***************************************************
    ;chay vo 2 ben mau 3
    mov p0,#11111011b
    mov p3,#11011111b
    lcall delay1

    mov p0,#11011111b
    mov p3,#11111011b
    lcall delay1

    mov p0,#11111111b
    mov p3,#11111111b

    mov p1,#11111110b
    mov p2,#01111111b
    lcall delay1

    mov p1,#11110111b
    mov p2,#11101111b
    lcall delay1

    mov p1,#10111111b
    mov p2,#11111101b
    lcall delay1

    mov p0,#11111111b
    mov p1,#11111111b
    mov p2,#11111111b
    mov p3,#11111111b
    lcall delay1
    ;chay ra
    mov p1,#10111111b
    mov p2,#11111101b
    lcall delay1

    mov p1,#11110111b
    mov p2,#11101111b
    lcall delay1

    mov p1,#11111110b
    mov p2,#01111111b
    lcall delay1

    mov p1,#11111111b
    mov p2,#11111111b

    mov p0,#11011111b
    mov p3,#11111011b
    lcall delay1

    mov p0,#11111011b
    mov p3,#11011111b
    lcall delay1

    mov p0,#11111111b
    mov p1,#11111111b
    mov p2,#11111111b
    mov p3,#11111111b
    lcall delay1
    ;***************************************************
    ;chay ra mau 1 va 2
    mov p0,#11111100b
    mov p3,#11100111b
    lcall delay1

    mov p0,#11100111b
    mov p3,#11111100b
    lcall delay1

    mov p3,#11111111b

    mov p0,#00111111b
    mov p2,#10011111b
    lcall delay1

    mov p0,#11111111b

    mov p1,#11111001b
    mov p2,#11110011b
    lcall delay1

    mov p1,#01001111b
    mov p2,#11111110b
    lcall delay1

    mov p0,#11111111b
    mov p1,#11111111b
    mov p2,#11111111b
    mov p3,#11111111b
    lcall delay1
    ;chay nguoc lai
    mov p1,#01001111b
    mov p2,#11111110b
    lcall delay1

    mov p1,#11111001b
    mov p2,#11110011b
    lcall delay1

    mov p1,#11111111b

    mov p0,#00111111b
    mov p2,#10011111b
    lcall delay1

    mov p2,#11111111b

    mov p0,#11100111b
    mov p3,#11111100b
    lcall delay1

    mov p0,#11111100b
    mov p3,#11100111b
    lcall delay1

    mov p0,#11111111b
    mov p1,#11111111b
    mov p2,#11111111b
    mov p3,#11111111b
    lcall delay1
    ;***************************************************
    ;chay ra mau 1 va 3
    mov p0,#11111010b
    mov p3,#11010111b
    lcall delay1

    mov p0,#11010111b
    mov p3,#11111010b
    lcall delay1

    mov p3,#11111111b

    mov p0,#10111111b
    mov p1,#11111110b
    mov p2,#01011111b
    lcall delay1

    mov p0,#11111111b

    mov p1,#11110101b
    mov p2,#11101011b
    lcall delay1

    mov p1,#00101111b
    mov p2,#11111101b
    lcall delay1

    mov p0,#11111111b
    mov p1,#11111111b
    mov p2,#11111111b
    mov p3,#11111111b
    lcall delay1
    ;chay nguoc lai
    mov p1,#00101111b
    mov p2,#11111101b
    lcall delay1

    mov p1,#11110101b
    mov p2,#11101011b
    lcall delay1

    mov p0,#10111111b
    mov p1,#11111110b
    mov p2,#01011111b
    lcall delay1

    mov p1,#11111111b
    mov p2,#11111111b

    mov p0,#11010111b
    mov p3,#11111010b
    lcall delay1

    mov p0,#11111010b
    mov p3,#11010111b
    lcall delay1

    mov p0,#11111111b
    mov p1,#11111111b
    mov p2,#11111111b
    mov p3,#11111111b
    lcall delay1
    ;**************************************************
    ;chay ra mau 2 va 3
    mov p0,#11111001b
    mov p3,#11001111b
    lcall delay1

    mov p0,#11001111b
    mov p3,#11111001b
    lcall delay

    mov p3,#11111111b

    mov p0,#01111111b
    mov p1,#11111110b
    mov p2,#00111111b
    lcall delay1

    mov p0,#11111111b

    mov p1,#11110011b
    mov p2,#11100111b
    lcall delay1

    mov p1,#10011111b
    mov p2,#11111100b
    lcall delay1

    mov p0,#11111111b
    mov p1,#11111111b
    mov p2,#11111111b
    mov p3,#11111111b
    lcall delay1
    ;chay vo
    mov p1,#10011111b
    mov p2,#11111100b
    lcall delay1

    mov p1,#11110011b
    mov p2,#11100111b
    lcall delay1

    mov p0,#01111111b
    mov p1,#11111110b
    mov p2,#00111111b
    lcall delay1

    mov p1,#11111111b
    mov p2,#11111111b

    mov p0,#11001111b
    mov p3,#11111001b
    lcall delay

    mov p0,#11111001b
    mov p3,#11001111b
    lcall delay1

    mov p0,#11111111b
    mov p1,#11111111b
    mov p2,#11111111b
    mov p3,#11111111b
    lcall delay1
    ;***************************************************

    jmp td
    delay:
    mov r7,#0ffh
    del2: mov r6,#0ffh
    del1: djnz r6,del1
    djnz r7,del2

    delay1:
    mov r7,#0e5h
    del4: mov r6,#0e5h
    del3: djnz r6,del3
    djnz r7,del4
    ret
    end
    ------------------------------------------------------------------------
    CH�N TH�NH CẢM ƠN THẦY V� C�C BẠN QUAN T�M THEO D�I!!!
    CH�C MỌI NGƯỜI NĂM MỚI NHIỀU SỨC KHOẺ V� NHẠNH PH�C^^
  5. tonghua19 New Member

    Số bài viết: 14
    Đã được thích: 0
    Điểm thành tích: 0
    <span style="color:#FF0000">1. Họ tên sinh viên:</span> Trương Vân Hạo
    MSSV: 05111029
    Email: vanhao.truong@gmail.com
    Phone: 0962970625

    <span style="color:#FF0000">2. Đề tài thực hiện:</span> Điều khiển động cơ bước có giao tiếp máy tính bằng ATMEGA32
    -Nội dung:
    Động cơ chạy full, half, micro, đảo chiều, start/stop, tăng giảm tốc,
    Động cơ có thể điều khiển bằng nút nhấn trên board hoặc bằng PC
    Khi điều khiển bằng nút nhấn, PC chỉ làm chức năng giám sát
    Khi điều khiển bằng PC, nút nhấn vô tác dụng
    PC chọn cách điều khiển ( bằng nút nhấn hay PC)

    <span style="color:#FF0000">3.Các phương án chọn lựa:</span>
    -Giao tiếp qua LPT:
    Ưu: dễ lập trình hơn (có thể không đúng), do nếu giao tiếp bằng LPT thì lúc đó các tín hiệu giao tiếp chỉ đơn giản là nhưng I/O
    Nhược điểm: Khó có thể truyền nhiều byte
    -Vì trong đề tài này, em cần phải truyền 2 byte, nên không chọn phương án truyền qua LPT mà dùng phương án truyền nối tiếp

    <span style="color:#FF0000">4.Mạch nguyên lý, layout:</span>
    -Mạch nguyên lý:
    Khối vi điều khiển:[IMG]
    Khối nút nhấn[IMG]
    Khối giao tiếp:[IMG]

    -Mạch layout:
    [IMG]

    <span style="color:#FF0000">5.Lưu đồ giải thuật, code chương trình dưới dạng text:</span>-Lưu đồ giải thuật:[IMG]
    Ở trên chỉ là lưu đồ giải thuật để điều khiển động cơ chạy
    Còn về phần giao tiếp với máy tính, mỗi lần có sự thay đổi (start/stop, chuyển sang full_step, half_step, micro_step, tăng giảm tốc, đảo chiều)
    vi điều khiển đều giao tiếp với máy tính bằng 2 byte
    Byte 1 là byte lệnh
    Byte 2 là tốc độ
    Để hiểu gõ hơn về cách thức truyền, mời các bạn đọc kỷ chương trình của mình. Trong chương trình có giải thích rõ cho mục đỉch nhiều khối lệnh quan trong

    -chương trình của Codevision:
    #include <MEGA32.H>
    #include <DELAY.H>


    //PC doi dieu khien => PC dieu khien
    //PC khong dieu khien => dieu khien bang nut nhan
    unsigned char speed=20;
    unsigned char t_speed=20;
    unsigned char start,direction,control_unit,full_step,half_step,micro_step;
    //giao tiep giua vi dieu khien voi may tinh,
    //control_unit=0 =>Dieu khien bang nut nhan

    unsigned char t_start,t_direction,t_control_unit,t_full_step,t_half_step,t_micro_step;
    bit nhan_start,nhan_direction,nhan_full,nhan_half,nhan_micro;

    unsigned int data=0x000F;
    unsigned int data1;

    //static unsigned char m;

    static unsigned int k; //dung trong ngat timer1
    unsigned char s; //dung trong step_200(); va step_400();
    bit transmit_finished=1; //transmit_finished=1 =>truyen xong. Nguoc lai la chua truyen xong
    bit can_transmit=1; //can_transmit=1 =>vi dieu khien co the truyen len may tinh
    //can_transmit=0 =>vi dieu khien khong the truyen len PC
    //vi dieu khien luon luon co kha nang nhan tu PC


    unsigned char transmit[2]; //mang chua du lieu truyen den PC
    unsigned char receive[2]; //mang chua du lieu nhan tu PC
    //trong giao tiep voi may tinh
    //thu tu cac bit tu MSB den LSB la 0,0,control_unit,micro_step,half_step,full_step,direction,start
    //Du lieu tu vi dieu khien truyen cho may tinh la 0,0,0,micro_step,half_step,full_step,direction,start


    void step_200()
    {
    if(direction)
    {
    for(s=0;s<4;s++)
    {
    data1=data;
    data=data<<1;
    if(data<data1)
    data=data|0x0001; //tao lenh xoay
    }
    }
    else
    {
    for(s=0;s<4;s++)
    {
    data1=data;
    data=data>>1;
    if(data1!=2*data)
    data=data|0x8000; //tao lenh xoay
    }
    }
    PORTA=data; //PORTA lay 8 bit thap cua data
    PORTC=data>>8; //PORTC lay 8 bit cao cua data
    }


    void step_400()
    {
    if(direction)
    {
    for (s=0;s<2;s++)
    {
    data1=data;
    data=data<<1;
    if(data<data1)
    data=data|0x0001; //tao lenh xoay
    }
    }
    else
    {
    for(s=0;s<2;s++)
    {
    data1=data;
    data=data>>1;
    if(data1!=2*data)
    data=data|0x8000; //tao lenh xoay
    }
    }
    PORTA=data; //PORTA lay 8 bit thap cua data
    PORTC=data>>8; //PORTC lay 8 bit thap cua data
    }



    void step_800()
    {
    data1=data;
    if(direction)
    {
    data=data<<1;
    if(data<data1)
    data=data|0x0001; //tao lenh xoay
    }
    else
    {
    data=data>>1;
    if(data1!=2*data)
    data=data|0x8000; //tao lenh xoay
    }


    PORTA=data; //PORTA lay 8 bit thap cua data
    PORTC=data>>8; //PORTC lay 8 bit thap cua data
    }


    interrupt [TIM1_OVF] void timer1_ovf_isr(void)
    {
    TCCR1B=0x00; //dung timer1

    TCNT1H=0xCA;
    TCNT1L=0x00;

    k++;
    if(k>=speed)
    {
    k=0;
    if(full_step)
    step_200();
    if(half_step)
    step_400();
    if(micro_step)
    step_800();
    }

    TCCR1B=0x02; //cho timer1 chay lai
    }

    interrupt [USART_RXC] void usart_rx_isr(void)
    {
    static unsigned char j;
    if(j<2)
    {
    receive[j]=UDR;
    j++;
    }

    start= receive[0] & 0x01; //giu nguyen bit 0, xoa cac bit con lai
    direction=receive[0] & 0x02; //giu nguyen bit 1, xoa cac bit con lai
    full_step=receive[0] & 0x04; //giu nguen bit 2, xoa cac bit con lai
    half_step=receive[0] & 0x08; //giu nguen bit 3, xoa cac bit con lai
    micro_step=receive[0] & 0x10; //giu nguen bit 4, xoa cac bit con lai
    control_unit=receive[0] & 0x20; //giu nguen bit 5, xoa cac bit con lai

    speed=receive[1];

    if(j==2)
    j=0;

    }



    interrupt [USART_TXC] void usart_tx_isr(void)
    {
    static unsigned char i;
    if(i<1)
    {
    UDR=transmit[1];
    i++;
    }
    else
    {
    i=0;
    transmit_finished=1;
    }
    }

    void truyen()
    {
    transmit[0]=(start|direction|full_step|half_step|micro_step);
    transmit[1]=speed;
    UDR=transmit[0];
    }

    void main()
    {
    DDRA=0xFF;
    PORTA=0x00;

    DDRC=0xFF;
    PORTC=0x00;

    DDRD=0xC0;
    PORTD=0x9C;

    DDRB=0x00;
    PORTB=0xFF;

    // Clock source: System Clock
    // Clock value: 1382.400 kHz
    // Mode: Normal top=FFFFh
    // Timer 1 Overflow Interrupt: On

    TCCR1A=0x00;
    TCCR1B=0x02;
    TCNT1H=0xCA;
    TCNT1L=0x00;

    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x00;

    // Communication Parameters: 8 Data, 1 Stop, No Parity
    // USART Receiver: On
    // USART Transmitter: On
    // USART Mode: Asynchronous
    // USART Baud Rate: 9600
    UCSRA=0x00;
    UCSRB=0xD8;
    UCSRC=0x86;
    UBRRH=0x00;
    UBRRL=0x47;

    full_step=0x04;
    t_full_step=full_step;

    transmit_finished=1;
    can_transmit=1;

    start=0x00;
    direction=0x00;
    full_step=0x04;
    half_step=0x00;
    micro_step=0x00;
    control_unit=0x00;

    speed=20;
    /*
    transmit[0]=0x04;
    transmit[1]=20;
    */
    receive[0]=0x04;
    receive[1]=20;

    #asm("sei")

    truyen();


    while(1)
    {
    if(control_unit==0)
    can_transmit=1;
    else
    can_transmit=0;
    if(control_unit==0) //control_unit=0 => chon dieu khien tu nut nhan
    {
    delay_ms(10);
    PORTD.7=0;
    PORTD.6=1;
    if(PINB.2==0) //nhan nut RAPID_UP
    {
    if(speed>1)
    {
    speed=speed-1;
    if(speed==26)
    speed=25;
    }
    else
    speed=1;
    }

    if(PINB.3==0) //nhan nut SLOW_DOWN
    {
    if(speed<255)
    {
    speed=speed+1;
    if(speed==26)
    speed=27;
    }
    else
    speed=255;
    }

    if(PIND.2==0) //nhan nut FULL_STEP
    {
    delay_ms(10);
    if(PIND.2==0)
    nhan_full=1;
    }

    if(nhan_full)
    if(PIND.2)
    {
    delay_ms(10);
    if(PIND.2)
    {
    full_step=0x04;
    half_step=0;
    micro_step=0;
    nhan_full=0;
    //UCSRA.6=1;
    //UDR=0x00;
    }
    }

    if(PIND.3==0) //nhan nut HALF_STEP
    {
    delay_ms(10);
    if(PIND.3==0)
    nhan_half=1;
    }

    if(nhan_half)
    if(PIND.3)
    {
    delay_ms(10);
    if(PIND.3)
    {
    full_step=0;
    half_step=0x08;
    micro_step=0;
    nhan_half=0;
    //UCSRA.6=1;
    //UDR=0x00;
    }
    }

    if(PIND.4==0) //nhan nut MICRO_STEP
    {
    delay_ms(10);
    if(PIND.4==0)
    nhan_micro=1;
    }

    if(nhan_micro)
    if(PIND.4)
    {
    delay_ms(10);
    if(PIND.4)
    {
    full_step=0;
    half_step=0;
    micro_step=0x10;
    nhan_micro=0;
    //UCSRA.6=1;
    //UDR=0x00;
    }
    }

    if(PINB.0==0) //nhan nut START
    {
    delay_ms(10);
    if(PINB.0==0)
    nhan_start=1;
    }

    if(nhan_start)
    if(PINB.0) //nha nut START
    {
    delay_ms(10);
    if(PINB.0)
    {
    start=~start;
    start=start&0x01;
    //giai thich 2 cau lenh tren
    //gia su luc dau start=00000000
    //sau lenh start=~start, start=11111111
    //sau lenh start=start&0x01, start=00000001
    //tuong tu cho truong hop luc dau start=00000001
    nhan_start=0;
    //UCSRA=UCSRA|0x40;
    //UCSRA.6=1; //set bit TXC in UCSRA to run usart_tx_isr
    //UDR=0x00;

    }
    }

    if(PINB.1==0) //nhan nut DIRECTION
    {
    delay_ms(10);
    if(PINB.1==0)
    nhan_direction=1;
    }

    if(nhan_direction)
    if(PINB.1) //nha nut DIRECTION
    {
    delay_ms(10);
    if(PINB.1)
    {
    direction=~direction;
    direction=direction&0x02;
    //giai thich 2 cau lenh tren
    //gia su luc dau direction=00000000
    //sau lenh direction=~direction, direction=11111111
    //sau lenh direction=direction&0x02, direction=00000010
    //tuong tu cho truong hop luc dau direction=00000010
    nhan_direction=0;
    //UCSRA=UCSRA|0x40;
    //UCSRA.6=1; //set bit TXC in UCSRA to run usart_tx_isr
    //UDR=0x00;
    }
    }
    }
    else
    {
    delay_ms(10);
    PORTD.7=1;
    PORTD.6=0;
    }

    if(start)
    TIMSK=0x04;
    else
    TIMSK=0x00;

    if(start!=t_start)
    {
    if(can_transmit)
    if(transmit_finished)
    {
    transmit_finished=0;
    t_start=start;
    truyen();
    }
    }

    if(direction!=t_direction)
    {
    if(can_transmit)
    if(transmit_finished)
    {
    transmit_finished=0;
    t_direction=direction;
    truyen();
    }
    }

    if(full_step!=t_full_step)
    {
    if(can_transmit)
    if(transmit_finished)
    {
    transmit_finished=0;
    t_full_step=full_step;
    truyen();
    }
    }

    if(half_step!=t_half_step)
    {
    if(can_transmit)
    if(transmit_finished)
    {
    transmit_finished=0;
    t_half_step=half_step;
    truyen();
    }
    }

    if(micro_step!=t_micro_step)
    {
    if(can_transmit)
    if(transmit_finished)
    {
    transmit_finished=0;
    t_micro_step=micro_step;
    truyen();
    }
    }

    if(control_unit!=t_control_unit)
    {
    if(can_transmit)
    if(transmit_finished)
    {
    transmit_finished=0;
    t_control_unit=control_unit;
    truyen();
    }
    }

    if(speed!=t_speed)
    {
    delay_ms(200);
    if(can_transmit)
    if(transmit_finished)
    {
    transmit_finished=0;
    t_speed=speed;
    truyen();
    }
    }
    }
    }


    -Chương trình trên C++:
    #pragma once


    namespace DieukhienvibuocCOM {

    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;

    /// <summary>
    /// Summary for Form1
    ///
    /// WARNING: If you change the name of this class, you will need to change the
    /// 'Resource File Name' property for the managed resource compiler tool
    /// associated with all .resx files this class depends on. Otherwise,
    /// the designers will not be able to interact properly with localized
    /// resources associated with this form.
    /// </summary>
    public ref class Form1 : public System::Windows::Forms::Form
    {
    public:
    Form1(void)
    {
    InitializeComponent();
    //
    //TODO: Add the constructor code here
    //
    //serialPort1->Open();
    radioButton1->Checked=true;
    radioButton3->Checked=true;
    numericUpDown1->Value=(unsigned char) 20;
    comboBox1->SelectedIndex=0;
    serialPort1->Open();
    //transmit=gcnew array<unsigned char,1>(2);
    //data_receive=gcnew array<unsigned char,1>(2);
    transmit[0]=0x04; //truyen full_step=1
    transmit[1]=20;
    //receive[0]=0;
    //receive[1]=0x04; //nhan full_step=1
    //receive[2]=20;
    receive[1]=20;
    receive[0]=0x04;

    start=0x00;
    direction=0x00;
    full_step=0x04;
    half_step=0x00;
    micro_step=0x00;
    control_unit=0x00;

    speed=20;
    }

    static array<unsigned char,1>^transmit=gcnew array<unsigned char,1>(2);
    static array<unsigned char,1>^receive=gcnew array<unsigned char,1>(2);
    unsigned char start,direction,full_step,half_step,micro_step,control_unit;

    unsigned char speed;

    private: System::IO::ports::SerialPort^ serialPort1;
    private: System::Windows::Forms::Button^ button3;
    public:

    public:

    public:

    public:

    public:

    bool can_transmit;

    protected:
    /// <summary>
    /// Clean up any resources being used.
    /// </summary>
    ~Form1()
    {
    if (components)
    {
    delete components;
    }
    }
    private: System::Windows::Forms::RadioButton^ radioButton1;
    protected:
    private: System::Windows::Forms::RadioButton^ radioButton2;
    private: System::Windows::Forms::RadioButton^ radioButton3;
    private: System::Windows::Forms::RadioButton^ radioButton4;
    private: System::Windows::Forms::GroupBox^ groupBox1;
    private: System::Windows::Forms::GroupBox^ groupBox2;
    private: System::Windows::Forms::Label^ label1;
    private: System::Windows::Forms::NumericUpDown^ numericUpDown1;
    private: System::Windows::Forms::Label^ label2;
    private: System::Windows::Forms::ComboBox^ comboBox1;
    private: System::Windows::Forms::Button^ button1;
    private: System::Windows::Forms::Button^ button2;

    private: System::ComponentModel::IContainer^ components;

    private:
    /// <summary>
    /// Required designer variable.
    /// </summary>


    #pragma region Windows Form Designer generated code
    /// <summary>
    /// Required method for Designer support - do not modify
    /// the contents of this method with the code editor.
    /// </summary>
    void InitializeComponent(void)
    {
    this->components = (gcnew System::ComponentModel::Container());
    this->radioButton1 = (gcnew System::Windows::Forms::RadioButton());
    this->radioButton2 = (gcnew System::Windows::Forms::RadioButton());
    this->radioButton3 = (gcnew System::Windows::Forms::RadioButton());
    this->radioButton4 = (gcnew System::Windows::Forms::RadioButton());
    this->groupBox1 = (gcnew System::Windows::Forms::GroupBox());
    this->groupBox2 = (gcnew System::Windows::Forms::GroupBox());
    this->label1 = (gcnew System::Windows::Forms::Label());
    this->numericUpDown1 = (gcnew System::Windows::Forms::NumericUpDown());
    this->label2 = (gcnew System::Windows::Forms::Label());
    this->comboBox1 = (gcnew System::Windows::Forms::ComboBox());
    this->button1 = (gcnew System::Windows::Forms::Button());
    this->button2 = (gcnew System::Windows::Forms::Button());
    this->serialPort1 = (gcnew System::IO::ports::SerialPort(this->components));
    this->button3 = (gcnew System::Windows::Forms::Button());
    this->groupBox1->SuspendLayout();
    this->groupBox2->SuspendLayout();
    (cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->numericUpDown1))->BeginInit();
    this->SuspendLayout();
    //
    // radioButton1
    //
    this->radioButton1->AutoSize = true;
    this->radioButton1->Location = System::Drawing::point(6, 19);
    this->radioButton1->Name = L"radioButton1";
    this->radioButton1->Size = System::Drawing::Size(63, 17);
    this->radioButton1->TabIndex = 0;
    this->radioButton1->TabStop = true;
    this->radioButton1->Text = L"Forward";
    this->radioButton1->UseVisualStyleBackColor = true;
    this->radioButton1->CheckedChanged += gcnew System::EventHandler(this, &Form1::radioButton1_CheckedChanged);
    //
    // radioButton2
    //
    this->radioButton2->AutoSize = true;
    this->radioButton2->Location = System::Drawing::point(6, 42);
    this->radioButton2->Name = L"radioButton2";
    this->radioButton2->Size = System::Drawing::Size(65, 17);
    this->radioButton2->TabIndex = 1;
    this->radioButton2->TabStop = true;
    this->radioButton2->Text = L"Reverse";
    this->radioButton2->UseVisualStyleBackColor = true;
    this->radioButton2->CheckedChanged += gcnew System::EventHandler(this, &Form1::radioButton2_CheckedChanged);
    //
    // radioButton3
    //
    this->radioButton3->AutoSize = true;
    this->radioButton3->Location = System::Drawing::point(6, 19);
    this->radioButton3->Name = L"radioButton3";
    this->radioButton3->Size = System::Drawing::Size(101, 17);
    this->radioButton3->TabIndex = 2;
    this->radioButton3->TabStop = true;
    this->radioButton3->Text = L"Micro_Controller";
    this->radioButton3->UseVisualStyleBackColor = true;
    this->radioButton3->CheckedChanged += gcnew System::EventHandler(this, &Form1::radioButton3_CheckedChanged);
    //
    // radioButton4
    //
    this->radioButton4->AutoSize = true;
    this->radioButton4->Location = System::Drawing::point(6, 42);
    this->radioButton4->Name = L"radioButton4";
    this->radioButton4->Size = System::Drawing::Size(39, 17);
    this->radioButton4->TabIndex = 3;
    this->radioButton4->TabStop = true;
    this->radioButton4->Text = L"PC";
    this->radioButton4->UseVisualStyleBackColor = true;
    this->radioButton4->CheckedChanged += gcnew System::EventHandler(this, &Form1::radioButton4_CheckedChanged);
    //
    // groupBox1
    //
    this->groupBox1->Controls->Add(this->radioButton2);
    this->groupBox1->Controls->Add(this->radioButton1);
    this->groupBox1->Location = System::Drawing::point(12, 12);
    this->groupBox1->Name = L"groupBox1";
    this->groupBox1->Size = System::Drawing::Size(119, 69);
    this->groupBox1->TabIndex = 4;
    this->groupBox1->TabStop = false;
    this->groupBox1->Text = L"Direction";
    //
    // groupBox2
    //
    this->groupBox2->Controls->Add(this->radioButton4);
    this->groupBox2->Controls->Add(this->radioButton3);
    this->groupBox2->Location = System::Drawing::point(161, 12);
    this->groupBox2->Name = L"groupBox2";
    this->groupBox2->Size = System::Drawing::Size(119, 69);
    this->groupBox2->TabIndex = 5;
    this->groupBox2->TabStop = false;
    this->groupBox2->Text = L"Control_Unit";
    //
    // label1
    //
    this->label1->AutoSize = true;
    this->label1->Location = System::Drawing::point(12, 91);
    this->label1->Name = L"label1";
    this->label1->Size = System::Drawing::Size(45, 13);
    this->label1->TabIndex = 6;
    this->label1->Text = L"Interval:";
    //
    // numericUpDown1
    //
    this->numericUpDown1->Location = System::Drawing::point(12, 107);
    this->numericUpDown1->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) {255, 0, 0, 0});
    this->numericUpDown1->Minimum = System::Decimal(gcnew cli::array< System::Int32 >(4) {1, 0, 0, 0});
    this->numericUpDown1->Name = L"numericUpDown1";
    this->numericUpDown1->Size = System::Drawing::Size(119, 20);
    this->numericUpDown1->TabIndex = 7;
    this->numericUpDown1->Value = System::Decimal(gcnew cli::array< System::Int32 >(4) {1, 0, 0, 0});
    this->numericUpDown1->ValueChanged += gcnew System::EventHandler(this, &Form1::numericUpDown1_ValueChanged);
    //
    // label2
    //
    this->label2->AutoSize = true;
    this->label2->Location = System::Drawing::point(158, 91);
    this->label2->Name = L"label2";
    this->label2->Size = System::Drawing::Size(37, 13);
    this->label2->TabIndex = 8;
    this->label2->Text = L"Mode:";
    //
    // comboBox1
    //
    this->comboBox1->FormattingEnabled = true;
    this->comboBox1->Items->AddRange(gcnew cli::array< System::Object^ >(3) {L"Full_Step", L"Half_Step", L"Micro_Step"});
    this->comboBox1->Location = System::Drawing::point(161, 107);
    this->comboBox1->Name = L"comboBox1";
    this->comboBox1->Size = System::Drawing::Size(119, 21);
    this->comboBox1->TabIndex = 9;
    this->comboBox1->SelectedIndexChanged += gcnew System::EventHandler(this, &Form1::comboBox1_SelectedIndexChanged);
    //
    // button1
    //
    this->button1->Location = System::Drawing::point(12, 144);
    this->button1->Name = L"button1";
    this->button1->Size = System::Drawing::Size(75, 23);
    this->button1->TabIndex = 10;
    this->button1->Text = L"Stopped";
    this->button1->UseVisualStyleBackColor = true;
    this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
    //
    // button2
    //
    this->button2->Location = System::Drawing::point(109, 144);
    this->button2->Name = L"button2";
    this->button2->Size = System::Drawing::Size(75, 23);
    this->button2->TabIndex = 11;
    this->button2->Text = L"Quit";
    this->button2->UseVisualStyleBackColor = true;
    this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click);
    //
    // serialPort1
    //
    this->serialPort1->DataReceived += gcnew System::IO::ports::SerialDataReceivedEventHandler(this, &Form1::serialPort1_DataReceived);
    //
    // button3
    //
    this->button3->Location = System::Drawing::point(205, 144);
    this->button3->Name = L"button3";
    this->button3->Size = System::Drawing::Size(75, 23);
    this->button3->TabIndex = 12;
    this->button3->Text = L"Reset";
    this->button3->UseVisualStyleBackColor = true;
    this->button3->Click += gcnew System::EventHandler(this, &Form1::button3_Click);
    //
    // Form1
    //
    this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
    this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    this->ClientSize = System::Drawing::Size(294, 184);
    this->Controls->Add(this->button3);
    this->Controls->Add(this->button2);
    this->Controls->Add(this->button1);
    this->Controls->Add(this->comboBox1);
    this->Controls->Add(this->label2);
    this->Controls->Add(this->numericUpDown1);
    this->Controls->Add(this->label1);
    this->Controls->Add(this->groupBox2);
    this->Controls->Add(this->groupBox1);
    this->Name = L"Form1";
    this->Text = L"Step_Motor_Controller";
    this->groupBox1->ResumeLayout(false);
    this->groupBox1->PerformLayout();
    this->groupBox2->ResumeLayout(false);
    this->groupBox2->PerformLayout();
    (cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->numericUpDown1))->EndInit();
    this->ResumeLayout(false);
    this->PerformLayout();

    }
    #pragma endregion
    private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {
    if (MessageBox::Show("Do you want to quit?","Quit",
    MessageBoxButtons::YesNo)==Windows::Forms::DialogResult::Yes)
    {
    transmit[0]=0x04;
    transmit[1]=20;
    if(serialPort1->IsOpen)
    serialPort1->Write(transmit,0,2);
    serialPort1->Close();
    Application::Exit();
    }
    }
    private: System::Void radioButton1_CheckedChanged(System::Object^ sender, System::EventArgs^ e) {
    direction=0; //0000_0000
    transmit[0]=transmit[0]&0xFD; //1111_1101 => xoa bit 2 cua transmit[0]
    transmit[0]=transmit[0]|direction; //cap nhat gia tri direction moi cho transmit[0]
    if((serialPort1->IsOpen)&&(can_transmit))
    serialPort1->Write(transmit,0,2);
    }
    private: System::Void radioButton2_CheckedChanged(System::Object^ sender, System::EventArgs^ e) {
    direction=0x02; //0000_0010
    transmit[0]=transmit[0]&0xFD; //1111_1101 => xoa bit 2 cua transmit[0]
    transmit[0]=transmit[0]|direction; //cap nhat gia tri direction moi cho transmit[0]
    if((serialPort1->IsOpen)&&(can_transmit))
    serialPort1->Write(transmit,0,2);
    }
    private: System::Void radioButton3_CheckedChanged(System::Object^ sender, System::EventArgs^ e) {
    if(radioButton3->Checked)
    {
    can_transmit=false;
    groupBox1->Enabled=false;
    button1->Enabled=false;
    numericUpDown1->Enabled=false;
    comboBox1->Enabled=false;
    control_unit=0; //0000_0000
    transmit[0]=transmit[0]&0xDF; //1101_1111 => xoa bit 3 cua transmit[0]
    transmit[0]=transmit[0]|control_unit; //cap nhat gia tri control_unit moi cho transmit[0]
    //transmit[0]=transmit[0]&0xDF;
    if(serialPort1->IsOpen)
    serialPort1->Write(transmit,0,2);
    }
    }
    private: System::Void radioButton4_CheckedChanged(System::Object^ sender, System::EventArgs^ e) {
    if(radioButton4->Checked)
    {
    can_transmit=true;
    groupBox1->Enabled=true;
    button1->Enabled=true;
    numericUpDown1->Enabled=true;
    comboBox1->Enabled=true;
    control_unit=0x20; //0010_0000
    transmit[0]=transmit[0]&0xDF; ////1101_1111 => xoa bit 3 cua transmit[0]
    transmit[0]=transmit[0]|control_unit; //cap nhat gia tri control_unit moi cho transmit[0]
    //transmit[0]=transmit[0]|0x20;
    if(serialPort1->IsOpen)
    serialPort1->Write(transmit,0,2);
    }
    }
    private: System::Void numericUpDown1_ValueChanged(System::Object^ sender, System::EventArgs^ e) {
    speed=(unsigned char) numericUpDown1->Value;
    transmit[1]=speed;
    if((serialPort1->IsOpen)&&(can_transmit))
    serialPort1->Write(transmit,0,2);
    }
    private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
    start=start ^0x01; //dao bit dau tien cua start.
    transmit[0]=transmit[0]&0xFE; //1111_1110 => xoa bit 1 cua transmit[0]
    transmit[0]=transmit[0]|start; //cap nhat gia tri start moi cho transmit[0]

    if((serialPort1->IsOpen)&&(can_transmit))
    serialPort1->Write(transmit,0,2);

    if(start)
    button1->Text="Running";
    else
    button1->Text="Stopped";
    }

    private: System::Void comboBox1_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e) {
    switch (comboBox1->SelectedIndex)
    {
    case 0:
    full_step=0x04;
    half_step=0x00;
    micro_step=0x00;
    break;
    case 1:
    full_step=0x00;
    half_step=0x08;
    micro_step=0x00;
    break;
    case 2:
    full_step=0x00;
    half_step=0x00;
    micro_step=0x10;
    break;
    default:
    break;
    }
    transmit[0]=transmit[0]&0xE3; //11100011
    transmit[0]=transmit[0]|full_step|half_step|micro_step;
    if((serialPort1->IsOpen)&&(can_transmit))
    serialPort1->Write(transmit,0,2);

    }

    private: System::Void serialPort1_DataReceived(System::Object^ sender, System::IO::ports::SerialDataReceivedEventArgs^ e) {
    if(!can_transmit)
    {
    serialPort1->Read(receive,0,2);
    Control::CheckForIllegalCrossThreadCalls=false;

    start=receive[0]&0x01;
    direction=receive[0]&0x02;
    full_step=receive[0]&0x04;
    half_step=receive[0]&0x08;
    micro_step=receive[0]&0x10;

    speed=receive[1];

    transmit[0]=start|direction|full_step|half_step|micro_step;
    transmit[1]=speed;

    /*
    phai co 2 cau lenh transmit[0]=start|direction|... va transmit[1]=speed vi
    Nhung du lieu thu duoc tu vi dieu khien phai duoc luu lai
    va khi ta thay doi tren giao dien ta chi thay doi 1 bit cua transmit[0]
    hoac ca byte transmit[1]
    Loi cu the:
    Khi dang dieu khien tu nut nhan, nhung su thay doi chi
    lam cho cac byte start, direciton,full_step,half_step,micro_step,speed thay doi,
    ma lai khong lam thay doi transmit[0],transmit[1]'
    Khi ta chuyen sang dieu khien bang PC, su kien cua radioButton4 se truyen transmit[0] xuong
    ma bay gio transmit[0]=0x04, tuc la start=0x00. Nen dong co bi dung lai
    */


    if(start)
    button1->Text="Running";
    else
    button1->Text="Stopped";

    if(direction)
    radioButton2->Checked=true;
    else
    radioButton1->Checked=true;

    if(full_step)
    comboBox1->SelectedIndex=0;

    if(half_step)
    comboBox1->SelectedIndex=1;

    if(micro_step)
    comboBox1->SelectedIndex=2;

    numericUpDown1->Value=(unsigned char) receive[1];
    }

    }
    private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) {
    transmit[0]=0x04; //truyen full_step=1
    transmit[1]=20;

    serialPort1->Write(transmit,0,2);
    radioButton1->Checked=true;
    radioButton3->Checked=true;
    comboBox1->SelectedIndex=0;
    numericUpDown1->Value=(unsigned char) 20;
    button1->Text="Stopped";

    receive[0]=0x04;
    receive[1]=20;

    start=0x00;
    direction=0x00;
    full_step=0x04;
    half_step=0x00;
    micro_step=0x00;
    control_unit=0x00;
    speed=20;
    }
    };
    }

    <span style="color:#FF0000">6.Video:</span>
    http://www.mediafire.com/?qmve5x4mzw2

    <span style="color:#FF0000">7.Kết quả đạt được, hạn chế đề tài, hướng phát triển:</span>-Mạch chạy tốt các yêu cầu: start/stop, đảo chiều, tăng giảm tốc, full_step, half_step, giao tiếp máy tính
    -Hạn chế: Mạch vẫn tồn tại một số lỗi
    +Không chạy được micro_step: (xem giải thích và cách khắc phục có thể tại file powerpoint) http://www.mediafire.com/?dyc16bo2c2f
    +Khi điều khiển bằng nút nhấn, chương trình trên PC hiển thị kết quả sai với giá trị tốc độ là 26 (chưa biết nguyên nhân)
    +Động cơ tăng giảm tốc nhanh khi đang chạy nhanh, tăng giảm tốc chậm khi đang chạy chậm
    Giải thích: Gọi n là tốc độ( interval giữa 2 bước) của động cơ. Khi tốc độ chậm (n lớn) thì khi tăng tốc (n+1) không lớn hơn nhiều so với n
    Khi tốc độ nhanh (n nhỏ) thì (n+1) lớn hơn đáng kể so với n. Ví dụ như n=1
    Hướng giải quyết: Chưa nghĩ ra

    8.Download:
    Chương trinh CodeVision: http://www.mediafire.com/?0txydy0b0uw
    Chương trình C++: http://www.mediafire.com/?b2ylyemtjmn
    Mạch orcad: http://www.mediafire.com/?x1bfsin4djy
    Trong mạch nguyên lý, bỏ đi J4, J5
    Trong mạch layout, bỏ qua cái mạch nỏ ở bên phải
    Đó là một mạch nhỏ mình vẽ thêm vào để in trên một tờ giấy cho tiết kiệm

    <span style="color:#FF0000">9.Tài liệu tham khảo:</span>
    -Datasheet Atmega16
    -Những đoạn Code do chương trình Codevision tạo ra
    -MSDN
  6. ngvanlinhqn Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    Nguyễn Văn Linh
    MSSV:05111055
    email:ngvanlinhqn@yahoo.com
    Điện thoại: 0972373465
    Tên Đề Tài:<span style="font-size:14pt;line-height:100%">Mạch Điều Khiển Mạch Đèn Giao Thông Ngã Tư</span>

    ****************************************************************
    *Yêu Cầu:
    -Thiết kế và thi công KIT ATmega32
    -Thiết kế và thi công mạch đèn giao thông ngã tư
    -Lập trình điều khiển đèn giao thông bằng ngôn ngữ CODE VISION

    * Sơ đồ mach nguyên lý:
    [IMG]
    Schematic
    *Mạch layout:
    [IMG]
    Layout
    *Lưu đồ giải thuật:
    [IMG]
    *Code: code
    *Phim: File Film
    *Kết quả,hạn chế,hướng phát triển:
    -Định hướng đề tài là có sự điều khiền với máy tính nhưng vấn đề giao tiếp máy tính chưa tốt và khả năng còn hạn chế nên
    mới chỉ dừng lại ở điều khiển cố định.
    -Hướng phát triển là :
    [IMG]
    *Download: đã có đường dẫn ở trên
    *Nguồn:Tai lieu cua nhom DSK
  7. kyking New Member

    Số bài viết: 9
    Đã được thích: 0
    Điểm thành tích: 1
    1)Họ tên:Huỳnh Kỳ Vương
    _MSSV:05111124
    _LỚP:05111124
    _EMAIL:HUYNHKYVUONG@YAHOO.COM
    SDT:097.684.684.3
    2)Tên đề tài:ĐIỀU KHIỂN ĐỘNG CƠ BƯỚC BẰNG MATLAP THÔNG QUA VI ĐIỀU KHIỂN 89S52
    [IMG]
    YÊU CẦU:GIAO TIẾP VỚI MÁY TÍNH,TỪ MÁY TÍNH CÓ THỂ XUẤT TÍN HIỆU ĐIỀU KHIỂN TÙY Ý KIỂU CHẠY CỦA ĐỘNG CƠ BƯỚC
    3)NGUYÊN LÝ HOẠT ĐỘNG:
    Chương trình matlap xuất tín hiệu qua cổng lpt đưa tín hiệu vào 89s ,89s nhận lệnh và thực hiện lệnh tương ứng trên chương trình matlap.
    4)MACH ĐIỆN:
    a)Mạch giao tiếp máy tính qua cổng lpt:
    nguyên lý:
    [IMG]
    mạch điện:
    [IMG]
    [IMG]Mạch điều khiển động cơ
    Nguyên lí:
    [IMG]
    mạch điện:
    [IMG]
    c)sơ đồ giai thuât:
    [IMG]
    [IMG]
    [IMG]
    [IMG]
    [IMG]
    4)POWERPOINT:
    http://www.mediafire.com/?sharekey=1207d7d...9ea7ecb5ae752c7
    5)CHƯƠNG TRÌNH:(ct asemly va ct matlap)
    http://www.mediafire.com/?sharekey=1207d7d...ae6fad1eb7ac258
    6)Kết quả:
    tài liêu đầy đủ:
    http://www.mediafire.com/?sharekey=1207d7d...96599958b59e867
    Fiml:
    http://www.mediafire.com/download.php?zygtqmyz3nz
    or:
    http://www.mediafire.com/?sharekey=1207d7d...3202fc910da5ce3
  8. allmylove13_9 Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    Sinh Viên: Nguyễn Minh Quang
    MSSV: 05111076
    Email: allmylove13_9@yahoo.com
    Đề tài: Dùng LM35 hiển thị trên LCD điều khiển tốc độ động cơ DC.
    Yêu cầu: điều khiển tốc độ động cơ DC để cân bằng nhiệt trong lò ấp trứng. Khi động nhiệt độ tăng thì động cơ sẽ chạy với tốc độ tỉ lệ thuận dể điều chỉnh nhiệt độ về mức cân đối.
    Đây là sơ dồ nguyên lỳ:
    [IMG]
    Mạch in:
    [IMG]
    Sơ đồ nguyên lý+mạch in: http://www.mediafire.com/?sharekey=ba59ed0...4815923e3b67f99
    File PowerPoint: http://www.mediafire.com/?sharekey=ba59ed0...4815923e3b67f99
    Chương trình: http://www.mediafire.com/?sharekey=ba59ed0...4815923e3b67f99
    Phim Video: http://www.mediafire.com/?sharekey=ba59ed0...6a3f877ba3a426a
  9. minhthanh05 New Member

    Số bài viết: 2
    Đã được thích: 0
    Điểm thành tích: 0
    .1 -Họ tên sinh viên: nguyễn minh thành
    -MSSV: 05112064
    -Email: minh_thanh158@yahoo.com
    -Điện thoại: 01683745318
    .2 -Tên đề tài thực hiện: quyet led 7 đoạn hiện mã số sinh viên sử dụng vi điều khiển at89s52
    yêu cầu:
    1. quyet được led 7 đoạn
    2. hiện chính xác mã số sinh viên
    3. thi công được mạch quyet led 7 đoạn với 8 led 7 đoạn
    4. thi công mô hình thí nghiệm với 10 led 7 đoạn ; 8 led đơn
    3. phương án thực hiện
    port 0 mang dữ liệu quyet led. port 2 quyet led
    4 -Sơ đồ mạch nguyên lý.
    [IMG]
    [IMG]
    [IMG]
    [IMG]
    5 -Lưu đồ giải thuật.
    [IMG]
    Code chương trình dạng text. :

    org 000h
    main:

    mov r5,#8
    mov 20h,#0c0h
    mov 21h,#92h
    mov 22h,#0f9h
    mov 23h,#0f9h
    mov 24h,#0a4h
    mov 25h,#0c0h
    mov 26h,#82h
    mov 27h,#99h
    mov r0,#0c0h
    lcall hienthi
    mov r0,#92h
    lcall hienthi
    mov r0,#0f9h
    lcall hienthi
    mov r0,#0f9h
    lcall hienthi
    mov r0,#0a4h
    lcall hienthi
    mov r0,#0c0h
    lcall hienthi
    mov r0,#82h
    lcall hienthi
    mov r0,#99h
    lcall hienthi
    chop:
    mov r6,#80
    lcall hton
    djnz r5,chop
    mov r5,#10



    jmp main
    hienthi:
    lcall delay2
    mov a,#11111110b

    mov p0,r0
    ht:
    mov p2,a
    lcall delay3

    mov p2,#00h

    rl a

    cjne a,#11111110b,ht
    ret
    hton:
    mov a,#11111110b


    mov r0,#20h
    ht1:
    mov p0,@r0
    mov p2,a
    lcall delay1

    mov p2,#0ffh
    inc r0
    rl a
    cjne r0,#28h,ht1
    djnz r6,hton
    mov r6,#100
    hton1:
    mov p2,#0ffh
    lcall delay1
    djnz r6,hton1
    ret
    delay3:
    mov tmod,#0000001b
    mov r7,#5
    loop:
    mov th0,#high(-50000)
    mov tl0 ,#low (-50000)
    setb tr0
    jnb tf0,$
    clr tf0
    clr tr0
    djnz r7,loop
    ret

    delay2:
    mov 55h,#10
    del1: mov 54h,#0ffh
    djnz 54h,$
    djnz 55h,del1
    ret
    delay1:
    MOV 7FH,#200
    DJNZ 7FH,$
    RET
    end


    6 Hình ảnh hoặc đoạn phim ngắn mô tả về mô hình đã thi công khi đang hoạt động
    http://www.mediafire.com/?3mgzbmdormm
    7. Hạn chế và hướng phát triển:
    hạn chế:
    thi công mạch còn xấu
    chương trình hiển thj chưa phong phú
    muốn hiển thị mã số sinh siên khác phải sửa lại chương trình
    ưu điểm:
    thi công được một mạch có thể dùng để làm thí nghiệm vi điều khiển
    hướng phát triển
    sử dụng bàn phím đánh mã số sinh viên và được thể hiện ra trên led 7 đoạn
    8. download code chương trinh
    http://www.mediafire.com/?eydmmnnzdbt
    9. tài liệu tham khảo
    1. họ vi điều khiển 8051 - tống văn on
    2. www.codientu.info
  10. nguyen sinh New Member

    Số bài viết: 16
    Đã được thích: 0
    Điểm thành tích: 0
    1. Tên
    NGUYỄN THẾ SINH MSSV 05111082 ĐT:01689660922, nguyenthesinh_ts@yaoo.com
    TỪ MINH TÁNH MSSV 05111084 ĐT: 01699983056
    2. ĐỀ TÀI: THIẾT KẾ VÀ ĐIỀU KHIỂN MODULE QUANG BÁO 3 MÀU 8X16
    Sử dụng IC ghi dịch 16 bit MBI5026, ưu điểm đáp ứng tần sô nhanh và dòng không đổi
    3. Sơ đồ nguyên lý,và layout
    [IMG]
    [IMG]
    [IMG]
    [IMG]
    [IMG]
    [IMG]
    [IMG]
    4. Lưu đồ
    [IMG]
    5. code
    http://www.esnips.com/doc/785e1d4d-7e83-45...5b/chuong-trinh
    5. video
    http://www.esnips.com/doc/29b94224-528b-4f...a0ec7e/MOV00204
    6. Hướng phát triển: Kết hợp IC chuyên dùng để thiết kế màn hình led
    CẢM ƠN MỌI NGƯỜI ĐÃ QUAN TÂM, XIN ĐƯỢC ĐÓNG GÓP Ý KIẾN!!!
  11. mt_nhomaimotnguoi Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    Họ tên: Sơn Minh Tuấn
    MSSV: 05111114
    Email: mt_nhomaimotnguoi@yahoo.co.uk

    1). Đề tài: ĐỒNG HỒ SỐ
    2). Yêu cầu đề tài: Hiển thị: thứ, ngày- tháng- năm, giờ- phút- giây và báo thức
    3). Sơ đồ nguyên lý:
    [IMG]
    4). file power point:
    http://www.mediafire.com/?sharekey=ba59ed0...00ec1ad509d95cd
    5). Code chương trình:

    http://www.mediafire.com/?sharekey=ba59ed0...00ec1ad509d95cd
    6). Video clip:
    http://www.mediafire.com/?sharekey=ba59ed0...00ec1ad509d95cd

    Trong quá trình thực còn nhiều thiếu sót mong thầy và các bạn giúp đỡ thêm. Cám ơn rất nhiều
    Happy new year!!!!!!!!!!!!!!!
  12. phantrunghieu Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    1.Họ va tên : Phan Trung Hiếu
    MSSV : 05111033
    Email : trunghieu_pth2005

    2.Đề tài : GIAO TIẾP I2C DS1307 VỚI VI ĐIỀU KHIỂN ATMEGA 32

    Yêu cầu : -Đọc thời gian và ngày tháng năm từ DS1307 và hiển thị lên LCD.
    - Xử lý nút nhấn-Hẹn giờ báo thức (kích chuông reo,nhấn nút tắt chuông)

    4.Sơ đồ mạch nguyên lý:
    [IMG]
    và mạch in
    [IMG]

    http://www.mediafire.com/?sharekey=ba59ed0...fdb695e5323d8fc
    5. Code : http://www.mediafire.com/?sharekey=ba59ed0...fdb695e5323d8fc
    Lưu đồ giải thuật:
    [IMG]
    6. File Video: http://www.mediafire.com/?sharekey=ba59ed0...fdb695e5323d8fc
    7. File PowerPoint: http://www.mediafire.com/?sharekey=ba59ed0...fdb695e5323d8fc
  13. luffy_1987 Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    2.1 -Họ tên sinh viên: Nguyễn Quốc Lĩnh
    -MSSV: 05112040
    -Email: linhnguyenhx@gmail.com
    -Điện thoại: 0937022162

    2.2 -Tên đề tài thực hiện: <span style="font-size:24pt;line-height:100%"> GIAO TIẾP VI ĐIỀU KHIỂN HỌ AT89S VỚI LCD</span>
    -Mô tả vấn tắt các yêu cầu cần giải quyết: Hiện chữ " NGUYEN QUOC LINH ''
    ''05112040_CNTD "
    THEO KIỂU ĐÁNH MÁY TRÊN LCD ( 2 DÒNG ).


    2.3 -Các phương án có thể lựa chọn, ưu điểm của từng phương án.
    - Có 2 phương án đặt ra là:
    + Phương án 1:Viết chương trình và làm phần cứng theo chế độ mode 8bit.
    +Phương án 2: Viết chương trình và làm phần cứng theo chế độ mode 4bit.
    -ưu nhược của tửng phương án:
    + phướng án 1 (mode 8bit) ưu điểm là chương trình viết đơn giản hơn, nhưng nhược điểm là tốn port điều khiển.
    +Phương án 2 (mode 4bit) ưu điêm là tiết kiệm được port điều khiển, nhược điểm là chương trình phức tạp hơn
    -Phương án lựa chọn giải quyết trong đề tài.
    - Phương án chọn trong đề tài là phương án 1 (mode 8bit)
    2.4 -Sơ đồ mạch nguyên lý:
    Ở đây mình chỉ đưa cho các bạn sơ đồ nguyên lý của module
    [IMG]
    -Sơ đồ mạch layout.
    [IMG]

    2.5 -Lưu đồ giải thuật.
    [IMG]
    [IMG]
    [IMG]
    <span style="color:#00FF00"> -Code :
    KHOI TẠO CHO L

    khoitao:
    ;power on delay40ms

    LCALL delay41ms
    CD:




    mov r1,#38h ;function set ( KHOI TAO 2 HÀNG, MAU KI TU LÀ 5X8)
    lcall write_command

    mov r1,#0eh ;display on ( KHOI TAO BAT MAN HINH,LAM CON TRO CHAY TU PHAI QUA TRAI)

    lcall write_command

    mov r1,#01h ;display clear
    lcall write_command
    lcall delay41ms



    mov r1,#06h ;entry mode set
    lcall write_command

    mov r1,#80h ;set ddram 0h
    CODE QUY ĐỊNH CHO LCD GỬI TÍN HIỆU ĐIỀU KHIỂN:
    .......
    wirte_command:
    clr rs ; XÓA RS QUY ĐỊNH LCD ĐANG GỬI DỮ LIEU
    clr rw ; QUY ĐỊNH LCD GHI DỮ LIỆU
    mov p2,r1
    SETB E
    clr E ; tao xung cho lcd hoat dong
    ret
    ........
    CODE: QUY DỊNH CHO LCD GỬI DỮ LIỆU:
    ..........
    write_data:
    SETB RS ; QUY ĐỊNH LCD GUI DU LIỆU
    CLR RW
    MOV P2,R1
    SETB E
    CLR E
    RET
    .............
    CODE : LCD GUI DỮ LIỆU:
    ...............
    mov r1,#08H
    mov r1,#'N' ;dong 1
    lcall write_data
    .............
    mov r1,#0c0h ; DONG 2
    mov r1,#'0'
    lcall write_data
    ..............
    </span>




    2.6 Hình ảnh hoặc đoạn phim ngắn mô tả về mô hình đã thi công khi đang hoạt động
    -Hình ảnh của mô hình:
    [IMG]
    [IMG]
    -clip
    doan phim

    2.7 Kết quả đạt được, hạn chế của đề tài và phương hướng phát triển.
    -Kết quả đạt được:
    + lcd đã làm việc đúng như yêu cầu
    + biết được data_sheet cũng như phương thức hoat động của lcd
    -hạn chế:
    + chỉ ứng dụng được việc hiển thị chữ chưa làm đựơc các hiệu ứng đẹp hơn
    - Hứơng phát triển:
    + viết theo kieu mode 4bit
    + giao tiếp lcd với máy tính, hoặc phím ma trận tạo giao diện người dùng
    + đồng hồ thời gian thực kết hợp với lcd
    2.8 Download: code chương trình ( file *.asm hoặc *.c), file mạch điện
    machdien
    chuongtrinh

    2.9 Các nguồn tài liệu theo tác giả là có giá trị nhất trong khi làm đề tài : trang web, ebooks, link download....

    tailieu
  14. TanThi Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
  15. thanhkiem Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    1) Họ tên sinh viên: Huỳnh Quốc Thái
    MSSV: 03111125
    Email: avanbiet@gmail.com
    Điện thoại: 0908635565

    2) Tên đề tài thực hiện: ĐIỀU KHIỂN ĐIỀU KHIỂN LED 7 ĐOẠN THEO PP TIẾT KIỆM PORT
    - Mô tả các yêu cầu cần giải quyết:
    Dùng 2 IC 74HC595 để tiết kiệm port điều khiển hiển thị led 7 đoạn và led đơn.
    3) Phương án thực hiện:
    Dùng 1 IC 74HC595 điều khiển hiển thị led 7 đoạn nối tiếp với 1 IC cùng loại điều khiển 8 led đơn.
    4) File báo cáo:
    Do em báo cáo đợt 1 nên bây giờ em mới biết phải nộp file qua mạng.Em đã về quê và chỉ có đem theo file báo cáo Word và mô phỏng Proteus mà thôi. Mong thầy bỏ qua cho sự thiếu sót này.
    Mô phỏng proteus:
    http://www.mediafire.com/?stionsmzezi
    File báo cáo:
    http://www.mediafire.com/?kzjjozfxnhj
  16. hthanhanh Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    1.HỌ VÀ TÊN: HUỲNH THÀNH ẢNH
    MSSV: 05112001
    EMAIL: hthanhanh@yahoo.com
    ĐIỆN THOẠI: 0938388864
    2.TÊN ĐỀ TÀI: GIÀN PHƠI ĐỒ THÔNG MINH
    YÊU CẦU CẦN GIẢI QUYẾT CỦA ĐỀ TÀI:
    NHẬN BIẾT CHÍNH XÁC KHI TRỜI CÓ MƯA
    TỰ ĐỘNG KÉO MÁI CHE ĐỂ CHE QUẦN ÁO KHI TRỜI CÓ MƯA
    TỰ ĐỘNG KÉO MÁI CHE VỀ VỊ TRÍ BAN ĐẦU ĐỂ TIẾP TỤC PHƠI QUẦN ÁO KHI TRỜI HẾT MƯA
    TRONG KHI TRỜI MƯA CẢM BIẾN VẪN NHẬN BIẾT ĐƯỢC LÀ TRỜI ĐANG MƯA ĐỂ MÁI CHE VẪN Ở VỊ TRÍ CHE QUẦN ÁO
    3.PHƯƠNG ÁN GIẢI QUYẾT
    CƠ KHÍ NHƯ SAU:
    [IMG]
    ĐIỆN TỬ:
    MẠCH GỒM MỘT CON VĐK 89S52 DÙNG ĐỂ ĐIỀU KHIỂN ĐỘNG CƠ
    MẠCH NGUỒN
    MẠCH CẢM BIẾN MƯA
    BAN ĐẦU MẠCH CẢM BIẾN MƯA EM ĐỊNH SỬ DỤNG TINH THỂ ÁP ĐIỆN TẠO TÍN HIỆU CHO VĐK ĐIỀU KHIỂN ĐỘNG CƠ KHI NHẬN BIẾT ĐƯỢC TRỜI MƯA. NHƯNG TINH THỂ ÁP ĐIỆN HAY BỊ NHIỄU KHI BỊ MỘT TÁC ĐỘNG NHỎ NHƯ LÀ GIÓ CHẲNG HẠN NÊN EM ĐÃ DÙNG MẠCH CẢM BIẾN MƯA ĐƯỢC TÌM THẤY TRÊN MẠNG. ĐÂY LÀ MẠCH CẢM BIẾN MƯA
    [IMG]
    ƯU ĐIỂM CỦA MẠCH LÀ NHẬN BIẾT TRỜI MƯA CHÍNH XÁC HƠN
    4.SƠ ĐỒ NGUYÊN LÝ
    [IMG]
    MẠCH NGUỒN
    [IMG]
    [IMG]
    [IMG]
    SƠ ĐỒ LAYOUT
    [IMG]
    5.LƯU ĐỒ GIẢI THUẬT
    [IMG]
    CODE CHƯƠNG TRÌNH:
    dchieu bit p0.0 ;bit de dao chieu dong co
    dco bit p0.1 ;bit cho dong co chay
    cbmua bit p2.0 ;khi co mua bit nay len 1
    chayra bit p2.1 ;nut nhan dk mai che chay ra khi can dk bang tay
    chayvao bit p2.2 ;nut nhan dk mai che chay ve khi can dk bang tay
    stopra bit p3.2 ;ctht khi mai che chay ra dung cu
    stopvao bit p3.3 ;ctht khi mai che chay vao dung cu

    ;*******************************************************************************
    ****************************
    ORG 000h
    mov p0,#0ffh
    main: mov a,#0
    jnb cbmua,kiemtra
    jnb chayra,ctchayra
    jnb chayvao,ctchayvao
    jmp main
    kiemtra: jb cbmua,main
    mov r1,#50
    kt: jb cbmua,main
    djnz r1,kt
    inc a
    call delay1s
    cjne a,#3,kiemtra
    mov a,#0
    lcall ctchayra
    lcall delay15s
    lcall kiemtra2
    ret
    kiemtra2: jnb cbmua,main
    mov r1,#50
    kt2: jnb cbmua,main
    djnz r1,kt2
    inc a
    call delay1s
    cjne a,#3,kiemtra2
    mov a,#0
    lcall ctchayvao
    lcall delay15s
    lcall kiemtra
    ret



    ctchayra: clr dco ;dk dco chay
    jb stopra,$ ;cho den khi dung ctht thi dung lai
    setb dco ;tat dongco
    ret

    ctchayvao: clr dchieu ;set bit dao chieu de dco chay vao
    clr dco ;;cho dc chay vao
    jb stopvao,$ ;;cho den khi dung ctht trong thi ngung lai
    setb dco ;TAT DONG CO
    setb dchieu ;TAT BIT DAO CHIEU
    ret

    delay1s: mov tmod,#00000001b
    mov r7,#20
    loop: mov th0,#high(-50000)
    mov tl0,#low(-50000)
    setb tr0
    jnb tf0,$
    clr tr0
    clr tf0
    djnz r7,loop
    RET

    delay15s: mov tmod,#00010000b
    mov r6,#300
    del2: mov th1,#high(-50000)
    mov tl1,#low(-50000)
    setb tr1
    jnb tf1,$
    clr tr1
    clr tf1
    djnz r6,del2

    RET
    END
    6.MỘT SỐ HÌNH ẢNH VỀ ĐỀ TÀI:
    SẢN PHẨM THỰC TẾ
    [IMG]
    [IMG]
    HÌNH ẢNH VỀ ĐỀ TÀI:
    [IMG]
    [IMG]
    [IMG]
    [IMG]
    [IMG]
    [IMG]
    7.KẾT QUẢ ĐẠT ĐƯỢC:
    THIẾT KẾ THI CÔNG CƠ KHÍ CỦA GIÀN PHƠI ĐỒ
    VẼ ĐƯỢC NGUYÊN LÝ VÀ LAYOUT CỦA MẠCH ĐIỆN
    VIẾT CHƯƠNG TRÌNH CHO VĐK
    HẠN CHẾ CỦA ĐỀ TÀI
    CHỈ LÀ MÔ HÌNH KHÔNG ỨNG DỤNG ĐƯỢC THỰC TẾ
    Ý TƯỞNG CÒN NGHÈO VÀ THIẾU TÌM HIỂU THỰC TẾ
    CHƯƠNG TRÌNH CHƯA TỐI ƯU
    8.DOWNLOAD CODE VÀ FILE MẠCH ĐIỆN
    http://www.mediafire.com/download.php?moyyimymny2
    http://www.mediafire.com/download.php?jumgtzmj3fn
    http://www.mediafire.com/download.php?r2wynz2jmam
    9.NGUỒN TÀI LIỆU THAM KHẢO
    CHỦ YẾU LÀ SÁCH VI ĐIỀU KHIỂN CỦA TỐNG VĂN ON VÀ MỘT SỐ TRANG WED NHƯ:
    http://www.vnexpress.net/GL/Khoa-hoc/2003/03/3B9C5F0A/
    http://gianphoi.com/gian-phoi-tp-hcm/gian-phoi-dien-tu.php
    XIN CHÂN THÀNH CẢM ƠN THẦY VÀ CÁC BẠN ĐÃ XEM BÀI BÁO CÁO CỦA EM. CHÚC MỌI NGƯỜI NĂM MỚI SỨC KHỎE VÀ ĐỀU QUA MÔN NÀY.
  17. neoking Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    1)-Họ tên sinh viên:Nguyễn Lê Cao Vương
    -MSSV:05111125
    -Email:men_in_black5154@yahoo.com
    -Điện thoại:0908816223

    2)-đề tài : cảm biến nhiệt hiển thị trên máy tính
    [IMG]
    -các yêu cầu cần giải quyết:
    +đề tài gồm 3 module:mạch nguồn +mạch khuếch đại+bộ kit ATmega32.
    +mạch nguồn để tạo nguồn âm dương cấp cho mạch khuếch đại và cho bộ kit.
    +mạch khuếch đại dùng để khuếch đại tín hiệu của cảm biến nhiệt LM35.
    +bộ kit Atmega32 sử lý tín hiệu của mạch khuếch đại và truyền lên máy tính.
    +trên máy là chương trình nhận tính hiệu truyền của VDK.
    3)phương pháp điều khiển:
    +sử dụng ADC đọc tín hiệu của mạch khuếch đại.
    +sử dụng UART truyền tính hiệu lên máy tính
    +khi truyền tín hiệu lên thì tín hiệu sẽ được đọc bằng chương trình VB.net
    4)Sơ đồ mạch nguyên lý:
    +mạch khuếch đại:
    [IMG]
    [IMG]
    +mạch nguồn:
    [IMG]
    [IMG]
    (các hình trên chỉ mô tả sơ bộ các bạn nếu có nhu cầu thì xin down ở phần link mình để ở dưới hay gửi mail cho mình mình sẽ gửi cho)
    5)
    + lưu đồ giải thuật:
    [IMG]
    +code chương trình:
    sau khi khởi tạo ADC,UART thi ta viết sau:
    interrupt [TIM1_OVF] void timer1_ovf_isr(void)
    {
    // Reinitialize Timer 1 value
    float result=0,tong=0;
    int i = 0;
    TCNT1H=0xF6;
    TCNT1L=0x3B;
    dem++;
    if(dem==100)
    {

    for (i=0;i<10;i++)
    {
    adc=read_adc(2);
    tong+=adc;
    }
    dem=0;
    delay_ms(10);
    result=tong/10;
    PORTC=truyenso=result/10.23;
    delay_ms(10);
    ftoa(truyenso,1,truyenchuoi);
    puts(truyenchuoi);

    }
    // Place your code here
    }
    6)link down file powerpoint
    7)Schematic+layout+code(code vision + code VB.net)
    8)video
    9)hạn chế:
    +mạch to chưa làm gọn lại
    10)các wed tham khảo:
    http://www.instructables.com
    http://www.electronics-lab.com
    http://www.docstoc.com
  18. uthai Member

    Số bài viết: 59
    Đã được thích: 0
    Điểm thành tích: 6
    1. Sinh viên thực hiện
    Trần Quốc Hải
    MSSV: 05111028
    Email :quochai_spk051111@yahoo.com
    Dt: 0906512377

    Võ Trung Chánh
    MSSV: 05111007
    Email :trungchanh108@yahoo.com
    Dt: 0933292037

    2. Tên đề tài : sử dụng VDK ARM7 làm remote điều khiển các thiết bị trong nhà.
    3. Các vấn đề giải quyết trong đề tài.
    3.1 Phần phát.
    - Giao tiếp MCU ARM7(LPC2148) với màn hình màu LCD NOKIA 6100.
    - Giao tiếp MCU ARM7(LPC2148) với màn hình cảm ứng qua ADS7843.
    - Giao tiếp MCU ARM7(LPC2148) với module RF để phát tín hiệu điều khiển.
    3.2 Phần nhận.
    - Giao tiếp MCU ARM7(LPC2148) với module RF để nhận tín hiệu điều khiển.
    - Giao tiếp MCU ARM7(LPC2148) với mạch công suất để điều khiển thiết bị.
    4.hình ảnh board:
    4.1 nguyên lý board MCU:

    [IMG]

    4.2 layout board MCU:

    [IMG]

    4.3 nguyên lý board màn hình:

    [IMG]

    4.4 layout board màn hình:

    [IMG]


    5. code chương trình chính:
    #include "LPC214x.H"
    #include "lcd_pcf8833.h"
    #include "TOUCH.h"
    #include <math.h>
    #include <stdio.h>
    #include "welcom.h"
    #include "logo.h"
    #include "nxp.h"
    #include "lcd.h"
    #include "fan1.h"
    #include "fan2.h"
    #include "fan3.h"
    #include "lightmenu.h"
    #include "light2.h"
    #include "light3.h"
    #include "current.h"
    #include "window.h"
    #include "introduction.h"
    #include "unities.h"
    #include "on.h"
    #include "off.h"
    #include "home.h"
    #include "hcm.h"

    //---------
    struct Point* coord;
    char mystr[11];
    //int x2,y2 ;
    //int b = 0;

    int main(void){

    // unsigned long j;

    int TempColor[11] = { WHITE, BLACK, RED, GREEN, BLUE, CYAN, MAGENTA,
    YELLOW, BROWN, ORANGE, PINK };
    char *TempChar[11] = { "White", "Black", "Red", "Green", "Blue", "Cyan",
    "Magenta", "Yellow", "Brown", "Orange", "Pink" };

    int Vitri[16] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 };
    char *TempName[16] = {'.','0','=','+','1','2','3','-',
    '4','5','6','x','7','8','9','/'};

    Backlight(BKLGHT_LCD_ON);
    init_serial1();
    InitSpi();
    InitLcd();
    //***************** Load Main Menu *********************
    LCDClearScreen(BLACK);
    LCDWrite130x130bmp(welcom,sizeof(welcom),0,0,132,132);
    Delay(9000000);
    LCDWrite130x130bmp(nxp,sizeof(nxp),40,0,37,132);
    Delay(9000000);
    LCDClearScreen(WHITE);
    LCDWrite130x130bmp(introduction,sizeof(introduction),10,5,40,40);
    LCDWrite130x130bmp(lightmenu,sizeof(lightmenu),50,5,40,40);
    LCDWrite130x130bmp(unities,sizeof(unities),90,5,40,40);
    LCDPutStr("Main menu",123,40,SMALL,BLUE,YELLOW);
    LCDPutStr("CONTROL UNITS",55,50,SMALL,MAGENTA,WHITE);
    LCDPutStr("INTRODUCTION",98,50,SMALL,MAGENTA,WHITE);
    LCDPutStr("UNITIES",15,50,SMALL,MAGENTA,WHITE);
    TOUCH_init();
    // Initial External Interrupt-3(GPIO0.30)
    EXTMODE = 0x00; // Select External Interrupt-3 = Edge Select Trigger
    EXTPOLAR = 0x00; // Select External Interrupt-3 = Falling Edge Trigger
    PINSEL1 |= 0x20000000; // Set GPIO0.30 = EXTINT3 Interrupt
    EXTINT |= 0x00000008; // Clear External Interrupt-3 Flag

    // Initial Interrupt Vector
    VICDefVectAddr = (unsigned)NonVectoredIRQ; // Set Non-Vector Interrupt Service Routine
    VICIntEnable |= 0x00020000; // Enable External Interrupt-3

    while(1);
    }

    //******************** float to string ********************
    float _fround[6]={0.49,0.05,0.005,0.0005,0.00005,0.000005};
    void ftoa(float n,unsigned char decimals,char *str)
    {
    float scale;
    unsigned char i,d;
    if (n<0.0) {n=-n; *str++='-';};
    if (decimals>5) decimals=5;
    n=n+_fround[decimals];
    i=0;
    scale=1.0;
    while (n>=scale) {scale=scale*10.0; ++i;};
    if (i==0) *str++='0';
    else
    while (i--)
    {
    scale=floor(0.5+scale/10.0);
    d=(unsigned char) (n/scale);
    *str++=d+'0';
    n=n-scale*d;
    };
    if (decimals==0) {*str=0; return;};
    *str++='.';
    while (decimals--)
    {
    n=n*10.0;
    d=(unsigned char) n;
    *str++=d+'0';
    n=n-d;
    };
    *str=0;
    }
    //******************** int to string **************
    void ltoa(long int n,char *str)
    {
    unsigned int i;
    unsigned char j,p;
    i=1000000000L;
    p=0;
    if (n<0)
    {
    n=-n;
    *str++='-';
    };
    do
    {
    j=(unsigned char) (n/i);
    if (j || p || (i==1))
    {
    *str++=j+'0';
    p=1;
    }
    n%=i;
    i/=10L;
    }
    while (i!=0);
    *str=0;
    }


    /********************************/
    /* External Interrupt-1 Service */
    /********************************/
    void NonVectoredIRQ (void) __irq
    {
    // External-3 Interrupt Serivce //
    unsigned int x;
    unsigned int y;
    int c=0 ;
    int c1=0;
    int c21=0;
    int c41=0;
    int c42=0;
    int a=0,Esc=0,d = 0 ,n=0;
    int a1=0,Esc1=0,d1=0,n1=0;
    int a33=0,Esc33=0,d33=0,n33=0;
    int a32=0,Esc32=0,d32=0,n32=0;
    int a31=0,Esc31=0,d31=0,n31=0;
    int a41=0,Esc41=0,d41=0,n41=0;
    int a42=0,Esc42=0,d42=0,n42=0;
    int Vitri[16] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 };
    char *TempName[16] = {'.','0','=','+','1','2','3','-',
    '4','5','6','x','7','8','9','/'};
    int PutColor[8] = { RED,BLUE,YELLOW, PINK,BLACK,GREEN,ORANGE,WHITE };

    while (1)
    {

    if (VICIRQStatus & 0x00020000)
    {
    coord=TOUCH_get_coord ();
    x = (*coord).x;
    y = (*coord).y;

    if ((x != OOB ) && (y != OOB))
    {
    if ((d == 0)&&(c==0))
    {
    //****************** Main Menu WaitBit *****************************
    //====================================================
    if ((x > 0) && (y > 0 )&&(x < 43 ) && (y < 131 ))
    {
    a = 1 ;
    Esc = 1 ;
    d = 1;
    }
    if ((x > 44) && (y > 0 )&&(x < 87 ) && (y < 131 ))
    {
    a = 2 ;
    Esc = 1 ;
    d = 1 ;
    d1=0;
    }
    if ((x > 88) && (y > 0 )&&(x <120 ) && (y < 131 ))
    {
    a = 3 ;
    Esc =1 ;
    d = 1 ;
    }

    if ((x >110 ) && (y > 110 )&&(x < 131 ) && (y < 131 ))
    {
    Esc = 0 ;
    a = 0 ;
    d = 0;
    }

    //****************** Main Menu Action *****************************
    if ((a == 0)&&(Esc==0)&&(c==0)&&(c1==0))
    {
    LCDClearScreen(WHITE);
    LCDWrite130x130bmp(introduction,sizeof(introduction),10,5,40,40);
    LCDWrite130x130bmp(lightmenu,sizeof(lightmenu),50,5,40,40);
    LCDWrite130x130bmp(unities,sizeof(unities),90,5,40,40);
    LCDPutStr("INTRODUCTION",98,50,SMALL,MAGENTA,WHITE);
    LCDPutStr("CONTROL UNITS",55,50,SMALL,MAGENTA,WHITE);
    LCDPutStr("UNITIES",15,50,SMALL,MAGENTA,WHITE);
    LCDPutStr("Main menu",123,40,SMALL,BLUE,YELLOW);
    }
    if ((a == 2)&&(Esc==1)&&(c==0)&&(c1==0))
    {
    LCDClearScreen(WHITE);
    LCDWrite130x130bmp(fan1,sizeof(fan1),10,5,40,40);
    LCDWrite130x130bmp(lightmenu,sizeof(lightmenu),50,5,40,40);
    LCDWrite130x130bmp(lcd,sizeof(lcd),92,5,28,40);
    LCDPutStr("LIGHT",55,50,SMALL,MAGENTA,WHITE);
    LCDPutStr("FAN",98,50,SMALL,MAGENTA,WHITE);
    LCDPutStr("OTHER UNITS",15,50,SMALL,MAGENTA,WHITE);
    LCDPutStr("CONTROL UNITS",120,37,SMALL,MAGENTA,WHITE);
    LCDWrite130x130bmp(home,sizeof(home),0,119,12,12);
    n1=1;
    }

    if (( a == 3 )&&( Esc == 1 )&&(c==0)&&(c1==0))
    {
    LCDClearScreen(WHITE);
    LCDWrite130x130bmp(hcm,sizeof(hcm),0,0,132,132);
    Delay(10000000);
    LCDClearScreen(WHITE);
    LCDWrite130x130bmp(logo,sizeof(logo),0,0,132,132);
    Delay(10000000);
    LCDClearScreen(WHITE);
    // LCDWrite130x130bmp(nxp,sizeof(nxp),40,0,37,132);
    LCDPutStr("UNIVERSAL",75,30,LARGE,MAGENTA,WHITE);
    LCDPutStr("REMOTE",58,35,LARGE,MAGENTA,WHITE);
    LCDSetCircle(124,123,4,RED);
    }
    if (( a == 1 )&&( Esc == 1 )&&(c==0)&&(c1==0))
    {
    LCDClearScreen(WHITE);
    PanelPaint ();
    LCDSetCircle(124,123,4,RED);
    }

    }
    //**********************Actions Submenu***************************
    if ((d != 0)&&(c==0)&&(c1==0))
    {
    if(( a == 1 )&&( Esc == 1 )&&(c==0)&&(c1==0)) // *********Submenu1 Paint Menu
    {
    while ((x>=108)&&(x<=117))
    {
    if ((x>=108)&&(x<=117)&&(y>=0)&&(y<=14))
    { n = 0;}
    if ((x>=108)&&(x<=117)&&(y>=15)&&(y<=24))
    { n = 1;}
    if ((x>=108)&&(x<=117)&&(y>=26)&&(y<=35))
    { n = 2;}
    if ((x>=108)&&(x<=117)&&(y>=37)&&(y<=46))
    { n = 3;}
    if ((x>=108)&&(x<=117)&&(y>=48)&&(y<=57))
    { n = 4;}
    if ((x>=108)&&(x<=117)&&(y>=59)&&(y<=68))
    { n = 5;}
    if ((x>=108)&&(x<=117)&&(y>=71)&&(y<=80))
    { n = 6;}
    if ((x>=108)&&(x<=117)&&(y>=82)&&(y<=91))
    { n = 7;}

    LCDSetRect(110, 121, 117, 128, FILL, PutColor[n]);
    break ;
    }

    if ((x >4 ) && (y > 4 )&&(x < 107 ) && (y < 127 ))
    {
    LCDSetPixel(x,y,PutColor[n]);
    Delay(40000);
    }
    if ((x >118 ) && (y > 60 )&&(x < 125 ) && (y < 125 ))
    {
    LCDSetRect(4,4,106,127,FILL,WHITE);
    }

    if ((x >100 ) && (y > 67 )&&(x < 200 ) && (y < 131 ))
    {
    Esc = 0 ;
    a = 0 ;
    d = 0;
    c=0;
    }
    }

    if(( a == 3 )&&( Esc == 1 )&&(c==0)&&(c1==0)) //*********Submenu2 button menu
    {
    if ((x >110 ) && (y > 110 )&&(x < 131 ) && (y < 131 ))
    {
    Esc = 0 ;Esc1=0;Esc31=0;Esc41=0;
    a = 0 ;a1=0;a31=0;a41=0;
    c1=0;c=0;c21=0;c41=0;
    n1=0;n31=0;n41=0;
    d41=0;d =0;d1=0;d31=0;

    }
    }
    ////////////////////////lop thu 2/////////////////////////
    if(( a == 2 )&&( Esc == 1 )&&(c==0)&&(c1==0)) //*********Submenu3 button menu
    {
    n1=1;
    c1=0;
    c=1;
    if ((x >110 ) && (y > 110 )&&(x < 131 ) && (y < 131 ))
    {
    Esc = 0 ;Esc1=0;Esc31=0;Esc41=0;
    a = 0 ;a1=0;a31=0;a41=0;
    c1=0;c=0;c21=0;c41=0;
    n1=0;n31=0;n41=0;
    d41=0;d =0;d1=0;d31=0;
    }
    else {n1=1;}

    Delay(10000);
    EXTINT = 0x00000008;
    VICVectAddr = 0x00000000; //chu y chu y
    while (n1==1)
    {
    // khoa man hinh ngoai
    c=1;
    /////////////////////////////////
    if ((VICIRQStatus & 0x00020000)&&(c==1))
    {
    coord=TOUCH_get_coord ();
    x = (*coord).x;
    y = (*coord).y;

    if ((x != OOB ) && (y != OOB)&&(c==1))
    {
    if ((d1 == 0)&&(c1==0)&&(c==1))
    {
    //****************** Main Menu WaitBit *****************************
    //====================================================
    if ((x > 0) && (y > 0 )&&(x < 43 ) && (y < 120 ))
    {
    a1 = 1 ;
    Esc1 = 1 ;
    d1 = 1 ;
    n1=1;
    }
    if ((x > 44) && (y > 0 )&&(x < 87 ) && (y < 120 ))
    {
    a1 = 2 ;
    Esc1 = 1 ;
    d1 = 1 ;
    n1=1;
    }
    if ((x >88) && (y > 0 )&&(x < 120 ) && (y < 120 ))
    {
    a1 = 3 ;
    Esc1 =1 ;
    d1 = 1 ;
    n1=1;
    }

    if ((x >110 ) && (y > 110 )&&(x < 131 ) && (y < 131 ))
    {
    Esc = 0 ;Esc1=0;Esc31=0;Esc41=0;
    a = 0 ;a1=0;a31=0;a41=0;
    c1=0;c=0;c21=0;c41=0;
    n1=0;n31=0;n41=0;
    d41=0;d =0;d1=0;d31=0;
    }

    //****************** Main Menu Action *****************************

    if ((a1 == 3)&&(Esc1==1)&&(c==1)&&(c1==0))
    {
    LCDClearScreen(WHITE);
    LCDWrite130x130bmp(fan1,sizeof(fan1),10,5,40,40);
    LCDWrite130x130bmp(fan2,sizeof(fan2),50,5,40,40);
    LCDWrite130x130bmp(fan3,sizeof(fan3),92,5,40,40);
    LCDPutStr("Fan1",98,50,SMALL,MAGENTA,WHITE);
    LCDPutStr("Fan2",55,50,SMALL,MAGENTA,WHITE);
    LCDPutStr("Fan3",15,50,SMALL,MAGENTA,WHITE);
    LCDPutStr("CONTROL FAN",123,40,SMALL,MAGENTA,WHITE);
    LCDWrite130x130bmp(home,sizeof(home),0,119,12,12);
    n1=1;
    }

    if (( a1 == 1 )&&( Esc1 == 1 )&&(c==1)&&(c1==0))
    {
    LCDClearScreen(WHITE);
    LCDWrite130x130bmp(window,sizeof(window),10,5,40,40);
    LCDWrite130x130bmp(current,sizeof(current),50,5,40,40);
    LCDWrite130x130bmp(lcd,sizeof(lcd),92,5,28,40);
    LCDPutStr("Window",98,50,SMALL,MAGENTA,WHITE);
    LCDPutStr("Current",55,50,SMALL,MAGENTA,WHITE);
    LCDPutStr("Lcd",15,50,SMALL,MAGENTA,WHITE);
    LCDPutStr("OTHER UNITS",123,40,SMALL,MAGENTA,WHITE);
    LCDWrite130x130bmp(home,sizeof(home),0,119,12,12);
    n1=1;
    }

    if (( a1 == 2 )&&( Esc1 == 1 )&&(c==1)&&(c1==0))
    {
    LCDClearScreen(WHITE);
    LCDWrite130x130bmp(lightmenu,sizeof(lightmenu),50,5,40,40);
    LCDWrite130x130bmp(light2,sizeof(light2),92,5,40,40);
    LCDWrite130x130bmp(light3,sizeof(light3),10,5,40,40);
    LCDPutStr("Light1",98,50,SMALL,MAGENTA,WHITE);
    LCDPutStr("Light2",55,50,SMALL,MAGENTA,WHITE);
    LCDPutStr("Light3",15,50,SMALL,MAGENTA,WHITE);
    LCDPutStr("CONTROL LIGHT",123,40,SMALL,MAGENTA,WHITE);
    LCDWrite130x130bmp(home,sizeof(home),0,119,12,12);
    n1=1;
    }
    }
    //**********************Actions Submenu***************************
    if ((d1 != 0)&&(c1==0)&&(c==1))
    {
    ////////////////////////lop thu 3_1/////////////////////////
    ///////////////////////////////////////////////////////////////
    if(( a1 == 1 )&&( Esc1 == 1 )&&(c1==0)&&(c==1)) // *********Submenu1 Paint Menu
    {
    n1=1;
    c1=0;
    c=1;
    if ((x >110 ) && (y > 110 )&&(x < 131 ) && (y < 131 ))
    {
    Esc = 0 ;Esc1=0;Esc31=0;Esc41=0;
    a = 0 ;a1=0;a31=0;a41=0;
    c1=0;c=0;c21=0;c41=0;
    n1=0;n31=0;n41=0;
    d41=0;d =0;d1=0;d31=0;
    }
    else {n31=1;}

    Delay(10000);
    EXTINT = 0x00000008;
    VICVectAddr = 0x00000000; //chu y chu y
    while (n31==1)
    {
    // khoa man hinh ngoai
    c1=1;
    /////////////////////////////////
    if ((VICIRQStatus & 0x00020000)&&(c==1))
    {
    coord=TOUCH_get_coord ();
    x = (*coord).x;
    y = (*coord).y;

    if ((x != OOB ) && (y != OOB)&&(c==1))
    {
    if ((d31 == 0)&&(c21==0)&&(c1==1))
    {
    //****************** Main Menu WaitBit *****************************
    //====================================================
    if ((x > 0) && (y > 0 )&&(x < 43 ) && (y < 120 ))
    {
    a31 = 1 ;
    Esc31 = 1 ;
    d31 = 1 ;
    n31=1;
    }
    if ((x > 44) && (y > 0 )&&(x < 87 ) && (y < 120 ))
    {
    a31 = 2 ;
    Esc31 = 1 ;
    d31 = 1 ;
    n31=1;
    }
    if ((x >88) && (y > 0 )&&(x < 120 ) && (y < 120 ))
    {
    a31 = 3 ;
    Esc31 =1 ;
    d31 = 1 ;
    n31=1;
    }

    if ((x >110 ) && (y > 110 )&&(x < 131 ) && (y < 131 ))
    {
    Esc=0;Esc1=0;Esc31=0;Esc41=0;
    a = 0 ;a1=0;a31=0;a41=0;
    c1=0;c=0;c21=0;c41=0;
    n1=0;n31=0;n41=0;
    d41=0;d =0;d1=0;d31=0;
    }

    //****************** Main Menu Action *****************************

    if ((a31 == 3)&&(Esc31==1)&&(c1==1)&&(c21==0))
    {
    LCDClearScreen(WHITE);
    LCDWrite130x130bmp(on,sizeof(on),35,25,40,40);
    LCDWrite130x130bmp(off,sizeof(off),35,75,40,40);
    LCDPutStr("CONTROL FAN",123,40,SMALL,MAGENTA,WHITE);
    LCDPutStr("ON",30,35,LARGE,MAGENTA,WHITE);
    LCDPutStr("OFF",30,78,LARGE,MAGENTA,WHITE);
    LCDWrite130x130bmp(home,sizeof(home),0,119,12,12);
    n31=1;
    }

    if (( a31 == 1 )&&( Esc31 == 1 )&&(c1==1)&&(c21==0))
    {
    LCDClearScreen(WHITE);
    LCDWrite130x130bmp(on,sizeof(on),35,25,40,40);
    LCDWrite130x130bmp(off,sizeof(off),35,75,40,40);
    LCDPutStr("OTHER UNITS",123,40,SMALL,MAGENTA,WHITE);
    LCDPutStr("ON",30,35,LARGE,MAGENTA,WHITE);
    LCDPutStr("OFF",30,78,LARGE,MAGENTA,WHITE);
    LCDWrite130x130bmp(home,sizeof(home),0,119,12,12);
    n31=1;
    }

    if (( a31 == 2 )&&( Esc31 == 1 )&&(c1==1)&&(c21==0))
    {
    LCDClearScreen(WHITE);
    LCDWrite130x130bmp(on,sizeof(on),35,25,40,40);
    LCDWrite130x130bmp(off,sizeof(off),35,75,40,40);
    LCDWrite130x130bmp(home,sizeof(home),0,119,12,12);
    LCDPutStr("CONTROL LIGHT",123,40,SMALL,MAGENTA,WHITE);
    LCDPutStr("ON",30,35,LARGE,MAGENTA,WHITE);
    LCDPutStr("OFF",30,78,LARGE,MAGENTA,WHITE);
    n31=1;
    }
    }
    //**********************Actions Submenu***************************
    if ((d31 != 0)&&(c21==0)&&(c1==1))
    {
    ////////////////////////lop thu 4_1/////////////////////////
    if(( a31 == 1 )&&( Esc31 == 1 )&&(c21==0)&&(c1==1)) // *********Submenu1 Paint Menu
    {
    n31=1;
    c41=0;
    c21=1;
    if ((x >110 ) && (y > 110 )&&(x < 131 ) && (y < 131 ))
    {
    Esc=0;Esc1=0;Esc31=0;Esc41=0;
    a = 0 ;a1=0;a31=0;a41=0;
    c1=0;c=0;c21=0;c41=0;
    n1=0;n31=0;n41=0;
    d41=0;d =0;d1=0;d31=0;
    }
    else {n41=1;}

    Delay(10000);
    EXTINT = 0x00000008;
    VICVectAddr = 0x00000000; //chu y chu y
    while (n31==1)
    {
    // khoa man hinh ngoai
    c21=1;
    /////////////////////////////////
    if ((VICIRQStatus & 0x00020000)&&(c==1))
    {
    coord=TOUCH_get_coord ();
    x = (*coord).x;
    y = (*coord).y;

    if ((x != OOB ) && (y != OOB)&&(c==1))
    {
    if ((d41 == 0)&&(c41==0)&&(c21==1))
    {
    //****************** Main Menu WaitBit *****************************
    //====================================================
    if ((x > 25) && (y > 25 )&&(x < 90 ) && (y < 65 ))
    {
    a41 = 1 ;
    Esc41 = 1 ;
    LCDSetLine(55,75,100,75,WHITE);
    LCDSetLine(55,75,55,82,WHITE);
    LCDSetLine(100,75,100,82,WHITE);
    LCDSetLine(55,112,100,112,WHITE);
    LCDSetLine(55,105,55,112,WHITE);
    LCDSetLine(100,105,100,112,WHITE);
    LCDSetLine(55,25,100,25,BLUE);
    LCDSetLine(55,25,55,32,BLUE);
    LCDSetLine(100,25,100,32,BLUE);
    LCDSetLine(55,62,100,62,BLUE);
    LCDSetLine(55,55,55,62,BLUE);
    LCDSetLine(100,55,100,62,BLUE);
    putchar('a');
    n41=1;
    }
    if ((x > 25) && (y > 66 )&&(x < 90 ) && (y < 115 ))
    {
    a41 = 2 ;
    Esc41 = 1 ;
    LCDSetLine(55,25,100,25,WHITE);
    LCDSetLine(55,25,55,32,WHITE);
    LCDSetLine(100,25,100,32,WHITE);
    LCDSetLine(55,62,100,62,WHITE);
    LCDSetLine(55,55,55,62,WHITE);
    LCDSetLine(100,55,100,62,WHITE);
    LCDSetLine(55,75,100,75,BLUE);
    LCDSetLine(55,75,55,82,BLUE);
    LCDSetLine(100,75,100,82,BLUE);
    LCDSetLine(55,112,100,112,BLUE);
    LCDSetLine(55,105,55,112,BLUE);
    LCDSetLine(100,105,100,112,BLUE);
    putchar('A');
    n41=1;
    }
    if ((x >110 ) && (y > 110 )&&(x < 131 ) && (y < 131 ))
    {
    Esc=0;Esc1=0;Esc31=0;Esc41=0;
    a = 0 ;a1=0;a31=0;a41=0;
    c1=0;c=0;c21=0;c41=0;
    n1=0;n31=0;n41=0;
    d41=0;d =0;d1=0;d31=0;
    }
    }
    }
    Delay(10000);
    EXTINT = 0x00000008; // Clear External Interrupt3 Flag
    }

    VICVectAddr = 0x00000000; // End of Interrupt
    }
    //mo khoa chuong trinh ngoai//
    c21=0; //chu y chu y
    ////////////////////////////////////////////////////
    /////////////////het lop thu 4_1///////////////////

    if ((x >110 ) && (y > 110 )&&(x < 131 ) && (y < 131 ))
    {
    Esc=0;Esc1=0;Esc31=0;Esc41=0;
    a = 0 ;a1=0;a31=0;a41=0;
    c1=0;c=0;c21=0;c41=0;
    n1=0;n31=0;n41=0;
    d41=0;d =0;d1=0;d31=0;
    }
    }
    ////////////////////////lop thu 4_2/////////////////////////
    if(( a31 == 2 )&&( Esc31 == 1 )&&(c21==0)&&(c1==1)) // *********Submenu1 Paint Menu
    {
    n31=1;
    c41=0;
    c21=1;
    if ((x >110 ) && (y > 110 )&&(x < 131 ) && (y < 131 ))
    {
    Esc=0;Esc1=0;Esc31=0;Esc41=0;
    a = 0 ;a1=0;a31=0;a41=0;
    c1=0;c=0;c21=0;c41=0;
    n1=0;n31=0;n41=0;
    d41=0;d =0;d1=0;d31=0;
    }
    else {n41=1;}

    Delay(10000);
    EXTINT = 0x00000008;
    VICVectAddr = 0x00000000; //chu y chu y
    while (n31==1)
    {
    // khoa man hinh ngoai
    c21=1;
    /////////////////////////////////
    if ((VICIRQStatus & 0x00020000)&&(c==1))
    {
    coord=TOUCH_get_coord ();
    x = (*coord).x;
    y = (*coord).y;

    if ((x != OOB ) && (y != OOB)&&(c==1))
    {
    if ((d41 == 0)&&(c41==0)&&(c21==1))
    {
    //****************** Main Menu WaitBit *****************************
    //====================================================
    if ((x > 25) && (y > 25 )&&(x < 90 ) && (y < 65 ))
    {
    a41 = 1 ;
    Esc41 = 1 ;
    LCDSetLine(55,75,100,75,WHITE);
    LCDSetLine(55,75,55,82,WHITE);
    LCDSetLine(100,75,100,82,WHITE);
    LCDSetLine(55,112,100,112,WHITE);
    LCDSetLine(55,105,55,112,WHITE);
    LCDSetLine(100,105,100,112,WHITE);
    LCDSetLine(55,25,100,25,BLUE);
    LCDSetLine(55,25,55,32,BLUE);
    LCDSetLine(100,25,100,32,BLUE);
    LCDSetLine(55,62,100,62,BLUE);
    LCDSetLine(55,55,55,62,BLUE);
    LCDSetLine(100,55,100,62,BLUE);
    putchar('b');
    n41=1;
    }
    if ((x > 25) && (y > 66 )&&(x < 90 ) && (y < 115 ))
    {
    a41 = 2 ;
    Esc41 = 1 ;
    LCDSetLine(55,25,100,25,WHITE);
    LCDSetLine(55,25,55,32,WHITE);
    LCDSetLine(100,25,100,32,WHITE);
    LCDSetLine(55,62,100,62,WHITE);
    LCDSetLine(55,55,55,62,WHITE);
    LCDSetLine(100,55,100,62,WHITE);
    LCDSetLine(55,75,100,75,BLUE);
    LCDSetLine(55,75,55,82,BLUE);
    LCDSetLine(100,75,100,82,BLUE);
    LCDSetLine(55,112,100,112,BLUE);
    LCDSetLine(55,105,55,112,BLUE);
    LCDSetLine(100,105,100,112,BLUE);
    putchar('B');
    n41=1;
    }
    if ((x >110 ) && (y > 110 )&&(x < 131 ) && (y < 131 ))
    {
    Esc=0;Esc1=0;Esc31=0;Esc41=0;
    a = 0 ;a1=0;a31=0;a41=0;
    c1=0;c=0;c21=0;c41=0;
    n1=0;n31=0;n41=0;
    d41=0;d =0;d1=0;d31=0;
    }
    }
    }
    Delay(10000);
    EXTINT = 0x00000008; // Clear External Interrupt3 Flag
    }

    VICVectAddr = 0x00000000; // End of Interrupt
    }
    //mo khoa chuong trinh ngoai//
    c21=0; //chu y chu y
    ////////////////////////////////////////////////////
    /////////////////het lop thu 4_2///////////////////
    if ((x >110 ) && (y > 110 )&&(x < 131 ) && (y < 131 ))
    {
    Esc=0;Esc1=0;Esc31=0;Esc41=0;
    a = 0 ;a1=0;a31=0;a41=0;
    c1=0;c=0;c21=0;c41=0;
    n1=0;n31=0;n41=0;
    d41=0;d =0;d1=0;d31=0;
    }
    }
    ////////////////////////lop thu 4_3/////////////////////////
    if(( a31 == 3 )&&( Esc31 == 1 )&&(c21==0)&&(c1==1)) // *********Submenu1 Paint Menu
    {
    n31=1;
    c41=0;
    c21=1;
    if ((x >110 ) && (y > 110 )&&(x < 131 ) && (y < 131 ))
    {
    Esc=0;Esc1=0;Esc31=0;Esc41=0;
    a = 0 ;a1=0;a31=0;a41=0;
    c1=0;c=0;c21=0;c41=0;
    n1=0;n31=0;n41=0;
    d41=0;d =0;d1=0;d31=0;
    }
    else {n41=1;}

    Delay(10000);
    EXTINT = 0x00000008;
    VICVectAddr = 0x00000000; //chu y chu y
    while (n31==1)
    {
    // khoa man hinh ngoai
    c21=1;
    /////////////////////////////////
    if ((VICIRQStatus & 0x00020000)&&(c==1))
    {
    coord=TOUCH_get_coord ();
    x = (*coord).x;
    y = (*coord).y;

    if ((x != OOB ) && (y != OOB)&&(c==1))
    {
    if ((d41 == 0)&&(c41==0)&&(c21==1))
    {
    //****************** Main Menu WaitBit *****************************
    //====================================================
    if ((x > 25) && (y > 25 )&&(x < 90 ) && (y < 65 ))
    {
    a41 = 1 ;
    Esc41 = 1 ;
    LCDSetLine(55,75,100,75,WHITE);
    LCDSetLine(55,75,55,82,WHITE);
    LCDSetLine(100,75,100,82,WHITE);
    LCDSetLine(55,112,100,112,WHITE);
    LCDSetLine(55,105,55,112,WHITE);
    LCDSetLine(100,105,100,112,WHITE);
    LCDSetLine(55,25,100,25,BLUE);
    LCDSetLine(55,25,55,32,BLUE);
    LCDSetLine(100,25,100,32,BLUE);
    LCDSetLine(55,62,100,62,BLUE);
    LCDSetLine(55,55,55,62,BLUE);
    LCDSetLine(100,55,100,62,BLUE);
    putchar('c');
    n41=1;
    }
    if ((x > 25) && (y > 66 )&&(x < 90 ) && (y < 115 ))
    {
    a41 = 2 ;
    Esc41 = 1 ;
    LCDSetLine(55,25,100,25,WHITE);
    LCDSetLine(55,25,55,32,WHITE);
    LCDSetLine(100,25,100,32,WHITE);
    LCDSetLine(55,62,100,62,WHITE);
    LCDSetLine(55,55,55,62,WHITE);
    LCDSetLine(100,55,100,62,WHITE);
    LCDSetLine(55,75,100,75,BLUE);
    LCDSetLine(55,75,55,82,BLUE);
    LCDSetLine(100,75,100,82,BLUE);
    LCDSetLine(55,112,100,112,BLUE);
    LCDSetLine(55,105,55,112,BLUE);
    LCDSetLine(100,105,100,112,BLUE);
    putchar('C');
    n41=1;
    }
    if ((x >110 ) && (y > 110 )&&(x < 131 ) && (y < 131 ))
    {
    Esc=0;Esc1=0;Esc31=0;Esc41=0;
    a = 0 ;a1=0;a31=0;a41=0;
    c1=0;c=0;c21=0;c41=0;
    n1=0;n31=0;n41=0;
    d41=0;d =0;d1=0;d31=0;
    }
    }
    }
    Delay(10000);
    EXTINT = 0x00000008; // Clear External Interrupt3 Flag
    }

    VICVectAddr = 0x00000000; // End of Interrupt
    }
    //mo khoa chuong trinh ngoai//
    c21=0; //chu y chu y
    ////////////////////////////////////////////////////
    /////////////////het lop thu 4_3///////////////////
    if ((x >110 ) && (y > 110 )&&(x < 131 ) && (y < 131 ))
    {
    Esc=0;Esc1=0;Esc31=0;Esc41=0;
    a = 0 ;a1=0;a31=0;a41=0;
    c1=0;c=0;c21=0;c41=0;
    n1=0;n31=0;n41=0;
    d41=0;d =0;d1=0;d31=0;
    }
    }
    } //chu y chu y

    }
    Delay(10000);
    EXTINT = 0x00000008; // Clear External Interrupt3 Flag
    }

    VICVectAddr = 0x00000000; // End of Interrupt
    }
    //mo khoa chuong trinh ngoai//
    c1=0; //chu y chu y

    }
    ////////////////////////////////////////////////////
    /////////////////het lop thu 3_1///////////////////
    /********************************************************/
    ////////////////////////lop thu 3_2/////////////////////////
    if(( a1 == 2 )&&( Esc1 == 1 )&&(c1==0)&&(c==1)) // *********Submenu1 Paint Menu
    {
    n1=1;
    c1=0;
    c=1;
    if ((x >110 ) && (y > 110 )&&(x < 131 ) && (y < 131 ))
    {
    Esc=0;Esc1=0;Esc32=0;Esc41=0;
    a = 0 ;a1=0;a32=0;a41=0;
    c1=0;c=0;c21=0;c41=0;
    n1=0;n32=0;n41=0;
    d41=0;d =0;d1=0;d32=0;
    }
    else {n32=1;}

    Delay(10000);
    EXTINT = 0x00000008;
    VICVectAddr = 0x00000000; //chu y chu y
    while (n32==1)
    {
    // khoa man hinh ngoai
    c1=1;
    /////////////////////////////////
    if ((VICIRQStatus & 0x00020000)&&(c==1))
    {
    coord=TOUCH_get_coord ();
    x = (*coord).x;
    y = (*coord).y;

    if ((x != OOB ) && (y != OOB)&&(c==1))
    {
    if ((d32 == 0)&&(c21==0)&&(c1==1))
    {
    //****************** Main Menu WaitBit *****************************
    //====================================================
    if ((x > 0) && (y > 0 )&&(x < 43 ) && (y < 120 ))
    {
    a32 = 1 ;
    Esc32 = 1 ;
    d32 = 1 ;
    n32=1;
    }
    if ((x > 44) && (y > 0 )&&(x < 87 ) && (y < 120 ))
    {
    a32 = 2 ;
    Esc32 = 1 ;
    d32 = 1 ;
    n32=1;
    }
    if ((x >88) && (y > 0 )&&(x < 120 ) && (y < 120 ))
    {
    a32 = 3 ;
    Esc32 =1 ;
    d32 = 1 ;
    n32=1;
    }

    if ((x >110 ) && (y > 110 )&&(x < 131 ) && (y < 131 ))
    {
    Esc=0;Esc1=0;Esc32=0;Esc41=0;
    a = 0 ;a1=0;a32=0;a41=0;
    c1=0;c=0;c21=0;c41=0;
    n1=0;n32=0;n41=0;
    d41=0;d =0;d1=0;d32=0;
    }

    //****************** Main Menu Action *****************************

    if ((a32 == 3)&&(Esc32==1)&&(c1==1)&&(c21==0))
    {
    LCDClearScreen(WHITE);
    LCDWrite130x130bmp(on,sizeof(on),35,25,40,40);
    LCDWrite130x130bmp(off,sizeof(off),35,75,40,40);
    LCDPutStr("CONTROL FAN",123,40,SMALL,MAGENTA,WHITE);
    LCDPutStr("ON",30,35,LARGE,MAGENTA,WHITE);
    LCDPutStr("OFF",30,78,LARGE,MAGENTA,WHITE);
    LCDWrite130x130bmp(home,sizeof(home),0,119,12,12);
    n32=1;
    }

    if (( a32 == 1 )&&( Esc32 == 1 )&&(c1==1)&&(c21==0))
    {
    LCDClearScreen(WHITE);
    LCDWrite130x130bmp(on,sizeof(on),35,25,40,40);
    LCDWrite130x130bmp(off,sizeof(off),35,75,40,40);
    LCDPutStr("OTHER UNITS",123,40,SMALL,MAGENTA,WHITE);
    LCDPutStr("ON",30,35,LARGE,MAGENTA,WHITE);
    LCDPutStr("OFF",30,78,LARGE,MAGENTA,WHITE);
    LCDWrite130x130bmp(home,sizeof(home),0,119,12,12);
    n32=1;
    }

    if (( a32 == 2 )&&( Esc32 == 1 )&&(c1==1)&&(c21==0))
    {
    LCDClearScreen(WHITE);
    LCDWrite130x130bmp(on,sizeof(on),35,25,40,40);
    LCDWrite130x130bmp(off,sizeof(off),35,75,40,40);
    LCDPutStr("CONTROL LIGHT",123,40,SMALL,MAGENTA,WHITE);
    LCDPutStr("ON",30,35,LARGE,MAGENTA,WHITE);
    LCDPutStr("OFF",30,78,LARGE,MAGENTA,WHITE);
    LCDWrite130x130bmp(home,sizeof(home),0,119,12,12);
    n32=1;
    }
    }
    //**********************Actions Submenu***************************
    if ((d32 != 0)&&(c21==0)&&(c1==1))
    {
    //////////////////////lop thu 4_4/////////////////////////

    if(( a32 == 1 )&&( Esc32 == 1 )&&(c21==0)&&(c1==1)) // *********Submenu1 Paint Menu
    {
    n32=1;
    c41=0;
    c21=1;
    if ((x >110 ) && (y > 110 )&&(x < 131 ) && (y < 131 ))
    {
    Esc=0;Esc1=0;Esc32=0;Esc41=0;
    a = 0 ;a1=0;a32=0;a41=0;
    c1=0;c=0;c21=0;c41=0;
    n1=0;n32=0;n41=0;
    d41=0;d =0;d1=0;d32=0;
    }
    else {n41=1;}

    Delay(10000);
    EXTINT = 0x00000008;
    VICVectAddr = 0x00000000; //chu y chu y
    while (n32==1)
    {
    // khoa man hinh ngoai
    c21=1;
    /////////////////////////////////
    if ((VICIRQStatus & 0x00020000)&&(c==1))
    {
    coord=TOUCH_get_coord ();
    x = (*coord).x;
    y = (*coord).y;

    if ((x != OOB ) && (y != OOB)&&(c==1))
    {
    if ((d41 == 0)&&(c41==0)&&(c21==1))
    {
    //****************** Main Menu WaitBit *****************************
    //====================================================
    if ((x > 25) && (y > 25 )&&(x < 90 ) && (y < 65 ))
    {
    a41 = 1 ;
    Esc41 = 1 ;
    LCDSetLine(55,75,100,75,WHITE);
    LCDSetLine(55,75,55,82,WHITE);
    LCDSetLine(100,75,100,82,WHITE);
    LCDSetLine(55,112,100,112,WHITE);
    LCDSetLine(55,105,55,112,WHITE);
    LCDSetLine(100,105,100,112,WHITE);
    LCDSetLine(55,25,100,25,BLUE);
    LCDSetLine(55,25,55,32,BLUE);
    LCDSetLine(100,25,100,32,BLUE);
    LCDSetLine(55,62,100,62,BLUE);
    LCDSetLine(55,55,55,62,BLUE);
    LCDSetLine(100,55,100,62,BLUE);
    putchar('d');
    n41=1;
    }
    if ((x > 25) && (y > 66 )&&(x < 90 ) && (y < 115 ))
    {
    a41 = 2 ;
    Esc41 = 1 ;
    LCDSetLine(55,25,100,25,WHITE);
    LCDSetLine(55,25,55,32,WHITE);
    LCDSetLine(100,25,100,32,WHITE);
    LCDSetLine(55,62,100,62,WHITE);
    LCDSetLine(55,55,55,62,WHITE);
    LCDSetLine(100,55,100,62,WHITE);
    LCDSetLine(55,75,100,75,BLUE);
    LCDSetLine(55,75,55,82,BLUE);
    LCDSetLine(100,75,100,82,BLUE);
    LCDSetLine(55,112,100,112,BLUE);
    LCDSetLine(55,105,55,112,BLUE);
    LCDSetLine(100,105,100,112,BLUE);
    putchar('D');
    n41=1;
    }
    if ((x >110 ) && (y > 110 )&&(x < 131 ) && (y < 131 ))
    {
    Esc=0;Esc1=0;Esc32=0;Esc41=0;
    a = 0 ;a1=0;a32=0;a41=0;
    c1=0;c=0;c21=0;c41=0;
    n1=0;n32=0;n41=0;
    d41=0;d =0;d1=0;d32=0;
    }
    }
    }
    Delay(10000);
    EXTINT = 0x00000008; // Clear External Interrupt3 Flag
    }

    VICVectAddr = 0x00000000; // End of Interrupt
    }
    //mo khoa chuong trinh ngoai//
    c21=0; //chu y chu y
    ////////////////////////////////////////////////////
    /////////////////het lop thu 4_4///////////////////
    if ((x >110 ) && (y > 110 )&&(x < 131 ) && (y < 131 ))
    {
    Esc=0;Esc1=0;Esc32=0;Esc41=0;
    a = 0 ;a1=0;a32=0;a41=0;
    c1=0;c=0;c21=0;c41=0;
    n1=0;n32=0;n41=0;
    d41=0;d =0;d1=0;d32=0;
    }
    }
    //////////////////////lop thu 4_5/////////////////////////
    if(( a32 == 2 )&&( Esc32 == 1 )&&(c21==0)&&(c1==1)) // *********Submenu1 Paint Menu
    {
    n32=1;
    c41=0;
    c21=1;
    if ((x >110 ) && (y > 110 )&&(x < 131 ) && (y < 131 ))
    {
    Esc=0;Esc1=0;Esc32=0;Esc41=0;
    a = 0 ;a1=0;a32=0;a41=0;
    c1=0;c=0;c21=0;c41=0;
    n1=0;n32=0;n41=0;
    d41=0;d =0;d1=0;d32=0;
    }
    else {n41=1;}

    Delay(10000);
    EXTINT = 0x00000008;
    VICVectAddr = 0x00000000; //chu y chu y
    while (n32==1)
    {
    // khoa man hinh ngoai
    c21=1;
    /////////////////////////////////
    if ((VICIRQStatus & 0x00020000)&&(c==1))
    {
    coord=TOUCH_get_coord ();
    x = (*coord).x;
    y = (*coord).y;

    if ((x != OOB ) && (y != OOB)&&(c==1))
    {
    if ((d41 == 0)&&(c41==0)&&(c21==1))
    {
    //****************** Main Menu WaitBit *****************************
    //====================================================
    if ((x > 25) && (y > 25 )&&(x < 90 ) && (y < 65 ))
    {
    a41 = 1 ;
    Esc41 = 1 ;
    LCDSetLine(55,75,100,75,WHITE);
    LCDSetLine(55,75,55,82,WHITE);
    LCDSetLine(100,75,100,82,WHITE);
    LCDSetLine(55,112,100,112,WHITE);
    LCDSetLine(55,105,55,112,WHITE);
    LCDSetLine(100,105,100,112,WHITE);
    LCDSetLine(55,25,100,25,BLUE);
    LCDSetLine(55,25,55,32,BLUE);
    LCDSetLine(100,25,100,32,BLUE);
    LCDSetLine(55,62,100,62,BLUE);
    LCDSetLine(55,55,55,62,BLUE);
    LCDSetLine(100,55,100,62,BLUE);
    putchar('e');
    n41=1;
    }
    if ((x > 25) && (y > 66 )&&(x < 90 ) && (y < 115 ))
    {
    a41 = 2 ;
    Esc41 = 1 ;
    LCDSetLine(55,25,100,25,WHITE);
    LCDSetLine(55,25,55,32,WHITE);
    LCDSetLine(100,25,100,32,WHITE);
    LCDSetLine(55,62,100,62,WHITE);
    LCDSetLine(55,55,55,62,WHITE);
    LCDSetLine(100,55,100,62,WHITE);
    LCDSetLine(55,75,100,75,BLUE);
    LCDSetLine(55,75,55,82,BLUE);
    LCDSetLine(100,75,100,82,BLUE);
    LCDSetLine(55,112,100,112,BLUE);
    LCDSetLine(55,105,55,112,BLUE);
    LCDSetLine(100,105,100,112,BLUE);
    putchar('E');
    n41=1;
    }
    if ((x >110 ) && (y > 110 )&&(x < 131 ) && (y < 131 ))
    {
    Esc=0;Esc1=0;Esc32=0;Esc41=0;
    a = 0 ;a1=0;a32=0;a41=0;
    c1=0;c=0;c21=0;c41=0;
    n1=0;n32=0;n41=0;
    d41=0;d =0;d1=0;d32=0;
    }
    }
    }
    Delay(10000);
    EXTINT = 0x00000008; // Clear External Interrupt3 Flag
    }

    VICVectAddr = 0x00000000; // End of Interrupt
    }
    //mo khoa chuong trinh ngoai//
    c21=0; //chu y chu y
    ////////////////////////////////////////////////////
    /////////////////het lop thu 4_5///////////////////
    if ((x >110 ) && (y > 110 )&&(x < 131 ) && (y < 131 ))
    {
    Esc=0;Esc1=0;Esc32=0;Esc41=0;
    a = 0 ;a1=0;a32=0;a41=0;
    c1=0;c=0;c21=0;c41=0;
    n1=0;n32=0;n41=0;
    d41=0;d =0;d1=0;d32=0;
    }
    }
    //////////////////////lop thu 4_6/////////////////////////

    if(( a32 == 3 )&&( Esc32 == 1 )&&(c21==0)&&(c1==1)) // *********Submenu1 Paint Menu
    {
    n32=1;
    c41=0;
    c21=1;
    if ((x >110 ) && (y > 110 )&&(x < 131 ) && (y < 131 ))
    {
    Esc=0;Esc1=0;Esc32=0;Esc41=0;
    a = 0 ;a1=0;a32=0;a41=0;
    c1=0;c=0;c21=0;c41=0;
    n1=0;n32=0;n41=0;
    d41=0;d =0;d1=0;d32=0;
    }
    else {n41=1;}

    Delay(10000);
    EXTINT = 0x00000008;
    VICVectAddr = 0x00000000; //chu y chu y
    while (n32==1)
    {
    // khoa man hinh ngoai
    c21=1;
    /////////////////////////////////
    if ((VICIRQStatus & 0x00020000)&&(c==1))
    {
    coord=TOUCH_get_coord ();
    x = (*coord).x;
    y = (*coord).y;

    if ((x != OOB ) && (y != OOB)&&(c==1))
    {
    if ((d41 == 0)&&(c41==0)&&(c21==1))
    {
    //****************** Main Menu WaitBit *****************************
    //====================================================
    if ((x > 25) && (y > 25 )&&(x < 90 ) && (y < 65 ))
    {
    a41 = 1 ;
    Esc41 = 1 ;
    LCDSetLine(55,75,100,75,WHITE);
    LCDSetLine(55,75,55,82,WHITE);
    LCDSetLine(100,75,100,82,WHITE);
    LCDSetLine(55,112,100,112,WHITE);
    LCDSetLine(55,105,55,112,WHITE);
    LCDSetLine(100,105,100,112,WHITE);
    LCDSetLine(55,25,100,25,BLUE);
    LCDSetLine(55,25,55,32,BLUE);
    LCDSetLine(100,25,100,32,BLUE);
    LCDSetLine(55,62,100,62,BLUE);
    LCDSetLine(55,55,55,62,BLUE);
    LCDSetLine(100,55,100,62,BLUE);
    putchar('f');
    n41=1;
    }
    if ((x > 25) && (y > 66 )&&(x < 90 ) && (y < 115 ))
    {
    a41 = 2 ;
    Esc41 = 1 ;
    LCDSetLine(55,25,100,25,WHITE);
    LCDSetLine(55,25,55,32,WHITE);
    LCDSetLine(100,25,100,32,WHITE);
    LCDSetLine(55,62,100,62,WHITE);
    LCDSetLine(55,55,55,62,WHITE);
    LCDSetLine(100,55,100,62,WHITE);
    LCDSetLine(55,75,100,75,BLUE);
    LCDSetLine(55,75,55,82,BLUE);
    LCDSetLine(100,75,100,82,BLUE);
    LCDSetLine(55,112,100,112,BLUE);
    LCDSetLine(55,105,55,112,BLUE);
    LCDSetLine(100,105,100,112,BLUE);
    putchar('F');
    n41=1;
    }
    if ((x >110 ) && (y > 110 )&&(x < 131 ) && (y < 131 ))
    {
    Esc=0;Esc1=0;Esc32=0;Esc41=0;
    a = 0 ;a1=0;a32=0;a41=0;
    c1=0;c=0;c21=0;c41=0;
    n1=0;n32=0;n41=0;
    d41=0;d =0;d1=0;d32=0;
    }
    }
    }
    Delay(10000);
    EXTINT = 0x00000008; // Clear External Interrupt3 Flag
    }

    VICVectAddr = 0x00000000; // End of Interrupt
    }
    //mo khoa chuong trinh ngoai//
    c21=0; //chu y chu y
    ////////////////////////////////////////////////////
    /////////////////het lop thu 4_6///////////////////

    if ((x >110 ) && (y > 110 )&&(x < 131 ) && (y < 131 ))
    {
    Esc=0;Esc1=0;Esc32=0;Esc41=0;
    a = 0 ;a1=0;a32=0;a41=0;
    c1=0;c=0;c21=0;c41=0;
    n1=0;n32=0;n41=0;
    d41=0;d =0;d1=0;d32=0;
    }
    }
    } //chu y chu y

    }
    Delay(10000);
    EXTINT = 0x00000008; // Clear External Interrupt3 Flag
    }

    VICVectAddr = 0x00000000; // End of Interrupt
    }
    //mo khoa chuong trinh ngoai//
    c1=0; //chu y chu y

    }
    ////////////////////////////////////////////////////
    /////////////////het lop thu 3_2/////////////////// if(( a1 == 3 )&&( Esc1 == 1 )&&(c1==0)&&(c==1)) // *********Submenu1 Paint Menu
    /***********************************************************/
    ////////////////////////lop thu 3_3/////////////////////////
    if(( a1 == 3 )&&( Esc1 == 1 )&&(c1==0)&&(c==1)) // *********Submenu1 Paint Menu
    {
    n1=1;
    c1=0;
    c=1;
    if ((x >110 ) && (y > 110 )&&(x < 131 ) && (y < 131 ))
    {
    Esc=0;Esc1=0;Esc33=0;Esc41=0;
    a = 0 ;a1=0;a33=0;a41=0;
    c1=0;c=0;c21=0;c41=0;
    n1=0;n33=0;n41=0;
    d41=0;d =0;d1=0;d33=0;
    }
    else {n33=1;}

    Delay(10000);
    EXTINT = 0x00000008;
    VICVectAddr = 0x00000000; //chu y chu y
    while (n33==1)
    {
    // khoa man hinh ngoai
    c1=1;
    /////////////////////////////////
    if ((VICIRQStatus & 0x00020000)&&(c==1))
    {
    coord=TOUCH_get_coord ();
    x = (*coord).x;
    y = (*coord).y;

    if ((x != OOB ) && (y != OOB)&&(c==1))
    {
    if ((d33 == 0)&&(c21==0)&&(c1==1))
    {
    //****************** Main Menu WaitBit *****************************
    //====================================================
    if ((x > 0) && (y > 0 )&&(x < 43 ) && (y < 120 ))
    {
    a33 = 1 ;
    Esc33 = 1 ;
    d33 = 1 ;
    n33=1;
    }
    if ((x > 44) && (y > 0 )&&(x < 87 ) && (y < 120 ))
    {
    a33 = 2 ;
    Esc33 = 1 ;
    d33 = 1 ;
    n33=1;
    }
    if ((x >88) && (y > 0 )&&(x < 120 ) && (y < 120 ))
    {
    a33 = 3 ;
    Esc33 =1 ;
    d33 = 1 ;
    n33=1;
    }

    if ((x >110 ) && (y > 110 )&&(x < 131 ) && (y < 131 ))
    {
    Esc=0;Esc1=0;Esc33=0;Esc41=0;
    a = 0 ;a1=0;a33=0;a41=0;
    c1=0;c=0;c21=0;c41=0;
    n1=0;n33=0;n41=0;
    d41=0;d =0;d1=0;d33=0;
    }

    //****************** Main Menu Action *****************************

    if ((a33 == 3)&&(Esc33==1)&&(c1==1)&&(c21==0))
    {
    LCDClearScreen(WHITE);
    LCDWrite130x130bmp(on,sizeof(on),35,25,40,40);
    LCDWrite130x130bmp(off,sizeof(off),35,75,40,40);
    LCDPutStr("ON",30,35,LARGE,MAGENTA,WHITE);
    LCDPutStr("OFF",30,78,LARGE,MAGENTA,WHITE);
    LCDPutStr("CONTROL FAN",123,40,SMALL,MAGENTA,WHITE);
    LCDWrite130x130bmp(home,sizeof(home),0,119,12,12);
    n33=1;
    }

    if (( a33 == 1 )&&( Esc33 == 1 )&&(c1==1)&&(c21==0))
    {
    LCDClearScreen(WHITE);
    LCDWrite130x130bmp(on,sizeof(on),35,25,40,40);
    LCDWrite130x130bmp(off,sizeof(off),35,75,40,40);
    LCDPutStr("OTHER UNITS",123,40,SMALL,MAGENTA,WHITE);
    LCDPutStr("ON",30,35,LARGE,MAGENTA,WHITE);
    LCDPutStr("OFF",30,78,LARGE,MAGENTA,WHITE);
    LCDWrite130x130bmp(home,sizeof(home),0,119,12,12);
    n33=1;
    }

    if (( a33 == 2 )&&( Esc33 == 1 )&&(c1==1)&&(c21==0))
    {
    LCDClearScreen(WHITE);
    LCDWrite130x130bmp(on,sizeof(on),35,25,40,40);
    LCDWrite130x130bmp(off,sizeof(off),35,75,40,40);
    LCDPutStr("CONTROL LIGHT",123,40,SMALL,MAGENTA,WHITE);
    LCDWrite130x130bmp(home,sizeof(home),0,119,12,12);
    n32=1;
    }
    }
    //**********************Actions Submenu***************************
    if ((d33 != 0)&&(c21==0)&&(c1==1))
    {
    //////////////////////lop thu 4_7/////////////////////////

    if(( a33 == 1 )&&( Esc33 == 1 )&&(c21==0)&&(c1==1)) // *********Submenu1 Paint Menu
    {
    n33=1;
    c41=0;
    c21=1;
    if ((x >110 ) && (y > 110 )&&(x < 131 ) && (y < 131 ))
    {
    Esc=0;Esc1=0;Esc33=0;Esc41=0;
    a = 0 ;a1=0;a33=0;a41=0;
    c1=0;c=0;c21=0;c41=0;
    n1=0;n33=0;n41=0;
    d41=0;d =0;d1=0;d33=0;
    }
    else {n41=1;}

    Delay(10000);
    EXTINT = 0x00000008;
    VICVectAddr = 0x00000000; //chu y chu y
    while (n33==1)
    {
    // khoa man hinh ngoai
    c21=1;
    /////////////////////////////////
    if ((VICIRQStatus & 0x00020000)&&(c==1))
    {
    coord=TOUCH_get_coord ();
    x = (*coord).x;
    y = (*coord).y;

    if ((x != OOB ) && (y != OOB)&&(c==1))
    {
    if ((d41 == 0)&&(c41==0)&&(c21==1))
    {
    //****************** Main Menu WaitBit *****************************
    //====================================================
    if ((x > 25) && (y > 25 )&&(x < 90 ) && (y < 65 ))
    {
    a41 = 1 ;
    Esc41 = 1 ;
    LCDSetLine(55,75,100,75,WHITE);
    LCDSetLine(55,75,55,82,WHITE);
    LCDSetLine(100,75,100,82,WHITE);
    LCDSetLine(55,112,100,112,WHITE);
    LCDSetLine(55,105,55,112,WHITE);
    LCDSetLine(100,105,100,112,WHITE);
    LCDSetLine(55,25,100,25,BLUE);
    LCDSetLine(55,25,55,32,BLUE);
    LCDSetLine(100,25,100,32,BLUE);
    LCDSetLine(55,62,100,62,BLUE);
    LCDSetLine(55,55,55,62,BLUE);
    LCDSetLine(100,55,100,62,BLUE);
    putchar('g');
    n41=1;
    }
    if ((x > 25) && (y > 66 )&&(x < 90 ) && (y < 115 ))
    {
    a41 = 2 ;
    Esc41 = 1 ;
    LCDSetLine(55,25,100,25,WHITE);
    LCDSetLine(55,25,55,32,WHITE);
    LCDSetLine(100,25,100,32,WHITE);
    LCDSetLine(55,62,100,62,WHITE);
    LCDSetLine(55,55,55,62,WHITE);
    LCDSetLine(100,55,100,62,WHITE);
    LCDSetLine(55,75,100,75,BLUE);
    LCDSetLine(55,75,55,82,BLUE);
    LCDSetLine(100,75,100,82,BLUE);
    LCDSetLine(55,112,100,112,BLUE);
    LCDSetLine(55,105,55,112,BLUE);
    LCDSetLine(100,105,100,112,BLUE);
    putchar('G');
    n41=1;
    }
    if ((x >110 ) && (y > 110 )&&(x < 131 ) && (y < 131 ))
    {
    Esc=0;Esc1=0;Esc33=0;Esc41=0;
    a = 0 ;a1=0;a33=0;a41=0;
    c1=0;c=0;c21=0;c41=0;
    n1=0;n33=0;n41=0;
    d41=0;d =0;d1=0;d33=0;
    }
    }
    }
    Delay(10000);
    EXTINT = 0x00000008; // Clear External Interrupt3 Flag
    }

    VICVectAddr = 0x00000000; // End of Interrupt
    }
    //mo khoa chuong trinh ngoai//
    c21=0; //chu y chu y
    ////////////////////////////////////////////////////
    /////////////////het lop thu 4_7///////////////////

    if ((x >110 ) && (y > 110 )&&(x < 131 ) && (y < 131 ))
    {
    Esc=0;Esc1=0;Esc33=0;Esc41=0;
    a = 0 ;a1=0;a33=0;a41=0;
    c1=0;c=0;c21=0;c41=0;
    n1=0;n33=0;n41=0;
    d41=0;d =0;d1=0;d33=0;
    }
    }
    //////////////////////lop thu 4_8/////////////////////////

    if(( a33 == 2 )&&( Esc33 == 1 )&&(c21==0)&&(c1==1)) // *********Submenu1 Paint Menu
    {
    n33=1;
    c41=0;
    c21=1;
    if ((x >110 ) && (y > 110 )&&(x < 131 ) && (y < 131 ))
    {
    Esc=0;Esc1=0;Esc33=0;Esc41=0;
    a = 0 ;a1=0;a33=0;a41=0;
    c1=0;c=0;c21=0;c41=0;
    n1=0;n33=0;n41=0;
    d41=0;d =0;d1=0;d33=0;
    }
    else {n41=1;}

    Delay(10000);
    EXTINT = 0x00000008;
    VICVectAddr = 0x00000000; //chu y chu y
    while (n33==1)
    {
    // khoa man hinh ngoai
    c21=1;
    /////////////////////////////////
    if ((VICIRQStatus & 0x00020000)&&(c==1))
    {
    coord=TOUCH_get_coord ();
    x = (*coord).x;
    y = (*coord).y;

    if ((x != OOB ) && (y != OOB)&&(c==1))
    {
    if ((d41 == 0)&&(c41==0)&&(c21==1))
    {
    //****************** Main Menu WaitBit *****************************
    //====================================================
    if ((x > 25) && (y > 25 )&&(x < 90 ) && (y < 65 ))
    {
    a41 = 1 ;
    Esc41 = 1 ;
    LCDSetLine(55,75,100,75,WHITE);
    LCDSetLine(55,75,55,82,WHITE);
    LCDSetLine(100,75,100,82,WHITE);
    LCDSetLine(55,112,100,112,WHITE);
    LCDSetLine(55,105,55,112,WHITE);
    LCDSetLine(100,105,100,112,WHITE);
    LCDSetLine(55,25,100,25,BLUE);
    LCDSetLine(55,25,55,32,BLUE);
    LCDSetLine(100,25,100,32,BLUE);
    LCDSetLine(55,62,100,62,BLUE);
    LCDSetLine(55,55,55,62,BLUE);
    LCDSetLine(100,55,100,62,BLUE);
    putchar('h');
    n41=1;
    }
    if ((x > 25) && (y > 66 )&&(x < 90 ) && (y < 115 ))
    {
    a41 = 2 ;
    Esc41 = 1 ;
    LCDSetLine(55,25,100,25,WHITE);
    LCDSetLine(55,25,55,32,WHITE);
    LCDSetLine(100,25,100,32,WHITE);
    LCDSetLine(55,62,100,62,WHITE);
    LCDSetLine(55,55,55,62,WHITE);
    LCDSetLine(100,55,100,62,WHITE);
    LCDSetLine(55,75,100,75,BLUE);
    LCDSetLine(55,75,55,82,BLUE);
    LCDSetLine(100,75,100,82,BLUE);
    LCDSetLine(55,112,100,112,BLUE);
    LCDSetLine(55,105,55,112,BLUE);
    LCDSetLine(100,105,100,112,BLUE);
    putchar('H');
    n41=1;
    }
    if ((x >110 ) && (y > 110 )&&(x < 131 ) && (y < 131 ))
    {
    Esc=0;Esc1=0;Esc33=0;Esc41=0;
    a = 0 ;a1=0;a33=0;a41=0;
    c1=0;c=0;c21=0;c41=0;
    n1=0;n33=0;n41=0;
    d41=0;d =0;d1=0;d33=0;
    }
    }
    }
    Delay(10000);
    EXTINT = 0x00000008; // Clear External Interrupt3 Flag
    }

    VICVectAddr = 0x00000000; // End of Interrupt
    }
    //mo khoa chuong trinh ngoai//
    c21=0; //chu y chu y
    ////////////////////////////////////////////////////
    /////////////////het lop thu 4_8///////////////////

    if ((x >110 ) && (y > 110 )&&(x < 131 ) && (y < 131 ))
    {
    Esc=0;Esc1=0;Esc33=0;Esc41=0;
    a = 0 ;a1=0;a33=0;a41=0;
    c1=0;c=0;c21=0;c41=0;
    n1=0;n31=0;n41=0;
    d41=0;d =0;d1=0;d33=0;
    }
    }
    //////////////////////lop thu 4_9/////////////////////////

    if(( a33 == 3 )&&( Esc33 == 1 )&&(c21==0)&&(c1==1)) // *********Submenu1 Paint Menu
    {
    n33=1;
    c41=0;
    c21=1;
    if ((x >110 ) && (y > 110 )&&(x < 131 ) && (y < 131 ))
    {
    Esc=0;Esc1=0;Esc33=0;Esc41=0;
    a = 0 ;a1=0;a33=0;a41=0;
    c1=0;c=0;c21=0;c41=0;
    n1=0;n33=0;n41=0;
    d41=0;d =0;d1=0;d33=0;
    }
    else {n41=1;}

    Delay(10000);
    EXTINT = 0x00000008;
    VICVectAddr = 0x00000000; //chu y chu y
    while (n33==1)
    {
    // khoa man hinh ngoai
    c21=1;
    /////////////////////////////////
    if ((VICIRQStatus & 0x00020000)&&(c==1))
    {
    coord=TOUCH_get_coord ();
    x = (*coord).x;
    y = (*coord).y;

    if ((x != OOB ) && (y != OOB)&&(c==1))
    {
    if ((d41 == 0)&&(c41==0)&&(c21==1))
    {
    //****************** Main Menu WaitBit *****************************
    //====================================================
    if ((x > 25) && (y > 25 )&&(x < 90 ) && (y < 65 ))
    {
    a41 = 1 ;
    Esc41 = 1 ;
    n41=1;
    LCDSetLine(55,75,100,75,WHITE);
    LCDSetLine(55,75,55,82,WHITE);
    LCDSetLine(100,75,100,82,WHITE);
    LCDSetLine(55,112,100,112,WHITE);
    LCDSetLine(55,105,55,112,WHITE);
    LCDSetLine(100,105,100,112,WHITE);
    LCDSetLine(55,25,100,25,BLUE);
    LCDSetLine(55,25,55,32,BLUE);
    LCDSetLine(100,25,100,32,BLUE);
    LCDSetLine(55,62,100,62,BLUE);
    LCDSetLine(55,55,55,62,BLUE);
    LCDSetLine(100,55,100,62,BLUE);
    putchar('i');
    }
    if ((x > 25) && (y > 66 )&&(x < 90 ) && (y < 115 ))
    {
    a41 = 2 ;
    Esc41 = 1 ;
    n41=1;
    LCDSetLine(55,25,100,25,WHITE);
    LCDSetLine(55,25,55,32,WHITE);
    LCDSetLine(100,25,100,32,WHITE);
    LCDSetLine(55,62,100,62,WHITE);
    LCDSetLine(55,55,55,62,WHITE);
    LCDSetLine(100,55,100,62,WHITE);
    LCDSetLine(55,75,100,75,BLUE);
    LCDSetLine(55,75,55,82,BLUE);
    LCDSetLine(100,75,100,82,BLUE);
    LCDSetLine(55,112,100,112,BLUE);
    LCDSetLine(55,105,55,112,BLUE);
    LCDSetLine(100,105,100,112,BLUE);
    putchar('y');
    }
    if ((x >110 ) && (y > 110 )&&(x < 131 ) && (y < 131 ))
    {
    Esc=0;Esc1=0;Esc33=0;Esc41=0;
    a = 0 ;a1=0;a33=0;a41=0;
    c1=0;c=0;c21=0;c41=0;
    n1=0;n33=0;n41=0;
    d41=0;d =0;d1=0;d33=0;
    }
    }
    }
    Delay(10000);
    EXTINT = 0x00000008; // Clear External Interrupt3 Flag
    }

    VICVectAddr = 0x00000000; // End of Interrupt
    }
    //mo khoa chuong trinh ngoai//
    c21=0; //chu y chu y
    ////////////////////////////////////////////////////
    /////////////////het lop thu 4_9///////////////////
    if ((x >110 ) && (y > 110 )&&(x < 131 ) && (y < 131 ))
    {
    Esc=0;Esc1=0;Esc33=0;Esc41=0;
    a = 0 ;a1=0;a33=0;a41=0;
    c1=0;c=0;c21=0;c41=0;
    n1=0;n33=0;n41=0;
    d41=0;d =0;d1=0;d33=0;
    }
    }
    } //chu y chu y

    }
    Delay(10000);
    EXTINT = 0x00000008; // Clear External Interrupt3 Flag
    }

    VICVectAddr = 0x00000000; // End of Interrupt
    }
    //mo khoa chuong trinh ngoai//
    c1=0; //chu y chu y

    }
    ////////////////////////////////////////////////////
    /////////////////het lop thu 3_3/////////////////// if(( a1 == 3 )&&( Esc1 == 1 )&&(c1==0)&&(c==1)) // *********Submenu1 Paint Menu

    } //chu y chu y

    }
    Delay(10000);
    EXTINT = 0x00000008; // Clear External Interrupt3 Flag
    }

    VICVectAddr = 0x00000000; // End of Interrupt
    }
    //mo khoa chuong trinh ngoai//
    c=0;
    }
    //////////////////////////////////////////////
    /////////////////het lop thu 2/////////////// //chu y chu y
    }
    }
    Delay(10000);
    EXTINT = 0x00000008; // Clear External Interrupt3 Flag
    }
    VICVectAddr = 0x00000000; // End of Interrupt
    }
    }
    int putchar (int ch)
    {
    if (ch == '\n')
    {
    while (!(U1LSR & 0x20)); // Wait TXD Buffer Empty
    U1THR = 0x0D; // Write CR
    }
    while (!(U1LSR & 0x20)); // Wait TXD Buffer Empty
    return (U1THR = ch); // Write Character
    }

    /*****************************/
    /* Read character from UART1 */
    /*****************************/
    int getchar (void)
    {
    while (!(U1LSR & 0x01)); // Wait RXD Receive Data Ready
    return (U1RBR); // Get Receice Data & Return
    }
    void Delay (unsigned long a) {
    while (--a!=0);
    }
    <span style="font-size:24pt;line-height:100%">link tổng hợp:</span>

    http://ifile.it/3f1wda5
  19. minhcdt Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    1. Họ tên: Hồ Anh Minh
    MSSV: 05111061
    Email: anhminh260887@yahoo.com
    2. Tên đề tài: điều khiển led ma trận dùng vi điều khiển ATmega32
    3. Yêu cầu: hiển thị tất cả các ký tự trong bảng mã ASCII. Cho 1 chuổi bất kỳ chạy từ phải sang trái.
    4. Đề tài gồm 2 module: mạch vi điều khiển và mạch led ma trận.
    Module led ma trận kết nối với vi điều khiển thông qua Portb.
    5. Kết quả: http://ifile.it/2fos7d4
  20. danhnguyen New Member

    Số bài viết: 8
    Đã được thích: 0
    Điểm thành tích: 0
    1.HỌ VÀ TÊN:NGUYỄN THÀNH DANH
    MSSV : 05111010
    Email: danhspktpro@yahoo.com.vn

    2.TÊN ĐỀ TÀI: QUÉT LED MATRẬN
    YÊU CẦU :
    +Hiện thị dữ liệu 1 cách rõ ràng
    +Điều khiển dữ liệu chạy từ trái qua phải và ngược lại
    3.Files powerpoint:
    Link dowload : http://ifile.it/qpea9lx

    4.Sơ đồ mạch nguyên lý và mạch in

    + Mạch vi điều khiển

    -Mạch nguyên lý:

    [IMG]

    -Mạch in:
    [IMG]

    + Mạch led ma trận

    -Mạch nguyên lý:

    [IMG]

    -Mạch in:
    [IMG]

    +Mô hình thực tế:

    [IMG]

    +Kết quả thu được:

    [IMG]

    Đây file chứa mạch in va mạch nguyên lý:

    Link dowload: http://ifile.it/1cewz2l

    5.Đây là link chứa chương trình , hình ảnh , và flim thể hịên kết quả
    +Film các bạn có thề xem bằng: Media classic
    Link dowload : http://ifile.it/p95gixr
    Tuy có cố gắn nhưng kết quả còn hạn chế .Rất mong thầy và các bạn thông cảm, mọi góp ý xin gửi về địa chỉ mail ở trên .Xin chân thành cám ơn
  21. daimt05 Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    Họ và tên : Ngô Văn Đài
    MSSV : 05111015
    LỚP : 051112A
    EMAIL : VANDAIMT05@gmail.com
    Tên đề tài: chạy chữ trên led ma trận
    [IMG]

    Yêu cầu thực hiện đề tài:

    Hiện chữ trên led ma trận chạy dịch từ trái qua phải và lặp lại
    Dùng vi điều khiển 89s52 để thực hiện điều khiển chương trình
    Dùng ic unl 2803 để đềm dòng và đảo tín hiệu ra
    Dùng port0 để xuất dữ liệu
    Dùng port 2 và port 3 để quét cột led ma trận
    Đây là sơ đồ nguyên lí của phần cứng:
    modul ma trận:
    [IMG]
    Modul mạch điều khiển và uln 2803:
    [IMG]
    Modul chân:
    [IMG]
    Sơ đồ mạch in:
    [IMG]
    Code của chương trình:
    org 000h

    mov p2,#0
    mov p3,#0

    t: mov dptr,#500h
    mov r4,#0
    D3: mov r3,#030h

    D2: mov dpl,r4

    mov r2,#80h
    D4: mov a,#0
    movc a,@a+dptr
    mov p0,a
    mov p3,r2
    lcall delay
    mov p3,#0
    inc dptr
    mov a,r2
    rr a
    mov r2,a
    cjne a,#80h,D4

    mov r2,#01h
    D1: mov a,#0
    movc a,@a+dptr
    mov p0,a
    mov p2,r2
    lcall delay
    mov p2,#0
    inc dptr
    mov a,r2
    rl a
    mov r2,a
    cjne a,#01h,D1

    djnz r3,D2

    inc r4
    cjne r4,#57h,D3

    ljmp td


    delay: mov 70h,#200
    djnz 70h,$
    ret

    org 500h
    db 00h,00h,00h,00h,00h,00h,00h,00h
    db 00h,00h,00h,00h,00h,00h,00h,00h

    db 07fh,020h,010h,008h,07fh,00h ;N
    db 03eh,041h,041h,045h,027h,00h ;G
    db 03eh,041h,041h,041h,03eh,00h ;O
    db 07ch,002h,001h,002h,07ch,00h ;V
    db 01fh,024h,044h,024h,01fh,00h ;A
    db 07fh,020h,010h,008h,07fh,00h ;N
    db 07fh,049h,049h,041h,03eh,00h ;D
    db 01fh,024h,044h,024h,01fh,00h ;A
    db 041h,041h,07fh,041h,041h,00h ;I
    db 032h,049h,049h,049h,026h,00h ;S
    db 07fh,048h,048h,048h,078h,00h ;P
    db 07fh,008h,014h,022h,041h,00h ;K
    db 040h,040h,07fh,040h,040h,00h ;T
    db 00h,00h,00h,00h,00h,00h,00h,00h
    db 00h,00h,00h,00h,00h,00h,00h,00h

    end
    Chương trình mô phỏng :
    clip

    Các bạn có thể xem toàn bộ file báo cáo trong link sau:
    Visit My Website

    2. Hướng phát triển:
    Dùng nhiều led ma trận hơn nữa để hiển thị nhiều chữ rõ ràng hơn
    Dùng giao tiếp với nút nhấn
    Hiển thị nhiều kiểu chạy chữ.


    Mong thầy và các bạn góp ý kiến
  22. 05112007 Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    1.Họ và tên: Lê Văn Dũng
    MSSV: 05112007
    Điện thoại: 08-37712975
    Email: le.vdung@yahoo.com

    2.Tên đề tài: Quét bàn phím ma trận và sử dụng 8 led 7 đoạn hiển thị MSSV
    Yêu cầu cần giải quyết của đề tài:
    - Hiển thị đúng phím nhấn
    - Hiển thị chính xác MSSV trên 8 led 7 đoạn
    - Kết hợp vừa nhấn phím vừa hiển thị MSSV
    [IMG]
    3.Sơ đồ mạch:
    +Sơ đồ mạch nạp:
    http://www.mediafire.com/?ktiio4jdt5k
    http://www.mediafire.com/?iz5mmtdtmtn
    http://www.mediafire.com/?dmydtye5y5j
    +Sơ đồ mạch thực thi:
    http://www.mediafire.com/?ugw2jtedgiw
    http://www.mediafire.com/?mjdwimnjzon
    +Sơ đồ mạch layout:
    http://www.mediafire.com/?nltmyyyz0ty
    http://www.mediafire.com/?jrylunoko2o
    4.File powerpoint:
    http://www.mediafire.com/?oykylvjzd3y
    5.Code chương trình:
    CH1 EQU 40H
    CH2 EQU 42H
    CH3 EQU 44H
    CH4 EQU 46H
    CH5 EQU 48H
    CH6 EQU 4AH
    CH7 EQU 4CH
    CH8 EQU 4EH
    DONVI EQU 60H
    CHUC EQU 61H
    TRAM EQU 62H
    NGAN EQU 63H
    CHUCNGAN EQU 64H
    TRAMNGAN EQU 65H
    TRIEU EQU 66H
    CHUCTRIEU EQU 67H
    ORG 0000H
    MOV SP,#30H
    SJMP MSSV
    ORG 000BH
    JMP T0ISR

    MSSV:

    MOV P1,#0
    MOV DPTR,#7SEGCODE
    MOV 41H,#00000001B
    MOV 43H,#00000010B
    MOV 45H,#00000100B
    MOV 47H,#00001000B
    MOV 49H,#00010000B
    MOV 4BH,#00100000B
    MOV 4DH,#01000000B
    MOV 4FH,#10000000B
    MOV TMOD,#12H
    MOV TH0,#-20
    SETB TR0
    MOV IE,#82H
    MOV R1,#20
    MOV R0,#CH1
    MOV CH1,#0
    MOV CH2,#0
    MOV CH3,#0
    MOV CH4,#0
    MOV CH5,#0
    MOV CH6,#0
    MOV CH7,#0
    MOV CH8,#0
    MOV CHUCTRIEU,#0
    MOV TRIEU,#5
    MOV TRAMNGAN,#1
    MOV CHUCNGAN,#1
    MOV NGAN,#2
    MOV TRAM,#0
    MOV CHUC,#0
    MOV DONVI,#7
    CALL GIAIMA

    MAIN:
    CALL IN_HEX
    MOV P1,A
    CJNE A,#11100010B,KT1
    MOV A,#0
    SJMP CONVERT
    KT1:
    CJNE A,#11010001B,KT2
    MOV A,#1
    SJMP CONVERT
    KT2:
    CJNE A,#11010010B,KT3
    MOV A,#2
    SJMP CONVERT
    KT3:
    CJNE A,#11010011B,KT4
    MOV A,#3
    SJMP CONVERT
    KT4:
    CJNE A,#10110001B,KT5
    MOV A,#4
    SJMP CONVERT
    KT5:
    CJNE A,#10110010B,KT6
    MOV A,#5
    SJMP CONVERT
    KT6:
    CJNE A,#10110011B,KT7
    MOV A,#6
    SJMP CONVERT
    KT7:
    CJNE A,#01110001B,KT8
    MOV A,#7
    SJMP CONVERT
    KT8:
    CJNE A,#01110010B,KT9
    MOV A,#8
    SJMP CONVERT
    KT9:
    CJNE A,#01110011B,KT10
    MOV A,#9
    SJMP CONVERT
    KT10:
    CONVERT:
    MOVC A,@A+DPTR
    MOV P0,A
    SJMP MAIN
    IN_HEX:
    MOV R3,#50
    BACK:
    CALL GET_KEY
    JNC IN_HEX
    DJNZ R3,BACK
    PUSH ACC
    BACK2:
    MOV R3,#50
    BACK3:
    CALL GET_KEY
    JC BACK2
    DJNZ R3,BACK3
    POP ACC
    RET
    GET_KEY:
    MOV A,#0FEH
    MOV R6,#4
    TEST:
    MOV P1,A
    MOV R7,A
    MOV A,P1
    ANL A,#11110000B
    CJNE A,#11110000B,KEY_HIT
    MOV A,R7
    RL A
    DJNZ R6,TEST
    CLR C
    SJMP EXIT
    KEY_HIT:
    MOV B,R6
    ADD A,B
    SETB C
    EXIT:
    RET
    T0ISR:
    DJNZ R1,ENDT0ISR
    MOV A,P2
    ANL A,#00000000B
    MOV P3,A
    MOV R1,20
    MOV P2,@R0
    INC R0
    MOV A,@R0
    ORL A,P3
    MOV P3,A
    INC R0
    CJNE R0,#50H,ENDT0ISR
    MOV R0,#CH1
    ENDT0ISR:
    RETI
    GIAIMA:
    MOV A,CHUCTRIEU
    MOVC A,@A+DPTR
    MOV CH1,A
    MOV A,TRIEU
    MOVC A,@A+DPTR
    MOV CH2,A
    MOV A,TRAMNGAN
    MOVC A,@A+DPTR
    MOV CH3,A
    MOV A,CHUCNGAN
    MOVC A,@A+DPTR
    MOV CH4,A
    MOV A,NGAN
    MOVC A,@A+DPTR
    MOV CH5,A
    MOV A,TRAM
    MOVC A,@A+DPTR
    MOV CH6,A
    MOV A,CHUC
    MOVC A,@A+DPTR
    MOV CH7,A
    MOV A,DONVI
    MOVC A,@A+DPTR
    MOV CH8,A
    RET
    7SEGCODE:
    DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80H, 90H
    END
    6.Kết quả:
    - Thi công được phần cứng và chạy chương trình trên phần cứng đó
    - Lập trình trên vi điều khiển AT89S52
    Hạn chế:
    - Mạch thi công còn xấu
    - Chưa có tính sáng tạo
    Hướng phát triển của đề tài: dùng quét bàn phím để mở cửa khóa bằng password
    7.Download Code và file mạch điện:
    http://www.mediafire.com/?yz2x4tjijtt
    http://www.mediafire.com/?nqzihnryjhd
    http://www.mediafire.com/?zgwcjdttkm0
    8.Nguồn tài liệu tham khảo:
    Chủ yếu là sách vi điều khiển của Thầy Tống Văn On và một số trang web:
    http://www.vnexpress.net/GL/Khoa-hoc/2003/03/3B9C5F0A/
    http://gianphoi.com/gian-phoi-tp-hcm/gian-phoi-dien-tu.php

    Chân thành cám ơn thầy và các bạn, chúc thầy và các bạn 1 cái Tết tràn đầy vui vẻ và thật nhiều tài lộc.
  23. tnthanhphongnguyen New Member

    Số bài viết: 1
    Đã được thích: 0
    Điểm thành tích: 0
    Họ Tên Sinh Viên: NGUYEN THANH PHONG
    MSSV:05111071
    EMAIL:tnthanhphongnguyen@yahoo.com.vn
    Tên Đề Tài: LED 7 ĐOẠN HIỂN THỊ MSSV
    [IMG]
    Yêu cầu đề tài:Hiển thị MSSV trên 8 led 7 đoạn thông qua vi điều khiển 89S52
    cùng 74HC138 quét tuần tự từng led thông qua 74LS47 để giải mã led 7 đoạn
    <span style="color:#FF0000">Kiến thức cần nắm trước khi thực hiện</span>:
    +Vi điều khiển
    +IC 74LS47,IC74HC138
    +Các linh kiện điện tử thông dụng như Transistor,tụ…..
    + Chọn các giá trị thích hợp cho mạch:điện trở,nguồn,…
    <span style="color:#FF0000">Các linh kiện sử dụng trong mạch:</span>
    + IC 89S52
    + IC 74LS47,IC 74HC138
    + IC 7805
    + Transistor PNP
    + Tụ
    + Điện trở
    + Nút nhấn
    + Thạch anh
    + Led 7 đoạn
    <span style="color:#FF0000">Tiến trình thực hiện:</span>
    Tìm hiểu lí thuyết
    Tìm hiểu,thiết kế mạch nguyên lý
    Mua linh kiện và tiến hành thử nghiệm trên Testboard
    Vẽ mạch in và thi công
    <span style="color:#FF0000">Tóm tắt phần cứng họ Vi điều khiển MCS-51:</span>
    Họ Vi điều khiển MCS-51 có cácđặc điểm chung:
    Có 4 Kbyte bộ nhớ FlashRom
    Có 128 Byte Ram nội
    4 port xuất/nhập 8 bit
    Có khả năng giao tiếp dữ liệu nối tiếp
    Có khả năng mở rộng 64 Kbyte bộ nhớ ngoài
    [IMG]
    <span style="color:#FF0000"> THIẾT KẾ VÀ THI CÔNG:</span>
    <span style="color:#800080">A/PHẦN CỨNG:</span>
    <span style="color:#FF00FF">1 .MẠCH NGUỒN: </span>
    Dùng IC ổn áp LM7805,sơ đồ chân và cách kết nối của nó như sau:
    [IMG]
    <span style="color:#FF00FF">2.SƠ ĐỒ KHỐI CỦA CÁC LINH KIỆN:</span>
    [IMG]
    <span style="color:#00FF00">2.1>Vi điều khiển 89S52:</span>
    ***89S52 có 4 port từ port 0 đến port 3 .Ở đây ta chỉ quan tam đến port 2
    Port 2 là một port công dụng kép trên các chân 21-28 được dùng như
    các đường xuất nhập hoặc là byte cao của bus địa chỉ đối với các thiết kế
    dùng bộ nhớ mở rộng
    ***Chân số 20 nối mass(GND), chân số 40 được nối nguồn Vcc
    ***Chân XTAL1 và XTAL2 (chân 18 và 19 là hai chân kết nối với mạch dao
    động tần số 12Mhz
    ***Chân EA:Tín hiệu vào EA trên chân 31 thường được mắc lên mức
    cao(+5v) ,khi đó 89S52 thi hành chương trình từ ROM nội trong khoảng
    địa chỉ thấp (4K)
    ***Chân RST:Ngõ vào RST trên chân 9 là ngõ reset.khi tín hiệu này được
    đưa lên mức cao (trong ít nhất 2 chu kỳ máy), các thanh ghi trong 89S52
    dược tải những giá trị thích hợp để khởi động hệ thống
    ***Các nút nhấn thay đổi trạng thái
    ***Tụ 104 chống nhiễu
    ***Tụ C7 để mạch tự động reset
    <span style="color:#00FF00">2.2> IC 74LS47:</span>
    *Chân 8 nối mass,chân 16 nối Vcc
    *Chân 7,1,2,6 lần lượt là D0,D1,D2,D3 được nối vào port 2 như hình vẽ
    *Chân 3,4,5 được nối Vcc với mục đích loại bỏ gợn sóng vì chúng hoạt
    động ở mức thấp
    *Các chân 9,10,11,12,13,14,15 là các ngõ ra
    *Bảng trạng thái:
    [IMG]
    <span style="color:#00FF00">2.3> 74HC138:</span>
    *Chân 8 nối mass, chân 16 nối Vcc
    *Chân 1,2,3 là các chân select được nối vào port 2 như hình vẽ
    *Chân G2A,G2B hoạt động ở mức thấp dược nối mass
    *Chân 6 hoạt động mức cao nối Vcc
    *Các chân 7,9,10,11,12,13,14,15 là các tín hiệu ra
    *Bảng trạng thái:
    [IMG]
    <span style="color:#00FF00">2.4> Phần hiển thị:</span>
    Gồm 8 transistor và 8 led 7 đoạn
    [IMG]
    <span style="color:#00FF00">Nút nhấn</span>
    [IMG]
    Mach Reset tự động hoặc bằng tay:
    [IMG]
    <span style="color:#FF0000">Giải quyết vấn đề: </span>
    -viết chương trình và thử nghiệm trên phần mềm Protues
    -Tiến trình thực hiện từng bước và thử nghiệm từng bộ phận riêng biệt.
    Khi kết quả thử nghiệm như mong muốn thì tiến hành vẽ mạch in và thi công.
    <span style="color:#FF0000">Khó khăn gặp phải</span>
    Khi mô phỏng trên proteus thì mạch hoạt động tốt nhưng khi nạp vào vi điều khiển thì gặp phải vấn đề mạch không hoạt động
    Vẽ mạch,nối dây nhầm lẫn nên mạch không chạy,phải mất thời gian đo mạch tìm lỗi
    Hư linh kiện…..
    <span style="color:#FF0000">MẠCH IN:</span>
    [IMG]
    <span style="color:#FF0000">MẠCH NGUYÊN LÝ:</span>
    http://vandaimt05.webs.com/phong/Mach%20nguyen%20ly.pdf
    <span style="color:#FF0000">B/PHẦN CHƯƠNG TRÌNH</span>:ĐỂ đơn giản mình chỉ dùng lệnh mov
    http://vandaimt05.webs.com/phong/chuongtrinh.txt
    <span style="color:#FF0000">IV/KẾT LUẬN:</span>
    Hạn chế của bài báo cáo này là chỉ có thể quét tuần tự từng led không thể
    cùng một lúc cho các led cùng sáng.
    Bài báo cáo rất mong được sự đóng góp ý kiến của thầy và các bạn

    [IMG]
  24. thanhduy_meo New Member

    Số bài viết: 3
    Đã được thích: 0
    Điểm thành tích: 0
  25. gacdt05 Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
  26. gacdt05 Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    Họ-Tên: LÊ DUY PHƯƠNG
    MSSV : 05111075

    ĐỀ TÀI : ĐỒNG HỒ SỐ CÓ SỬ DỤNG DALLASS

    Đề Tài gồm có : + vi điều khiển họ MCS51 là 89s52 làm nhiệm vụ đọc/ghi dữ liệu từ Dallass 12C887,sau đó xử lý và hiển thị ra 6 LED 7 đoạn
    + Dallass 12C887 có chức năng như một RAM ngoài lưu trữ thời gian thực(real time clock).khi gặp sự cố mất nguồn,thì Dallass vẫn luôn update
    thời gian và khi có nguồn trỡ lại thì đồng hồ vẫn hiển thị thời gian chính xác
    +6 LED 7 đoạn dùng để hiển thị ngày,giờ
    + nguồn cung cấp 5V
    Ngoài ra phần cứng còn có:
    + bộ phận hồng ngoại để nhận tín hiệu điều khiển từ xa
    + bộ phận chuông dùng để báo giờ

    LƯU ĐỒ GIẢI THUẬT:
    chương trình chính
    [IMG]

    chương trình tăng giờ-phút-giây
    [IMG]

    chương trình giảm giờ-phút-giây
    [IMG]


    sau đây là sơ đồ nguyên lý và layout :
    [IMG]

    [IMG]



    và sản phẩm cuối cùng:
    [IMG]

    còn đây là file báo cáo : http://www.2shared.com/file/4644313/f148171c/bao_cao_.html

    file chuong trình (code viết bằng asm):
    http://www.2shared.com/file/4644551/7fa7cf86/donghoso.html

    File Demo : http://www.2shared.com/file/4649297/cd54ebe7/Video000.html

    Hạn chế : do mới đầu làm quen với con Dallass 12C887 nên trong lúc viết code hơi khó khăn.Trong đề tài này mình chỉ mới viết cho hiển thị ngày giờ
    (có viết cả chương trình hẹn giờ và dùng điều khiển từ xa nhưng không chạy)
    Tương lai sẽ phát triển hoàn thiện đề tài này như : Đồng hồ có hiển thị ngày giờ,còn có thêm chuông báo thức và kết hợp hiển thị nhiệt độ và có thể báo cháy...

    Tai Lieu Tham Khao : www.dientuvietnam.net
    www.dktd.net


    CẢM ƠN CÁC BẠN ĐÃ QUAN TÂM
    [IMG] HAPPY NEW YEAR!!!
    [IMG] CHÚC VUI !!!
  27. phapnguyen Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    1. Họ tên sinh viên: NGUYỄN VĂN PHÁP
    -MSSV:05111070
    -Email:santana19862005@yahoo.com
    -Điện thoại:01228402587.
    2. Tên đề tài thực hiện:
    Mạch quan báo dùng LED MATRIX
    Yêu cầu: Dùng Led Matrix 8x8 hiển thi chữ và sữ dụng các hiệu ứng như chớp tắt, chạy chữ
    3. -Phương án lựa chọn giải quyết trong đề tài.
    Sữ dụng IC ghi dịch 74164 để quét chọn côt sang, đưa qua ic khuếch đại đảo 2803. Đưa dữ liệu chữ ra hàng thông qua transistor để khuếch đại tín hiệu
    4. mạch led matrix
    -mạch diều khiển:
    http://s484.photobucket.com/albums/rr207/p...chdieukhien.jpg
    - sơ đồ nguyên lý:
    http://s484.photobucket.com/albums/rr207/p...ent=machled.png
    - sơ đồ layout:
    http://s484.photobucket.com/albums/rr207/p...rent=layout.jpg
    - sơ đồ chân linh liện:
    http://s484.photobucket.com/albums/rr207/p...=chanmatrix.jpg
    5. Lưu đồ giải thuật và code chương trình:
    code:
    /*****************************************************
    This program was produced by the
    CodeWizardAVR V1.24.8d Professional
    Automatic Program Generator
    © Copyright 1998-2006 Pavel Haiduc, HP InfoTech s.r.l.
    http://www.hpinfotech.com

    Project : Led Matrix
    Version :
    Date : 12/1/2008
    Author : Nguyen Van Phap 05111070
    Company : Spkt
    Comments:


    Chip type : ATmega32L
    Program type : Application
    Clock frequency : 12.000000 MHz
    Memory model : Small
    External SRAM size : 0
    Data Stack size : 512
    *****************************************************/

    #include <mega32.h>
    #include <delay.h>
    #define data PORTA.0
    #define clk PORTA.1
    #define clr PORTA.2

    // Declare your global variables here
    unsigned char n,i,t,k;
    unsigned char flash chu[] ={ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0x01,0x0ED,0x0ED,0x0F3,0x0FF,0x01,0x0EF,0x0EF,0x01,0x0FF,0x03,0x0ED,0x0ED,0x03,0
    x0FF,0x01,
    0x0ED,0x0ED,0x0F3,0x0FF,0x0FF,0x0B3,0x6D,0x6D,0x9B,0x0FF,0x01,0x0ED,0x0ED,0x0F3,
    0x0FF,0x01,
    0x0D7,0x0BB,0x7D,0x0FF,0x0FD,0x0FD,0x01,0x0FD,0x0FD,0x0FF,0x0FF,0x0FF,0x0FF,0x0F
    F,0x0FF,0x0FF,
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}
    ;
    unsigned char flash chay[] ={ 0x01,0x0ED,0x0ED,0x0F3,0x0FF,0x01,0x0EF,0x0EF,0x01,0x0FF,0x03,0x0ED,0x0ED,0x03,0
    x0FF,0x01,
    0x0ED,0x0ED,0x0F3,0x0FF,0x0FF,0x0B3,0x6D,0x6D,0x9B,0x0FF,0x01,0x0ED,0x0ED,0x0F3,
    0x0FF,0x01,
    0x0D7,0x0BB,0x7D,0x0FF,0x0FD,0x0FD,0x01,0x0FD,0x0FD,0x0FF,0x0FF,0x0FF,0x0FF,0x0F
    F,0x0FF,0x0FF};
    void chaychu()
    {
    k=-48;
    // Place your code here
    for(t=0;t<113;t++)
    {
    clr = 0;
    clr = 1;
    for (i=0;i<48;i++)
    {
    clk = 0;
    if (i==0) data=1;
    else data=0;
    clk = 1;
    if ((i+k >=113)||(i+k<0)) PORTC = 0xFF;
    else
    {
    PORTC = chu[i+k];
    delay_ms(1);
    }
    };
    PORTC=0xff;
    delay_ms(25);
    k++;
    if (k==113) k=-48;
    }
    }

    //**********************
    void choptat()
    {
    // while (1)
    // {
    // Place your code here
    for (t=0;t<70;t++)
    {
    if (t>50)
    {
    clr = 0;
    }
    else
    {
    clr = 1;
    }
    for (i=0;i<48;i++)
    {
    clk = 0;
    if (i==0)
    {
    data=1;
    }
    else
    {
    data=0;
    };
    clk = 1;

    PORTC = chay;
    delay_ms(1);

    };
    };
    // };
    }
    //**********************
    void main(void)
    {
    // Declare your local variables here

    // Input/Output Ports initialization
    // Port A initialization
    // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
    // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
    PORTA=0x00;
    DDRA=0xFF;

    // Port B initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
    PORTB=0x00;
    DDRB=0x00;

    // Port C initialization
    // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
    // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
    PORTC=0x00;
    DDRC=0xFF;

    // Port D initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
    PORTD=0x00;
    DDRD=0x00;

    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: Timer 0 Stopped
    // Mode: Normal top=FFh
    // OC0 output: Disconnected
    TCCR0=0x00;
    TCNT0=0x00;
    OCR0=0x00;

    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: Timer 1 Stopped
    // Mode: Normal top=FFFFh
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer 1 Overflow Interrupt: Off
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    TCCR1A=0x00;
    TCCR1B=0x00;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;

    // Timer/Counter 2 initialization
    // Clock source: System Clock
    // Clock value: Timer 2 Stopped
    // Mode: Normal top=FFh
    // OC2 output: Disconnected
    ASSR=0x00;
    TCCR2=0x00;
    TCNT2=0x00;
    OCR2=0x00;

    // External Interrupt(s) initialization
    // INT0: Off
    // INT1: Off
    // INT2: Off
    MCUCR=0x00;
    MCUCSR=0x00;

    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x00;

    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    ACSR=0x80;
    SFIOR=0x00;
    while (1)
    {
    // Place your code here
    for (n=0;n<4;n++)
    {
    if (n<2)
    {
    choptat();
    }
    else
    {
    chaychu();
    }
    };
    };
    }

    link download
    hieu ung: http://www.2shared.com/file/4645589/7c6e5e9c/hieu_ung.html
    bao cao: http://www.2shared.com/file/4645598/12725f4b/BO_CO.html
    6. kết quả download video
    http://www.2shared.com/file/4645567/5555e1...eo_ket_qua.html
    7. Kết quả : đã hiển thị được chữ và tạo được các hiệu ứng.
    Phương hướng phát triển: giao tiếp được với bàn phím máy tính để đưa mã chữ ra hiển thị ngoài led matrix
    8. Link file c va hex cua chuong trinh:
    file hex: http://www.2shared.com/file/4645629/84c7084f/hieu_ung.html
    file c: http://www.2shared.com/file/4645630/e40081aa/hieu_ung.html
    9. tai lieu tham khao:
    dientuvietnam.net
  28. alone_87 New Member

    Số bài viết: 11
    Đã được thích: 0
    Điểm thành tích: 0
    1.họ và tên: ĐINH XUÂN TƯỜNG
    mssv: 05111117
    SĐT: 0962757653

    2.tên dề tài : lập trình điều khiển đèn giao thông
    yêu cầu:
    điều khiển được đèn giao thông
    có thể điều khiển đèn, thời gian,...
    3.phương án lưa chọn
    chỉ thực hiện trên 2 tru đèn, hiển thị led 7 đoạn, đèn là led đơn
    4. sơ đồ mạch
    file film mô phỏng
    http://www.esnips.com/doc/e132e8b4-712c-43...424770de/tuong2
    file nguyên lý và mạch in
    [IMG]
    [IMG]
    hình ảnh mạch đã thi công
    [IMG]
    5. file lập trình (.c) và file powerpoint
    http://www.mediafire.com/download.php?zdj2mify2nj
    http://www.mediafire.com/download.php?zyidjhdmy2n
    6. kết quả: điều khiển được đèn giao thông
    7.tài liệu tham khảo
    abedded c for avr
  29. raphnhat New Member

    Số bài viết: 4
    Đã được thích: 0
    Điểm thành tích: 0
    <font size="4">Họ và tên:</font>

    - Đặng Khánh Hải
    + MSSV: 05112017
    + Mail: khanhhaispkt@yahoo.com

    - Lê Thanh Hùng
    + MSSV: 05112027
    + Mail: thanhhungtn2002@yahoo.com

    - Phạm Minh Nhật
    + MSSV: 05112050
    + Mail: raphnhat@gmail.com

    - Đinh Công Quý
    + MSSV: 05112054
    +Mail: dinhquy77@gmail.com

    <font size="4">Đề tài và yêu cầu:</font>

    - Mô hình cấp phôi tự động cho máy tiện và phay
    + Cấp phôi chính xác vị trí và nhịp sản xuất
    + Mô hình chạy ổn định

    - Mạch đồng hồ số
    + Hiện thị đúng giờ phút giây.
    + Led hiển thị đều, không nhấp nháy.
    + Điều chỉnh được giờ phút giây theo ý muốn.

    - Mạch hiển thị chữ cái
    + Quét led 7 đoạn ra chữ A, B, C, D, E, F
    + Hiện thị đều, không nhấp nháy

    <font size="4">Sơ đồ nguyên lý và mạch in</font>

    Sơ đồ mạch nạp
    http://www.mediafire.com/download.php?euzz0nmvwgw

    Sơ đồ mạch ULN2803
    http://www.mediafire.com/download.php?jjum2r2hz1j

    Sơ đồ mạch đồng hồ
    http://www.mediafire.com/download.php?wzdyoimyzil

    Sơ đồ mạch chữ cái
    http://www.mediafire.com/download.php?z1mijzryyiz

    <font size="4">Power Point</font>
    http://www.mediafire.com/download.php?zymjmdjdm5f

    <font size="4">Chương trình (file .ASM):</font>

    - Mô hình cung cấp phôi cho máy tiện và phay:
    http://www.mediafire.com/download.php?jm2wczntntz

    - Mạch đồng hồ số:
    http://www.mediafire.com/download.php?gnmhyzyztwr

    - Mạch hiển thị chữ cái
    http://www.mediafire.com/download.php?vdomznznijy

    <font size="4">Hình ảnh mô hình:</font>

    <font size="2">Mạch nạp 1</font>
    [IMG]

    <font size="2">Mạch nạp 2</font>
    [IMG]

    <font size="2">Mạch ULN2803</font>
    [IMG]

    <font size="2">Mô hình cung cấp phôi cho máy tiện</font>
    [IMG]

    <font size="2">Mô hình cung cấp phôi cho máy phay</font>
    [IMG]

    <font size="2">Mạch đồng hồ</font>
    [IMG]

    <font size="2">Mạch hiện bảng chữ cái</font>
    [IMG]
  30. truonghung288 Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    Vì em không đang nhập được nen mượn tài khoản cua bạn để post bài.

    Phạm Thị Kim Thoa
    mssv: 05112068
    email: phamthoa1987@yahoo.com
    tên đề tài: mạch ĐỒNG HỒ SỐ
    chức năng: có thể đếm giờ, phút giây
    có thể chỉnh thời gian thực
    Hướng phát triển: lập trình để có thể có chức năng bấm giây
    chương trình, power point:
    http://www.mediafire.com/myfiles.php
    hinh ảnh, sơ đồ, mạch in:
    [IMG]
  31. truonghung288 Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    Chào câc bạn đây là bài báo cáo VĐk giữa kỳ của mình

    Trương Văn Hùng
    MSSv 05112028
    email : canhsathoanggia9000@yahoo.com

    dề tài của mình là làm mạch đèn giao thông có hiển thị thời gian như hôm trước trong diễn đàn có nói đó
    đê tài cảu mình xuất phat từ ý tưởng Ngã tư thủ đức
    hiển thi 3 đèn xanh đỏ vàng
    hiển thị thowig gian chờ đợi của cả 3 đnè ở cả hai cột đèn giao thông ( hiển thị qua 4 led) nhưng vì báo cáo sơm nên về nàh một số bạn đã mượn mạch mình và làm hư nên mình chi có thể poret không mo phỏng đươc
    mình đã mô phỏng ở trên lớp rồi . đè tài của minh có một số nhược điểm chưa khác phục được là :
    chưa có hệ thống nút nhấn nên chưa điều khiển được khi có dự cố về giao thông
    chưa có chương trình phụ để diều khiển ở các vị trí khác nhau , ví du điều chỉnh hai cột đèn lẹch thời gian ...vv
    và thiếu kinh nghiệm khi báo cáo trên lớp
    fire Ám nua ne http://www.mediafire.com/?gmuynihjfty
    mach in của mình về 4 led .
    [IMG]

    mach chính
    [IMG]

    module đèn dùng 8 led don


    [IMG]

    hinh [IMG]
    mạch nguyên lý [IMG]
  32. cntd New Member

    Số bài viết: 17
    Đã được thích: 0
    Điểm thành tích: 1
    <span style="color:#0000FF"><span style="font-size:18pt;line-height:100%">BỔ XUNG BÁO CÁO GIỮA KÌ MÔN VI ĐIỀU KHIỂN</span></span>

    1. Sinh viên : TRỊNH NGỌC HOÀNG
    MSSV : 05112025
    Lớp : 051120C
    Ngành : Công Nghệ Tự Động
    Email : ngochoang05112025@yahoo.com.vn
    Điện thoại : 01698521127

    2. Đề tài : <span style="color:#0000FF"><span style="font-size:18pt;line-height:100%">" Giao tiếp vi điều khiển 89S52 với động cơ bước "</span></span>
    Chào thầy và các bạn ,hôm trước do mạng internet chổ tôi ở qua yếu nên tôi chỉ upload phần nội dung báo cáo ,cũng như file hình ảnh mô hình ,
    yêu cầu đề tài ,...tôi đã làm cho bài báo cáo giữa kì môn vi điều khiển.
    Nhưng, hôm trước phần báo cáo tôi còn thiếu phần mô phỏng hoạt động điều khiển động cơ bước ,hôm nay tôi upload lên tiếp nội dung còn thiếu đó.
    Mong thầy và các bạn xem qua ,và góp ý kiến cho đề tài của tôi ,đề đề tài này hoàn thiện hơn. Tôi chân thành cám ơn.

    + Bạn dowload phim mô phỏng hoạt động ở đây :
    http://www.mediafire.com/file/mneymdhgmhj/...onghoatdong.3gp
    + Bạn mở phim này bằng chương trình hỗ trợ đuôi (.3GP) như : window media classic ,...
    Hoặc dowload chương trình mở ở đây :
    http://www.download.com.vn/Audio+Video/Aud...+Player+Classic

    Do máy quay phim không được tốt nên chất lượng hình ảnh không được rõ cho lắm ,mong các bạn thông cảm.
  33. truongdinh New Member

    Số bài viết: 1
    Đã được thích: 0
    Điểm thành tích: 0
    họ tên : Hồ Công Định
    MSSV :05111019
    email :luckystar200287@yahoo.com
    fone :0958011095

    ĐỀ TÀI : giao tiếp LCD với vdk 89 hiện thông số điều khiển động cơ bước

    nội dung :
    -tìm hiểu giao tiếp với LCD
    -dùng vdk điều khiển động cơ bước chạy các chế độ :full ,half ,thuận ,nghịch ,tăng tốc,giảm tốc
    - hiển thị các thông số trạng thái trên của động cơ lên LCD

    phương án lựa chọn :
    -dùng vi điều khiển 89s52 ( giá thành rẻ)
    -giao tiếp LCD ở chế độ 8 bit
    -chia mạch thành những modul nhỏ để dễ thi công ,kiểm tra ,đồng thời cho phép tái sử dụng
    - dùng Keil C để viết chương trình

    và đây là kết quả đã đạt được :

    [IMG]


    film mô phỏng : http://ifile.it/i4fcowk

    file orcad của các modul : http://ifile.it/kbvfmrz

    code và protues mô phỏng : http://ifile.it/i5hybsu

    file báo cáo : http://ifile.it/t9hj0kv

    tài liệu tham khảo + lưu đồ điều khiển LCD : http://ifile.it/3tco7le

    ngoài ra các bạn có thể tìm được rất nhiều tài liệu về giao tiếp LCD tại địa chỉ :

    http://vagam.dieukhien.net

    đề tài tuy đã được thưc hiện nhưng vẫn còn nhiều hạn chế
    hướng phát triển của đề tài là :
    -giao tiếp LCD ở chế độ 4 bít để tiết kiệm IO
    - điều khiển động cơ chạy vi bước để tăng độ chính xác trong điều khiển

    cảm ơn sự quan tâm theo dõi của các bạn !
    chúc thầy và các bạn một năm mới <span style="color:#0000FF">AN KHANG THỊNH VƯỢNG _ VẠN SỰ NHƯ Ý !</span>
  34. traxanh05 Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    I, HUỲNH TRỌNG HIỀN
    MSSV: 05112018
    Email: th08082008@yahoo.com
    Điện thoại: 0978045609

    II, Đề Tài : SỬ DỤNG MA TRẬN PHÍM QUÉT VÀ HIỂN THỊ RA 8 LED 7 ĐOẠN

    * Yêu cầu cần giải quyết:
    - Quét phím ma trận
    - Quét 8 led 7 đoạn (tiết kiệm port cho con AT89S52)
    - Nhấn phím số và chữ nào thì hiện thị ra led tương ứng

    III, Phương án lựa chọn:

    - Quét phím theo cột hoặc theo hàng
    - Quét 8 led 7 đoạn sử dung con transito A1015 để kích

    IV, Sơ Đồ Mạch Nguyên Lý và Layout:

    Mình đã up lên mạng các bạn co thể down ở địa chỉ : http://www.mediafire.com/file/zuzyyyo5vly/hinhanh.rar

    V, Lưu Đồ Giải Thuật :

    * Lưu đồ:
    Mình đã up lên mạng các bạn co thể down ở địa chỉ : http://www.mediafire.com/file/gzmwzytmzko/...dogiaithuat.rar
    * Code (*.text) :
    Các bạn xem qua và góp ý cho mình nhé : http://www.mediafire.com/file/iqzwzzmdnyz/code.txt

    VI, Hình ảnh mô phỏng:

    Đây là đoạn phim mình quay lại đề tài của mình, các bạn vô link này để down về xem ^^ : http://s496.photobucket.com/albums/rr322/balasoda/

    VII, Kết quả:

    Qua đề tài nộp giữa kì này mình hiểu thêm về cách làm phần cứng và các lệnh trong VDK . Có thể nói bài thực hành giúp ta hiểu nhanh và nhớ dai hơn rat nhiều [IMG]
    Nhưng vẫn còn một số hạn chế là còn khá đơn giản ( vừa mới học xong mà làm dễ thôi hihi [IMG]:)" border="0" alt="19.gif" /> ). Trong tương lai mình sẽ "ngâm cứu" thêm để có thể làm thành một chiếc máy tính
    chẳng hạn hoặc có thể phức tạp hơn 1 tí xíu... [IMG]

    File power point báo cáo : http://www.mediafire.com/file/nzyjmdwtz0n/PPT.rar

    VIII, Đây là code và sơ đồ mạch điện ( mô phỏng trên proteus ) :\

    * link down code (*.asm) : http://www.mediafire.com/file/nqdezhy5otz/NOPTH.ASM
    * link down proteus : http://www.mediafire.com/file/4dwuytjonji/proteus.rar

    Tất cả kiến thức mình chu yếu học trên lớp và qua chính trang web này. Rất cảm ơn và mong các bạn đóng góp nhiều hơn nữa để mọi người học hỏi nhau [IMG] [IMG] [IMG]
  35. tranvantai05 Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    Trần văn Tài
    MSSV:05112057
    Điện thoại :0978782564

    Tên đề tài thực hiện:

    Sử Dụng 8 LED Bảy Đoạn Để Hiển thị

    1.1 Mô tả vắn tắt .
    _Sử dụng 8led 7 đoạn hiển thị khóa học 2005-2010
    _Chạy từng số từ trái qua phải
    _Chớp số 2005-2010 , 5 lần
    _Lăp lại chương trình
    1.2Cac phương án lựa chọn
    _Sử dụng phần mềm Eagle 4.1 để vẽ mạch nguyên lí và mạch in
    _Sử dụng phần mềm pinacle để soạn thảo chương trình vi điều khiển
    _Trước khi cho chạy ,mô phỏng thử qua proteus 7.1
    1.2 Sơ đồ mạch nguyên lý
    1.3.Lưu đồ giải thuật

    org 000h
    main:

    mov r5,#5
    mov 20h,#0a4h
    mov 21h,#0c0h
    mov 22h,#0c0h
    mov 23h,#92h
    mov 24h,#0a4h
    mov 25h,#0c0h
    mov 26h,#0f9h
    mov 27h,#0c0h
    mov r0,#0a4h
    lcall hienthi
    mov r0,#0c0h
    lcall hienthi
    mov r0,#0c0h
    lcall hienthi
    mov r0,#92h
    lcall hienthi
    mov r0,#0a4h
    lcall hienthi
    mov r0,#0c0h
    lcall hienthi
    mov r0,#0f9h
    lcall hienthi
    mov r0,#0c0h
    lcall hienthi
    chop:
    mov r6,#80
    lcall hton
    djnz r5,chop
    mov r5,#10



    jmp main
    hienthi:

    mov a,#11111110b
    ;mov a,#00000001b
    mov p0,r0
    ht:
    mov p2,a
    lcall delay3
    ;mov p2,#0ffh
    mov p2,#00h

    rl a
    ;cjne a,#00000001b,ht
    cjne a,#11111110b,ht
    ret
    hton:
    mov a,#11111110b
    ;mov a,#00000001b

    mov r0,#20h
    ht1:
    mov p0,@r0
    mov p2,a
    lcall delay1
    ;mov p2,#00h
    mov p2,#0ffh
    inc r0
    rl a
    cjne r0,#28h,ht1
    djnz r6,hton
    mov r6,#100
    hton1:
    mov p2,#0ffh
    lcall delay1
    djnz r6,hton1
    ret
    delay3:
    mov tmod,#0000001b
    mov r7,#5
    loop:
    mov th0,#high(-50000)
    mov tl0 ,#low (-50000)
    setb tr0
    jnb tf0,$
    clr tf0
    clr tr0
    djnz r7,loop
    ret

    delay2:
    mov 55h,#10
    del1: mov 54h,#0ffh
    djnz 54h,$
    djnz 55h,del1
    ret
    delay1:
    MOV 7FH,#200
    DJNZ 7FH,$
    RET


    [IMG]

    Sơ đồ mạch nguyên lý:


    [IMG]
    Sơ đồ mạch in :
    [IMG]
    Mạch xuất:
    [IMG]
    [IMG]
    [IMG]
    Hình ảnh thực tế của mạch:
    [IMG]
    Đoạn video mô phỏng:
    clip mophong
    *Kết quả đạt được và hạn chế:
    _Có thể hiển thị được các số theo chương trình mong muốn,ngoài ra còn có thể hiển thị chữ số.
    _Đây chỉ là bước khởi đầu,là nền tản để làm mạch hiển thị ở các đèn, các bảng quảng cáo
    _Ứng dụng nhiều trong thực tế
    _Những khó khăn ban đầu:trong quá trình làm mạch có nhiều khó khăn về kinh nghiệm và nhiều thứ khác.Chưa thể hiển được
    nhiều ứng dụng cho thực tế trong mạch này
    _Hướng phấn đấu:Làm các mạch đèn quảng cáo hiển thị , biển báo.....
    *Code chương trình:
    code asm
    Các nguốn tài liệu tham khảo:
    www.dientuvietnam.net
    Lý thuyết ĐKTĐ
    Embedded C Programming and Atmel
    Và đặc biệt là sự giúp đở nhiệt tình của các bạn
    Em chân thành cảm ơn các anh,các bạn và Thầy.
    Vagam
  36. toilatoi Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    ĐỀ TÀI :ĐIỀU KHIỂN TỐC ĐỘ ĐỘNG CƠ DC
    NGUYỄN THANH HẢI MSSV:05111027 LỚP 051111C
    MAIL: thanhhai_spkt_05@yahoo.com.vn
    DĐ: 01226124296


    MÔ TẢ:

    MODE: Vào chế độ cài đặt, lần lượt nhấn mode để vào cài đặt cho từng hàng( đon vị, chục , trăm).
    UP,DOWN: Tăng giảm mỗi lần 1 đon vị từ 0->9->0
    START: Hiển thị tốc độ một khoảng thời gian rồi mới chạy.
    Trong khi chạy, nếu nhấn MODE sẽ tự động vào chế độ cài đặt.

    PHẦN CỨNG:

    -Vi điều khiển ATmega32 (mua của CLB KHT).
    -Mạch Công suất và giao tiếp : 4 nút nhấn, 4led 7 đoạn.ngõ ra nối vào động cơ.

    HẠN CHẾ:

    -Không biết cách chống nhiễu cho nút nhấn ở chân ngắt ngoài.Nút nhấn MODE mình chọn dùng ngõ vào của ngắt ngoài 1 (PIND.3),vì hàm xử lí viết trong chương trình nhắt ,mình chưa biết chống nhiễu chỗ này.BÁc nào biết chỉ dùm nhé.
    TOÀN BỘ FILE GỒM PHẦN CỨNG, MỀM, HÌNH ẢNH MÌNH UP LÊN LINK BÊN DƯỚI( CHO DIỄN ĐÀN NHẸ NHẸ XÍU ^^),CAC BẠN DOWN VỀ COI RỒI GÓP Ý DÙM HA.THANKS.
    http://www.mediafire.com/?sharekey=b67a397...06d3f1674d9006d
  37. tranvantai05 Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    Trần văn Tài
    MSSV:05112057
    Điện thoại :0978782564

    Tên đề tài thực hiện:

    Sử Dụng 8 LED Bảy Đoạn Để Hiển thị

    1.1 Mô tả vắn tắt .
    _Sử dụng 8led 7 đoạn hiển thị khóa học 2005-2010
    _Chạy từng số từ trái qua phải
    _Chớp số 2005-2010 , 5 lần
    _Lăp lại chương trình
    1.2Cac phương án lựa chọn
    _Sử dụng phần mềm Eagle 4.1 để vẽ mạch nguyên lí và mạch in
    _Sử dụng phần mềm pinacle để soạn thảo chương trình vi điều khiển
    _Trước khi cho chạy ,mô phỏng thử qua proteus 7.1
    1.2 Sơ đồ mạch nguyên lý
    1.3.Lưu đồ giải thuật

    org 000h
    main:

    mov r5,#5
    mov 20h,#0a4h
    mov 21h,#0c0h
    mov 22h,#0c0h
    mov 23h,#92h
    mov 24h,#0a4h
    mov 25h,#0c0h
    mov 26h,#0f9h
    mov 27h,#0c0h
    mov r0,#0a4h
    lcall hienthi
    mov r0,#0c0h
    lcall hienthi
    mov r0,#0c0h
    lcall hienthi
    mov r0,#92h
    lcall hienthi
    mov r0,#0a4h
    lcall hienthi
    mov r0,#0c0h
    lcall hienthi
    mov r0,#0f9h
    lcall hienthi
    mov r0,#0c0h
    lcall hienthi
    chop:
    mov r6,#80
    lcall hton
    djnz r5,chop
    mov r5,#10



    jmp main
    hienthi:

    mov a,#11111110b
    ;mov a,#00000001b
    mov p0,r0
    ht:
    mov p2,a
    lcall delay3
    ;mov p2,#0ffh
    mov p2,#00h

    rl a
    ;cjne a,#00000001b,ht
    cjne a,#11111110b,ht
    ret
    hton:
    mov a,#11111110b
    ;mov a,#00000001b

    mov r0,#20h
    ht1:
    mov p0,@r0
    mov p2,a
    lcall delay1
    ;mov p2,#00h
    mov p2,#0ffh
    inc r0
    rl a
    cjne r0,#28h,ht1
    djnz r6,hton
    mov r6,#100
    hton1:
    mov p2,#0ffh
    lcall delay1
    djnz r6,hton1
    ret
    delay3:
    mov tmod,#0000001b
    mov r7,#5
    loop:
    mov th0,#high(-50000)
    mov tl0 ,#low (-50000)
    setb tr0
    jnb tf0,$
    clr tf0
    clr tr0
    djnz r7,loop
    ret

    delay2:
    mov 55h,#10
    del1: mov 54h,#0ffh
    djnz 54h,$
    djnz 55h,del1
    ret
    delay1:
    MOV 7FH,#200
    DJNZ 7FH,$
    RET


    [IMG]

    Sơ đồ mạch nguyên lý:


    [IMG]
    Sơ đồ mạch in :
    [IMG]
    Mạch xuất:
    [IMG]
    [IMG]
    [IMG]
    Hình ảnh thực tế của mạch:
    [IMG]
    Đoạn video mô phỏng:
    clip mophong
    *Kết quả đạt được và hạn chế:
    _Có thể hiển thị được các số theo chương trình mong muốn,ngoài ra còn có thể hiển thị chữ số.
    _Đây chỉ là bước khởi đầu,là nền tản để làm mạch hiển thị ở các đèn, các bảng quảng cáo
    _Ứng dụng nhiều trong thực tế
    _Những khó khăn ban đầu:trong quá trình làm mạch có nhiều khó khăn về kinh nghiệm và nhiều thứ khác.Chưa thể hiển được
    nhiều ứng dụng cho thực tế trong mạch này
    _Hướng phấn đấu:Làm các mạch đèn quảng cáo hiển thị , biển báo.....
    *Code chương trình:
    code asm
    Các nguốn tài liệu tham khảo:
    www.dientuvietnam.net
    Lý thuyết ĐKTĐ
    Embedded C Programming and Atmel
    Và đặc biệt là sự giúp đở nhiệt tình của các bạn
    Em chân thành cảm ơn các anh,các bạn và Thầy.
    Vagam
  38. themanh_83 Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
  39. tranvantai05 Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    Trần văn Tài
    MSSV:05112057
    Điện thoại :0978782564

    Tên đề tài thực hiện:

    Sử Dụng 8 LED Bảy Đoạn Để Hiển thị

    1.1 Mô tả vắn tắt .
    _Sử dụng 8led 7 đoạn hiển thị khóa học 2005-2010
    _Chạy từng số từ trái qua phải
    _Chớp số 2005-2010 , 5 lần
    _Lăp lại chương trình
    1.2Cac phương án lựa chọn
    _Sử dụng phần mềm Eagle 4.1 để vẽ mạch nguyên lí và mạch in
    _Sử dụng phần mềm pinacle để soạn thảo chương trình vi điều khiển
    _Trước khi cho chạy ,mô phỏng thử qua proteus 7.1
    1.2 Sơ đồ mạch nguyên lý
    1.3.Lưu đồ giải thuật
    [IMG]

    org 000h
    main:

    mov r5,#5
    mov 20h,#0a4h
    mov 21h,#0c0h
    mov 22h,#0c0h
    mov 23h,#92h
    mov 24h,#0a4h
    mov 25h,#0c0h
    mov 26h,#0f9h
    mov 27h,#0c0h
    mov r0,#0a4h
    lcall hienthi
    mov r0,#0c0h
    lcall hienthi
    mov r0,#0c0h
    lcall hienthi
    mov r0,#92h
    lcall hienthi
    mov r0,#0a4h
    lcall hienthi
    mov r0,#0c0h
    lcall hienthi
    mov r0,#0f9h
    lcall hienthi
    mov r0,#0c0h
    lcall hienthi
    chop:
    mov r6,#80
    lcall hton
    djnz r5,chop
    mov r5,#10



    jmp main
    hienthi:

    mov a,#11111110b
    ;mov a,#00000001b
    mov p0,r0
    ht:
    mov p2,a
    lcall delay3
    ;mov p2,#0ffh
    mov p2,#00h

    rl a
    ;cjne a,#00000001b,ht
    cjne a,#11111110b,ht
    ret
    hton:
    mov a,#11111110b
    ;mov a,#00000001b

    mov r0,#20h
    ht1:
    mov p0,@r0
    mov p2,a
    lcall delay1
    ;mov p2,#00h
    mov p2,#0ffh
    inc r0
    rl a
    cjne r0,#28h,ht1
    djnz r6,hton
    mov r6,#100
    hton1:
    mov p2,#0ffh
    lcall delay1
    djnz r6,hton1
    ret
    delay3:
    mov tmod,#0000001b
    mov r7,#5
    loop:
    mov th0,#high(-50000)
    mov tl0 ,#low (-50000)
    setb tr0
    jnb tf0,$
    clr tf0
    clr tr0
    djnz r7,loop
    ret

    delay2:
    mov 55h,#10
    del1: mov 54h,#0ffh
    djnz 54h,$
    djnz 55h,del1
    ret
    delay1:
    MOV 7FH,#200
    DJNZ 7FH,$
    RET


    [IMG]

    Sơ đồ mạch nguyên lý:
    [IMG]



    Sơ đồ mạch in :
    [IMG]
    mạch nạp:
    [IMG]
    Mạch xuất:
    [IMG]
    [IMG]
    [IMG]
    [IMG]

    Hình ảnh thực tế của mạch:
    [IMG]

    Đoạn video mô phỏng:
    clip mophong
    *Kết quả đạt được và hạn chế:
    _Có thể hiển thị được các số theo chương trình mong muốn,ngoài ra còn có thể hiển thị chữ số.
    _Đây chỉ là bước khởi đầu,là nền tản để làm mạch hiển thị ở các đèn, các bảng quảng cáo
    _Ứng dụng nhiều trong thực tế
    _Những khó khăn ban đầu:trong quá trình làm mạch có nhiều khó khăn về kinh nghiệm và nhiều thứ khác.Chưa thể hiển được
    nhiều ứng dụng cho thực tế trong mạch này
    _Hướng phấn đấu:Làm các mạch đèn quảng cáo hiển thị , biển báo.....
    *Code chương trình:
    code asm
    Các nguốn tài liệu tham khảo:
    www.dientuvietnam.net
    Lý thuyết ĐKTĐ
    Embedded C Programming and Atmel
    Và đặc biệt là sự giúp đở nhiệt tình của các bạn
    Em chân thành cảm ơn các anh,các bạn và Thầy.
    Vagam
  40. hoanle Guest

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

    Số bài viết: 1
    Đã được thích: 0
    Điểm thành tích: 0
    BAO CAO VI DIEU KHIEN GIUA KI!!!
    Ho va ten: Phan Van Khanh
    MSSV:05111049
    Lop:051112B
    Email:phanvkhanh85@yahoo.com
    Di dong:0972333549
    De tai:MACH QUANG BAO "HAPPY NEW YEAR"
    So do mach quang bao
    [IMG]
    So do mach kit

    [IMG]
    1.Yeu cau:
    - Mach phai sang dong deu het tac ca cac chu
    -Mach hoat dong on dinh ,cac led khong duoc lem
    -De cac led sang khong lem thi can phai tinh dong cho dung
    2.Huong giai quyet:
    - Dung p0 va p2 de dieu khien mach quang bao,moi chan ra cua tung port phai ung voi tung chu
    -Vi so led o moi chu khong bang nhau nen dong qua no khong bang nhau vi the ta can phai tinh dong
    cho phu hop de cho mach hoat dong on dinh.Co 2 cach mac led la song song va noi tiep .Neu mac song
    song thi mach hoat dong on dinh va do ben lau hon nhung nhuoc diem la so do phuc tap kho thiet
    ke va ton nhieu linh kien vi mac theo kieu nay can phai co transistor keo dong.Con cach mac noi tiep
    mach hoat dong cung on dinh nhung khi led chet thi ca chu tat het ta phai tim mat cong,nhung uu
    diem cua cach mac noi tiep de thiet ke va do ton linh kien hon nen cuoi cung chon phuong an mac
    led song song.
    3.Luu do thuc hien:
    Mach hoat dong duoc dieu khien bang cac phuong phap dieu khien led don nhu: sang dan ,tat dan,
    sang tung chu,tung tu,sang don...Vi the luu do thuc hien rat dai va phuc tap nen em chi trinh bay
    luu do chinh cua chuong trinh .
    [IMG]

    4.Line download:
    Tac ca chuong trinh,phim,so do mach ,file trinh chieu duoc gop chung vao 1 line o
    duoi day:
    http://www.mediafire.com/?sharekey=a4ac2cd...f71d68e1b4c0303
    5.Huong phat trien:
    Mach nay neu duoc mo rong phan cong suat thi ta co the lam cac bang quang cao ,pano...
    tren duong pho.
  42. tppf Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
  43. duyan_mt Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    Họ tên: Đinh Duy An
    Mssv: 05111001 ; lop: 051111B
    Email: duyan_mt@yahoo.com
    số điện thoại: 01683040087
    Đề tài : Điều khiển động cơ bước
    Nội dung:
    Dùng AT89S52 điều khiển động cơ chạy thuận, chạy ngịch với hai nút nhấn, mỗi nút thực hiện hai chức năng: Start/Pause.
    giao tiep qua icULN2803
    Trong mạch chưa có mạch điều khiển tốc độ động cơ nhưng ta có thể thêm vào.

    Download toan bo( so do nguyen ly, mach dieu khien,...)

    http://www.mediafire.com/?sharekey=0376047...2db6fb9a8902bda
  44. duyan_mt Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    <div class='quotetop'>QUOTE (duyan_mt @ Jan 15 2009, 08:51 PM) <{POST_SNAPBACK}></div><div class='quotemain'>Họ tên: Đinh Duy An
    Mssv: 05111001 ; lop: 051111B
    Email: duyan_mt@yahoo.com
    số điện thoại: 01683040087
    Đề tài : Điều khiển động cơ bước
    Nội dung:
    Dùng AT89S52 điều khiển động cơ chạy thuận, chạy ngịch với hai nút nhấn, mỗi nút thực hiện hai chức năng: Start/Pause.
    giao tiep qua icULN2803
    Trong mạch chưa có mạch điều khiển tốc độ động cơ nhưng ta có thể thêm vào.

    Download toan bo( so do nguyen ly, mach dieu khien,...)

    http://www.mediafire.com/?sharekey=0376047...2db6fb9a8902bda[/b][/quote]

    Code chuong trinh:

    thuan bit p1.0
    nghich bit p1.1
    flag bit p3.0
    outstep equ p2
    org 000h
    main:
    mov tmod,#1
    ;mov dptr,#7segcode
    ;mov p2,#00000001b
    setb flag

    main1:
    kt1: mov r6,#50
    a1: jb thuan,kt2
    djnz r6,a1
    mov r6,#50
    a2: jnb thuan,$
    djnz r6,a2
    cpl flag
    jb flag,main1
    call chaythuan
    kt2: mov r6,#50
    b1: jb nghich,kt1
    djnz r6,b1
    mov r6,#50
    b2: jnb nghich,$
    djnz r6,b2
    cpl flag
    jb flag,main1
    call chaynghich
    sjmp main1
    getkey: jnb nghich,main1
    jnb thuan,main1
    ret
    chaythuan: mov outstep,#10001000b
    lcall delay
    jnb thuan,main1
    mov outstep,#01000100b
    lcall delay
    jnb thuan,main1
    mov outstep,#00100010b
    lcall delay
    jnb thuan,main1
    mov outstep,#00010001b
    lcall delay
    jnb thuan,main1
    sjmp chaythuan

    chaynghich: mov outstep,#00010001b
    lcall delay
    jnb nghich,main1
    mov outstep,#00100010b
    lcall delay
    jnb nghich,main1
    mov outstep,#01000100b
    lcall delay
    jnb nghich,main1
    mov outstep,#10001000b
    lcall delay
    jnb nghich,main1
    sjmp chaynghich

    delay: mov r6,#10h
    del: mov r7,#0
    jnb thuan,exit
    jnb nghich,exit
    djnz r7,$
    djnz r6,del
    exit: ret
    end
  45. duyan_mt Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    <div class='quotetop'>QUOTE (duyan_mt @ Jan 15 2009, 08:51 PM) <{POST_SNAPBACK}></div><div class='quotemain'>Họ tên: Đinh Duy An
    Mssv: 05111001 ; lop: 051111B
    Email: duyan_mt@yahoo.com
    số điện thoại: 01683040087
    Đề tài : Điều khiển động cơ bước
    Nội dung:
    Dùng AT89S52 điều khiển động cơ chạy thuận, chạy ngịch với hai nút nhấn, mỗi nút thực hiện hai chức năng: Start/Pause.
    giao tiep qua icULN2803
    Trong mạch chưa có mạch điều khiển tốc độ động cơ nhưng ta có thể thêm vào.

    Download toan bo( so do nguyen ly, mach dieu khien,...)

    http://www.mediafire.com/?sharekey=0376047...2db6fb9a8902bda[/b][/quote]

    Code chuong trinh:

    thuan bit p1.0
    nghich bit p1.1
    flag bit p3.0
    outstep equ p2
    org 000h
    main:

    setb flag

    main1:
    kt1: mov r6,#50
    a1: jb thuan,kt2
    djnz r6,a1
    mov r6,#50
    a2: jnb thuan,$
    djnz r6,a2
    cpl flag
    jb flag,main1
    call chaythuan
    kt2: mov r6,#50
    b1: jb nghich,kt1
    djnz r6,b1
    mov r6,#50
    b2: jnb nghich,$
    djnz r6,b2
    cpl flag
    jb flag,main1
    call chaynghich
    sjmp main1
    getkey: jnb nghich,main1
    jnb thuan,main1
    ret
    chaythuan: mov outstep,#10001000b
    lcall delay
    jnb thuan,main1
    mov outstep,#01000100b
    lcall delay
    jnb thuan,main1
    mov outstep,#00100010b
    lcall delay
    jnb thuan,main1
    mov outstep,#00010001b
    lcall delay
    jnb thuan,main1
    sjmp chaythuan

    chaynghich: mov outstep,#00010001b
    lcall delay
    jnb nghich,main1
    mov outstep,#00100010b
    lcall delay
    jnb nghich,main1
    mov outstep,#01000100b
    lcall delay
    jnb nghich,main1
    mov outstep,#10001000b
    lcall delay
    jnb nghich,main1
    sjmp chaynghich

    delay: mov r6,#10h
    del: mov r7,#0
    jnb thuan,exit
    jnb nghich,exit
    djnz r7,$
    djnz r6,del
    exit: ret
    end
  46. thuongmt05 Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    -Họ tên: <span style="color:#0000FF">PHẠM VĂN THƯƠNG</span>
    -MSSV: <span style="color:#0000FF">05111100</span>
    -Email: <span style="color:#0000FF">thuongmt05@yahoo.com.vn</span>
    -Điện thoại: 0973636488

    Đề tài: <span style="color:#FF0000">ĐIỀU KHIỂN ĐỘNG CƠ BƯỚC FULL - HALF - MICRO STEP</span>
    MÔ TẢ:
    -Mô hình đề tài gồm mạch KIT89S52 và một module mạch bao gồm các nút nhấn để điều khiển động cơ bước:
    +Nút Start/Stop (P3.5): Bắt đầu kích hoạt động cơ nhưng động cơ chỉ chạy khi các nút chế độ phía sau được nhấn.
    Khi động cơ đang chạy nếu nhấn nút này thì động cơ dừng lại.
    +Nút Direction (P3.4): Điều chỉnh hướng chạy cho động cơ ở bất cứ thời điểm, chế độ hoạt động nào.
    +Nút FullStep (P1.2), HalfStep (P1.1), MicroStep (P1.0): các nút chỉnh chế độ chạy Full, Half, Micro ở bất cứ thời điểm nào.
    +Nút Rapid (P3.2), Slow (P3.3) có chức năng tăng giảm tốc độ chạy.
    -Lập trình: Dùng cả hai ngôn ngữ Assembler và Keil C để lập trình cho đề tài. So sánh thấy lập trình bằng Keil C quen thuộc
    dễ sử dụng mà dung lượng file *.hex lớn hơn lập trình bằng ASM kô đáng kể.

    Sơ đồ mạch nguyên lý mạch KIT89S52 và mạch điều khiển Động cơ bước:
    http://www.mediafire.com/?e2zvmwgddlq
    Sơ đồ mạch layout KIT89S52:
    [IMG]
    Sơ đồ mạch layout điều khiển động cơ bước dùng 16 Transistor D468 và các nút nhấn có led hiển thị chế độ:
    [IMG]
    Hình ảnh mạch thi công:
    [IMG]
    Lưu đồ giải thuật:
    [IMG]
    CODE CHƯƠNG TRÌNH VIẾT BẰNG ASM:
    speed equ 36h
    test_sta_sto bit p1.3
    test_dir bit p1.4
    test_full bit p1.5
    test_half bit p1.6
    test_micro bit p1.7
    test_select bit p3.7
    full bit p1.2
    half bit p1.1
    micro bit p1.0
    sta_sto bit p3.5 ;start/stop
    dir bit p3.4 ;direction
    rapid bit p3.2
    slow bit p3.3
    select bit p3.6
    org 000h
    jmp main
    org 0bh
    jmp t0_isr
    org 30h
    main:
    mov speed,#51
    ;clr test_full ;at the first time, run full_step
    mov p0,#0ffh
    mov p2,#0ffh
    mov tmod,#11h ;itial T0 mode 1 (timer 16bit) and its interrupt
    setb ea
    setb et0
    setb tf0
    x0: jnb test_dir,dir_run
    lcall run_full
    lcall run_half
    lcall run_micro
    dir_run: lcall dir_run_full
    lcall dir_run_half
    lcall dir_run_micro
    sjmp x0
    t0_isr:
    clr tr0
    mov th0,#high(-5000)
    mov tl0,#low(-5000)
    setb tr0
    ;########################xBEGIN ISR T0######################################################x
    jnb select,office
    setb test_select ;led green lights (workshop)
    sjmp x18
    office: clr test_select ;led red just lights (office) when pushing start/stop before
    x18: jnb sta_sto,pause
    jnb test_select,exit1 ;prevent pushing any button when control from PC (office)
    jnb dir,direction
    jnb full,x0_full
    jnb half,x0_half
    jnb micro,x0_micro
    jnb rapid,up
    jnb slow,down1
    exit1: jmp exit
    down1: jmp down
    pause: mov r3,#50
    x0p: jb sta_sto,pause
    djnz r3,x0p
    x1p: mov r3,#50
    x2p: jnb sta_sto,x1p
    djnz r3,x2p
    cpl test_sta_sto
    jmp exit
    direction: ;direction will be written later
    mov r3,#50
    x0d: jb dir,direction
    djnz r3,x0d
    x1d: mov r3,#50
    x2d: jnb dir,x1d
    djnz r3,x2d
    cpl test_dir
    sjmp exit
    x0_full: mov r3,#50 ;debounce
    x1_full: jb full,x0_full
    djnz r3,x1_full
    x2_full: mov r3,#50
    x3_full: jnb full,x2_full
    djnz r3,x3_full
    clr test_full
    setb test_half
    setb test_micro
    sjmp exit
    x0_half: mov r3,#50
    x1_half: jb half,x0_half
    djnz r3,x1_half
    x2_half: mov r3,#50
    x3_half: jnb half,x2_half
    djnz r3,x3_half
    clr test_half
    setb test_full
    setb test_micro
    sjmp exit
    x0_micro: mov r3,#50
    x1_micro: jb micro,x0_micro
    djnz r3,x1_micro
    x2_micro: mov r3,#50
    x3_micro: jnb micro,x2_micro
    djnz r3,x3_micro
    clr test_micro
    setb test_full
    setb test_half
    sjmp exit
    up: mov r3,#50
    x0u: jb rapid,up
    djnz r3,x0u
    ;write function here to continue subb r7 up
    x1u: mov r3,#50
    x2u: jnb rapid,x1u
    djnz r3,x2u
    mov a,speed
    cjne a,#1,x3u ;if (speed>1) speed=speed-1 else speed=1
    sjmp x4u
    x3u: subb a,#10
    mov speed,a
    x4u: sjmp exit
    down: mov r3,#50
    x0dw: jb slow,down
    djnz r3,x0dw
    x1dw: mov r3,#50
    x2dw: jnb slow,x1dw
    djnz r3,x2dw
    mov a,speed
    cjne a,#101,x3dw ;if (speed<101) speed=speed+1 else speed=101
    sjmp x4dw
    x3dw: add a,#10
    mov speed,a
    x4dw: sjmp exit
    ;########################xEND ISR T0##########################################xx
    exit: reti
    ;########################RUN FULL######################################################x
    run_full:
    mov r0,p0
    mov r1,p2
    cjne r0,#0fh,f1
    jmp rf
    f1: cjne r0,#0f0h,f2
    jmp rf1
    f2: cjne r1,#0fh,f3
    jmp rf2
    f3: cjne r1,#0f0h,rf
    jmp rf3
    rf: jnb test_dir,exit_full
    jb test_sta_sto,exit_full
    jb test_full,exit_full
    lcall delay
    mov p2,#0
    mov p0,#0fh
    rf1: jnb test_dir,exit_full
    jb test_sta_sto,exit_full
    jb test_full,exit_full
    lcall delay
    mov p0,#0f0h
    rf2: jnb test_dir,exit_full
    jb test_sta_sto,exit_full
    jb test_full,exit_full
    lcall delay
    mov p0,#0
    mov p2,#0fh
    rf3: jnb test_dir,exit_full
    jb test_sta_sto,exit_full
    jb test_full,exit_full
    lcall delay
    mov p2,#0f0h
    jmp rf
    exit_full:
    ret
    ;##################xxDIR RUN FULL######################################################xx
    dir_run_full:
    mov r0,p0
    mov r1,p2
    cjne r1,#0f0h,df1
    jmp d_rf
    df1: cjne r1,#0fh,df2
    jmp d_rf1
    df2: cjne r0,#0f0h,df3
    jmp d_rf2
    df3: cjne r0,#0fh,d_rf
    jmp d_rf3
    d_rf: jb test_dir,exit_dir_full
    jb test_sta_sto,exit_dir_full
    jb test_full,exit_dir_full
    lcall delay
    mov p2,#0f0h
    mov p0,#0
    d_rf1: jb test_dir,exit_dir_full
    jb test_sta_sto,exit_dir_full
    jb test_full,exit_dir_full
    lcall delay
    mov p2,#0fh
    d_rf2: jb test_dir,exit_dir_full
    jb test_sta_sto,exit_dir_full
    jb test_full,exit_dir_full
    lcall delay
    mov p0,#0f0h
    mov p2,#0
    d_rf3: jb test_dir,exit_dir_full
    jb test_sta_sto,exit_dir_full
    jb test_full,exit_dir_full
    lcall delay
    mov p0,#0fh
    jmp d_rf
    exit_dir_full:
    ret
    ;########################RUN HALF##################################################################x
    run_half:
    mov r0,p0
    mov r1,p2
    cjne r0,#0fh,h2
    cjne r0,#0ffh,h1
    jmp rh1
    h1: jmp rh
    h2: cjne r0,#0f0h,h4
    cjne r1,#0fh,h3
    jmp rh3
    h3: jmp rh2
    h4: cjne r1,#0fh,h6
    cjne r1,#0ffh,h5
    jmp rh5
    h5: jmp rh4
    h6: cjne r1,#0f0h,rh
    cjne r0,#0fh,h7
    jmp rh7
    h7: jmp rh6
    rh: jnb test_dir,exit_half
    jb test_sta_sto,exit_half
    jb test_half,exit_half
    lcall delay
    mov p2,#0
    mov p0,#0fh
    rh1: jnb test_dir,exit_half
    jb test_sta_sto,exit_half
    jb test_half,exit_half
    lcall delay
    mov p0,#0ffh
    rh2: jnb test_dir,exit_half
    jb test_sta_sto,exit_half
    jb test_half,exit_half
    lcall delay
    mov p0,#0f0h
    rh3: jnb test_dir,exit_half
    jb test_sta_sto,exit_half
    jb test_half,exit_half
    lcall delay
    mov p2,#0fh
    rh4: jnb test_dir,exit_half
    jb test_sta_sto,exit_half
    jb test_half,exit_half
    lcall delay
    mov p0,#0
    rh5: jnb test_dir,exit_half
    jb test_sta_sto,exit_half
    jb test_half,exit_half
    lcall delay
    mov p2,#0ffh
    rh6: jnb test_dir,exit_half
    jb test_sta_sto,exit_half
    jb test_half,exit_half
    lcall delay
    mov p2,#0f0h
    rh7: jnb test_dir,exit_half
    jb test_sta_sto,exit_half
    jb test_half,exit_half
    lcall delay
    mov p0,#0fh
    sjmp rh
    exit_half:
    ret
    ;########################DIR RUN HALF############################################################
    dir_run_half:
    mov r0,p0
    mov r1,p2
    cjne r1,#0f0h,dh2
    cjne r0,#0fh,dh1
    jmp d_rh
    dh1: jmp d_rh1
    dh2: cjne r1,#0fh,dh4
    cjne r1,#0ffh,dh3
    jmp d_rh2
    dh3: jmp d_rh3
    dh4: cjne r0,#0f0h,dh6
    cjne r1,#0fh,dh5
    jmp d_rh4
    dh5: jmp d_rh5
    dh6: cjne r0,#0fh,d_rh
    cjne r0,#0ffh,dh7
    jmp d_rh6
    dh7: jmp d_rh7
    d_rh: jb test_dir,exit_dir_half
    jb test_sta_sto,exit_dir_half
    jb test_half,exit_dir_half
    lcall delay
    mov p2,#0f0h
    mov p0,#0fh
    d_rh1: jb test_dir,exit_dir_half
    jb test_sta_sto,exit_dir_half
    jb test_half,exit_dir_half
    lcall delay
    mov p0,#0
    d_rh2: jb test_dir,exit_dir_half
    jb test_sta_sto,exit_dir_half
    jb test_half,exit_dir_half
    lcall delay
    mov p2,#0ffh
    d_rh3: jb test_dir,exit_dir_half
    jb test_sta_sto,exit_dir_half
    jb test_half,exit_dir_half
    lcall delay
    mov p2,#0fh
    d_rh4: jb test_dir,exit_dir_half
    jb test_sta_sto,exit_dir_half
    jb test_half,exit_dir_half
    lcall delay
    mov p0,#0f0h
    d_rh5: jb test_dir,exit_dir_half
    jb test_sta_sto,exit_dir_half
    jb test_half,exit_dir_half
    lcall delay
    mov p2,#0
    d_rh6: jb test_dir,exit_dir_half
    jb test_sta_sto,exit_dir_half
    jb test_half,exit_dir_half
    lcall delay
    mov p0,#0ffh
    d_rh7: jb test_dir,exit_dir_half
    jb test_sta_sto,exit_dir_half
    jb test_half,exit_dir_half
    lcall delay
    mov p0,#0fh
    sjmp d_rh
    exit_dir_half:
    ret
    ;##############################RUN MICRO############################################################
    run_micro:
    mov r0,p0
    cjne r0,#0fh,m1
    jmp rm1
    m1: cjne r0,#1,m2
    jmp rm3
    m2: cjne r0,#3,m3
    jmp rm4
    m3: cjne r0,#7,rm2
    jmp rm5
    rm1: jnb test_dir,exit_micro
    jb test_sta_sto,exit_micro
    jb test_micro,exit_micro
    lcall delay
    mov p0,#0fh
    mov p2,#0
    rm2: jnb test_dir,exit_micro
    jb test_sta_sto,exit_micro
    jb test_micro,exit_micro
    lcall delay
    clr c
    mov a,p0
    rlc a
    mov p0,a
    mov a,p2
    rlc a
    mov p2,a
    jnc rm2
    rm3: jnb test_dir,exit_micro
    jb test_sta_sto,exit_micro
    jb test_micro,exit_micro
    lcall delay
    mov p2,#0e0h
    mov p0,#1
    rm4: jnb test_dir,exit_micro
    jb test_sta_sto,exit_micro
    jb test_micro,exit_micro
    lcall delay
    mov p2,#0c0h
    mov p0,#3
    rm5: jnb test_dir,exit_micro
    jb test_sta_sto,exit_micro
    jb test_micro,exit_micro
    lcall delay
    mov p2,#80h
    mov p0,#7
    sjmp rm1
    exit_micro:
    ret
    ;########################xxDIR RUN MICRO################################################x
    dir_run_micro:
    ; mov r1,p2
    ; cjne r1,#0f0h,dm1
    ; jmp d_rm1
    ;dm1: cjne r1,#80h,dm2
    ; jmp d_rm3
    ;dm2: cjne r1,#0c0h,dm3
    ; jmp d_rm4
    ;dm3: cjne r1,#0e0h,d_rm2
    ; jmp d_rm5
    mov r0,p0
    cjne r0,#0,dm1
    jmp d_rm1
    dm1: cjne r0,#7,dm2
    jmp d_rm3
    dm2: cjne r0,#3,dm3
    jmp d_rm4
    dm3: cjne r0,#1,d_rm2
    jmp d_rm5
    d_rm1: jb test_dir,exit_micro
    jb test_sta_sto,exit_micro
    jb test_micro,exit_micro
    lcall delay
    mov p0,#0
    mov p2,#0f0h
    d_rm2: jb test_dir,exit_micro
    jb test_sta_sto,exit_micro
    jb test_micro,exit_micro
    lcall delay
    clr c
    mov a,p2
    rrc a
    mov p2,a
    mov a,p0
    rrc a
    mov p0,a
    jnc d_rm2
    d_rm3: jb test_dir,exit_micro
    jb test_sta_sto,exit_micro
    jb test_micro,exit_micro
    lcall delay
    mov p0,#7
    mov p2,#80h
    d_rm4: jb test_dir,exit_micro
    jb test_sta_sto,exit_micro
    jb test_micro,exit_micro
    lcall delay
    mov p0,#3
    mov p2,#0c0h
    d_rm5: jb test_dir,exit_micro
    jb test_sta_sto,exit_micro
    jb test_micro,exit_micro
    lcall delay
    mov p0,#1
    mov p2,#0e0h
    sjmp d_rm1
    exit_dir_micro:
    ret
    ;########################DELAY##################################################
    ######################xx
    delay: mov r7,speed ;when speed==1 motor will run most fast
    setb tr1
    del: mov th1,#high(-4000)
    mov tl1,#low(-4000)
    jnb tf1,$
    clr tf1
    djnz r7,del
    ret
    end
    CODE CHƯƠNG TRÌNH VIẾT BẰNG KEIL C
    (Đính kèm trong phần download bên dưới)
    Hình ảnh và đoạn phim về mô hình thi công khi đang hoạt động:
    http://www.mediafire.com/?g4mjejgo10d
    KẾT QUẢ ĐẠT ĐƯỢC:
    -Giao tiếp tốt nút nhấn với cách chống dội nút nhấn bằng phần mềm
    -So sánh để hiểu thêm về hai ngôn ngữ ASM và Keil C
    -Tính toán chia dòng cho động cơ (dùng D468) để chia nhỏ bước tương đối đều nhau.
    HẠN CHẾ VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI:
    -Mức tăng giảm tốc độ cho động cơ chưa được đều vì lý do dùng hàm Delay. Khắc phục bằng cách
    tạo một bảng tra các mức tốc độ (speed) rồi dùng phương pháp tra bảng viết cho nút nhấn tăng giảm
    tốc độ, như vậy thì tốc độ sẽ tăng giam đồng đều hơn.
    -Lập trình giao tiếp máy tính theo giao thức RS232 để điều khiển và giám sát hoạt động của động cơ trên PC.
    DOWNLOAD (code, mạch và bài báo cáo PPT):
    http://www.mediafire.com/?5md2znyiujg
    Tài liệu tham khảo:
    http://www.cs.uiowa.edu/~jones/step/micro.html (Điều khiển vi bước)
    http://www.mediafire.com/?cxt1z2jzy3m (Tài liệu hướng dẫn lập trình Keil C bằng tiếng Việt)


    <span style="color:#FF0000">"VUI XUÂN KHÔNG QUÊN NHIỆM VỤ"
    CHÚC THẦY VÀ CÁC BẠN MỘT NĂM MỚI AN KHANG THỊNH VƯỢNG!</span>
  47. hthanhanh Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    1.Họ và tên sinh viên : Nguyễn Đức Long
    MSSV : 05112042
    Email : longnguyen_spkt@yahoo.com
    2.Tên đề tài thực hiện : "Điều khiển leb ma trận hiển thị spkt"
    *yêu cầu:
    + viết chương trình bằng ngôn ngữ ASM
    + Hiển thị chữ và chạy từ phải sang trái trên led ma trận 8x8
    + một nút nhấn reset
    *các phương án lựa chọn:
    + sử dụng AT 89S51 hoặc AT 89S52 .trong đề tài này lựa chọn AT 89S52 vì có ưu điểm dễ dàng mạch lạp dễ dàng hơn AT 89S51
    +PORT_3 kết nối để quýet hàng
    PORT_0 kết nối để quýet cột
    3.Power point báo cáo:
    http://www.adrive.com/public/9f09f2282732b...9685c13c8a.html
    4. sơ đồ nguyên lý & mạch in :
    Mạch nguyên lý
    [IMG]

    mạch in :

    [IMG]
    5.lưu đồ giải thuật:

    [IMG]
    6.hình ảnh mô hình và đoạn phim mô hình đã thi công:

    [IMG]
    Phim trình chiếu
    http://www.adrive.com/public/a55e07ef92ce8...a814f41c79.html
    7.code chương trình:
    http://www.adrive.com/public/c7787d0d4c1de...76873ab84f.html
    8.Hạn chế và cách khắc phục:
    +vẽ sơ đồ mạch in không được đẹp
    +do led cần nguồn để đủ độ sáng nhưng lúc đầu không rõ sau tham khảo ý kiến và tìm tài liệu thì mình thêm con IC 2803 kích dòng lên led sáng rõ
    9.nguồn tài liệu:
    + sách của Tống Văn On
    + sách của Nguyễn Tăng Cường,Phan Quốc Thắng
    + tài liệu này mình được mấy anh sinh siên bên khoa điện tử làm báo cáo nhưng tài liệu này chưa được duyệt nhé:đường link:
    http://www.adrive.com/public/66a321a225e1b...8ae8f283b7.html
  48. LeTrongTuan Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    1. Họ và tên: LÊ TRỌNG TUÂN
    MSSV : 05112076
    email: letrongtuan_1987@yahoo.com (01689665225)
    2. Tên đề tài : Đếm sản phẩm
    <div align='center'>[IMG]</div>
    Yêu cầu :
    - Số đếm phải chính xác và thay đổi việc cài đặt số đếm ban đầu một cách linh hoạt
    - Bộ phận hiển thị phải rõ rang
    - Mạch điện không quá phức tạp, bảo đảm được an toàn, dễ sử dụng.
    - Giá thành không quá mắc
    3. Sơ đồ nguyên lý
    <div align='center'>[IMG]</div>
    Mạch in :
    <div align='center'>[IMG]</div>
    Lưu đồ giải thuật
    <div align='center'>[IMG]</div>
    4. PowerPoint
    http://071101.info/DemSanPham.ppt
    5. Chương trình download
    http://071101.info/DemSanPham.txt
    6. Kết quả
    http://071101.info/DemSanPham.mp4
    7. Hạn chế :
    Các sản phẩm đa dạng với nhiều chủng loại : đặc, rỗng, kích cỡ khác nhau. Nhưng với khả năng của thiết bị lắp thì mạch chỉ có thể đếm đối với sản phẩm có khả năng che được ánh sáng.
    8. Hướng phát triển
    - Thiết kế thêm băng chuyền để thực hiện đếm sản phẩm, gắn liền với thực tiễn
    - Thay LED hồng ngoại bằng cảm biến để đảm bảo độ nhạy và độ chính xác
    9. Tài liệu tham khảo
    http://071101.info/DemSanPham.pdf
  49. anpha Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    1. Họ và tên : Nguyễn Trung Hiếu
    MSSV: 05112021
    Email: jostrunghieu9@yahoo.com
    Phone: 0169.206.9909
    2. Tên đề tài: Điều Khiển Động Cơ Bước – Giao Tiếp LCD
    - Điều khiển động cơ bước các chế độ full step, half step, chạy forward và preward.
    - Giao tiếp phím nhấn
    - Giao tiếp LCD
    3. Các phương án giải quyết
    + Điều khiển động cơ bước: sử dụng bảng tra dữ liệu, nạp dữ liệu cho thanh ghi.
    + Mạch công suất sử dụng ULN2803, Tip127,Fet…
    + Giao tiếp bàn phím: ma trận phím, quét phím
    + Giao tiếp LCD: dữ liệu 8 bit, dữ liệu 4 bit.
    Phương án lựa chọn:
    + Điều khiển động cơ bước bằng các sử dụng bảng tra dữ liệu
    + Mạch công suật sử dụng ULN2803
    + Giao tiếp bàn phím sử dụng quét phím
    + Giao tiếp LCD theo kiểu dữ liệu 8 bit.
    4. Sơ đồ mạch nguyên lý
    http://i494.photobucket.com/albums/rr309/05112021/119.jpg
    http://i494.photobucket.com/albums/rr309/05112021/117.jpg
    http://i494.photobucket.com/albums/rr309/05112021/118.jpg
    5. Lưu đồ giải thuật
    http://i494.photobucket.com/albums/rr309/05112021/main.jpg
    http://i494.photobucket.com/albums/rr309/05112021/lcd.jpg
    6. Hình ảnh
    http://i494.photobucket.com/albums/rr309/05112021/112.jpg
    http://i494.photobucket.com/albums/rr309/05112021/113.jpg
    http://i494.photobucket.com/albums/rr309/05112021/114.jpg
    7. Kết quả đạt được
    - Điểu khiển được động cơ ở cả 2 dạng, tăng tốc độ, giảm tốc độ
    - Hiển thị thông báo trên LCD
    8. Download code
    http://www.mediafire.com/?sharekey=32672d2...e7e083eb24e0862
    http://www.mediafire.com/?sharekey=32672d2...8a0625418129c64
    9.Tài liệu tham khảo
    Sách VDK của Tống Văn On
    -Diễn Đàn điện tử việt nam
  50. tungtran Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    Báo cáo VDK giữa kì:
    ------------------------------------------------
    <span style="color:#0000ff"><span style="color:#000000">Họ tên:</span> Trần Thanh Tùng
    <span style="color:#000000">mssv: </span> 05112079
    <span style="color:#000000">email: </span>tung2003vn@yahoo.com
    <span style="color:#000000">phone: </span> 0938658653
    </span>
    ------------------------------------------------
    Tên đề tài: <span style="font-size:14pt;line-height:100%"><span style="color:#ff0000"> <span style="font-size:18pt;line-height:100%"> Mạch Countdown </span></span></span>


    <span style="font-size:12pt;line-height:100%"><span style="color:#ff0000">(Mạch thực hiện chức năng đếm ngược theo thời gian định sẵn)</span></span>






    Bạn hay xem phim hành động, và thường thấy một nhân vật nào đó sử dụng bom hẹn giờ theo thời gian định trước. Đồng hồ đếm ngược lại và đến 0 thì quả bom phát nổ. Bạn có muốn làm một mạch điều khiển thực hiện chức năng tương tự việc kính hoạt một quả bom không?. Ở đây dĩ nhiên không là một quả bom mà là một thiết bị điện, một bóng đèn, hoặc một chuông báo thức… Bài sau sẽ hướng dẫn bạn làm một mạch điều khiển như vậy.

    Chức năng chính của mạch là cho phép thiết lập thời gian,và sau đó sẽ đếm lùi thời gian, khi về 0, tín hiệu được xuất làm đèn led phát sáng (có thể thay bằng role để điều khiển thiết bị điện..)


    <span style="font-size:12pt;line-height:100%"><span style="color:#ff0000"><span style="color:#000000"><span style="font-size:10pt;line-height:100%">------------------------------------------------</span></span></span></span>

    <span style="font-size:12pt;line-height:100%"><span style="color:#ff0000"><span style="color:#ff00ff">Sơ đồ nguyên lý:</span></span></span>


    <span style="font-size:12pt;line-height:100%"><span style="color:#ff0000">[/color]</span>

    <span style="font-size:12pt;line-height:100%"><span style="color:#ff0000">[IMG]</span></span>








    <span style="color:#ff0000"><u><span style="font-size:12pt;line-height:100%">Sơ đồ nguyên lý, mạch điện, powerpoint, chương trình được đính kèm chung trong 1 tập tin:</span></u><span style="font-size:12pt;line-height:100%"> Download here!!
    </span><u><span style="font-size:12pt;line-height:100%">

    Mạch hoàn chỉnh:

    [IMG]

    Hướng phát triển thêm:

    </span></u><span style="font-size:10pt;line-height:100%">- Thêm IC dallas cho thời gian đếm thực như đồng hồ.
    - Thêm Role để kích hoạt hoặc ngắt một thiết bị điện, chuông...
    - Thêm led để tăng thời gian thiết lập cao hơn nữa.
    - ....
    <span style="font-size:10pt;line-height:100%">---------------------------------------------------------------------------------------

    Do thời gian làm đồ án Tự động chiếm khá nhiều thời gian nên mình chỉ làm mạch này để thể hiện ý tưởng. Bạn nào thấy thích có thể liên lạc với mình để cùng phát triển thêm. Mong nhận được góp ý, trao đổi!!!
    </span>
    </span></span></span>

Chia sẻ trang này