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. duytien New Member

    Số bài viết: 11
    Đã được thích: 0
    Điểm thành tích: 0
    Xin chào tất cả các bạn
    nếu bạn nào đã hoàn thành xong bt giữa kì hay còn chút thắc mắc gì về bài tập của mình thì có thể mang mạch ở buổi học sau để báo cáo hay cùng nhau thảo luận.mình đã hoàn thành xong bt và thầy yều cầu trong buổi học sẽ báo cáo nên mình hy vọng cũng có nhiều bạn hoàn thành và cùng báo cáo với mình.
  2. danhnguyen New Member

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

    Số bài viết: 11
    Đã được thích: 0
    Điểm thành tích: 0
    ê danh mập kia phải kêu là tiến trẻ nghe mày, nếu ai đã hoàn thành xong bt giữa kì vdk thì khi hoc có thể mang báo cáo, tụi bây làm tới đâu rồi, hôm đó mang lên báo cáo luôn cho xôm tụ [IMG]
  4. minhcdt Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
  5. khoahoctre Giảng Viên

    Số bài viết: 451
    Đã được thích: 7
    Điểm thành tích: 16
  6. duytien New Member

    Số bài viết: 11
    Đã được thích: 0
    Điểm thành tích: 0
  7. khoahoctre Giảng Viên

    Số bài viết: 451
    Đã được thích: 7
    Điểm thành tích: 16
  8. sauthegian Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
  9. khoahoctre Giảng Viên

    Số bài viết: 451
    Đã được thích: 7
    Điểm thành tích: 16
    THÔNG BÁO VỀ QUI CÁCH ĐIỂM GIỮA KỲ MÔN VI XỬ LÝ VÀ VI ĐIỀU KHIỂN CỦA SINH VIÊN NGÀNH CƠ ĐIỆN TỬ VÀ CÔNG NGHỆ TỰ ĐỘNG KHÓA 05

    1/Thang điểm 10, chiếm 40% của tổng điểm cuối cùng. Cách chấm điểm như sau:
    -Báo cáo trên lớp : 6 điểm
    -Post nội dung báo cáo lên diễn đàn: 4 điểm
    Note:thiếu 1 trong 2 nội dung trên thì điểm giữa kỳ sẽ là 0 điểm.
    Hạn chót post bài là hết ngày thứ 7, 17/1/2009.

    2/Qui cách trình bày nội dung post .

    2.1 -Họ tên sinh viên:
    -MSSV:
    -Email:
    -Điện thoại:

    2.2 -Tên đề tài thực hiện:
    -Mô tả vấn tắt các yêu cầu cần giải quyết:

    2.3 -Các phương án có thể lựa chọn, ưu điểm của từng phương án.
    -Phương án lựa chọn giải quyết trong đề tài.

    2.4 -Sơ đồ mạch nguyên lý.
    -Sơ đồ mạch layout.

    2.5 -Lưu đồ giải thuật.
    -Code chương trình dạng text.

    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

    2.7 Kết quả đạt được, hạn chế của đề tài và phương hướng phát triển.

    2.8 Download: code chương trình ( file *.asm hoặc *.c), file mạch điện

    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....


    GIÁO VIÊN PHỤ TRÁCH

    LÊ TẤN CƯỜNG
  10. khoahoctre Giảng Viên

    Số bài viết: 451
    Đã được thích: 7
    Điểm thành tích: 16
    <div align='center'>THÔNG BÁO VỀ THỜI GIAN NỘP BÁO CÁO GIỮA KỲ</div>

    BÁO CÁO GIỮA KỲ MÔN VI ĐIỀU KHIỂN CỦA CÁC LỚP KHÓA 05 NGÀNH CƠ ĐIỆN TỬ VÀ CÔNG NGHỆ TỰ ĐỘNG SẼ NỘP VÀO SÁNG THỨ 7 NGÀY 10/1/2009 LÚC 9H30 TẠI PHÒNG D302. HÌNH THỨC BÁO CÁO:
    1/FILE POWER POINT
    2/MÔ HÌNH THI CÔNG
    GIÁO VIÊN : LÊ TẤN CƯỜNG
  11. @bin Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    VẤN ĐỀ BÁO CÁO: MẠCH GỒM 4 LED MA TRẬN SỬ DỤNG VI ĐIỀU KHIỂN AT89S52 VÀ VI ĐIỀU KHIỂN ATMEGA32 ĐỂ HIỂN THỊ VÀ CHẠY CHỮ HAI MÀU XANH VA ĐỎ.
    GIẢI QUYẾT VẤN ĐỀ:
    - QUÉT LED THEO CỘT.
    - SỬ DỤNG IC GHI DỊCH 74HC164 ĐỂ QUYÉT TỪNG CỘT.
    - MÃ CHỮ ĐƯỢC ĐƯA RA CÁC HÀNG CỦA LED THÔNG QUA 1 PORT CỦA VI ĐIỀU KHIỂN.

    Mạch 4 led ma trận:
    [IMG]

    Modul điều khiển sử dụng VDK 89S52:
    [IMG]

    Modul điều khiển sử dụng VDK ATMEGA32:
    [IMG]

    File sơ đồ nguyên lí của mạch 4 led ma trận:
    4led_matrix

    File layout :

    [IMG]

    [IMG]

    Flie báo cáo bằng powerpoint:
    BAO CAO_VDK

    Các clip chạy chữ trên led ma trận sử dụng AT89s52 và ATMega32:
    File_mp4

    Chương trình viết cho ATMega32:
    Code ATMega32

    Chương trình viết cho 89S52:
    Code 89S52


    Sinh Viên Thực Hiện:
    Nguyễn Tấn Đạt MSSV:05111016
    Email address: nguyen_td2005@yahoo.com.vn
    DTDD: 0973784665
    Nguyễn Minh Tuấn MSSV:05111112
    Email address: nminht2000@yahoo.com
    DTDD: 01668583835
    Tài liệu tham khảo:
    - Họ Vi Điều Khiển 8051 của Tống Văn On
    - Embeddeded C programming and the Atmel AVR
    - www.dientuvietnam.net
    Mong Thầy Và Các Bạn góp ý để hoàn thiện hơn
  12. @bin Guest

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

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    <span style="font-size:18pt;line-height:100%">BÀI BÁO CÁO VI ĐIỀU KHIỂN GIỮA KỲ !!!!!!!!!!!</span>
    1. Họ và tên : NGÔ MINH TỰ - MSSV : 05112080
    NGÔ VIỆT HUẤN - MSSV : 05112026
    Lớp : 05CNTD
    Email address: scorpius8x@gmail.com(01663455595)
    viethuan87@yahoo.com(0975481678)
    2. Đề tài của mình là : <span style="font-size:24pt;line-height:100%"><span style="font-size:18pt;line-height:100%">HIỂN THỊ NGÀY - GIỜ TRÊN LED 7 ĐOẠN</span>
    </span>

    YÊU CẦU :
    - Hiển thị chính xác thời gian trên led 7 đoạn sử dụng con AT89s52
    - Sử dụng nút nhấn để chỉnh thời gian và ngày tháng
    - Không mất dữ liệu khi cúp điện đột ngột do sử dụng IC realtime DS12C887
    -Có thêm mode hẹn giờ, báo thức.
    3. Phương án giải quyết:
    - Thiết kế mạch và vẽ trên Eagle.
    - Vi điểu khiển đọc dữ liệu từ ic realtime và hiển thị trên các led 7 đoạn dủng phương pháp quét.
    - Có sử dung chip nhạc để báo thức.

    4. Sơ đồ nguyên lý :

    [IMG]

    MẠCH IN :

    [IMG]

    MẠCH LINH KIỆN:

    [IMG]
    5. Lưu đồ giải thuật và code cho chương trình:
    - Lưu đồ:
    [IMG]

    - code : http://www.mediafire.com/?4smvngobjck

    6. Cuối cùng là đoạn video về nó, mình post lên để các bạn tham khảo( có cả hẹn giờ nữa nhé):
    Xem video
    7. Hạn chế và hướng phát triển:
    HẠN CHẾ:
    - Chưa thiết kế được mạch điều khiển từ xa(dùng remote)
    - Mạch thi công còn xấu.

    HƯỚNG PHÁT TRIỂN:
    - Nghiên cứu để làm thêm mắt thu điều khiển từ xa,dùng IC 9149(IC nhận) và IC 9148(IC phát).
    - Kết hợp gắn cảm biến nhiệt độ để hiển thị nhiệt độ ngoài trời.
    8. Link download code .asm: http://www.mediafire.com/?gwkbuwq3gm1
    - file mạch điện : http://www.mediafire.com/?cmdzxzwzpt0
    http://www.mediafire.com/?tdtuu1oxyqb

    9. Các nguồn tài liệu tham khảo:
    - Sách HỌ VI ĐIỀU KHIỂN 8051-Tác giả : Tống Văn On, Hoàng Đức Hải
    - Link datasheet IC dallas: http://www.datasheetcatalog.com/datasheets.../DS12C887.shtml
    -
  14. vdk_avr Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    1.Họ tên : Dương Thanh Tùng
    MSSV :05111115
    Lớp :051112B
    Email:duongthanh_tung@yahoo.com.vn
    Điện thoại:09882782249

    2.<font size="6"><font color="#FF0000">ĐỀ TÀI : MẠCH ĐỒ HỒ DÙNG VDK AT89S52</font></font>

    *Yêu cầu:

    -Thể hiện thời gian chính xác
    -Điều chỉnh được thời gian
    3. Phương pháp điều khiển:
    Để điều khiển 8 led 7 đoạn dùng phương pháp quét led
    -Port 0 điều khiển a,b,c,d,e,f,g
    -Port 2 dùng để quét led
    -Port 1 dùng cho nút nhấn

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

    [IMG]

    [IMG]

    -Mạch in:

    [IMG]

    <font size="5"><font color="#FF0000">5.Lưu đồ giải thuật:</font></font>
    -Giờ phút giây:
    [IMG]
    -Phần hiển thị:
    [IMG]
    -Từ hex sang BCD:
    [IMG]
    -Từ BCD sang ma led 7 đoạn:
    [IMG]

    <font size="5">-CODE CỦA CHƯƠNG TRÌNH:</font>

    ;***************************************************

    ;CHUONG TRINH DIEU KHIEN HIEN THI DEM GIO - PHUT - GIAY

    ;(LED1,2 DEM GIAY, LED3,4 DEM PHUT, LED5,6 DEM GIO)

    ;***************************************************

    ;CAC DOAN (A-G) -> PORT0. CHON LED 7 DOAN (8 LED) -> PORT1

    ;NUT MODE -> P1.0, UP -> P1.1, DOWN -> P1.2

    ;***************************************************

    $MOD51

    GIAY EQU R2

    PHUT EQU R3

    GIO EQU R4

    B_GIAY EQU R7

    B_MODE EQU R6

    MODE BIT P1.0

    UP BIT P1.1

    D0WN BIT P1.2

    ORG 000H

    LJMP MAIN

    ORG 00BH

    LJMP ISR_T0

    MAIN:

    MOV TMOD,#01H ;CHE DO TIMER - MODE 1

    MOV TH0,#3CH ;THOI GIAN TIMER - 50MS

    MOV TL0,#0B0H

    CLR TF0 ;XOA CO TRAN

    SETB TR0 ;CHAY TIMER

    MOV IE,#82H ;CHO PHEP NGAT TIMER0

    MOV B_MODE,#0

    TD:

    MOV GIO,#0 ;NAP GIA TRI GIO BAN DAU

    X4:

    MOV PHUT,#0 ;NAP GIA TRI PHUT BAN DAU

    X3:

    MOV GIAY,#0 ;NAP GIA TRI GIAY BAN DAU

    MOV B_MODE,#0

    X2:

    MOV B_GIAY,#0 ;NAP GIA TRI BAN DAU CHO BIEN DEM SO LAN NGAT TIMER

    LCALL HEX_BCD ;DOI GIA TRI THOI GIAN -> BCD -> MA 7 DOAN

    LCALL BCD_7DOAN

    X1:

    LCALL HIENTHI ;HIEN THI THOI GIAN

    JNB MODE,ADJ ;KIEM TRA NUT MODE - DUNG -> PHAN CHINH THOI GIAN ADJ

    CJNE B_GIAY,#20,X1 ;KIEM TRA SO LAN NGAT TIMER - 20 LAN x 50MS = 1S

    INC GIAY ;TANG GIAY

    CJNE GIAY,#60,X2 ;SO SANH DU 60 GIAY - CHUA DU -> QUAY LAI HIEN THI

    INC PHUT ;TANG PHUT

    CJNE PHUT,#60,X3 ;SO SANH DU 60 PHUT - CHUA DU -> QUAY LAI HIEN THI

    INC GIO ;TANG GIO

    CJNE GIO,#24,X4 ;SO SANH DU 60 GI0 - CHUA DU -> QUAY LAI HIEN THI

    SJMP TD ;DU -> QUAY LAI TU DAU
    NHAN:
    LJMP ADJ
    RET

    ;***************************************************

    ;CHUONG TRINH CON DOI HEX -> BCD (TACH SO HEX)

    ;***************************************************

    ;R2 -> 11H & 10H, R3 -> 13H & 14H, R4 -> 17H & 16H

    ;***************************************************

    HEX_BCD:
    MOV A,GIAY ;LAY SO HEX CAN CHUYEN DOI
    MOV B,#10
    DIV AB ;CHIA 10 DE TACH RIENG BYTE THAP VA BYTE CAO
    MOV 10H,B ;CAT BYTE THAP
    MOV 11H,A ;CAT BYTE CAO
    MOV 12H,#0AH ;vi ma 7SEG cua dau gach ngang dc khai bao DB tai o nho 50AH

    MOV A,PHUT ;LAY SO HEX CAN CHUYEN DOI
    MOV B,#10
    DIV AB
    MOV 13H,B
    MOV 14H,A
    MOV 15H,#0AH

    MOV A,GIO
    MOV B,#10
    DIV AB
    MOV 16H,B
    MOV 17H,A
    RET
    ;***************************************************

    ;CHUONG TRINH CON DOI SO BCD -> MA 7 DOAN

    ;***************************************************

    ;SO BCD (10H - 17H) -> MA 7 DOAN (20H - 27H)

    ;***************************************************

    BCD_7DOAN:
    MOV DPTR,#500H ;NAP DIA CHI VUNG CHUA MA 7 DOAN
    MOV R0,#10H ;NAP DIA CHI DAU TIEN CUA VUNG NHO CHUA SO BCD
    MOV R1,#20H ;NAP DIA CHI DAU TIEN CUA VUNG NHO CHUA MA 7 DOAN
    BC: MOV A,@R0 ;GIAI MA
    MOVC A,@A+DPTR
    MOV @R1,A
    INC R0 ;TANG DIA CHI VUNG NHO CHUA SO BCD
    INC R1 ;TANG DIA CHI VUNG NHO CHAU MA 7 DOAN
    CJNE R0,#18H,BC ;KEM TRA HOAN TAT VIEC GIAI MA

    CJNE B_MODE,#0,CHAM ;them tu doan nay
    RET
    CHAM: CJNE B_MODE,#1,SS14 ;AND o nho 26H la hang dv cua gio de lam sang dau thap phan cua gio
    ANL 26H,#7FH
    RET
    SS14: CJNE B_MODE,#2,SS15
    ANL 23H,#7FH
    RET
    SS15: ANL 20H,#7FH
    RET
    NHAN:
    LJMP ADJ
    RET

    ;***************************************************

    ;CHUONG TRINH CON HIEN THI (20H - 27H)

    ;***************************************************

    HIENTHI:

    MOV R0,#20H ;DIA CHI DAU TIEN CUA VUNG CHUA DU LIEU CAN HIEN THI

    MOV A,#0FEH ;MA QUET DAU TIEN

    HT1:

    MOV P0,@R0 ;LAY DU LIEU CAN HIEN THI

    MOV P2,A ;XUAT MA QUET

    LCALL DELAY

    MOV P2,#0FFH ;TAT LED DE CHONG LEM

    LCALL DELAY

    INC R0 ;CHUYEN SANG DIA DIA KE TIEP

    RL A ;THAY DOI MA QUET

    CJNE A,#0FEH,HT1 ;KIEM TRA QUET XONG CHUA - CHUA XONG -> QUAY VE LAM TIEP

    RET ;TRO LAI KHI DA QUET VA HIEN THI XONG

    ;***************************************************

    ISR_T0: ;ISR TIMER0 - 50MS

    CLR TR0

    CLR TF0

    MOV TH0,#3CH

    MOV TL0,#0B0H

    INC B_GIAY ;TANG BIEN DEM SO LAN NGAT - 1 LAN = 50MS

    SETB TR0

    RETI

    ;***************************************************

    ADJ: ;CHUONG TRINH CON XU LY NUT MODE

    LCALL HIENTHI

    JNB MODE,ADJ ;KIEM TRA NHU MODE DA DUOC THA RA HAY CHUA

    INC B_MODE ;TANG SO LAN NHAN NUT MODE

    CJNE B_MODE,#4,ADJ_GPG ;KIEM TRA SO LAN NHAT NUT MODE

    MOV B_MODE,#0 ;DU 3 LAN -> TRO LAI TU DAU

    MOV B_GIAY,#0

    LJMP X2

    ;***************************************************

    ADJ_GPG:

    LOOP1:

    MOV 76H,#10 ;SO LAN CHOP TAT CAP LED DANG DUOC CHINH

    LOOP2:

    MOV 77H,#0FFH ;SO LAN KIEM TRA NUT NHAN

    LCALL HEX_BCD

    LCALL BCD_7DOAN

    LOOP:

    LCALL HIENTHI

    CJNE B_GIAY,#20,Z1 ;KIEM TRA SO LAN NGAT - CHUA DU THI KIEM TRA NUT NHAN

    LJMP TANGGIAY ;DU 20 LAN NGAT -> TANG GIAY

    Z1:

    JNB UP,TANG ;KIEM TRA NUT UP

    JNB D0WN,GIAM ;KIEM TRA NUT DOWN

    JNB MODE,ADJ ;KIEM TRA NUT MODE

    DJNZ 77H,LOOP ;GIAM SO LAN KIEM TRA NUT NHAN

    MOV 77H,#0FFH ;NAP SO LAN TAT (THOI GIAN TAT)

    CJNE B_MODE,#1,SS11 ;KIEM TRA NHAN MODE 1 LAN - SAI -> KIEM TRA TIEP SS11

    MOV 26H,#0FFH ;DUNG - NHAN MODE 1 LAN -> NAP GIA TRI TAT LED...

    MOV 27H,#0FFH ;CHO PHAN "GIO"

    SJMP TAT ;HIEN THI TRANG THAI LED

    SS11:

    CJNE B_MODE,#2,SS12 ;KIEM TRA NHAN MODE 2 LAN - SAI -> KIEM TRA TIEP SS12

    MOV 23H,#0FFH ;DUNG - NHAN MODE 2 LAN -> NAP GIA TRI TAT LED...

    MOV 24H,#0FFH ;CHO PHAN "PHUT"

    SJMP TAT ;HIEN THI TRANG THAI LED

    SS12: ;NHAN MODE 3 LAN -> NAP GIA TRI TAT LED...

    MOV 20H,#0FFH ;CHO PHAN "GIAY"

    MOV 21H,#0FFH

    TAT:

    LCALL HIENTHI ;HIEN THI

    CJNE B_GIAY,#20,Z2 ;KIEM TRA SO LAN NGAT - CHUA DU THI KIEM TRA NUT NHAN

    LJMP TANGGIAY ;DU 20 LAN NGAT -> TANG GIAY

    Z2:

    JNB UP,TANG ;KIEM TRA NUT UP

    JNB D0WN,GIAM ;KIEM TRA NUT DOWN

    JNB MODE,ADJ ;KIEM TRA NUT MODE

    DJNZ 77H,TAT ;GIAM SO LAN TAT (THOI GIAN TAT)

    DJNZ 76H,LOOP2 ;GIAM SO LAN CHOP TAT CAP LED

    MOV B_MODE,#0 ;XOA SO LAN NHAN NUT MODE

    LJMP X2 ;QUAY LAI

    TANG:

    LCALL HIENTHI

    CJNE B_GIAY,#20,Z3 ;KIEM TRA SO LAN NGAT - CHUA DU THI KIEM TRA NHU NHAN

    LJMP TANGGIAY ;DU 20 LAN NGAT -> TANG GIAY

    Z3:

    JNB UP,TANG

    CJNE B_MODE,#1,SS1

    INC GIO

    CJNE GIO,#24,LOOP1

    MOV GIO,#0

    LOOP11:

    LJMP LOOP1

    SS1:

    CJNE B_MODE,#2,SS2

    INC PHUT

    CJNE PHUT,#60,LOOP1

    MOV PHUT,#0

    SJMP LOOP1

    SS2:

    INC GIAY

    CJNE GIAY,#60,Z5

    MOV GIAY,#0

    Z5:

    LJMP LOOP1



    GIAM:

    LCALL HIENTHI

    CJNE B_GIAY,#20,Z4 ;KIEM TRA SO LAN NGAT - CHUA DU THI KIEM TRA NUT NHAN

    LJMP TANGGIAY ;DU 20 LAN NGAT -> TANG GIAY

    Z4:

    JNB D0WN,GIAM

    CJNE B_MODE,#01,SS3

    DEC GIO

    CJNE GIO,#0FFH,K1

    MOV GIO,#23

    K1:

    LJMP LOOP1

    SS3:

    CJNE B_MODE,#02,SS4

    DEC PHUT

    CJNE PHUT,#0FFH,K2

    MOV PHUT,#59

    K2:

    LJMP LOOP1

    SS4:

    DEC GIAY

    CJNE GIAY,#0FFH,K3

    MOV GIAY,#59

    K3:

    LJMP LOOP1

    ;***************************************************

    TANGGIAY:

    MOV B_GIAY,#0

    INC GIAY

    CJNE GIAY,#60,EXIT

    MOV GIAY,#0

    INC PHUT

    CJNE PHUT,#60,EXIT

    MOV PHUT,#0

    EXIT:

    LJMP LOOP

    ;***************************************************

    DELAY: ;CHUONG TRINH CON TAO THOI GIAN TRE 150US

    MOV 7FH,#50H

    DJNZ 7FH,$

    RET

    ;***************************************************

    ORG 200H ;VUNG MA 7 DOAN

    DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

    END

    6.Mô hình thi công:

    [IMG]

    Videolip demo:

    http://www.2shared.com/file/4617991/5d5970/CLIP0026.html

    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ả:
    -Thể hiện đúng thời gian
    -Điều chỉnh được giờ phút giây thông qua nút Mode và 2 nút tăng và giảm

    *Hạn chế:
    Đề tài còn han chế đó là thời gian sau 1 năm nó trễ mất 30 phút(tham khảo trên mạng)
    *Hướng phát triển đề tài:

    -Đe the hien chính xac ta dung thơi gian thực bang cach sử dung dalas DS12887
    -Thêm nut nhan hien giơ , chuông bao thức
    -The hien đươc ngay thang năm
    8.Các link down:
    Sơ đồ nguyên lý và mạch in:
    http://www.2shared.com/file/4617907/38fc470c/SoDoMach.html

    Báo cáo PowerPoint:

    http://www.2shared.com/file/4617891/19f3347/BaoCao.html

    Code cho 89s52:

    http://www.2shared.com/file/4617919/c65f5b4a/Code.html

    9.Tài liệu tham khảo:
    http://www.2shared.com/file/4622311/b56ddc..._Dung_8051.html

    -http://ant7.com(từ khóa :đồng hồ số ứng dụng)
  15. PTHN Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    1 Họ tên: Phan Trần Hải Nguyên
    MSSV:05111066
    Lớp:051112B
    Email:Hainguyen1212@yahoo.com
    Điện thoại: 0939208703
    2 Tên đề tài: ĐỒNG HỒ HIỂN THỊ GIỜ PHÚT GIÂY THÔNG QUA LED BẢY ĐOẠN
    Yêu cầu:
    + Viết chương trình đồng hồ bằng ngôn ngữ ASM.
    + Hiển thị giờ phút giây trên 6 led bảy đọan và hai dấu gạch ngang.
    + Nút nhấn:
    - Nút 1 : Nút hẹn thời gian giờ phút giây(P3.0).
    - Nút 2: Nút vào chế độ chỉnh tăng giờ, tăng phút, tăng giây(P3.2).
    - Nút 3: Nút tăng giây(P2.2).
    - Nút 4: Nút tăng phút(P2.1).
    - Nút 5: Nút tăng giờ(P2.0).
    - Nút 6: Nút thoát chế độ(P2.3).
    - Nút 7: Nút Reset(Pin 9).
    + Port 0 điều khiển chân a,b,c,d,e,f,g,p cua led 7 đoạn.
    + Port 1 điều khiển chân anot của led U1 đến U7 theo thứ tự P1.0 đến P1.7.
    + Led đơn 3 màu hiển thị khi đúng giờ hẹn và khi đúng giờ ( như 1giờ 0 phút 0 giây....)(P3.7)
    3 Các phương án lựa chọn:
    + Sử dụng chip AT 89C51 hoặc AT 89S52.Trong đề tài này AT 89S52 có ưu điểm là mạch nạp dể dàng thực hiện hơn mạch nạp
    AT 89C51.
    + Sử dụng nút nhấn hai chân hoặc bốn chân. Nút nhấn hai chân có ưu điểm là nhấn êm hơn và chống dội tốt hơn.
    + Sử dụng led 7 đoạn anot chung hoặc catot chung. Trong đề tài này led 7 đoạn anot chung có ưu điểm hơn do dùng Port 0 điều khiển.
    + Sử dụng Transistor NPN hoặc PNP.
    * Trong đề tài :
    + Sử dụng AT 89S52, nhưng trong quá trình thiết kế mạch và soạn báo cáo sử dụng AT 89C51. Do mạch nạp EZ cho AT 89C51 làm không thành công.
    + Sử dụng led 7 đoạn anot chung.
    + Sử dụng nút nhấn hai chân.
    + Sử dụng transistor PNP ( A564).
    4 Mạch nguyên lý và mạch in ( Orcad):
    + Mạch nguyên lý:

    [IMG]

    + Mạch in:

    [IMG]


    5 Lưu đồ giải thuật:
    + Lưu đồ giải thuật hiển thị:

    [IMG]

    + Lưu đồ giải thuật ngắt ngoài

    [IMG]

    + Lưu đồ giải thuật hẹn giờ:

    [IMG]

    * Code chương trình:
    ;************************************************************
    ; CHUONG TRINH DONG HO SO HIEN THI THOI GIAN GIO PHUT GIAY
    ; PHAN TRAN HAI NGUYEN - CDT05
    ; NGAY: 2-11-2008
    ;************************************************************
    giay equ R4 ; thay ten thanh ghi R4 la giay
    phut equ R3 ; thay ten thanh ghi R3 la phut
    gio equ R2 ; thay ten thanh ghi R2 la gio
    ngat equ R1 ; thay ten thanh ghi R1 la ngat ( so lan ngat)

    ;************************************************************

    org 0000h
    ljmp main
    org 0003h
    ljmp ISR_external0
    org 000Bh
    ljmp ISR_timer0

    ;************************************************************

    org 0030h
    main: mov 26h,#0BFh
    mov 23h,#0BFh
    mov dptr,#maso
    mov TMOD,#01h
    clr TF0
    mov IE,#10000011b
    setb PX0
    clr PT0
    setb IT0
    mov TH0,#03Ch
    mov TL0,#0B0h
    setb TR0
    mov 30h,#00

    main1: mov gio,#00h ; gia tri ban dau cho gio la 00
    main2: mov phut,#00h ; gia tri ban dau cho phut la 00
    main3: mov giay,#00h ; gia tri ban dau cho giay la 00
    main4: mov ngat,#00h ; gia tri ban dau cho ngat la 00

    lcall giaima
    main5: lcall hienthi
    mov R7,30h
    cjne R7,#1,main6
    clr P3.7
    ;chuong trinh kiem tra led bao hieu
    jb P2.3,maina
    k1: mov R7,#30
    k2: jnb P2.3,k1
    djnz R7,k2
    setb P3.7
    mov 30h,#00

    maina: mov a,giay
    cjne a,#58h,main6
    setb P3.7
    mov 30h,#00
    main6: mov a,ngat
    cjne a,#20h,main5

    mov a,giay
    add a,#1h
    da a
    mov giay,a
    cjne a,2Ch,main7
    mov a,phut
    cjne a,2Dh,main7
    mov a,gio
    cjne a,2Eh,main7
    mov 30h,#1
    main7:mov a,giay
    cjne a,#60h,main4

    mov a,phut
    add a,#1h
    da a
    mov phut,a
    cjne a,#60h,main3

    mov a,gio
    add a,#1h
    mov 30h,#1
    da a
    mov gio,a
    cjne a,#24h,main2
    ljmp main1

    ;************************************************************
    ;chuong trinh con phuc vu ngat timer 0
    ISR_timer0:
    inc ngat
    mov TH0,#03Ch
    mov TL0,#0B0h
    clr TF0
    setb TR0
    reti
    ;************************************************************
    ; chuong trinh con giai ma cho led 7 doan
    giaima:
    ;cho giay
    mov a,giay
    anl a,#0Fh
    movc a,@a+dptr
    mov 28h,a

    mov a,giay
    anl a,#0F0h
    swap a
    movc a,@a+dptr
    mov 27h,a

    ;cho phut
    mov a,phut
    anl a,#0Fh
    movc a,@a+dptr
    mov 25h,a

    mov a,phut
    anl a,#0F0h
    swap a
    movc a,@a+dptr
    mov 24h,a

    ;cho gio
    mov a,gio
    anl a,#0Fh
    movc a,@a+dptr
    mov 22h,a

    mov a,gio
    anl a,#0F0h
    swap a
    movc a,@a+dptr
    mov 21h,a
    ret

    ;************************************************************
    ;chuong trinh con hien thi
    hienthi:
    mov a,#01111111b
    mov R0,#28h
    ht: mov P1,a
    mov P0,@R0
    lcall delay
    mov p0,#0FFh

    dec R0
    rr a
    cjne r0,#20h,ht
    ret

    ;************************************************************
    ;chuong trinh con phuc vu ngat ngoai 0

    ISR_external0:
    setb P3.7
    clr P3.2
    clr 20h


    loop: lcall giaima
    lcall hienthi

    ; kiem tra nut nhan EXIT co duoc nhan hay khong
    jb P2.3,nhgio
    e1: mov r7,#40
    e2: jnb P2.3,e1
    djnz r7,e2
    inc 20h
    mov r6,20h
    cjne r6,#0,exit


    ; nhan tang gio va chong doi
    nhgio: jb P2.0,nhphut
    l1: mov r7,#10
    l2: jnb P2.0,l1
    djnz r7,l2
    ljmp tanggio

    ;nhan tang phut va chong doi
    nhphut: jb P2.1,nhgiay
    l3: mov r7,#10
    l4: jnb P2.1,l3
    djnz r7,l4
    ljmp tangphut

    ;nhan tang giay va chong doi
    nhgiay: jb P2.2,hen
    l5: mov r7,#10
    l6: jnb P2.2,l5
    djnz r7,l6
    ljmp tanggiay
    exit: ljmp exit1
    ;nhan nut hen gio
    hen: jb P3.0,loop
    l7: mov r7,#10
    l8: jnb P3.0,l7
    djnz r7,l8

    mov 29h,giay
    mov 2Ah,phut
    mov 2Bh,gio

    loophen: lcall giaima
    lcall hienthi
    jb P2.3,hengio
    l9: mov r7,#40
    l10: jnb P2.3,l9
    djnz r7,l10
    mov 2Ch,giay
    mov 2Dh,phut
    mov 2Eh,gio

    mov giay,29h
    mov phut,2Ah
    mov gio,2Bh
    sjmp loop
    hengio: jb P2.0,henphut
    l11: mov r7,#40
    l12: jnb P2.0,l11
    djnz r7,l12
    mov a,gio
    add a,#01h
    da a
    mov gio,a
    cjne a,#24h,hengio1
    mov gio,#00
    hengio1: ajmp loophen
    henphut: jb P2.1,hengiay
    l13: mov r7,#40
    l14: jnb P2.1,l13
    djnz r7,l14
    mov a,phut
    add a,#01h
    da a
    mov phut,a
    cjne a,#60h,henphut1
    mov phut,#00
    henphut1: ajmp loophen
    hengiay: jb P2.2,loophen
    l15: mov r7,#40
    l16: jnb P2.2,l15
    djnz r7,l16
    mov a,giay
    add a,#01h
    da a
    mov giay,a
    cjne a,#60h,hengiay1
    mov giay,#00
    hengiay1: ajmp loophen
    tanggio:
    mov a,gio
    add a,#01h
    da a
    mov gio,a
    cjne a,#24h,gio1
    mov gio,#00
    gio1: ajmp loop

    tangphut:
    mov a,phut
    add a,#1h
    da a
    mov phut,a
    cjne a,#60h,phut1
    mov phut,#00
    phut1: ajmp loop

    tanggiay:
    mov a,giay
    add a,#1h
    da a
    mov giay,a
    cjne a,#60h,giay1
    mov giay,#00
    giay1: ajmp loop

    exit1: setb P3.2
    reti

    ;************************************************************
    ;Chuong trinh con delay
    delay: mov r5,#0Fh
    djnz r5,$
    ret
    ;************************************************************
    maso: db 0C0h,0F9h,0A4h,0B0h,99h,92h,82h,0F8h,80h,90h
    ;************************************************************

    end

    6 Hình ảnh và phim: (Do webcam độ phân giải thấp nên chất lượng hình ảnh kém mong Thầy và các bạn thông cảm)
    + Phim:
    http://www.mediafire.com/file/y0iglm1cbkw/Dongho.rar

    + Hình thực tế:
    [IMG]

    7 Kết quả đạt được:
    + Đồng hồ hiển thị không bị nhiễu.
    + Phần cứng nhỏ gọn.
    + Chống dội nút nhấn thành công.
    + Thể hiện thời gian tương đối chính xác.
    * Hạn chế đề tài:
    + Không dùng Dallas nên không duy trì giá trị giờ phút giây khi mất nguồn nuôi .
    + Chưa có chế độ giảm giá trị, chỉ có chế độ tăng giá trị thời gian.
    + Mạch thiết kế thiếu cầu diode. Do đó, làm khó khăn chọn chiều âm và dương nguồn cung cấp.
    * Hướng phát triển của đề tài:
    + Sử dụng Dallas.
    + Sử dụng thuật toán quét led thực hiện đề tài " Khóa điện tử ".
    8 Các bạn có thể download qua link sau:
    + Code :
    http://www.mediafire.com/file/4nzmnewyjmr/Chuong trinh dong ho.rar
    + Mạch nguyên lý và mạch in ( Orcad ):
    http://www.mediafire.com/file/2unmjemwtny/Mach dong ho.rar
    + PowerPoint:( Lưu ý lưu đồ trong powerpoint khác với ở diễn đàn. Do powerpoint nhỏ quá).
    http://www.mediafire.com/file/vy4weo5yiad/Bao cao vi dieu khien.rar
    Các bạn có thể download toàn bộ ( Powerpoint, mạch nguyên lý và mạch in, code, file word) qua link sau:
    http://www.mediafire.com/file/5d4nwtozgyt/Dong ho so.rar
    9 Tài liệu tham khảo:
    + Sách " Vi điều khiển 89C51 " của Thầy Nguyễn Đình Phú.

    * Rất mong sự đóng góp ý kiến của các bạn
  16. LongThan315 New Member

    Số bài viết: 9
    Đã được thích: 0
    Điểm thành tích: 0
    <span style="font-size:12pt;line-height:100%">Họ và tên: Nguyễn Ngọc Hiền
    Lớp: 051112A
    MSSV: 05111031
    Email: hiennguyen315@yahoo.com.vn</span>

    Đề tài:
    <span style="font-size:24pt;line-height:100%">Mạch led ma trận giao tíếp với bàn phím loại AT</span>
    [IMG]

    Yêu cầu:
    + Đề tài chia làm 2 module: module led ma trận va module điều khiển.
    + Module led ma trận có 6 led ma trận 8x8.
    + Sử dụng transistor và IC khuyếch đại đảo ULN 2803 để tăng dòng qua led.
    + Dùng IC ghi dịch 74LS164 để quét led.
    + Module điều khiển nối với module led ma trận và bàn phím máy tính, có mạch ổn áp 7805.
    + chương trình VĐk: nhấn ESC để bắt đầu nhập chữ, sau khi nhập chữ nhấn Enter để tiếp tục chạy chữ.

    Sơ đồ nguyên lý và mạch in:
    + Module led ma trận:
    [IMG]
    [IMG]
    + Module điều khiển:
    [IMG]
    [IMG]

    Sơ đồ nguyên lý và mạch in
    File power point
    Chương trình VĐK (viết bằng code vision)
    Interfacing the PC's Keyboard

    Kết quả: xem phim demo trên youtube hay có thể down về bằng IDM


    Link tổng hơp bao gồm tất cả về đề tài:
    + Sơ đồ nguyên lý và mạch in
    + File power point
    + Code chương trình
    + Các tài liệu về giao tiếp bàn phím loại AT
    + Phim chạy demo
    All_MCU_project_05111031.rar

    PS: chương trình chỉ mới sử dụng các phím ký tự và các phím số, hướng phát triển sắp tới sẽ là xây dựng chương trình tận dụng tối đa bàn phím máy tinh.
    Cám ơn mọi người đã quan tâm [IMG]
  17. trantungminh New Member

    Số bài viết: 3
    Đã được thích: 0
    Điểm thành tích: 0
    1.Họ tên sinh viên: Trần Minh Tùng
    -MSSV:05111116
    -Lớp:051112B
    -Email:candy18587@yahoo.com
    -Điện thoại:01696918587
    2.Tên đề tài :
    <span style="color:#FF0000">MẠCH ĐIỀU KHIỂN TỪ XA CÁC THIẾT BỊ TRONG NHÀ DÙNG VI ĐIỀU KHIỂN AT89S52</span>
    Gồm 2 phần chính:
    <span style="color:#FF0000">+Phát tín hiệu:</span>
    Dùng remote TV sony
    Tín hiệu từ 1 nút trên remote Sony có dạng:
    [IMG]
    Phần đầu tiên của tín hiệu có độ dài 3T bằng 1800ms gọi là header hay start bit. Các bit còn lại được mã hóa như sau:
    500ms im lặng + 700ms hồng ngoại = bit 0
    500ms im lặng +1300ms hồng ngoại = bit 1
    <span style="color:#FF0000">+Thu tín hiệu</span>
    Dùng led thu hồng ngoại để thu tín hiệu. Tín hiệu qua led thu sẽ bị đảo như sau:
    [IMG]
    bit 0=500ms mức cao+700ms mức thấp
    bit 1=500ms mức cao+1300ms mức thấp
    +VDK 89s52 sẽ giải mã đưa vào thanh ghi A và xuất hiển thị mã này ra port 2.
    đồng thời mã này sẽ so sánh với các mã lệnh của các phím xuất ra port 2 để đóng mở các relay tương ứng.
    <u><span style="color:#FF0000">3.Phương án giải quyết :</span></u>
    -Tín hiệu từ remote Sony
    -Với 7 bit đầu là bit lệnh, 5 bit cuối là bit địa chỉ. Vì các tín hiệu đều lấy từ cùng renote nên ta chỉ cần giải mã 7 bit lệnh đầu tiên.
    -Để thu được 7 bit lệnh
    -Ta cần nạp cho thanh ghi A giá trị 01000000B
    -Để sau 7 lần quay trái có cờ nhớ C thì giá trị thanh ghi A chính là mã lệnh điều khiển của phím bấm remote.
    <span style="color:#FF0000">4 .Sơ đồ mạch nguyên lý. </span>
    [IMG]
    <span style="color:#FF0000">+Sơ đồ mạch layout:</span>
    [IMG]
    <u><span style="color:#FF0000">5 .Lưu đồ giải thuật:</span></u>
    <span style="color:#FF0000">Thuật toán giải mã:</span>

    1.Nạp thanh ghi A giá trị 40H

    2.Chờ tín hiệu đi xuống( bit start)

    3.Chờ tín hiệu đi lên(khởi đầu của 1 bit)

    4.Chờ tín hiệu đi xuống

    5.Chờ khoảng 700ms<t<1300ms, chon t=1000ms=1ms

    6.Đo tín hiệu: + nếu ở mức cao bit nhận được là bit 0, đặt C=0 quay phải A có cờ C, quay lại bước 4.

    + nếu ở mức thấp bit nhận được là bit 1, đặt C=1 quay phải A có cờ C, quay lại bước 3.

    7.Nếu C=1, giá trị trong thanh ghi A= D6D5D4D3D2D1D00, quay phải A thu được A=0 D6D5D4D3D2D1D0

    -Xuất nội dung thanh ghi A ra port 1 hiển thị bằng các led( đây chính là mã lệnh từ remote mà VDK giải mã được).
    <u>+<span style="color:#FF0000">Lưu đồ giải mã tín hiệu:</span></u>
    [IMG]
    <u><span style="color:#FF0000">+Lưu đồ điều khiển bật tắt thiết bị:</span>
    </u>
    [IMG]

    <u><span style="color:#FF0000">-Code chương trình :</span></u>
    SOLAN BIT 70H;nhan 2 lan
    ON_OFF BIT 71H
    ORG 00H

    MOV P2,#0H
    SETB ON_OFF
    MOV P1,#0;

    MAIN:
    MOV 32H,0FFH
    SETB SOLAN;lan dau bit=1


    LAN2: MOV A,#40H

    SETB P3.3;chong nhieu do do rong bit start
    DIL2: MOV 30H,#2
    DIL1: MOV 31H,#255
    DIL:
    JB P3.3,DIL2;tao khoang do bit thap
    DJNZ 31H,DIL
    DJNZ 30H,DIL1

    <span style="color:#FF0000">;GIAI MA TIN HIEU</span>
    <span style="color:#FF00FF"><span style="color:#0000FF">LAP1: JNB P3.3,LAP1 ; CHỜ TÍN HIỆU MỨC CAO, KHỞI ĐẦU CỦA BIT

    LAP2: JB P3.3,LAP2 ; CHỜ TÍN HIỆU MỨC THẤP
    LCALL DELAY1MS

    JNB P3.3,LAP3 ; NHẢY TỚI LAP3 NẾU TÍN HIỆU MỨC THẤP
    CLR C

    RRC A ; XOAY PHẢI A CÓ CỜ NHỚ C

    JNC LAP2 ; NHẢY TỚI NHÃN LAP2 NẾU C=0

    SJMP KETTHUC;NHẢY TỚI NHÃN KETTHUC NẾU C=1

    LAP3: SETB C ; ĐẶT C=1 NẾU TÍN HIỆU MỨC THẤP

    RRC A ; XOAY PHẢI A CÓ CỜ NHỚ

    JNC LAP1; NHẢY ĐẾN NHÃN LAP1 NẾU C=0

    KETTHUC:

    RR A ; QUAY PHẢI A THU ĐƯỢC MÃ CỦA TÍN HIỆU</span>

    JNB SOLAN,SOSANH</span>;solan=1 nap tin hieu vao o 32h =0 nhay ss
    CLR SOLAN
    MOV 32H,A
    JMP LAN2;nhay ve lay lan 2
    SOSANH:
    CJNE A,32H,MAIN

    CJNE A,#2H,KTONOFF;kiem tra on off neu dc nhan dao bit on off

    CPL ON_OFF

    SJMP KT
    KTONOFF:
    JNB ON_OFF,MAIN
    PHIM1: CJNE A,#0H,PHIM2 ;SO SÁNH MÃ LỆNH PHÍM VỚI MÃ TH
    CPL P2.0 ; ĐẢO BIT ĐÓNG MỞ RELAY

    SJMP KT

    PHIM2: CJNE A,#3H,PHIM3 ;

    CPL P2.1

    SJMP KT

    PHIM3: CJNE A,#6H,PHIM4

    CPL P2.2

    SJMP KT

    PHIM4: CJNE A,#9H,PHIMKHAC


    CPL P2.3

    SJMP KT

    KT:
    LCALL KIEMTRACONNHANHAYKO

    JMP MAIN




    PHIMKHAC:

    NOP

    SJMP MAIN



    DELAY1MS:

    MOV R0,#10

    HERE:

    MOV R1,#50

    DJNZ R1,$

    DJNZ R0,HERE

    RET


    KIEMTRACONNHANHAYKO:;kiem tra co nhan phim ko
    GEC:
    MOV 20H,#03H
    DEL3:
    MOV 21H,#25H
    DEL2:
    MOV 22H,#0FFH
    DEL1:
    JNB P3.3,GEC;tao khoang do bit cao
    DJNZ 22H,DEL1
    DJNZ 21H,DEL2
    DJNZ 20H,DEL3
    RET
    END
    <span style="color:#FF0000">6.Mô hình thi công:</span>
    [IMG]

    <span style="color:#FF0000">Videoclip demo:</span>
    http://www.mediafire.com/?sharekey=b990966...8e8f17c662f975f
    <u><span style="color:#FF0000">7. Kết quả đạt được:</span></u>
    -mạch chạy tốt và được chống nhiểu và chống dội
    -mạch chạy ổn định
    <u><span style="color:#FF0000">+Hạn chế của đề tài và phương hướng phát triển</span></u>
    -Mở rông thêm modul kết nối với máy tính dùng điều khiển relay(qua cổng COM hay LPT).

    -Đây là mô hình thí nghiệm nên khi dùng thực tế cần lắp thêm cầu chì để bảo vệ vđk tại chân đóng ngắt relay.

    -Điều khiển được với tất cả các remote khác.

    -Ứng dụng cao hơn nửa là dùng vđk giải mã sóng bluetooth hay wifi…

    <u><span style="color:#FF0000">8.Link Download: code chương trình , file mạch điện :</span></u>
    http://www.mediafire.com/?sharekey=b990966...2db6fb9a8902bda

    <u><span style="color:#FF0000">9.Tài liệu tham khảo:</span></u>
    http://ant7.com(từ khóa :remote sony)
    http://dientuvietnam.net
    http://www.atmel.com
    http://www.alldatasheet.com

    -Đối với đề tài này phần chủ yếu là giải mã tín hiệu vđk.Và phần điều khiển relay.
    -Để đọc hiểu code chương trình cho dể các bạn nên mở file hình tín hiệu remote khi xem đoạn code giải mã tín hiệu .
    -Tín hiệu xuất từ port2 vđk ko đủ kích relay Mình dùng uln 2803 để đệm.Sẽ tiết kiệm và dể vẽ mạch hơn khi dùng Transistor
    Một số kinh nghiệm chia sẽ cùng các bạn.Mong được sự đóng góp ý kiến của mọi người.
  18. khoaduck New Member

    Số bài viết: 10
    Đã được thích: 0
    Điểm thành tích: 0
    1/ Họ và tên: Nguyễn Tấn Việt Khoa ,Email: nguyentanvietkhoa@yahoo.com

    MSSV: 05111052

    2/ Tên đề tài: ĐIỀU KHIỂN 2 LED MA TRẬN 8X8

    Yêu cầu: - Hiển thị và chạy dòng chữ " NTVKHOA " đã được lập trình trước.
    - Sử dụng vi điều khiển AT89S52.
    - Sử dụng P2 để xuất mã hàng.
    - Sử dụng P0 để quét cột.

    3/ Sơ đồ nguyên lý và sơ đồ mạch in:

    - Sơ đồ nguyên lý modun 89s

    [IMG]

    - Sơ đồ mạch in 89s

    [IMG]

    - Sơ đồ nguyên lý phần cứng led matran

    [IMG]

    - Sơ đồ mạch in led matran

    [IMG]

    4/ File powerpoint báo cáo:

    http://www.esnips.com/doc/de32aca3-6ce9-4c...6cb13c8d80d/VDK
    http://www.esnips.com/doc/74c3bd2c-a100-49...-cao-Led-matran

    5/ Chương trình:

    Nắm trong bao-cao-led-matran.doc

    6/ Kết quả:

    [IMG]

    [IMG]
  19. 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:Võ Thanh Thanh
    Mssv:05111091
    Email: bienvangdemthu@yahoo.com
    2.Tên đề tài: THU TÍN HIỆU NHIỆT ĐỘ TỪ LM35
    HIỂN THỊ RA LED 7 ĐOẠN
    3.Yêu cầu:
    - Hiển thị nhiệt độ chĩnh xác ổn định
    - Không bị nhiễu
    4.Sơ đồ nguyên lí mạch led 7 đoạn
    [IMG]
    Sơ đồ nguyên lí mạch avr32
    [IMG]
    Sơ đồ mạch in
    [IMG]
    5.file powerpoint
    http://www.esnips.com/doc/845303da-57f5-4d...1d4/BAO-CAO-VDK
    6.chương trình :
    http://www.esnips.com/doc/a531de3b-5c5f-46...cfa/GIUA-KI-VDK
    7. video kết quả làm được:
    http://www.esnips.com/doc/ffa737fe-d42a-41...7ca9ad/MOV00201
  20. duytien New Member

    Số bài viết: 11
    Đã được thích: 0
    Điểm thành tích: 0
    HỌ VÀ TÊN : PHẠM VŨ DUY TIẾN
    MSSV : 05111101
    LỚP : 051111A
    EMAIL : pduytien10@yahoo.com

    ĐỀ TÀI : <div align='center'><span style="font-size:18pt;line-height:100%">LẬP TRÌNH ĐIỂU KHIỂN HIỆN THỊ TRÊN LED MA TRẬN CÓ PHÍM TÁC ĐỘNG.</span></div>


    YỀU CẦU :
    - HIỆN THỊ CHỮ TRÊN LED MA TRẬN VÀ CÓ THỂ DI CHUYỂN
    - CÓ THỂ THAY ĐỔI CHỮ HIỆN THỊ
    - NẾU NHẬP CHỮ THỨ 2 THÌ CHỮ ĐẦU TIÊN PHẢI DỊCH SANG TRÁI
    - TRONG LÚC HOẠT ĐỘNG CÓ THỂ YÊU CẦU DỪNG
    - BÁO CÁO : http://www.mediafire.com/file/z1ijm2qztrm/VDK.ppt

    LINH KIỆN SỬ DỤNG :
    - TRANSISTOR D468 ĐỂ ĐIỀU KHIỂN MỞ HÀNG
    - IC 74HC138 DÙNG ĐỂ CHỌN CỘT
    - SƠ ĐỒ MẠCH Schemetic led ma trận: http://www.mediafire.com/file/yhudejym0zz/led ma tran.sch
    Sơ đồ Board : http://www.mediafire.com/file/wt4wu3qejwz/led ma tran.brd
    Schemetic nút nhấn : http://www.mediafire.com/file/m3imnginem1/8 nut nhan.sch
    Sơ đồ Board : http://www.mediafire.com/file/mydmm4zfnab/8 nut nhan.brd
    Schemetic mạch AVR: http://www.mediafire.com/file/wdiw10zexzm/mach test AVR.sch
    Sơ đồ Board : http://www.mediafire.com/file/yhtnzotmmit/mach test AVR.brd

    NGÔN NGỮ LẬP TRÌNH : CODEVISION
    Chương trình : http://www.mediafire.com/file/znjjmdj5jd5/...him_chaychu.prj

    HƯỚNG LẬP TRÌNH :
    - ĐẦU TIÊN XÁC ĐỊNH KÍ TỰ MUỐN HIỆN THỊ (VD : A VÀ HIỂN THỊ TRÊN 4 CỘT)
    - KÍCH CHO D468 MỞ VÀ XUẤT MÃ QUÉT CỘT THÔNG QUA VIÊC CHỌN CỘT TRONG BẢNG TRẠNG THÁI CỦA 74HC138.
    - CHỈ QUÉT 4 CỘT NẾU CHỮ ĐỨNG YÊN.NẾU MUỐN CHỮ CHẠY THÌ DÙNG 1 BIẾN ĐỂ TĂNG SỐ CỘT.
    - ĐỂ CHỮ THỨ 2 HIỆN THỊ THAY THẾ VỊ TRÍ THỨ 1 THÌ DÙNG 1 BIẾN ĐỂ XÁC ĐỊNH SỐ LẦN NHẬP.
    - ĐỂ CHỮ DỪNG KHI YÊU CẦU VÀO BẤT CỨ LÚC NÀO THÌ CHÈN CHƯƠNG TRÌNH QUÉT PHÍM TRONG QUÁ TRÌNH CHỮ CHẠY
    - MÔ HÌNH HOẠT ĐỘNG : CHẠY 1 CHỮ : http://www.mediafire.com/file/2i4hyo42m3y/1chu.avi
    CHẠY 2 CHỮ : http://www.mediafire.com/file/kinjnktmnzd/2chu.avi

    LƯU Ý: MÌNH VẼ SƠ ĐỒ MẠCH BẰNG PHẦN MỀM EAGLE. NÊN NẾU BẠN NÀO MUỐN XEM SƠ ĐỒ MẠCH CỦA MÌNH THÌ HÃY DOWNLOAD CHƯƠNG TRÌNH Ở LINK SAU :
    http://www.mediafire.com/file/nnmyzzjyoud/eagle-4.11e.exe
    CRACK: http://www.mediafire.com/file/hfmmnnzzinn/LICENSE.KEY
    MÃ ĐĂNG KÍ : ogyujectwj

    NẾU CÁC BẠN MUỐN XEM MẠCH MÌNH ĐÃ THI CÔNG NHƯ THẾ NÀO XIN DOWNLOAD PHẦN BÁO CÁO VÌ MÌNH KHÔNG BIẾT ĐƯA HÌNH LÊN NHƯ THẾ NÀO MONG CÁC BẠN THÔNG CẢM
  21. 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:
    a. TRẦN ĐÊ MSSV: 05111018 email:trande110@yahoo.com
    b. TRẦN VĂN KHOA MSSV:05111053 email:saobang_visaomouoc@yahoo.com
    2.Tên đê tài:
    Thi công mạch led ma trận dùng vi điều khiển 89S.
    Yêu câu:
    a.Ứng dụng vi điều khiển 89S điều khiển led ma trận.
    b.Hiển thị ra led ma trận.
    c.Tạo các hiệu ứng cho led ma trận.
    3.Sơ đồ nguyên lý:
    Mạch vi điều khiển 89S:
    [IMG]
    [IMG]
    [IMG]
    Mạch led ma trận:
    [IMG]
    [IMG]
    4.Powerpoit:
    http://www.esnips.com/doc/e9c70728-11d2-4d...ocaovdk-018-053
    5.Chương trình:
    a.Lưu đồ:
    [IMG]
    b.Chương trình:
    http://www.esnips.com/doc/4946b00b-8f4b-4d...c31f9f69/LEDMT1
    6.Kết quả:
    http://www.esnips.com/doc/140105c0-b4e9-42.../Videoledmatran
    7.Tài liệu tham khảo:
    a.Vi điều khiển lý thuyết và thực hành 89S tg: Nguyễn Đình Phú.
    b.Vi điều khiển cấu trúc -Lập trình và ứng dụng tg:Kiều Xuân Thực.
    c.www.biendt.110mb.com
  22. sauthegian 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à mạch đo nhiệt độ của mình lúc đầu bị nhảy độ, tưởng tiêu rồi may mà máy tính của thầy bị virut,
    nên bữa sau sửa được bây giờ chạy ngon rồi [IMG]
    1. Thông tin cá nhân
    -Họ Tên: Huỳnh Anh Tuấn
    -MSSV : 05111110
    -Email :sauthegian@yahoo.com
    -ĐT :0956582621
    2.Tên Đề Tài
    -Ứng dụng vi điều khiển 89S52 để hiện thị nhiệt độ lên led 7 đoạn thông qua cảm biến nhiệt LM35
    -Các yêu cầu cần giải quyết:
    + Đo lường được nhiệt độ
    + Chuyển kết quả đo lường từ tương tự sang tín hiệu số.
    + chuyển đổi và hiển thi kết quả lên led 7 đoạn
    3.Các phương án có thể lựa chọn, ưu khuyết điểm của từng phương án.
    + Để đo lường nhiệt độ thì có thể dùng nhiều loại cảm biến nhiệt khác, mỗi loại có một ưu điểm riêng
    phù hợp với từng nhu cầu riêng. Ở đây nhu cầu của mình là đo nhiệt độ môi trường bình thường nên sử dụng LM35
    là tối ưu nhất vì: đây là loại cảm biến có độ chính xác cao, tầm hoạt động tuyến tính từ 0-128 độ C, tiêu tán công
    suất thấp..
    + Tương tự vậy chuyển đổi từ tương tự sang số cũng có nhiều loại ic nói chung al2 giống nhau như , adc0808
    ,adc0809,adc0804c,adc08041... ở đây tôi dùng adc 0809 chỉ đơn giàn là nó có sẵng ở nhà.
    + Còn vấn đề hiển thị thì có thể hiển thị trên led 7 đoạn hay LCD, với qui mô của đề tài thì 7 đoạn là hợp lí, vừa rẻ
    vừa đẹp.
    Trên là những hướng chi tiết. Còn tổng quát mà nói thì có thể dùng nhiều cách để đo nhiệt độ hiển thị kết quả
    và điều khiển thì có thể dùng nhưng loại VDK hiện đại hơn như AVR, pic những loại này có tích hợp sẵng ADC nên sẽ gọn
    và tối ưu hơn,cũng có thể sử dụng các ngôn ngữ lập trình tốt hơn như C. Tuy nhiên tôi chỉ mới tiếp cận VĐK nên phải tìm
    hiểu từ cái cơ bản trước vừa làm giữa kì vừa có kiến thức thi cuối kì.
    4.Sơ Đồ mạch nguyên lý
    [IMG]
    Sơ đồ mạch layout
    [IMG]
    5. Lưu đồ giải thuật
    [IMG]
    -Code chương Trình:
    ale bit p1.5
    start bit p1.6
    eoc bit p1.7

    org 000h
    td: lcall cdoi
    lcall hex_bcd
    lcall bcd_7doan
    lcall hienthi
    sjmp td

    cdoi: setb ale
    clr ale

    setb start
    jb eoc,$
    clr start

    mov r7,#250
    de: lcall hienthi
    djnz r7,de
    mov a,p3
    ret

    hex_bcd:
    mov b,#10
    div ab
    mov 10h,b
    mov 11h,a
    ret

    bcd_7doan:
    mov dptr,#900h
    mov a,10h
    movc a,@a + dptr
    mov 21h,a

    mov a,11h
    movc a,@a + dptr
    mov 22h,a
    mov 20h,#086h
    ret

    hienthi:

    mov r6,20
    repeat2:
    mov r5,100
    repeat1:
    mov r0,#20h
    mov a,#0feh
    djnz r5,repeat1
    djnz r6,repeat2


    ht: mov p0,@r0
    mov p2,a
    lcall delay
    mov p2,#0ffh
    inc r0
    rl a
    cjne a,#0f7h,ht
    ret


    delay: mov 7fh,#100
    djnz 7fh,$
    ret

    ORG 900H
    db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h
    END
    6. Hình ảnh mô tả mô hình đã thi công khi đang hoạt động
    [IMG]
    7. -Kết quả đạt được
    Hiển thì chính xác nhiệt độ trên led 7 đoạn, không bị nhiễu.
    -Hạn chế của đề tài
    Không hiển thị được nhiệt độ lẻ( ví dụ như 25.5) nên khi nhiệt độ môi trương dao động khoảng
    từ( 0.5-0.6) thì sẽ hiển thị dao động tăng hay giảm một độ.
    -Hướng phát triển
    +SỬ DỤNG CÁC LOẠI VI ĐIỀU KHIỂN MỚI HƠN NHƯ AVR, PIC. DÙNG NGÔN NGỮ LẬP TRÌNH TRỰC QUAN HƠN NHƯ C.
    +HIỂN THỊ TRÊN LCD
    +GIAO TIẾP VỚI PC QUA CỔNG COM VỚI GIAO DIỆN VB HAY VS C++ ĐỂ HIỂN THỊ KẾT QUẢ.
    +HIỂN THỊ VÀ ĐIỀU KHIỂN NHIỆT ĐỘ TRONG LÒ NHIỆT, DỤNG CỤ BẾP(như lò nướng...)
    8. Download code chương trình và file mạch điện
    Kích vào đây
    9.Tài liệu tham khảo
    -Họ vi Điều khiển 8051-Tống Văn On, Hoàng Đức Hải
    - Và các tài liệu khác mà các bạn có thể download theo linh sau
    kích vào đây
    The End
  23. thanhhieu192006 Guest

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

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

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

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    Báo cáo bài Giữa kỳ:
    1.Họ Tên: Võ Tấn Linh
    Email: Tanlinhlinh@yahoo.com
    ĐT: 0979079006

    2.Đề tài thực hiện: <span style="font-size:14pt;line-height:100%">[/size]<span style="color:#0000FF">Hiển thị LED matrix chọn ký tự hiển thị bằng nút ấn</span></span>

    [IMG]
    Yêu cầu:
    -Hiển thị chử rỏ ràng, không bị nhiểu.
    -Có thể thay đổi ký tự hiển thị bằng nút ấn.

    3.Phương án giải quyết:
    -Sử dụng 3 LED matrix 8x8 tao thành bảng LED 8x24.
    -Phương pháp quét LED matrix theo hàng
    -Sử dụng IC 74HC138 để chọn hàng nên chỉ cần tốn 4 chân xuất tín hiệu của VDK.
    -Sử dụng iC 74HC595 để xuất đử liệu cho các cột,tốn 3 chân của VDK.
    [IMG]

    4.Sơ đồ nguyên lý:
    -Mạch LED:
    [IMG]
    [IMG]

    -Mach KIT 89S52:
    [IMG]
    [IMG]


    5. Lưu đồ giải thuật. Code chương trình.
    Luu do,Code.

    6.Video về chương trình.
    7.Hạn chế.
    -Số lượng LED còn ít.
    -Các hiệu ứng khi hiển thị chưa tốt.
    Hướng phát triển.
    -Sử dung nhiều LED hơn để có thể hiển thị được dòng chử dài hơn.
    -Cần tăng thêm các hiệu ứng chạy chử.

    8Download

    9.Tai liệu tham khảo.
    -Giáo trình.
    -Dientuvietnam.net
  27. Blacksnow Guest

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

    Số bài viết: 13
    Đã được thích: 0
    Điểm thành tích: 0
    1/ Họ và tên : HOÀNG GIA HIỂN
    MSSV: 06111030
    email: giahien50911@yahoo.com

    2/ tên đề tài: giao tiếp vdk avr32 với bàn phím hex 4x4, và LCD (dủng để hiển thị nhiệt độ)
    yêu cầu: quét phím hex 4x4, hiển thi phím đã nhấn lên LCD, và hiển thị nhiệt độ phòng lên LCD.

    ++ Phương án giải quyết:

    -- dùng vdk AVR32, nó tích hợp sẵn 8 kênh ADC
    -- Dùng phương pháp quét phím:
    + xuất mã quét phím ở trong 4 đường tín hiệu của 1 PORT và đọc tín hiệu từ 4 đường còn lại.

    +Kiểm tra xem coi trong 16 phím ,có phím nào đã được nhấn
    - Thực hiện delay 10ms để chống dội, sau đó thiết lập mã phím đã được nhấn , nhảy tới chương trình hiển thị kí tự lên LCD và kết thúc.
    - Chương trình tiếp tục quay trở lại thực hiện ct quét phím.

    +Hiển thị nhiệt độ trong phòng lên LCD
    - Trong 16 phím nhấn của bàn phím hex, thì có 1 phím thực hiện chức năng hiện nhiệt độ phòng lên LCD.
    - Dùng 1 kênh ADC(8 bit ,điện áp tham chiếu 5V) chê độ tự chuyển đổi (Free mode, auto scan) đây là chế độ mà ADC tự động chuyển đổi khi được hoạt động

    - Bộ ADC này có sẵn có trong avr32, từ đó nhận tín hiệu từ LM35( độ nhạy lm35 là 10mV/1oC)
    Tín hiệu nhận từ lm35 qua 1kênh ADC được avr32 xử lý( bằng chương trình, hàm putnumber() ) và sau đó hiển thị lên LCD.



    3/ sơ đồ nguyên lý và mạch điện
    AVR32::

    [IMG]

    phần nguồn : dùng được cả jack USB-A, và nguồn xoay chiều 12VAC

    [IMG]

    tổng quát Mạch Điện

    [IMG]

    KIt AVR 32, bao gồm:

    -nạp ISP , JTAG,
    -ADC, TEST PWM có thể gắn động cơ để test
    -TEST servo.
    - giao tiếp UART

    sơ dồ mạch IN:

    [IMG]



    [IMG]


    4/ file báo cáo powerpoint:

    http://www.fileden.com/files/2008/9/8/2087...C3%8C%20VDK.ppt

    ++ lưu đồ giải thuật:




    #include <mega32.h>

    // Alphanumeric LCD Module functions
    #asm
    .equ __lcd_port=0x15 ;PORTC
    #endasm
    #include <lcd.h>
    #define den PORTD
    #include <delay.h>
    #define PORT_OUT PORTB
    #define PORT_IN PINB
    unsigned char data, keyCode, i;
    int data3;

    unsigned char s=8,s1=50,s2;



    #define FIRST_ADC_INPUT 0
    #define LAST_ADC_INPUT 7
    unsigned char adc_data[LAST_ADC_INPUT-FIRST_ADC_INPUT+1];
    #define ADC_VREF_TYPE 0x20

    // ADC interrupt service routine
    // with auto input scanning
    interrupt [ADC_INT] void adc_isr(void)
    {
    static unsigned char input_index=0;
    // Read the 8 most significant bits
    // of the AD conversion result
    adc_data[input_index]=ADCH;
    // Select next ADC input
    if (++input_index > (LAST_ADC_INPUT-FIRST_ADC_INPUT))
    input_index=0;
    ADMUX=(FIRST_ADC_INPUT | (ADC_VREF_TYPE & 0xff))+input_index;
    // Delay needed for the stabilization of the ADC input voltage
    delay_us(10);
    // Start the AD conversion
    ADCSRA|=0x40;
    }

    typedef unsigned char byte;
    flash byte char0[8]={ // char0 la ten goi ham ki tu tren flash
    0b01110,
    0b10001,
    0b10001,
    0b01110,
    0b00000,
    0b00000,
    0b00000,
    0b00000};
    void define_char(byte flash *pc,byte char_code) // byte char_code la noi dat ten ki tu vi du o day la 0
    {
    byte i,a;
    a=(char_code<<3) | 0x40;
    for (i=0;i<8;i++) lcd_write_byte(a++,*pc++);
    }


    // Declare your global variables here
    void lcd_putnum(unsigned int d)

    {

    unsigned char donvi, chuc, tram,ngan;

    donvi=d%10;

    d=d/10;

    chuc=d%10;

    d=d/10;

    tram=d%10;
    d=d/10;
    ngan=d%10;
    d=d/10;
    if(ngan>0)
    {
    lcd_putchar(48+ngan);
    lcd_putchar(48+tram);
    lcd_putchar(48+chuc);
    lcd_putchar(48+donvi);
    }
    else if(tram>0)
    {

    lcd_putchar(48+tram);
    lcd_putchar(48+chuc);
    lcd_putchar(48+donvi);
    }

    else if(chuc>0)

    {

    lcd_putchar(48+chuc);

    lcd_putchar(48+donvi);

    lcd_putsf(" ");



    }

    else {

    lcd_putchar(48+donvi);

    lcd_putsf(" ");

    lcd_putsf(" ");}}


    void main(void)
    {
    // Declare your local variables here
    den=0x00;
    // Input/Output Ports initialization
    // Port A 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
    PORTA=0x00;
    DDRA=0x00;

    // 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=0xff;
    DDRB=0x0f;

    // Port C 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
    PORTC=0x00;
    DDRC=0x00;

    // 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=0xff;

    // 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;

    // ADC initialization
    // ADC Clock frequency: 250.000 kHz
    // ADC Voltage Reference: AREF pin
    // Only the 8 most significant bits of
    // the AD conversion result are used
    ADMUX=FIRST_ADC_INPUT | (ADC_VREF_TYPE & 0xff);
    ADCSRA=0xCE;

    // LCD module initialization
    lcd_init(16);
    define_char(char0,1);
    lcd_gotoxy(1,0);
    lcd_putsf("CT Quet Phim");
    lcd_gotoxy(1,1);
    lcd_putsf("Please Wait");
    delay_ms(300);
    lcd_putsf(".");
    delay_ms(300);
    lcd_putsf(".");
    delay_ms(300);
    lcd_putsf(".");
    delay_ms(300);
    lcd_putsf(".");
    delay_ms(300);
    delay_ms(600);
    lcd_clear();
    lcd_gotoxy(1,0);
    lcd_putsf("input key");
    delay_ms(500);
    lcd_putsf(".");
    delay_ms(300);
    lcd_putsf(".");
    delay_ms(300);
    lcd_putsf(".");
    delay_ms(300);
    lcd_putsf(".");
    delay_ms(300);
    lcd_putsf(".");
    delay_ms(300);
    delay_ms(600);

    lcd_clear();

    // Global enable interrupts
    #asm("sei")

    while (1)
    {
    // Place your code here

    data = 0xff;

    for(i=0; i<4; i++)
    {
    delay_ms(1);
    PORT_OUT = ~(0x01 << i);
    delay_ms(1); //delay for port o/p settling
    data = PORT_IN | 0x0f;

    if (data != 0xff)
    {
    delay_ms(20); //key debouncing delay
    data = PORT_IN | 0x0f;
    if(data == 0xff) goto OUT;

    keyCode = (data & 0xf0) | (0x0f & ~(0x01 << i));

    while (data != 0xff)
    data = PORT_IN | 0x0f;

    delay_ms(20); //key debouncing delay

    switch (keyCode) //generating key characetr to display on LCD
    {
    case (0xee): // keyPressed = '7';
    lcd_putsf("7");

    break;
    case (0xed): //keyPressed = '4';
    lcd_putsf("4");
    break;
    case (0xeb): //keyPressed = '1';
    lcd_putsf("1");
    break;
    case (0xe7): //keyPressed = '3';

    lcd_clear();
    s1=28;
    while(s1>0)
    {
    lcd_gotoxy(0,0);
    lcd_putsf("nhiet do phong");
    lcd_gotoxy(1,1);
    lcd_putnum(2*adc_data[5]);

    lcd_putchar(1);
    lcd_putsf("C");
    delay_ms(900);
    s1--;
    }
    // delay_ms(3000);

    lcd_clear();



    break;
    case (0xde): // keyPressed = '8';
    lcd_putsf("8");
    break;

    case (0xdd): //keyPressed = '5';
    lcd_putsf("5");
    break;

    case (0xdb): //keyPressed = '2';
    lcd_putsf("2");
    break;

    case (0xd7): // keyPressed = '0';
    lcd_putsf("0");
    break;

    case (0xbe): // keyPressed = '9';
    lcd_putsf("9");
    break;

    case (0xbd): // keyPressed = '6';
    lcd_putsf("6");
    break;

    case (0xbb): // keyPressed = '3';
    lcd_putsf("3");
    break;

    case (0xb7): //keyPressed = 'clear';
    lcd_clear();
    break;

    case (0x7e): //keyPressed = 'A';
    lcd_putsf("A");
    break;

    case (0x7d): //keyPressed = 'B';
    lcd_putsf("B");
    break;

    case (0x7b): ///keyPressed = 'C';
    lcd_putsf("C");
    break;

    case (0x77): //keyPressed = 'led';
    lcd_clear();
    s2=3;

    lcd_gotoxy(0,0);
    lcd_putsf("nhap nhay led");
    while( s2>0)
    {

    den=0x00;
    delay_ms(100);
    data3=0x01;

    while(s>0)
    {
    den=data3;
    delay_ms(100);
    data3<<=1;
    lcd_putsf(".");
    delay_ms(100);
    data3=data3|0x01;
    s--;}
    den=0x00;
    delay_ms(100);
    data3=0x80;
    s=8;
    while(s>0)
    {
    den=data3;
    delay_ms(200);
    data3>>=1;
    data3=data3|0x80;
    s--;}
    data3=0x10;
    s=8;
    while(s>0)
    {
    den=data3;
    delay_ms(200);
    data3>>=1;
    data3=data3|0x80;
    s--;}

    den=0x00;
    delay_ms(200);
    den=0xff;
    delay_ms(200);
    den=0x00;
    delay_ms(200);
    den=0xff;
    delay_ms(200);
    den=0x00;
    s2--;
    }
    s=8;
    lcd_clear();



    break;
    default : //keyPressed = 'X';

    }//end of switch



    OUT:;
    };
    }
    }

    }





    5/ chương trình :
    link download:

    http://www.fileden.com/files/2008/9/8/2087304/vdk-%20AVR.rar

    trong file gồm có:
    - file powerpoint, code, giao trinh AVR bắng tiếng việt
    - giới thiệu dơ lược về ADC , LCD
    - mạch vẽ kit mega32, bàn phím 4x4.
    - file test bang protues


    - code đươc viết bằng codevision
    link download:

    http://www.oxava.com/dl/Codevision%20AVR%2...4_Oxava.com.rar

    Password : www.oxava.com






    6/kết quả thu được
    gồm file film demo
    link download:

    http://www.fileden.com/files/2008/9/8/2087304/100_3012.rar


    va hình ảnh.




    [IMG]





    [IMG]





    [IMG]


    Những mặt hạn chế của chương trình:

    - Chương trình quét phím chưa được tốt vì không dùng ngắt trong chương trình, các hàm xử lý trong chương trình chưa đươc tối ưu.

    - Mạch điện làm không được tốt, nên còn bị nhiễu.


    ++ Các tài liệu tham khảo :

    -- embeded C codevision
    -- trang web vagam project avr.....



    [IMG] [IMG] [IMG] [IMG] [IMG] [IMG] [IMG] [IMG]
  29. nhibeo Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    <span style="font-size:36pt;line-height:100%"><div align='left'>BÁO CÁO VI ĐIỀU KHIỂN </div></span>
    1.HỌ TÊN: ĐẶNG TÂN PHONG
    MSSV: 05112051
    EMAIL:tanphongspk@gmail.com
    DT:tạm ngừng sử dụng... [IMG]
    2.Tên đề Tài: <span style="font-size:18pt;line-height:100%">DIỀU KHIỂN LED MATRẬN</span>
    +yêu cầu:đếm từ 3 xuống 0 và chạy chữ phong thuan và lặp lại trạng thái ban đầu.
    +phương pháp giải quyết:về phần mềm viết bằng ngôn ngữ assembly,dùng phương pháp quét led,dựa trên nguyên lý cột mức 1 và hàng mức 0 thi led sáng để quét,dùng vdk AT89s52,vẽ bằng ORCAD
    3.SƠ ĐỒ NGUYÊN LÝ
    mạch điều khiển
    [IMG]
    mạch layout
    [IMG]
    môđun matrận
    [IMG]
    layout matrận,có vẻ thêm nút nhấn trực tiếp trên layout
    [IMG]
    4.Lưu Đồ Giải Thuật
    [IMG]
    link download codeclick here
    5.Phần DeMo:
    hix [IMG] đáng tiếc vì lí do mạch mình nó sáng yếu quá nên lúc quay phim xong minh coi lai ko thấy gì cả,nen cũng không post được,hix,trước khi vẽ cái mạch này mình tham khảo tài liệu trên mạng kĩ lắm,có tài liệu kêu sài 2803 để nâng dòng còn có tài liệu mình thấy sơ đồ của nó kô có sử dụng 2803 nên mình thấy nó tiết kiệm nên đã ko sài...và hậu quả là ra thế này....không đủ dòng cho led sáng..ax...thông cảm [IMG]
    đây là hình về môđun của em
    [IMG]
    [IMG]
    6.Kết quả đạt được:
    -chương trình chạy tốt,chỉ phần cứng chưa hòan thiện...(bạn nào muốn làm thì gắn thêm con 2803 hoặc con 2004 để nâng dòng không thì nó cũng bị như mình đấy)
    -Hướng phát triển:kết hợp nhiều led matrận với nhau để tạo ra bảng quảng cáo,khi đó bạn sẽ có nhiều việc để làm hơn là làm một vài con,ví dụ có thể điều khiển với 16 con led matrận chẳng hạn,khi đó đòi hỏi bạn phải biết kết nối và đi dây sao cho tiết kiệm nhất..và nhiều ứng dụng khác...các bạn tự nghĩ nhé... [IMG]
    7.link download file: bao gồm phần mạch điện,code,và mô phỏng protues
    mophong
    machdien
    code
    8.Các Nguồn Tham Khảo:
    -Sách VDK của Tống Văn On
    -Sách VDK của Nguyễn Đình phú
    -Diễn Đàn điện tử việt nam
    -trang web của trường Đại học công nghiệp tp www.ant7.com/forum
    -.....................
  30. hoangleanh87 New Member

    Số bài viết: 244
    Đã được thích: 5
    Điểm thành tích: 0
    2.1 -Họ tên sinh viên: Lê Hoàng Anh
    -MSSV: 05111003
    -Email: hoangleanh87@yahoo.com.vn
    -Điện thoại: 0909319477

    <span style="font-size:14pt;line-height:100%">2.2 -Tên đề tài thực hiện:</span><span style="font-size:14pt;line-height:100%">Nghiên cứu và ứng dụng vi điều khiển AVR điều khiển tốc độ động cơ DC dùng thuật toán PID.</span>

    -Mô tả vấn tắt các yêu cầu cần giải quyết:

    Xây dựng thuật toán điều khiển PID trên nền vi điều khiển AVR.
    Xây dựng chương trình trên PC điều khiển, khảo sát, đánh giá chất lượng điều khiển của hệ thống.
    2.3 -Các phương án có thể lựa chọn, ưu điểm của từng phương án.
    -Thuật toán điều khiển PID trên nền vi điều khiển AVR có thể viết bằng Bascom-AVR hoặc Codevision-AVR
    -Chương trình trên PC điều khiển, khảo sát, đánh giá chất lượng điều khiển của hệ thống
    có thể viết bằng VB-VC-6.0 hoặc Visual studio 2005 (Visual Basic - Visual C++2005)…

    -Phương án lựa chọn giải quyết trong đề tài.

    -Thuật toán điều khiển PID trên nền vi điều khiển AVR viết bằng Codevision-AVR
    -Chương trình trên PC điều khiển, khảo sát, đánh giá chất lượng điều khiển của hệ thống
    viết Visual C++2005.
    Ưu điểm: C là ngôn ngữ rất có hiệu quả,
    C là một ngôn ngữ lập trình tương đối nhỏ gọn vận hành gần với phần cứng và nó giống với ngôn ngữ Assembler hơn hầu hết các ngôn ngữ bậc cao. Hơn thế, C đôi khi được đánh giá như là "có khả năng di động", cho thấy sự khác nhau quan trọng giữa nó với ngôn ngữ bậc thấp như là Assembler, đó là việc mã C có thể được dịch và thi hành trong hầu hết các máy tính, hơn hẳn các ngôn ngữ hiện tại trong khi đó thì Assembler chỉ có thể chạy trong một số máy tính đặc biệt. Vì lý do này C được xem là ngôn ngữ bậc trung. C đã được tạo ra với một mục tiêu là làm cho nó thuận tiện để viết các chương trình lớn với số lỗi ít hơn.
    2.4 -Sơ đồ mạch nguyên lý và layout.
    Nguồn cung cấp-Nguồn xung chuẩn.
    Mainboard:
    <div align='center'>[IMG]
    [IMG]</div>
    Mạch cầu hắc:
    <div align='center'>[IMG]
    [IMG]</div>
  31. hoangleanh87 New Member

    Số bài viết: 244
    Đã được thích: 5
    Điểm thành tích: 0
    <div class='quotetop'>QUOTE </div><div class='quotemain'><span style="font-size:18pt;line-height:100%">Code chương trình AVR dạng text.</span>
    /*****************************************************
    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 :
    Version :
    Date : 12/4/2008
    Author : F4CG
    Company : F4CG
    Comments:


    Chip type : ATmega32
    Program type : Application
    Clock frequency : 16.000000 MHz
    Memory model : Small
    External SRAM size : 0
    Data Stack size : 512

    PWM 9bit OCR1A
    Counter0 co ngat dem so > 255
    Timer2 ngat o che do so sanh tao chu ky lay mau 12ms
    ******************************************************/
    #include <mega32.h>
    #include <string.h>
    #include <delay.h>
    #include<stdlib.h>

    /*****************************************************/

    #define pwm OCR1A
    #define dir1 PORTD.6

    /*****************************************************/
    // Declare your global variables here
    //unsigned int pv,sp;
    char string_cur_vel[10];
    char in_str[10];
    unsigned char time,count;
    char current_char; //ki tu vua nhan
    char in_count; //so ki tu hien tai
    //char tempp[10],tempi[10],tempd[10],str_vset[10];
    float kp,ki,kd,err,elast,sum_err,eht,d_err,cv,sp;
    int pwm1,pv;
    //char tempp[10],tempi[10],tempd[10],str_vset[10];
    bit ok,ngat=0,run=0;

    /*****************************************************/

    //Functions initialization
    void start_counter0();
    void stop_counter0();
    void reset_counter0();
    void show_cur_vel();
    void start_timer2();
    void reset_timer2();
    void stop_timer2();
    void pid();
    void getstr();
    //void null_in_str();
    //void start_pwm();
    //void stop_pwm();

    /*****************************************************/

    #define RXB8 1
    #define TXB8 0
    #define UPE 2
    #define OVR 3
    #define FE 4
    #define UDRE 5
    #define RXC 7

    #define FRAMING_ERROR (1<<FE)
    #define PARITY_ERROR (1<<UPE)
    #define DATA_OVERRUN (1<<OVR)
    #define DATA_REGISTER_EMPTY (1<<UDRE)
    #define RX_COMPLETE (1<<RXC)

    // USART Receiver buffer
    #define RX_BUFFER_SIZE 8
    char rx_buffer[RX_BUFFER_SIZE];

    #if RX_BUFFER_SIZE<256
    unsigned char rx_wr_index,rx_rd_index,rx_counter;
    #else
    unsigned int rx_wr_index,rx_rd_index,rx_counter;
    #endif

    // This flag is set on USART Receiver buffer overflow
    bit rx_buffer_overflow;

    // USART Receiver interrupt service routine
    interrupt [USART_RXC] void usart_rx_isr(void)
    {
    char status,data;
    stop_timer2();
    run=0;
    ngat=1;
    status=UCSRA;
    data=UDR;
    if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
    {
    rx_buffer[rx_wr_index]=data;
    if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
    if (++rx_counter == RX_BUFFER_SIZE)
    {
    rx_counter=0;
    rx_buffer_overflow=1;
    };
    };
    //run=1;
    }

    #ifndef _DEBUG_TERMINAL_IO_
    // Get a character from the USART Receiver buffer
    #define _ALTERNATE_GETCHAR_
    #pragma used+
    char getchar(void)
    {
    char data;
    while (rx_counter==0);
    data=rx_buffer[rx_rd_index];
    if (++rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;
    #asm("cli")
    --rx_counter;
    #asm("sei")
    return data;
    }
    #pragma used-
    #endif

    // USART Transmitter buffer
    #define TX_BUFFER_SIZE 8
    char tx_buffer[TX_BUFFER_SIZE];

    #if TX_BUFFER_SIZE<256
    unsigned char tx_wr_index,tx_rd_index,tx_counter;
    #else
    unsigned int tx_wr_index,tx_rd_index,tx_counter;
    #endif

    // USART Transmitter interrupt service routine
    interrupt [USART_TXC] void usart_tx_isr(void)
    {
    if (tx_counter)
    {
    --tx_counter;
    UDR=tx_buffer[tx_rd_index];
    if (++tx_rd_index == TX_BUFFER_SIZE) tx_rd_index=0;
    };
    }

    #ifndef _DEBUG_TERMINAL_IO_
    // Write a character to the USART Transmitter buffer
    #define _ALTERNATE_PUTCHAR_
    #pragma used+
    void putchar(char c)
    {
    while (tx_counter == TX_BUFFER_SIZE);
    #asm("cli")
    if (tx_counter || ((UCSRA & DATA_REGISTER_EMPTY)==0))
    {
    tx_buffer[tx_wr_index]=c;
    if (++tx_wr_index == TX_BUFFER_SIZE) tx_wr_index=0;
    ++tx_counter;
    }
    else
    UDR=c;
    #asm("sei")
    }
    #pragma used-
    #endif

    // Standard Input/Output functions
    #include <stdio.h>

    // Timer 0 overflow interrupt service routine
    interrupt [TIM0_OVF] void timer0_ovf_isr(void)
    {
    count++;
    }

    // Timer 2 output compare interrupt service routine
    interrupt [TIM2_COMP] void timer2_comp_isr(void)
    {

    stop_timer2();
    reset_timer2();
    start_timer2();
    //time++;
    pv=count*256;
    pv=pv+TCNT0;
    //pv=200;
    reset_counter0();
    count=0;
    pid();
    if(ok==1)
    {
    time++;
    ok=0;
    if(time==13)
    {
    show_cur_vel();
    puts(string_cur_vel);
    time=0;
    }
    }

    if(run==0)
    {
    pwm=511;
    stop_timer2();
    stop_counter0();
    }
    start_timer2();


    }

    // Declare your global variables here

    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=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=In Func0=In
    // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=T State0=T
    PORTB=0x00;
    DDRB=0xFC;

    // 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=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=In
    // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=P
    PORTD=0x01;
    DDRD=0xFE;

    // Timer/Counter 0 initialization
    // Clock source: T0 pin Rising Edge
    // Mode: Normal top=FFh
    // OC0 output: Disconnected
    TCCR0=0x00;
    TCNT0=0x00;
    OCR0=0x00;

    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: 16000.000 kHz
    // Mode: Ph. correct PWM top=01FFh
    // OC1A output: Non-Inv.
    // 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=0x82;
    TCCR1B=0x01;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0xFF;
    OCR1AL=0xFF;
    OCR1BH=0x00;
    OCR1BL=0x00;

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

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

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

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

    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    ACSR=0x80;
    SFIOR=0x00;

    // Global enable interrupts
    #asm("sei")

    while (1)
    {
    if(ngat==1)
    {
    getstr(); //nhan gia tri tu PC
    ngat=0;
    }
    };
    }

    /******************************************/

    void show_cur_vel() //chuyen gia tri encoder sang char rui gui len PC
    {
    ftoa(pv,0,string_cur_vel);
    }

    /******************************************/

    void start_counter0()
    {
    TCCR0=0x07;
    }

    /******************************************/

    void stop_counter0()
    {
    TCCR0=0x00;
    }

    /******************************************/

    void reset_counter0()
    {
    TCNT0=0;
    }

    /******************************************/

    void reset_timer2()
    {
    TCNT2=0x00;;
    }

    /******************************************/

    void start_timer2()
    {
    TCCR2=0x07;
    }

    /******************************************/

    void stop_timer2()
    {
    TCCR2=0x00;
    }

    /******************************************/

    void pid()
    {

    err=sp-pv; // err = sp - pv;(err = setpoint - process variable)
    eht = err + elast; // eht = err + elast;
    sum_err+=eht; // tinh tong sai so theo cong thuc hinh thang
    d_err=err-elast; // vi phan sai so = sai so hien tai - sai so truoc do
    cv=((kp*err)+(ki*sum_err)+(kd*d_err)); // Cong thuc tinh toan PID
    cv=cv/1000; // Cho nay / 1000 vi tren giao dien ki,kp,kd da * 1000
    // VD: ki=0.01*1000=10 gui xuong VDK - tranh gui dau "."
    if(cv>511) //gioi han PWM 9Bit
    {
    cv=511;
    }
    if(cv<0)
    {
    cv=0; // chay maximum
    }
    pwm1=(int)cv; // ep kieu sang so nguyen
    pwm=511-pwm1; // xuat pwm(OCR1A)
    //PORTA.4=0;
    elast=err; // sai so hien tai se tro thanh sai so truoc no khi co sai so moi
    ok=1; // bit danh dau da xuat dc pwm


    }

    /*******************Received String proccess***********************/
    // Cho nay minh gap truc trac nhieu nhat va ton nhieu time.
    // Ban nao co cach truyen hay hon chi minh voi

    void getstr()
    {
    in_count=0;
    while((current_char=getchar()) != '\r') //return first line
    {
    if(current_char==0x08) //backspace
    {
    --in_count;
    }
    else
    {
    switch(current_char)
    {
    case'p': //nap kp
    in_count=0;
    kp=atof(in_str);
    //PORTA.0=1; // test
    //kp=kp+1; // test kp gui len giao dien dung khong
    //ftoa(kp,0,tempp); // vd tren giao dien gui kp=100
    //puts(tempp); // puts len fai la 101 thi OK
    //run=1; // tuong tu cho ki,kd,vset
    break; // test OK rui bo di.
    case'i': //nap ki
    in_count=0;
    ki=atof(in_str);
    //PORTA.1=1;
    //ki=ki+2;
    //ftoa(ki,0,tempi);
    //puts(tempi);
    //run=1;
    break;
    case'd': //nap kd
    in_count=0;
    kd=atof(in_str);
    //PORTA.2=1;
    //kd=kd+3;
    //ftoa(kd,0,tempd);
    //puts(tempd);
    //run=1;
    break;
    case'a': // nap vset
    //stop_timer2();
    //run=0;
    //pwm1=0;
    //time=0;
    //err=0;
    //elast=0;
    //sum_err=0;
    //d_err=0;
    //////////////
    in_count=0;
    sp=atof(in_str);
    //PORTA.3=1;
    //sp=sp+4;
    //ftoa(sp,0,str_vset);
    //puts(str_vset);
    //reset_timer2();
    //PORTC.4=1;
    //run=1;
    break;
    case'r':
    reset_timer2();
    run=1; // nut run da dc nhan
    break;
    case's':
    stop_timer2();
    reset_timer2();
    run=0; // nut stop da dc nhan
    pwm=511; // ngung cap pwm cho dong co
    time=0; // reset cac gia tri tinh toan trong bo PID
    err=0; // err = sp - pv;(err = setpoint - process variable)
    eht=0; // eht = err + elast; sum_err+=eht; tinh tong sai lech theo cong thuc hinh thang
    elast=0;
    sum_err=0;
    d_err=0;
    break;
    case't': // dao chieu
    dir1=0; // luc dau nhan Run dir = 1
    run=1; // Check vao direction tren giao dien gui xuong char 't' dir = 0
    break;
    default: // neu char ko la 'p' 'i' 'd' 'r' 's' 't' 'a' thi thuc hien cho nay
    in_str[in_count++]=current_char; // gan cac char vao mang char
    } // neu bat duoc char la 'p' 'i' 'd' 'a' 'r' 's' 't' thi chuyen mang char do thanh so float
    // rui gan vao kp,ki,kd,vset,run,stop,dir.

    if(run==1) // Run dong co
    {
    start_timer2();
    reset_counter0();
    start_counter0();
    }


    }

    }

    }
    /******************************************/

    /*void null_in_str()
    {
    for(i=0;i<=in_count;i++)
    {
    in_str ='';
    }
    }*/

    /******************************************/

    /*void start_pwm()
    {
    TCCR1A=0xC2;
    TCCR1B=0x01;
    }*/
    /*void stop_pwm()
    {
    TCCR1A=0x00;
    TCCR1B=0x00;
    }*/[/b][/quote]
  32. hoangleanh87 New Member

    Số bài viết: 244
    Đã được thích: 5
    Điểm thành tích: 0
    <div class='quotetop'>QUOTE </div><div class='quotemain'><span style="font-size:18pt;line-height:100%">Code chương trình giao diện dạng text.</span>
    #pragma once


    namespace PIDHA {

    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();
    /*txtkp->Text="0.1";
    txtki->Text="0.1";
    txtkd->Text="0.1";
    txtcur->Text="0";*/



    //
    //TODO: Add the constructor code here
    //
    }

    protected:
    /// <summary>
    /// Clean up any resources being used.
    /// </summary>
    ~Form1()
    {
    if (components)
    {
    delete components;
    }
    }
    private: AxTeeChart::AxTChart^ tChart1;
    protected:

    protected:

    private: System::Windows::Forms::GroupBox^ groupBox1;
    private: System::Windows::Forms::GroupBox^ groupBox2;
    private: System::Windows::Forms::GroupBox^ groupBox3;
    private: System::Windows::Forms::GroupBox^ groupBox4;
    private: System::Windows::Forms::Button^ btnexi;

    private: System::Windows::Forms::Button^ btnref;

    private: System::Windows::Forms::Button^ btncon;
    private: System::Windows::Forms::Button^ btnrun;










    private: System::Windows::Forms::Label^ label3;
    private: System::Windows::Forms::Label^ label2;
    private: System::Windows::Forms::Label^ label1;
    private: System::Windows::Forms::TextBox^ txtcur;


    private: System::Windows::Forms::NumericUpDown^ num1;
    private: System::Windows::Forms::Button^ btnapp;


    private: System::Windows::Forms::ComboBox^ cb1;


    private: System::Windows::Forms::CheckBox^ check1;

    private: System::Windows::Forms::Label^ label5;
    private: System::Windows::Forms::Label^ label4;
    private: System::Windows::Forms::Button^ btnato;


    private: System::Windows::Forms::Button^ btnabo;

    private: System::IO::ports::SerialPort^ sp1;
    private: System::Windows::Forms::Timer^ tm1;
    private: System::ComponentModel::IContainer^ components;
    private: System::Windows::Forms::Label^ label7;




    protected:

    private:
    /// <summary>
    /// Required designer variable.
    /// </summary>
    int time;
    int timet;
    int time1;
    int time2;
    int dir1;
    double kp,ki,kd;
    String^velre;
    double veloc;
    String^str_vset;
    String^string_vset;
    unsigned int sp,vset;
    bool run;


    private: System::Windows::Forms::Label^ label8;
    private: System::Windows::Forms::Label^ label9;

    private: System::Windows::Forms::MaskedTextBox^ mtbkd;

    private: System::Windows::Forms::MaskedTextBox^ mtbki;
    private: System::Windows::Forms::MaskedTextBox^ mtbkp;
    private: System::Windows::Forms::Label^ label6;
    private: System::Windows::Forms::Button^ btnkp;
    private: System::Windows::Forms::Button^ btnkd;
    private: System::Windows::Forms::Button^ btnki;





    private: System::Windows::Forms::Timer^ tm2;




    #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());
    System::ComponentModel::ComponentResourceManager^ resources = (gcnew System::ComponentModel::ComponentResourceManager(Form1::typeid));
    this->tChart1 = (gcnew AxTeeChart::AxTChart());
    this->groupBox1 = (gcnew System::Windows::Forms::GroupBox());
    this->cb1 = (gcnew System::Windows::Forms::ComboBox());
    this->label9 = (gcnew System::Windows::Forms::Label());
    this->label6 = (gcnew System::Windows::Forms::Label());
    this->groupBox2 = (gcnew System::Windows::Forms::GroupBox());
    this->btnkd = (gcnew System::Windows::Forms::Button());
    this->btnki = (gcnew System::Windows::Forms::Button());
    this->btnkp = (gcnew System::Windows::Forms::Button());
    this->mtbkd = (gcnew System::Windows::Forms::MaskedTextBox());
    this->mtbki = (gcnew System::Windows::Forms::MaskedTextBox());
    this->mtbkp = (gcnew System::Windows::Forms::MaskedTextBox());
    this->label3 = (gcnew System::Windows::Forms::Label());
    this->label2 = (gcnew System::Windows::Forms::Label());
    this->label1 = (gcnew System::Windows::Forms::Label());
    this->groupBox3 = (gcnew System::Windows::Forms::GroupBox());
    this->check1 = (gcnew System::Windows::Forms::CheckBox());
    this->txtcur = (gcnew System::Windows::Forms::TextBox());
    this->num1 = (gcnew System::Windows::Forms::NumericUpDown());
    this->label5 = (gcnew System::Windows::Forms::Label());
    this->label4 = (gcnew System::Windows::Forms::Label());
    this->btnapp = (gcnew System::Windows::Forms::Button());
    this->groupBox4 = (gcnew System::Windows::Forms::GroupBox());
    this->btnexi = (gcnew System::Windows::Forms::Button());
    this->btnref = (gcnew System::Windows::Forms::Button());
    this->btnabo = (gcnew System::Windows::Forms::Button());
    this->btnato = (gcnew System::Windows::Forms::Button());
    this->btncon = (gcnew System::Windows::Forms::Button());
    this->btnrun = (gcnew System::Windows::Forms::Button());
    this->sp1 = (gcnew System::IO::ports::SerialPort(this->components));
    this->tm1 = (gcnew System::Windows::Forms::Timer(this->components));
    this->label7 = (gcnew System::Windows::Forms::Label());
    this->label8 = (gcnew System::Windows::Forms::Label());
    this->tm2 = (gcnew System::Windows::Forms::Timer(this->components));
    (cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->tChart1))->BeginInit();
    this->groupBox1->SuspendLayout();
    this->groupBox2->SuspendLayout();
    this->groupBox3->SuspendLayout();
    (cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->num1))->BeginInit();
    this->groupBox4->SuspendLayout();
    this->SuspendLayout();
    //
    // tChart1
    //
    this->tChart1->Enabled = true;
    this->tChart1->Location = System::Drawing::point(1, 17);
    this->tChart1->Name = L"tChart1";
    this->tChart1->OcxState = (cli::safe_cast<System::Windows::Forms::AxHost::State^ >(resources->GetObject(L"tChart1.OcxState")));
    this->tChart1->Size = System::Drawing::Size(722, 574);
    this->tChart1->TabIndex = 0;
    //
    // groupBox1
    //
    this->groupBox1->BackColor = System::Drawing::Color::DarkBlue;
    this->groupBox1->BackgroundImage = (cli::safe_cast<System::Drawing::Image^ >(resources->GetObject(L"groupBox1.BackgroundImage")));
    this->groupBox1->Controls->Add(this->cb1);
    this->groupBox1->Controls->Add(this->label9);
    this->groupBox1->Controls->Add(this->label6);
    this->groupBox1->ForeColor = System::Drawing::Color::Yellow;
    this->groupBox1->Location = System::Drawing::point(52, 42);
    this->groupBox1->Name = L"groupBox1";
    this->groupBox1->Size = System::Drawing::Size(115, 131);
    this->groupBox1->TabIndex = 1;
    this->groupBox1->TabStop = false;
    this->groupBox1->Text = L"Connection";
    //
    // cb1
    //
    this->cb1->BackColor = System::Drawing::Color::White;
    this->cb1->ForeColor = System::Drawing::Color::Maroon;
    this->cb1->FormattingEnabled = true;
    this->cb1->Items->AddRange(gcnew cli::array< System::Object^ >(5) {L"COM1", L"COM2", L"COM3", L"COM4", L"COM5"});
    this->cb1->Location = System::Drawing::point(37, 34);
    this->cb1->Name = L"cb1";
    this->cb1->Size = System::Drawing::Size(68, 21);
    this->cb1->TabIndex = 0;
    this->cb1->SelectedIndexChanged += gcnew System::EventHandler(this, &Form1::cb1_SelectedIndexChanged);
    //
    // label9
    //
    this->label9->AutoSize = true;
    this->label9->BackColor = System::Drawing::Color::Transparent;
    this->label9->Location = System::Drawing::point(6, 37);
    this->label9->Name = L"label9";
    this->label9->Size = System::Drawing::Size(31, 13);
    this->label9->TabIndex = 2;
    this->label9->Text = L"COM";
    //
    // label6
    //
    this->label6->BackColor = System::Drawing::Color::Transparent;
    this->label6->Font = (gcnew System::Drawing::Font(L"Times New Roman", 15, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::point,
    static_cast<System::Byte>(0)));
    this->label6->Location = System::Drawing::point(16, 59);
    this->label6->Name = L"label6";
    this->label6->Size = System::Drawing::Size(99, 63);
    this->label6->TabIndex = 2;
    this->label6->Text = L"Baud Rate\r\n 19200\r\n(default)";
    this->label6->TextAlign = System::Drawing::ContentAlignment::MiddleCenter;
    //
    // groupBox2
    //
    this->groupBox2->BackgroundImage = (cli::safe_cast<System::Drawing::Image^ >(resources->GetObject(L"groupBox2.BackgroundImage")));
    this->groupBox2->Controls->Add(this->btnkd);
    this->groupBox2->Controls->Add(this->btnki);
    this->groupBox2->Controls->Add(this->btnkp);
    this->groupBox2->Controls->Add(this->mtbkd);
    this->groupBox2->Controls->Add(this->mtbki);
    this->groupBox2->Controls->Add(this->mtbkp);
    this->groupBox2->Controls->Add(this->label3);
    this->groupBox2->Controls->Add(this->label2);
    this->groupBox2->Controls->Add(this->label1);
    this->groupBox2->ForeColor = System::Drawing::Color::Yellow;
    this->groupBox2->Location = System::Drawing::point(173, 42);
    this->groupBox2->Name = L"groupBox2";
    this->groupBox2->Size = System::Drawing::Size(158, 131);
    this->groupBox2->TabIndex = 1;
    this->groupBox2->TabStop = false;
    this->groupBox2->Text = L"Parameter";
    //
    // btnkd
    //
    this->btnkd->ForeColor = System::Drawing::Color::Blue;
    this->btnkd->Location = System::Drawing::point(114, 95);
    this->btnkd->Name = L"btnkd";
    this->btnkd->Size = System::Drawing::Size(38, 23);
    this->btnkd->TabIndex = 4;
    this->btnkd->Text = L".....";
    this->btnkd->UseVisualStyleBackColor = true;
    this->btnkd->Click += gcnew System::EventHandler(this, &Form1::btnkd_Click);
    //
    // btnki
    //
    this->btnki->ForeColor = System::Drawing::Color::Blue;
    this->btnki->Location = System::Drawing::point(114, 57);
    this->btnki->Name = L"btnki";
    this->btnki->Size = System::Drawing::Size(38, 23);
    this->btnki->TabIndex = 4;
    this->btnki->Text = L".....";
    this->btnki->UseVisualStyleBackColor = true;
    this->btnki->Click += gcnew System::EventHandler(this, &Form1::btnki_Click);
    //
    // btnkp
    //
    this->btnkp->ForeColor = System::Drawing::Color::Blue;
    this->btnkp->Location = System::Drawing::point(114, 16);
    this->btnkp->Name = L"btnkp";
    this->btnkp->Size = System::Drawing::Size(38, 23);
    this->btnkp->TabIndex = 4;
    this->btnkp->Text = L".....";
    this->btnkp->UseVisualStyleBackColor = true;
    this->btnkp->Click += gcnew System::EventHandler(this, &Form1::btnkp_Click);
    //
    // mtbkd
    //
    this->mtbkd->ForeColor = System::Drawing::Color::Maroon;
    this->mtbkd->Location = System::Drawing::point(28, 97);
    this->mtbkd->Mask = L"00.000000";
    this->mtbkd->Name = L"mtbkd";
    this->mtbkd->Size = System::Drawing::Size(80, 20);
    this->mtbkd->TabIndex = 3;
    //
    // mtbki
    //
    this->mtbki->ForeColor = System::Drawing::Color::Maroon;
    this->mtbki->Location = System::Drawing::point(28, 59);
    this->mtbki->Mask = L"00.000000";
    this->mtbki->Name = L"mtbki";
    this->mtbki->Size = System::Drawing::Size(80, 20);
    this->mtbki->TabIndex = 3;
    //
    // mtbkp
    //
    this->mtbkp->ForeColor = System::Drawing::Color::Maroon;
    this->mtbkp->Location = System::Drawing::point(28, 18);
    this->mtbkp->Mask = L"00.000000";
    this->mtbkp->Name = L"mtbkp";
    this->mtbkp->Size = System::Drawing::Size(80, 20);
    this->mtbkp->TabIndex = 3;
    //
    // label3
    //
    this->label3->AutoSize = true;
    this->label3->BackColor = System::Drawing::Color::Transparent;
    this->label3->Location = System::Drawing::point(6, 100);
    this->label3->Name = L"label3";
    this->label3->Size = System::Drawing::Size(20, 13);
    this->label3->TabIndex = 2;
    this->label3->Text = L"Kd";
    //
    // label2
    //
    this->label2->AutoSize = true;
    this->label2->BackColor = System::Drawing::Color::Transparent;
    this->label2->Location = System::Drawing::point(6, 22);
    this->label2->Name = L"label2";
    this->label2->Size = System::Drawing::Size(20, 13);
    this->label2->TabIndex = 2;
    this->label2->Text = L"Kp";
    //
    // label1
    //
    this->label1->AutoSize = true;
    this->label1->BackColor = System::Drawing::Color::Transparent;
    this->label1->Location = System::Drawing::point(6, 62);
    this->label1->Name = L"label1";
    this->label1->Size = System::Drawing::Size(16, 13);
    this->label1->TabIndex = 2;
    this->label1->Text = L"Ki";
    //
    // groupBox3
    //
    this->groupBox3->BackgroundImage = (cli::safe_cast<System::Drawing::Image^ >(resources->GetObject(L"groupBox3.BackgroundImage")));
    this->groupBox3->Controls->Add(this->check1);
    this->groupBox3->Controls->Add(this->txtcur);
    this->groupBox3->Controls->Add(this->num1);
    this->groupBox3->Controls->Add(this->label5);
    this->groupBox3->Controls->Add(this->label4);
    this->groupBox3->Controls->Add(this->btnapp);
    this->groupBox3->ForeColor = System::Drawing::Color::Yellow;
    this->groupBox3->Location = System::Drawing::point(337, 42);
    this->groupBox3->Name = L"groupBox3";
    this->groupBox3->Size = System::Drawing::Size(145, 131);
    this->groupBox3->TabIndex = 1;
    this->groupBox3->TabStop = false;
    this->groupBox3->Text = L"Velocity";
    //
    // check1
    //
    this->check1->AutoSize = true;
    this->check1->BackColor = System::Drawing::Color::Transparent;
    this->check1->Location = System::Drawing::point(57, 73);
    this->check1->Name = L"check1";
    this->check1->Size = System::Drawing::Size(66, 17);
    this->check1->TabIndex = 3;
    this->check1->Text = L"Reverse";
    this->check1->UseVisualStyleBackColor = false;
    this->check1->CheckedChanged += gcnew System::EventHandler(this, &Form1::check1_CheckedChanged);
    //
    // txtcur
    //
    this->txtcur->BackColor = System::Drawing::Color::White;
    this->txtcur->ForeColor = System::Drawing::Color::Maroon;
    this->txtcur->Location = System::Drawing::point(57, 48);
    this->txtcur->Name = L"txtcur";
    this->txtcur->Size = System::Drawing::Size(77, 20);
    this->txtcur->TabIndex = 2;
    //
    // num1
    //
    this->num1->BackColor = System::Drawing::Color::White;
    this->num1->ForeColor = System::Drawing::Color::Maroon;
    this->num1->Location = System::Drawing::point(57, 19);
    this->num1->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) {3000, 0, 0, 0});
    this->num1->Name = L"num1";
    this->num1->Size = System::Drawing::Size(77, 20);
    this->num1->TabIndex = 1;
    //
    // label5
    //
    this->label5->AutoSize = true;
    this->label5->BackColor = System::Drawing::Color::Transparent;
    this->label5->Location = System::Drawing::point(6, 51);
    this->label5->Name = L"label5";
    this->label5->Size = System::Drawing::Size(41, 13);
    this->label5->TabIndex = 2;
    this->label5->Text = L"Current";
    //
    // label4
    //
    this->label4->AutoSize = true;
    this->label4->BackColor = System::Drawing::Color::Transparent;
    this->label4->Location = System::Drawing::point(10, 22);
    this->label4->Name = L"label4";
    this->label4->Size = System::Drawing::Size(23, 13);
    this->label4->TabIndex = 2;
    this->label4->Text = L"Set";
    //
    // btnapp
    //
    this->btnapp->ForeColor = System::Drawing::Color::Blue;
    this->btnapp->Location = System::Drawing::point(57, 97);
    this->btnapp->Name = L"btnapp";
    this->btnapp->Size = System::Drawing::Size(77, 28);
    this->btnapp->TabIndex = 0;
    this->btnapp->Text = L"Apply";
    this->btnapp->UseVisualStyleBackColor = true;
    this->btnapp->Click += gcnew System::EventHandler(this, &Form1::btnapp_Click);
    //
    // groupBox4
    //
    this->groupBox4->BackgroundImage = (cli::safe_cast<System::Drawing::Image^ >(resources->GetObject(L"groupBox4.BackgroundImage")));
    this->groupBox4->Controls->Add(this->btnexi);
    this->groupBox4->Controls->Add(this->btnref);
    this->groupBox4->Controls->Add(this->btnabo);
    this->groupBox4->Controls->Add(this->btnato);
    this->groupBox4->Controls->Add(this->btncon);
    this->groupBox4->Controls->Add(this->btnrun);
    this->groupBox4->ForeColor = System::Drawing::Color::Yellow;
    this->groupBox4->Location = System::Drawing::point(488, 42);
    this->groupBox4->Name = L"groupBox4";
    this->groupBox4->Size = System::Drawing::Size(190, 131);
    this->groupBox4->TabIndex = 1;
    this->groupBox4->TabStop = false;
    this->groupBox4->Text = L"Control Panel";
    //
    // btnexi
    //
    this->btnexi->BackColor = System::Drawing::Color::LightGray;
    this->btnexi->ForeColor = System::Drawing::Color::Blue;
    this->btnexi->Location = System::Drawing::point(105, 97);
    this->btnexi->Name = L"btnexi";
    this->btnexi->Size = System::Drawing::Size(75, 28);
    this->btnexi->TabIndex = 0;
    this->btnexi->Text = L"Exit";
    this->btnexi->UseVisualStyleBackColor = false;
    this->btnexi->Click += gcnew System::EventHandler(this, &Form1::btnexi_Click);
    //
    // btnref
    //
    this->btnref->BackColor = System::Drawing::Color::LightGray;
    this->btnref->ForeColor = System::Drawing::Color::Blue;
    this->btnref->Location = System::Drawing::point(6, 97);
    this->btnref->Name = L"btnref";
    this->btnref->Size = System::Drawing::Size(75, 28);
    this->btnref->TabIndex = 0;
    this->btnref->Text = L"Refresh";
    this->btnref->UseVisualStyleBackColor = false;
    this->btnref->Click += gcnew System::EventHandler(this, &Form1::btnref_Click);
    //
    // btnabo
    //
    this->btnabo->BackColor = System::Drawing::Color::LightGray;
    this->btnabo->ForeColor = System::Drawing::Color::Blue;
    this->btnabo->Location = System::Drawing::point(6, 59);
    this->btnabo->Name = L"btnabo";
    this->btnabo->Size = System::Drawing::Size(75, 28);
    this->btnabo->TabIndex = 0;
    this->btnabo->Text = L"About";
    this->btnabo->UseVisualStyleBackColor = false;
    //
    // btnato
    //
    this->btnato->BackColor = System::Drawing::Color::LightGray;
    this->btnato->ForeColor = System::Drawing::Color::Blue;
    this->btnato->Location = System::Drawing::point(105, 59);
    this->btnato->Name = L"btnato";
    this->btnato->Size = System::Drawing::Size(75, 28);
    this->btnato->TabIndex = 0;
    this->btnato->Text = L"Auto";
    this->btnato->UseVisualStyleBackColor = false;
    this->btnato->Click += gcnew System::EventHandler(this, &Form1::btnato_Click);
    //
    // btncon
    //
    this->btncon->BackColor = System::Drawing::Color::LightGray;
    this->btncon->ForeColor = System::Drawing::Color::Blue;
    this->btncon->Location = System::Drawing::point(6, 19);
    this->btncon->Name = L"btncon";
    this->btncon->Size = System::Drawing::Size(75, 28);
    this->btncon->TabIndex = 0;
    this->btncon->Text = L"Connect";
    this->btncon->UseVisualStyleBackColor = false;
    this->btncon->Click += gcnew System::EventHandler(this, &Form1::btncon_Click);
    //
    // btnrun
    //
    this->btnrun->BackColor = System::Drawing::Color::LightGray;
    this->btnrun->ForeColor = System::Drawing::Color::Blue;
    this->btnrun->Location = System::Drawing::point(105, 19);
    this->btnrun->Name = L"btnrun";
    this->btnrun->Size = System::Drawing::Size(75, 28);
    this->btnrun->TabIndex = 0;
    this->btnrun->Text = L"Run";
    this->btnrun->UseVisualStyleBackColor = false;
    this->btnrun->Click += gcnew System::EventHandler(this, &Form1::btnrun_Click);
    //
    // sp1
    //
    this->sp1->BaudRate = 19200;
    this->sp1->ReadBufferSize = 1000;
    this->sp1->WriteBufferSize = 1000;
    this->sp1->DataReceived += gcnew System::IO::ports::SerialDataReceivedEventHandler(this, &Form1::sp1_DataReceived);
    //
    // tm1
    //
    this->tm1->Interval = 200;
    this->tm1->Tick += gcnew System::EventHandler(this, &Form1::tm1_Tick);
    //
    // label7
    //
    this->label7->BackColor = System::Drawing::Color::Transparent;
    this->label7->Font = (gcnew System::Drawing::Font(L"Times New Roman", 12, static_cast<System::Drawing::FontStyle>((System::Drawing::FontStyle::Bold | System::Drawing::FontStyle::Italic)),
    System::Drawing::GraphicsUnit::point, static_cast<System::Byte>(0)));
    this->label7->ForeColor = System::Drawing::Color::LightCyan;
    this->label7->Location = System::Drawing::point(50, 175);
    this->label7->Name = L"label7";
    this->label7->Size = System::Drawing::Size(468, 30);
    this->label7->TabIndex = 2;
    this->label7->Text = L"University of Technical Education HCMC - Author : Le Hoang Anh";
    this->label7->TextAlign = System::Drawing::ContentAlignment::MiddleCenter;
    this->label7->Visible = false;
    //
    // label8
    //
    this->label8->BackColor = System::Drawing::Color::Transparent;
    this->label8->Font = (gcnew System::Drawing::Font(L"Times New Roman", 12, static_cast<System::Drawing::FontStyle>((System::Drawing::FontStyle::Bold | System::Drawing::FontStyle::Italic)),
    System::Drawing::GraphicsUnit::point, static_cast<System::Byte>(0)));
    this->label8->ForeColor = System::Drawing::Color::Yellow;
    this->label8->Location = System::Drawing::point(210, 175);
    this->label8->Name = L"label8";
    this->label8->Size = System::Drawing::Size(468, 30);
    this->label8->TabIndex = 2;
    this->label8->Text = L"University of Technical Education HCMC - Author : Le Hoang Anh";
    this->label8->TextAlign = System::Drawing::ContentAlignment::MiddleCenter;
    this->label8->Visible = false;
    //
    // tm2
    //
    this->tm2->Interval = 200;
    this->tm2->Tick += gcnew System::EventHandler(this, &Form1::tm2_Tick);
    //
    // Form1
    //
    this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
    this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    this->BackgroundImage = (cli::safe_cast<System::Drawing::Image^ >(resources->GetObject(L"$this.BackgroundImage")));
    this->BackgroundImageLayout = System::Windows::Forms::ImageLayout::Center;
    this->ClientSize = System::Drawing::Size(724, 543);
    this->Controls->Add(this->label8);
    this->Controls->Add(this->label7);
    this->Controls->Add(this->groupBox4);
    this->Controls->Add(this->groupBox3);
    this->Controls->Add(this->groupBox2);
    this->Controls->Add(this->groupBox1);
    this->Controls->Add(this->tChart1);
    this->ForeColor = System::Drawing::Color::Yellow;
    this->FormBorderStyle = System::Windows::Forms::FormBorderStyle::FixedSingle;
    this->MaximizeBox = false;
    this->Name = L"Form1";
    this->StartPosition = System::Windows::Forms::FormStartPosition::CenterScreen;
    this->Text = L"Form1";
    this->TransparencyKey = System::Drawing::Color::Black;
    this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
    (cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->tChart1))->EndInit();
    this->groupBox1->ResumeLayout(false);
    this->groupBox1->PerformLayout();
    this->groupBox2->ResumeLayout(false);
    this->groupBox2->PerformLayout();
    this->groupBox3->ResumeLayout(false);
    this->groupBox3->PerformLayout();
    (cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->num1))->EndInit();
    this->groupBox4->ResumeLayout(false);
    this->ResumeLayout(false);

    }
    #pragma endregion
    private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
    run=false;
    check1->Enabled=false;
    btnkp->Enabled=false;
    btnki->Enabled=false;
    btnkd->Enabled=false;
    btnapp->Enabled=false;
    btnrun->Enabled=false;
    btnato->Enabled=false;
    mtbkp->Text="001";
    mtbki->Text="001";
    mtbkd->Text="001";
    txtcur->Text="0";
    cb1->Text="COM1";//dong nay va 3 dong duoi de test thu mac dinh
    sp1->BaudRate=19200;
    sp1->DataBits=8;
    //sp1->Open();
    //sp1->WriteLine("s");
    tChart1->Location = System::Drawing::point(0, -17);
    tChart1->Padding = System::Windows::Forms::padding(10, 215, 45, 25);
    tChart1->Size = System::Drawing::Size(726, 583);
    tChart1->AutoScrollOffset = System::Drawing::point(20);
    tChart1->Zoom->Animated=true;
    tChart1->Zoom->AnimatedSteps=5;
    tm1->Start();
    //tm2->Start();//ko can,de dong nay se chay sai




    }



    private: System::Void tm1_Tick(System::Object^ sender, System::EventArgs^ e) {
    time1+=5;

    int x=45;
    label7->Visible=true;
    label8->Visible=false;
    label7->Location = System::Drawing::point(x+time1,175);
    x=x+time1;
    if(x==210)
    {
    tm1->Stop();
    time1=0;
    label7->Location = System::Drawing::point(210, 175);
    tm2->Start();
    }


    }
    private: System::Void tm2_Tick(System::Object^ sender, System::EventArgs^ e) {
    time2+=5;
    int x=215;
    label8->Visible=true;
    label7->Visible=false;
    label8->Location = System::Drawing::point(x-time2,175);
    x=x-time2;
    if(x==50)
    {
    tm2->Stop();
    time2=0;
    label8->Location = System::Drawing::point(50, 175);
    tm1->Start();

    }


    }
    private: System::Void btnref_Click(System::Object^ sender, System::EventArgs^ e) {
    tChart1->Series(1)->Clear();
    tChart1->Series(0)->Clear();
    tChart1->Refresh();
    }
    private: System::Void btnexi_Click(System::Object^ sender, System::EventArgs^ e) {
    time=0;
    //sp1->Close();
    this->Close();
    }
    private: System::Void cb1_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e) {
    sp1->PortName=cb1->Text;
    }
    private: System::Void btncon_Click(System::Object^ sender, System::EventArgs^ e) {

    if(btncon->Text->Equals("Connect"))
    {
    sp1->Open();
    btnkp->Enabled=true;
    btnki->Enabled=true;
    btnkd->Enabled=true;
    btnapp->Enabled=true;
    cb1->Enabled=false;
    btncon->Text = "Disconnect";
    }
    else
    {
    sp1->Close();
    cb1->Enabled=true;
    btnkp->Enabled=false;
    btnki->Enabled=false;
    btnkd->Enabled=false;
    btnapp->Enabled=false;
    btncon->Text = "Connect";
    }

    }
    private: System::Void btnrun_Click(System::Object^ sender, System::EventArgs^ e) {

    if(btnrun->Text->Equals("Run"))
    {
    if(sp1->IsOpen==false)
    {
    Windows::Forms::DialogResult result;
    result=MessageBox::Show("You must connect first!","Warning",Windows::Forms::MessageBoxButtons::OK,Windows::Forms::MessageBoxIcon::Warn
    ing);
    if(result==Windows::Forms::DialogResult::OK)
    return;
    }
    check1->Enabled=true;
    sp1->Write("r");
    run=true;
    btnrun->Text="Stop";
    //btnato->Enabled=false;
    btnrun->ForeColor=Drawing::Color::Red;
    }
    else
    {
    if(sp1->IsOpen==false)
    {
    Windows::Forms::DialogResult result;
    result=MessageBox::Show("You must connect first!","Warning",Windows::Forms::MessageBoxButtons::OK,Windows::Forms::MessageBoxIcon::Warn
    ing);
    if(result==Windows::Forms::DialogResult::OK)
    return;
    }
    else
    {
    sp1->Write("s");
    run=false;
    //sp1->Close();
    check1->Enabled=false;
    btnrun->Text="Run";
    //btnato->Enabled=true;
    btnrun->ForeColor=Drawing::Color::Blue;
    veloc=0;
    dir1=0;
    txtcur->Text="0";
    tChart1->Series(1)->AddXY(time,veloc,"",2000);
    }

    }

    }

    private: System::Void check1_CheckedChanged(System::Object^ sender, System::EventArgs^ e) {
    dir1++;
    if((dir1%2)==0)
    {
    sp1->Write("r");
    }
    else
    {
    sp1->Write("t");
    }

    }
    private: System::Void sp1_DataReceived(System::Object^ sender, System::IO::ports::SerialDataReceivedEventArgs^ e) {
    time++;
    Control::CheckForIllegalCrossThreadCalls=false;
    velre=sp1->ReadLine();
    veloc=Convert::ToDouble(velre);
    veloc=veloc*10;
    txtcur->Text=Convert::ToString(veloc);
    tChart1->Series(1)->AddXY(time,veloc,"",2000); //cac dong nay test ve teechart ko test nua thi xoa di
    tChart1->Series(0)->AddXY(time,vset,"",2000);
    if((tChart1->Series(1)->Count)>30)
    {
    tChart1->Axis->Bottom->MinimumOffset=(tChart1->Axis->Bottom->MinimumOffset - 3);
    tChart1->Axis->Bottom->Maximum=(tChart1->Axis->Bottom->Maximum + 1);
    }




    }

    private: System::Void btnapp_Click(System::Object^ sender, System::EventArgs^ e) {

    btnrun->Enabled=true;
    btnato->Enabled=true;
    str_vset=num1->Text;
    vset=Convert::ToInt16(str_vset);
    sp=(Convert::ToUInt16(str_vset))/10;
    string_vset=Convert::ToString(sp);

    if(run==false)
    {
    sp1->WriteLine(string_vset+"a");
    }
    else
    {
    sp1->WriteLine(string_vset+"a");
    sp1->Write("r");
    }
    Windows::Forms::DialogResult result;
    result=MessageBox::Show("All parameters burned successful!","Successful",Windows::Forms::MessageBoxButtons::OK,Windows::Forms::MessageBoxIcon::Aste
    risk);
    if(result==Windows::Forms::DialogResult::OK)
    return;
    }

    private: System::Void btnkp_Click(System::Object^ sender, System::EventArgs^ e) {

    String^tempp;
    kp=(Convert::ToDouble(mtbkp->Text))*1000;
    //kp=(Convert::ToDouble(mtbkp->Text))*1;
    tempp=Convert::ToString(kp);
    if(run==false)
    {
    sp1->Write(tempp+"p");
    }
    else
    {
    sp1->Write(tempp+"p");
    sp1->Write("r");
    }
    //sp1->Write(tempp+"p");
    Windows::Forms::DialogResult result;
    result=MessageBox::Show("Kp burned successful!","Successful",Windows::Forms::MessageBoxButtons::OK,Windows::Forms::MessageBoxIcon::Aste
    risk);
    if(result==Windows::Forms::DialogResult::OK)
    return;
    }
    private: System::Void btnki_Click(System::Object^ sender, System::EventArgs^ e) {

    String^tempi;
    ki=(Convert::ToDouble(mtbki->Text))*1000;
    //ki=(Convert::ToDouble(mtbki->Text))*1;
    tempi=Convert::ToString(ki);
    if(run==false)
    {
    sp1->Write(tempi+"i");
    }
    else
    {
    sp1->Write(tempi+"i");
    sp1->Write("r");
    }
    //sp1->Write(tempi+"i");
    Windows::Forms::DialogResult result;
    result=MessageBox::Show("Ki burned successful!","Successful",Windows::Forms::MessageBoxButtons::OK,Windows::Forms::MessageBoxIcon::Aste
    risk);
    if(result==Windows::Forms::DialogResult::OK)
    return;

    }
    private: System::Void btnkd_Click(System::Object^ sender, System::EventArgs^ e) {

    String^tempd;
    kd=(Convert::ToDouble(mtbkd->Text))*1000;
    //kd=(Convert::ToDouble(mtbkd->Text))*1;
    tempd=Convert::ToString(kd);
    if(run==false)
    {
    sp1->Write(tempd+"d");
    }
    else
    {
    sp1->Write(tempd+"d");
    sp1->Write("r");
    }
    //sp1->Write(tempd+"d");
    Windows::Forms::DialogResult result;
    result=MessageBox::Show("Kd burned successful!","Successful",Windows::Forms::MessageBoxButtons::OK,Windows::Forms::MessageBoxIcon::Aste
    risk);
    if(result==Windows::Forms::DialogResult::OK)
    return;

    }
    private: System::Void btnato_Click(System::Object^ sender, System::EventArgs^ e) {


    if(btnato->Text->Equals("Auto"))
    {
    btnato->Text="Modify";
    //btnrun->Enabled=false;
    //btnrun->Text="Stop";
    btnkp->Enabled=false;
    btnki->Enabled=false;
    btnkd->Enabled=false;
    mtbkp->Enabled=false;
    mtbki->Enabled=false;
    mtbkd->Enabled=false;
    }
    else
    {
    btnato->Text="Auto";
    //btnrun->Enabled=true;
    //btnrun->Text="Run";
    btnkp->Enabled=true;
    btnki->Enabled=true;
    btnkd->Enabled=true;
    mtbkp->Enabled=true;
    mtbki->Enabled=true;
    mtbkd->Enabled=true;
    }

    }
    };
    }[/b][/quote]
  33. hoangleanh87 New Member

    Số bài viết: 244
    Đã được thích: 5
    Điểm thành tích: 0
    <span style="font-size:18pt;line-height:100%">Hình ảnh</span>
    -Mô hình:
    <div align='center'>[IMG]</div>
    -Giao diện PC
    <div align='center'>[IMG]</div>
    Chỉ có khâu P
    <div align='center'>[IMG]
    [IMG]</div>
    <div align='center'>[IMG]</div>
  34. hoangleanh87 New Member

    Số bài viết: 244
    Đã được thích: 5
    Điểm thành tích: 0
    <div align='center'>[IMG]
    [IMG]</div>

    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:

    -Vận dụng lý thuyết đã học ( VĐK Atmega32,Ngôn ngử C,LTĐKTĐ ) vào ứng dụng cụ thể.

    -Đả điều khiển thành công vận tốc động cơ bằng thuật toán PID+đảo chiều động cơ dùng VĐK Atmega32 giao tiếp PC

    -Kiểm chứng với lý thuyết ĐKTĐ về vai trò của các khâu P,I,D nói riêng và bộ PID nói chung (Xem hình).

    +Hạn chế của đề tài:

    -Do hạn chế về đường truyền (chuẩn RS232) nên việc thu thập dữ liệu và hiển thị trên PC còn hạn chế.
    -Hạn chế về phần cứng và các tính toán phụ thuộc hoàn toàn vào VĐK.

    +Hướng phát triển:

    -Hoàn thiện phần cứng và phần mềm xây dựng mô hình thí nghiệm.
    -Tiến hành thử tải.
    -Nghiên cứu điều khiển vị trí và xa hơn là moment.
    -Nghiên cứu sử dụng các loại Card và phần mềm hổ trợ bộ PID để điều khiển.
    -Nghiên cứu các phương pháp điều khiển khác ( lý thuyết mờ...) so sánh các bộ điều khiển và tìm kiếm sự kết hợp.

    Tài liệu tham khảo:

    Lý thuyết ĐKTĐ
    Embedded C Programming and Atmel AVR,2e
    Hai Đồ Án của các anh CĐT03
    Và đặc biệt là sự giúp đở nhiệt tình của nhóm MIKATECH-CĐT04,các bạn và Thầy Lê Tấn Cường.
    Em chân thành cảm ơn các anh,các bạn và Thầy.
    Web tham khảo:
    Vagam
    Diễn Đàn Điện tử Việt Nam...
  35. hoangleanh87 New Member

    Số bài viết: 244
    Đã được thích: 5
    Điểm thành tích: 0
  36. spkt_05112 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 Đạt Lâm
    MSSV: 05112038
    Email:datlam_87@yahoo.com
    Điện thoại: 01687025462
    2:Tên đề tài thực hiện [IMG]ùng Vi Điều Khiển 89S52 ĐẾM SẢN PHẨM 8 LED
    yêu cầu cần giải quyết: Thiết kế hệ thống đếm sản phẩm dùng 8 led 7 đoạn
    +Sử dụng chế độ Ngắt Ngoài
    3:phương án giải quyết: thiết kế mạch bằng EAGLE 5.1.0 gồm 2 module
    +Dùng photo diode +LM 741 nhận biết sản phẩm
    4. Sơ đồ nguyên lý +in:
    [IMG]
    [IMG]
    [IMG]
    [IMG]
    [IMG]
    [IMG]
    5 -Lưu đồ giải thuật. [IMG]

    code : http://www.mediafire.com/?ntntzitdjlj

    6 Hình ảnh và phim: http://www.mediafire.com/?yotwjhmy3yk
    7:Kết quả đạt được, hạn chế của đề tài và phương hướng phát triển
    mạch hiển thị rõ ,tuy nhiên vấn đề nhiễu vẫn còn,có thể thay thế photto diode bẳng cảm biến chống nhiễu tốt hơn
    8 Download: code chương trình ( file *.asm hoặc *.c), file mạch điện
    +Mạch Điện : [IMG] http://www.mediafire.com/?rbmmyidzymv
    +BẢN EAGLE 5.1.0: http://www.mediafire.com/?sharekey=64b24cc...3994245678a56d3
    9 Tài liệu tham khảo : HỌ VI ĐIỀU KHIỂN 8051 TỐNG VĂN ON+ DATASHEET
  37. lxtinh Guest

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

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

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    -Họ tên sinh viên: Đinh Xuân Thành
    -MSSV: 05112062
    -Email: athanh090@yahoo.com
    -Điện thoại: 01665159411
    ********************************************************************
    -Tên đề tài thực hiện: Điều khiển mô hình máy ép nhựa bằng vi diều khiển AT89S52
    -Mô tả vấn tắt các yêu cầu cần giải quyết:
    +thi công mô hình máy ép nhựa
    +thiết kế mạch vi điều khiển AT89S52
    +thiết kế mạch điện kết nối input, output

    -Các phương án có thể lựa chọn:
    +sử dụng họ vi điều khiển 8051 (thông dụng, rẽ tiền)
    +sử dụng các van selenoid 3/2 , 5/2: 2 đầu điện hoặc 1 đàu điện 1đầu loxo, xylanh tác động kép, hoặc xylanh tác động đơn, công tắc hành trình từ hoặc điện cơ, cảm biến ( các van selenoid không cần công suất lớn, công tắc hành trình không bị nhiểu...)
    +sử dụng relay để kích van selenoid (công suất lớn..)
    +sử dụng IC ULN2803 để kích van selenoid ( công suất không lớn nhưng rẻ tiền...)
    -Phương án lựa chọn giải quyết trong đề tài.
    +sử dụng vi điều khiển AT89S52
    +sử dụng 2 van selenoid 5/2: 2 đầu điện
    +sử dụng 1 van selenoid 5/2: 1 đầu điện 1đầu loxo
    +sử dụng 1 van selenoid 3/2: 1 đầu điện 1đầu loxo
    +sử dụng công tắc hành trình điện cơ
    +sử dụng IC ULN2803 để kích van selenoid

    -Sơ đồ mạch nguyên lý:
    +modul mạch AT89S52:
    [IMG]
    [IMG]
    [IMG]
    [IMG]
    +modul relay:
    [IMG]
    +modul 4led 7 đoạn:
    [IMG]
    +modul 32 led đơn:
    [IMG]
    +modul input, output(ULN2803):
    [IMG]

    -Sơ đồ mạch layout:
    +modul mạch AT89S52:
    [IMG]
    +modul relay:
    [IMG]
    +modul 4led 7 đoạn:
    [IMG]
    +modul 32 led đơn:
    [IMG]
    +modul input, output (ULN2803):
    [IMG]

    -Lưu đồ giải thuật:
    [IMG]

    -Code chương trình:
    http://www.mediafire.com/download.php?tydwzxndnwm

    -Hình ảnh hoặc đoạn phim ngắn mô tả về mô hình đã thi công khi đang hoạt động:
    +mô hình:
    [IMG]
    +mạch điện:
    [IMG]

    -Kết quả đạt được, hạn chế của đề tài và phương hướng phát triển:
    +Mô hình chạy ổn định đúng theo code đã lập trình, mạch vi điều khiển,các van selenoild và công tắc hành trình hoạt động như ý muốn...
    +Hạn chế của đề tài là: các công tắc hành trình điện cơ khó gá
    +Hướng phát triển của đề tài: thay thế các công tắc hành trình điện cơ bằng công tắc hành trình từ hoặc cảm biến. Dùng PLC để điều khiển cho ổn định cao...

    -Download chương trình:
    +CODE:
    http://www.mediafire.com/?atlkmthuwly
    +MẠCH ĐIỆN:
    http://www.mediafire.com/download.php?1y2zetdagqy

    -Các nguồn tài liệu có giá trị nhất trong khi làm đề tài:
    http://www.alldatasheet.com/view.jsp?Searchword=ALLDATASHEET
    http://www.mediafire.com/?de0xljw4zyb
    http://www.mediafire.com/?bmys7lqnttk
    +Sách giáo trình 8051 tác giả Tống Văn On

    RẤT MONG CÁC BẠN ĐÓNG Ý KIẾN ĐỂ ĐỀ TÀI ĐƯỢC HOÀN THIỆN HƠN
  40. haique 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: HỒ ÁI NGHĨA
    -MSSV:05112047
    -Email:ainghia05@yahoo.com
    -Điện thoại:01224771120
    2 -Tên đề tài thực hiện:ĐỒNG HỒ SỐ
    YÊU CẦU:Hiển thị chính xác thời gian trên led 7 đoạn anode chung dùng vi điều khiển AT89s52
    Có các nút nhấn để điều chỉnh giờ
    3. Phương án giải quyết:
    - Thiết kế mạch và vẽ trên Eagle.
    - Điều khiển 8 led 7 đoạn dùng phương pháp quét led
    -Dùng vi điều khiển AT89s52 để điều khiển
    4 -Sơ đồ mạch nguyên lý.
    mạch nguyên lý:
    [IMG]
    [IMG]
    mạch in:
    [IMG]
    [IMG]
    5 -Lưu đồ giải thuật.
    [IMG]
    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/?3nyuqzmtxwd
    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ả:
    -Thể hiện đúng thời gian
    -Điều chỉnh được giờ phút giây thông qua nút nhấn
    *Hạn chế:
    - Không dùng Dallas nên không duy trì giá trị giờ phút giây khi mất nguồn nuôi
    - Chưa có chế độ hẹn giờ
    * Hướng phát triển của đề tài:
    - Sử dụng Dallas để nhớ thời gian
    -- Kết hợp gắn cảm biến nhiệt độ để hiển thị nhiệt độ ngoài trời
    8. Link download code .asm:
    http://www.mediafire.com/myfiles.php
    9. Các nguồn tài liệu tham khảo:
    - Sách HỌ VI ĐIỀU KHIỂN 8051-Tác giả : Tống Văn On
  41. hungcdt05 New Member

    Số bài viết: 7
    Đã được thích: 0
    Điểm thành tích: 0
    1).
    Họ tên Sinh Viên: Phạm Ngọc Hùng [IMG]
    MSSV: 05111040
    Email: a.hugfriendly_1803@yahoo.com.vn
    2).
    Tên đề tài: Điều khiển tốc độ động cơ DC bằng VDK Atmega32.
    Yêu cầu: Thay đổi tốc độ động cơ DC bằng cách thay đổi giá trị hiển thị trên Led7 đoạn. Mạch sủ dụng DAC0808 để biến đổi tín hiệu số sang tương tự.
    Phần cứng gồm 1Atmga32, 1DAC0808, 1 LM741 1 LM317.
    Tín hiệu số từ VDK được đưa vào 8 đường dữ liệu của DAC sau đó sẽ chuyển đổi thành dòng điện Iout với giá trị âm, giá trị này đưa qua con LM741 kết nối thành mạch đảo để cho ra điện áp dương.
    Ta có: Dn=0-0ff -> Iout=0-(-5mA)
    Công thức tính của mạch Opamp:
    Vout=-Vin.(Rf/Rin)=-Iin.Rin.(Rf/Rin)=-Iin.Rf
    với Iin là dòng từ DAC xuất ra.
    Mặt khác ta có công thức từ DAC: Iout=-Vref/VR (VR là biến trở ở chân Vref của DAC)
    Ở đây ta chọn Vref= 12VDC, Vout= 10VDC(Vì áp tối đa cấp cho mạch là 12V nên chọn Vout=10VDC )
    Vì dòng tối đa Iout của DAC là -5mA nên ta chọn Iout~ 3.7mA, lúc đó Rf=-Vout/Iout~2.7k,VR=-Vref/Iout~3.24k.
    sử dụng biến trở cho giá trị VR mục đích điều chỉnh độ phân giải (chọn giá trị Iout) của DAC
    Nếu ta nối động cơ trực tiếp vào chân Out của LM741 thì mạch sẽ không chạy do điện áp trong động cơ quá bé(coi như ngắn mạch) nên động cơ không có áp,vậy phải qua IC LM317 để lấy áp hồi tiếp về thì mới chạy động cơ. Ta kết nối như sơ đồ nguyên lý dưới đây.
    Khi Vout của LM741=0V thì áp do LM317 cấp cho động cơ là 1,25V bởi công thức: Vout(LM317) = 1,25(1+Rf/Rht). Vậy để khi Vout(LM741)0 mà áp động cơ cũng = 0V thì phải sử dụng chân Offset null của LM741, mắc qua 1 biến trở để điều chỉnh sao cho Vout(741) ban đầu = -1,25V thì áp ra 317 sẽ là 0V.
    Đây là nguyên lý của phần cứng, còn phần mềm thì sẽ post ở dưới, vì mạch này chỉ khó ở phần cứng,đòi hỏi phải hiểu rõ nguyên lý hoạt động.
    Hướng phát triển: sẽ tìm hiểu và điều khiển động cơ có công suất lớn hơn sử dụng Transisto Công suất lớn, vì đây chỉ là một bài tập giữa kỳ giúp sinh viên làm quen và tìm hiểu về Vi Điều khiển.
    3).
    Sau đây là sơ đồ nguyên lý của mạch:
    [IMG]
    Mạch in:
    [IMG]
    File mạch in và nguyên lý: http://www.mediafire.com/?sharekey=dd87433...a672c7a9db4045f
    4).
    File PowerPoint: http://www.mediafire.com/?sharekey=dd87433...a56c5ed9eb4fd94
    5).
    Chương trình: http://www.mediafire.com/?sharekey=dd87433...a56c5ed9eb4fd94
    6).
    Phim chạy Demo : http://www.mediafire.com/?sharekey=dd87433...a56c5ed9eb4fd94
    Cảm ơn đã xem qua.
    Chúc mừng năm mới.
  42. thinhcdt05 New Member

    Số bài viết: 6
    Đã được thích: 0
    Điểm thành tích: 0
    1.HỌ VÀ TÊN: ĐÀO XUÂN THỊNH
    MSSV:05111099
    LỚP:051112B
    EMAIL:bamboo_songthan@yahoo.com.vn
    ĐT:0909245544
    2.TÊN ĐỀ TÀI:

    MẠCH HIỂN THỊ LED MATRẬN DÙNG VDK AT89S52

    yêu cầu: hiển thị chữ trên led ma trận
    chạy các hiệu ứng trên led matrận
    3.Các phương án quét led ma trận để hiển thị và ưu và nhươc điểm từng phương án
    C1:Gửi dữ liệu ra hàng và mã quét gửi ra cột
    C2:Gửi dữ liệu ra cột và mã quét gửi ra hàng

    -Ưu điểm phương pháp quét thứ 1: Gửi dữ liệu ra hàng và mã quét gửi ra cột

    +Khi mở rộng thêm led thì chỉ cần kết nối song song 8 hàng và cột dùng thanh ghi dịch rất đơn giản với số lượng

    đường điều khiển ít
    +Tại 1 thời điểm chỉ có 1 cột sáng nên dòng tiêu thụ thấp
    +Mạch điện đơn giản
    -Nhược điểm phương pháp quét thứ 1:
    Bị giới hạn số cột vì khi mở rộng càng nhiều cột thì thời gian tắt của led tăng thêm dẫn đến phải tăng dòng cho

    led mà việc này thì nguy hiểm cho led và led sáng không rõ sinh ra hiện tượng chập chờn
    Nếu có 100 cột thì dù quét nhanh hay chậm thì thời gian sáng mỗi cột không đổi là:1/100 và thời gian tắt

    là:99/100
    -Ưu và nhược điểm phương pháp quét thư 2: Gửi dữ liệu ra cột và mã quét gửi ra hàng
    +Với cách quét theo hàng thì thời gian sáng của 1 led ma trận 8x8 với mỗi cột là 1/8 và thời gian tắt là: 7/8
    khi tăng thêm led thì thời gian sáng vẫn không đổi nhưng chu kì quét phải tăng vì phải tốn thời gian gửi dữ liệu

    qua các cột như vậy cần phải có IC quét có tốc độ cao

    -Phương án lựa chọn giải quyết trong đề tài.
    +Như vậy theo phân tích trên và với cách thiết kế mạch trên thì phương pháp sử dụng để hiển thị led ma trận mà

    chọn cho mạch trên là phương pháp thứ 1: đó là quét cột dùng thanh ghi dịch và gửi dữ liệu ra hàng cho led ma

    trận sáng tương ứng với dữ liệu của mã chữ
    -Các hiệu ứng trên led matrận
    +Chữ chạy qua trái qua phải
    +Chữ chạy lên xuống
    +Chữ sáng kiểu rót đầy nước
    +Chữ sáng theo kiểu chụm lại 2 đầu
    +Chữ sáng theo kiểu loe ra 2 đầu
    +Chữ sáng theo kiểu sáng dần từng cột
    +Chữ sáng chạy từng chữ
    +Chữ sáng từng con led một theo kiểu từ trên xuống và sáng hết chữ
    4 -Sơ đồ mạch nguyên lý.
    Sơ đồ mạch nguyên lý:
    [IMG]
    [IMG]
    [IMG]
    [IMG]
    [IMG]
    Sơ đồ mạch layout: mạch hiển thị được in trên 2 lớp
    [IMG]
    5 -Lưu đồ giải thuật.
    chương trình có nhiều hiệu ứng nên em chỉ post 1 vài lược đồ
    lược đồ chay từ phải->trái
    [IMG]
    lược đồ sang dần chữ [IMG]
    link down lược đồ:
    http://www.mediafire.com/?mmlzemzzdty
    -Download: Code chương trình:
    http://www.mediafire.com/?mvnnvxoiy1o

    6 -Hình ảnh và đoạn phim
    http://www.mediafire.com/?yg1wm5ijhzu

    7-Hạn chế của đề tài và phương hướng phát triển.
    +hạn chế của đề tài:
    Khó thay đổi dữ liệu hiển thị một cách đơn giản mà phải tác động sửa đổi bằng phần mềm
    dẫn đến khó cho người sử dụng muốn thay đổi nội dung hiển thị
    +phương hướng phát triển đề tài
    +Đó là hiển thị chữ ra led ma trận có giao tiếp với máy tính để việc thay đổi dữ liệu hiển thị qua led ma trận được dễ dàng
    +Thay đổi dữ liệu hiển thị qua bàn phím vi tính có kiểm tra qua lcd rồi hiển thị ra led ma trận
    +Tìm hiểu phương pháp quét led theo hàng để có thể mở rộng ra thành bảng quang báo
    7.1- Kết quả đạt được
    Mạch chạy tốt và chạy được các hiệu ứng đã nêu ở trên
    8 -Download: code chương trình (.c), file mạch điện
    +code chương trình (.c):

    /*
    P2.4 DATA
    P2.5 CLOCK
    P2.6 LATCH

    */

    #include <REGX52.H>
    // unsigned char i,j,k,n,m,h;
    unsigned char i,j,m,k,h,r,r1,b,n,e,d,c,a,z,y,c1,c3,b1,r3,r2,y1,y2;
    unsigned char u[]={0,0,0,0,0,0,0,0
    ,0,0,0,0,0,0,0,0
    ,0,0,0,0,0,0,0,0
    ,0,0,0,0,0,0,0,0
    ,0xe0,0xc0,0xff,0xff,0xc0,0xe0,0,0 //T
    ,0x7e,0xff,0xc3,0xc3,0xc3,0xff,0x7e,0 //O
    ,0xe0,0xc0,0xff,0xff,0xc0,0xe0,0,0 //T
    ,0x7e,0xff,0xc3,0xc3,0xc3,0xff,0x7e,0 //O
    ,0,0,0,0,0,0,0,0
    ,0,0,0,0,0,0,0,0
    ,0,0,0,0,0,0,0,0
    ,0,0,0,0,0,0,0,0};

    void delay_ms(unsigned int x )
    {
    unsigned int y;
    for(y=0;y<=x;y++)
    {
    ;
    }
    }
    void main(void)
    {
    P3=0;
    P2_7=0; //reset thanh ghi dich
    delay_ms(10);
    P2_7=1; // dung reset thanh ghi dich
    // Declare your local variables here
    while (1)
    {


    //##########x chay tu trai qua phai ###################xx
    for(m=0;m<1;m++)
    {

    k=64;
    do
    {
    for(j=0;j<=20;j++)
    {
    P2_4=1;
    n=k;


    for(i=0;i<=32;i++)
    {
    P2_5=1;
    P2_5=0;
    P2_6=1;
    P2_6=0;
    P3=u[n];

    delay_ms(20);
    P3=0;
    n++;
    P2_4=0;
    }
    }

    k--;

    }

    while(k>0);

    k=82;

    }
    //##################xx chay phai qua trai #############xx
    for(m=0;m<1;m++)
    {
    k=0;
    do
    {
    for(j=0;j<=20;j++)
    {
    P2_4=1;
    n=k;


    for(i=0;i<=32;i++)
    {
    P2_5=1;
    P2_5=0;
    P2_6=1;
    P2_6=0;
    P3=u[n];

    delay_ms(20);
    P3=0;
    n++;
    P2_4=0;
    }
    }
    k++;

    }
    while(k<=64); //48

    k=0;
    }
    //#######################################################X
    //########################XX CHAY ROT DAY ################XX
    h=1; r1=0x00;n=7;e=0; m=0;
    do
    {
    if (h==9)
    {
    goto thoat;
    // break;
    }
    for(r=0;r<=n;r++) // vong lap tao so lan xoay
    { // ban dau n=7


    for(k=0;k<=25;k++) //tao thoi gian tri hoan sang tung hang led
    {
    P2_4=1;
    for(i=32;i<=64;i++) //cho phep quet 32 cot
    {
    P2_5=1;
    P2_5=0;
    b=u;

    switch(h) //lay tung bit cua ma
    {
    case 1: c=b&0x80;
    for(j=0;j<=6;j++)
    {
    c=c>>=1; // lay va dich 7 lan
    }

    break;
    case 2: c=b&0x40;
    for(j=0;j<=5;j++)
    {
    c=c>>=1; // lay va dich 6 lan
    }

    break;
    case 3: c=b&0x20;
    for(j=0;j<=4;j++)
    {
    c=c>>=1;
    }

    break;
    case 4: c=b&0x10;
    for(j=0;j<=3;j++)
    {
    c=c>>=1;
    }

    break;
    case 5: c=b&0x08;
    for(j=0;j<=2;j++)
    {
    c=c>>=1;
    }

    break;
    case 6: c=b&0x04;
    for(j=0;j<=1;j++)
    {
    c=c>>=1;
    }

    break;
    case 7: c=b&0x02;

    c=c>>=1;

    break;
    case 8: c=b&0x01;


    break;

    } // het switch (h)


    c=c<<=r; // xoay c voi so dich la r tang len-> dich sang dc
    // ->hang ke tiep
    //##################################################xx
    x1: switch(m) //lay tung cac bit
    {
    case 1: e=b&0x80;
    z=e ;
    break;
    case 2: e=b&0xc0;

    z=e;
    break;
    case 3: e=b&0xe0;
    z=e;
    break;
    case 4: e=b&0xf0;
    z=e;
    break;
    case 5: e=b&0xf8;
    z=e;
    break;
    case 6: e=b&0xfc;
    z=e;
    break;
    case 7: e=b&0xfe;
    z=e;
    break;
    case 8: e=b&0xff;
    z=e;
    // P3=c;
    break;

    } // het switch (m)
    r1=z ; // gan cho r1
    //########################################################xx
    d=c|r1; // DEM OR gia tri cua c voi tung bit cuoi

    P2_6=1; // nhip xung chot ra ngoai
    P2_6=0;
    P3=d; // xuat du lieu ra
    delay_ms(1);
    // P3=0; //chong lem
    P2_4=0; // xoa ser in
    } //het for(2) het quet 32 cot

    } //het for(1) het tg sang moi ct


    delay_ms(1) ;

    } // het for chi so lan xoay

    // r1=z;
    n--; // giam so lan xoay
    h++ ; // tang h len de lay bit ke tiep
    m++ ;
    } //het vong lap do--while


    while(h<=10);
    thoat: delay_ms(1) ;
    for(h=0;h<=4;h++) // hien thi chu thoi
    {
    for(m=0;m<=40;m++)
    {
    P2_4=1;

    for(i=32;i<64;i++)
    {
    P2_5=1;
    P2_5=0;
    P2_6=1;
    P2_6=0;
    P3=u;

    delay_ms(20);
    P3=0; //chong lem
    P2_4=0;
    }
    }
    }
    //###########################################################X
    //############################## SANG DAN MA TRAN #############XX
    //################## sang 1 diem tu tren xuong ######################xx
    r=0x00;

    for(i=0;i<=10;i++) //vong xoay
    {
    r<<=1; // DICH r sang trai 1 bit
    r=r|0x01; // OR r voi 1
    for(m=0;m<=10;m++) // thoi gian sang
    {
    P2_4=1; // nhip xung

    for(j=32;j<=64;j++)
    {
    b=0;
    P2_5=1;
    P2_5=0;

    r1=u[j]&r; // and ma chu voi r
    b=b|r1; // OR ma da and voi r1

    P3=b;
    P2_6=1;
    P2_6=0;
    delay_ms(5);
    P3=0; //chong lem
    P2_4=0;
    } //het for(j=32;j<=64;j++)
    } //het for(m=0;m<=10;m++)
    } //het for(i=0;i<=10;i++)

    //############x tat dan 1 diem sang tu duoi len ###################xx
    for(i=0;i<=10;i++)
    {
    r>>=1;
    r=r|0x00;
    for(m=0;m<=30;m++)
    {
    P2_4=1;

    for(j=32;j<=64;j++)
    {
    b=0;
    P2_5=1;
    P2_5=0;

    r1=u[j]&r;
    b=b|r1;
    // b<<=1;

    P3=b;
    P2_6=1;
    P2_6=0;
    delay_ms(5);
    P3=0; //chong lem
    P2_4=0;
    } //het for (j=32;j<=64;j++)
    } //het for (m=0;m<=30;m++)
    } //het for(i=0;i<=10;i++)
    //############################################################
    //##################x sang 1 diem tu duoi len ########################
    r=0x00;

    for(i=0;i<=10;i++)
    {
    r>>=1;
    r=r|0x80;

    for(m=0;m<=10;m++)
    {
    P2_4=1;

    for(j=32;j<=64;j++)
    {
    b=0;
    P2_5=1;
    P2_5=0;

    r1=u[j]&r;
    b=b|r1;
    /* for(k=0;k<=h;h++)
    {
    b<<=1;
    } */

    P3=b;
    P2_6=1;
    P2_6=0;
    delay_ms(5);
    P3=0; //chong lem
    P2_4=0;
    } //het for(3)
    } //het for(2)
    } //het for(1)
    //######################################################X
    // tat dan 1 diem tu tren xuong

    for(i=0;i<=10;i++)
    {
    r<<=1;
    r=r|0x00;
    for(m=0;m<=10;m++)
    {
    P2_4=1;

    for(j=32;j<=64;j++)
    {
    b=0;
    P2_5=1;
    P2_5=0;

    r1=u[j]&r;
    b=b|r1;

    P3=b;
    P2_6=1;
    P2_6=0;
    delay_ms(5);
    P3=0; //chong lem
    P2_4=0;
    } //het for(3)
    } //het for(2)
    } //het for(1)
    //################################################################
    //############################ SANG HAI DAU TOE RA ################X
    for(n=0;n<=4;n++) // so lan thuc hien
    {
    r=0x10;
    r2=0x08;
    // b1=0; c1=0;c3=0; r3=0;r1=0;b=0;
    for(i=0;i<=4;i++)
    {
    r>>=1; // dich phai r 1 bit
    r=r|0x08; // or r voi 00001000b

    r2<<=1; // dich trai r 1 bit
    r2=r2|0x10; // or r voi 00010000b
    for(m=0;m<=50;m++)
    {
    P2_4=1;

    for(j=32;j<=64;j++)
    {
    b1=0;
    c1=0;
    c3=0;
    r3=0;
    r1=0;

    P2_5=1;
    P2_5=0;

    r1=u[j]&r; // lay tung bit byte thap
    b1=r1|b1;

    r3=u[j]&r2; // lay tung bit byte cao
    c1=r3|c1;

    c3=b1|c1 ;
    P3=c3; //xuat du lieu

    P2_6=1; //nhip xung chot
    P2_6=0;
    delay_ms(5);
    P3=0; //chong lem
    P2_4=0;
    } //het for(3)
    } //het for(2)
    } //het for(1)
    }

    //##################################################################XX
    //########################X SANG HAI DAU CHUM LAI ##################X
    //########################x sang 1 diem tu tren xuong #####################
    for(n=0;n<=4;n++)
    {
    r=0x00;
    r2=0x00;
    for(i=0;i<=4;i++) //vong lap xoay
    {
    r<<=1;
    r=r|0x01;

    r2>>=1;
    r2=r2|0x80;
    for(m=0;m<=50;m++) // thoi gian sang
    {
    P2_4=1; // nhip xung

    for(j=32;j<=64;j++)
    {
    b=0;
    b1=0;
    c1=0;
    c3=0;
    r3=0;
    r1=0;

    P2_5=1;
    P2_5=0;

    r1=u[j]&r; // lay tung bit byte thap
    b1=r1|b1;

    r3=u[j]&r2; // lay tung bit byte cao
    c1=r3|c1;

    c3=b1|c1 ;
    P3=c3;

    P2_6=1;
    P2_6=0;
    delay_ms(5);
    P3=0; //chong lem
    P2_4=0;
    } //het for(3)
    } //het for(2)
    } //het for(1)
    }
    //############################################################XX
    //########################X SANG DAN MA TRAN ###################X
    for(k=0;k<=1;k++)
    {
    m=32;
    for(m=32;m<=64;m++) // FOR TANG COT SANG
    {
    for(n=0;n<=50;n++) // THOI GOAN SANG
    {
    P2_4=1;

    // for(i=0;i<m-32;i++)
    for(i=32;i<m;i++)
    {
    P2_5=1;
    P2_5=0;
    P2_6=1;
    P2_6=0;
    P3=u; //P3=b[32+i];

    delay_ms(5);
    P3=0;
    P2_4=0;
    } // het for (i=32;i<m;i++)
    for(j=0;j<64-m;j++)
    {
    P2_5=1;
    P2_5=0;
    P2_6=1;
    P2_6=0;


    delay_ms(5);
    P3=0;
    P2_4=0;
    } // het for (j=0;j<64-m;j++)
    } // het for (n=0;n<=50;n++)

    } // het for (m=32;m<=64;m++)
    }
    //###########################################################X
    //##################XX SANG chay TUNG CHU HANG COT ################XX
    a=1; b=1; c=1; d=1;
    for(k=0;k<=28;k++) // thoi gian giu sang ca chu
    {


    enter: for(n=0;n<=20;n++) // for thoi gian sang moi lan
    {
    P2_4=1;
    for(i=32;i>=0;i--) // for quet cot ma tran
    {

    if(a==i)
    {
    y2=63;
    for(y=8;y>0;y--) // sang chu 0
    {
    P2_5=1;
    P2_5=0;
    P2_6=1;
    P2_6=0;
    P3=u[y2];
    delay_ms(4);

    P3=0;
    y2=y2-1;
    i=i-1;

    if(y==0||i==0)
    {
    y=-1;
    goto exit;
    }
    } // het for y=8
    } //het if a=i
    //delay_ms(0.5);
    //########################################################
    exit: if(a==31)
    {
    if(b==i)
    {
    y2=55;
    for(y=8;y>=0;y--) // sang chu T
    {
    P2_5=1;
    P2_5=0;
    P2_6=1;
    P2_6=0;
    P3=u[y2];
    delay_ms(4);
    P3=0;
    y2-- ;
    i--;
    if(i==0||y==0)
    {
    goto exit2;
    }

    } // het for y=8
    } //het if b=i
    } // het if a=31
    //#########################################################
    exit2: if(b==23)
    {
    if(c==i)
    {
    y2=46;
    for(y=8;y>0;y--) // sang chu O
    {
    P2_5=1;
    P2_5=0;
    P2_6=1;
    P2_6=0;
    P3=u[y2];
    delay_ms(4);

    P3=0;
    y2--;
    i=i-1;

    if(y==0||i==0)
    {
    y=-1;
    goto exit3;
    }
    } // het for y=8
    } //het if c=i
    } // het if b=23
    //#######################################################
    exit3: if(c==14)
    {
    if(d==i)
    {
    y2=37;
    for(y=8;y>0;y--) // sang chu G
    {
    P2_5=1;
    P2_5=0;
    P2_6=1;
    P2_6=0;
    P3=u[y2];
    delay_ms(4);
    // P2_4=0;
    P3=0;
    y2--;
    i=i-1;

    if(y==0||i==0)
    {
    y=-1;
    goto exit4;
    }
    } // het for y=8
    } //het if d=i
    } // het if c=14
    //#####################################################

    exit4: if(i==0)
    {
    i=0;
    goto exit1;
    }


    else P2_5=1; //nguoc lai moi truong hop tren
    P2_5=0;
    P2_6=1;
    P2_6=0;

    delay_ms(2);
    P3=0;
    P2_4=0;
    } // het for i=32
    exit1: delay_ms(1);

    } // het for n=30 TG SANG
    // ############################## ################XX

    if(a==31) // chon cot phai lui 1 cot
    {
    a=31;

    goto td1 ;
    }
    a++;
    goto enter;


    td1: delay_ms(1);
    if(b==23)
    {

    a=31;
    b=23;
    goto td2;
    }
    // a=31;
    b++;
    goto enter;


    td2: if(c==14)
    {
    a=31;
    b=23;
    c=14;
    goto td3;
    }
    // a=31;
    // b=23;
    c++;
    goto enter;

    td3: if(d==6)
    {
    a=31;
    b=23;
    c=14;
    d=6 ;
    goto td4;
    }
    // a=31;
    // b=23;
    d++;
    goto enter;
    td4: delay_ms(1);
    } // het for k vong lap

    //##############################################X

    }; // het while(!)

    }


    chuong trinh con dai download code tai:
    http://www.mediafire.com/?mvnnvxoiy1o

    +file mạch điện:
    http://www.mediafire.com/?nmwhbuleqdj
  43. cntd New Member

    Số bài viết: 17
    Đã được thích: 0
    Điểm thành tích: 1
    (-_-) BÁO CÁO VI ĐIỀU KHIỂN GIỮA KỲ (-_-)

    1. Sinh viên : HOÀNG.TN
    - Ngành : CDT
    - Email : Hoangspkt1986@gmail.com
    - Điện thoại : No Phone

    2. Tên đề tài : "GIAO TIẾP VI ĐIỀU KHIỂN 89S52 VỚI ĐỘNG CƠ BƯỚC ".
    + Yêu cầu :
    + Điều khiển động cơ bước hoạt động ở 2 chế độ full - step, half- step ,với 5 nút nhấn điều khiển hoạt động như sau :
    Nhấn nút START động cơ dịch bước đầu tiên. Sau đó ,chọn tiếp điều khiển quay tương ứng với nút được nhấn:
    - Nhấn nút full - step thuận động cớ quay full- step thuận.
    - Nhấn nút full - step nghịch động cớ quay full- step nghịch.
    - Nhấn nút half - step thuận động cớ quay half- step thuận.
    - Nhấn nút half - step nghịch động cớ quay half- step nghịch .
    * Chú ý : có nhấn nút thì động cơ hoạt động quay tương ưng với chức năng nút được nhấn .
    Đầu tiền, nếu nút START không được nhấn thì động cơ không hoạt động.

    3. Để thực hiện đề tài trên, tôi đã thực hiện -lựa chọn các phương án sau :
    - Phương án 1 :Để điều khiển động cơ bước dùng IC ULN2803 ,nhưng dùng IC này chi chịu dòng tải của động cơ lớn nhất là 500mA, nên chỉ có thể điều khiển động cơ có dòng nhỏ hơn 500 mA ,tốc độ đáp ứng không cao, điều khiển động cơ yếu nên tôi không chọn.phương án nay.
    - Phương án 2: dùng mạch công suất ( fet IRF540 điều khiển động cơ ) Nhưng tôi gặp vướng là dòng ngõ ra từ vi điều khiển qua diode, qua opto kích FET trên thì không đủ dòng điều khiển để kích opto điều khiển FET dẫn ,từ đó điều khiển đông cơ, ngoài ra do FET khá mắt ,nên phương án này tôi không chọn.
    - Phương án3 : tôi dùng hai con transitor C1815 và C2383,nối kiểu kích : con c1815 dẫn kích cho con c2383 dẫn để điều khiển động cơ bước hoạt động .vi con C1815 chịu được dòng ở lớn nhất là 150mA nhỏ không đủ điều khiển động cơ, nên tôi dùng C1815 kích con C2383 chịu dòng chân C 1A,đủ điều khiển động cơ. Ngoài ra mạch này thì đáp ứng khá nhanh ,điều khiển động cơ khá tốt, giá thành khá rẽ.nên tôi chọn phương án này.

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

    - Mạch nguyên lý này tôi thiết kế gồm 3 modun:
    + modun : nút nhấn
    [IMG]
    - Nút nhấn nối port 1 của vi điều khiển
    - Nút nhấn được treo ở mức cao .khi nhấn sẽ tác động mức thấp vào vi điều khiển , điều khiển từng chức năng.
    + modun : nguồn ,reset, khối tạo dao động vi điều khiển
    [IMG]
    + modun : điều khiển động cơ bước
    [IMG]

    + Mạch layout :
    [IMG]

    5. Lưu đồ giải thuật chương trình điều khiển động cơ bước :
    [IMG]

    + Code chương trình hoạt động :
    ORG 00H
    start equ p1.0
    fullthuan equ p1.1
    fullnghich equ p1.2
    haftthuan equ p1.3
    haftnghich equ p1.4

    STEPPER equ p2

    MAIN:
    mov A,#00000000B ; NAP TRẠNG THÁI ĐẦU ĐỘNG CƠ BƯỚC
    mov STEPPER,A ; XUẤT RA ĐỘNG CƠ
    mov R0,#0 ; GẮN BIẾN KIỂM TRA
    ;================================================================

    KIEMTRAPHIM:
    ;-------------------
    nutstart: mov r5,#50
    a0: jb start,nutso1
    djnz r5,a0
    mov R0,#1

    nutso1: mov r5,#100
    a1: jb fullthuan,nutso2
    djnz r5,a1
    mov R0,#2
    ;-------------------
    nutso2: mov r5,#100
    a2: jb fullnghich,nutso3
    djnz r5,a2

    mov R0,#3

    ;-------------------
    nutso3: mov r5,#100
    a3: jb haftthuan ,nutso4
    djnz r5,a3
    mov R0,#4

    ;-------------------
    nutso4: mov r5,#100
    a4: jb haftnghich,sosanh
    djnz r5,a4
    mov R0,#5

    ;================================================================
    sosanh:
    ;-------------------------- chương trình bắt đầu ---------------------------
    batdau:
    cjne R0,#1,quayfullthuan ;
    mov A,#00000011B
    acall quay
    mov R0,#0

    ;-------------------------chương trình quay full-step thuận--------------------------
    quayfullthuan:

    cjne R0,#2,quayfullnghich
    rl A
    rl A
    acall quay
    mov R0,#0
    ;-------------------------chương trình quay full-step nghịch--------------------------
    quayfullnghich:

    cjne R0,#3,quayhaftthuan
    rr A
    rr A
    acall quay
    mov R0,#0
    ;-------------------------chương trình quay half-step thuận--------------------------
    quayhaftthuan:

    cjne R0,#4,quayhaftnghich
    rl A
    acall quay
    mov R0,#0



    ;-------------------------chương trình quay half-step nghịch--------------------------

    quayhaftnghich:

    cjne R0,#5,quit
    rr A
    acall quay
    mov R0,#0
    ;-------------------
    quit:
    ajmp KIEMTRAPHIM
    ret
    ;================================================================
    quay:
    acall delay
    mov STEPPER,A
    PUSH ACC
    call delay10ms
    POP ACC
    ret

    ;================================================================
    ;****** TAO THOI GIAN TRE KHOANG 200mS - TIME 0 - MODE1

    delay:
    push 00H
    mov R0,#2
    mov TMOD,#01H
    loop2:
    mov TH0,#HIGH(-50000)
    mov TL0,#LOW(-50000)
    setb TR0
    jnb TF0,$
    clr TR0
    clr TF0
    djnz R0,loop2
    pop 00H
    ret
    ;=================THOI GIAN DELAY DU DE TAT TRANG THAI LED TRUOC ;================================DO ============================

    delay10ms:
    mov R5,#100
    del1: mov R6,#048
    djnz R6,$
    djnz R5,del1
    ret
    end


    6. Hình ảnh mà tôi thi công đạt được :
    + Hình mạch điều khiển tôi đã làm :
    [IMG]

    + Kết nối điều khiển động cơ bước:
    [IMG]

    --Hình ảnh trên là mạch tôi đã thi công -----
    7.
    + Kết quả đạt được :
    - Tôi đã thi công hoàn thành mô hình mạch điều khiển động cơ bước trên ,đáp ứng đúng yêu cầu đề ra.
    - Chương trình hoạt động cho vi điều khiển trên, khá ổn định.

    + Hạn chế của đề tài :
    - Đề tài trên chỉ hoạt động ở mức điều khiển động cơ bước ở chế độ là : Full -step thuận,Full -step nghịch, Half-step thuận, Half-step nghịch
    - Mạch điều khiển chỉ đáp ứng điều khiển động cơ dòng tối đa là 1A.
    Mạch này tôi chỉ dùng vi điều khiển 89S52 để điều khiển động cơ bước.

    + Hướng phát triển đề tài :
    Với đề tài trên,thi tôi có những hướng phát triển sau :
    - A. Dùng mạch vi điều khiển kết nôi với mạch công suất ( chẵng hạn : dùng FET IRF 540,...) để điều khiển động cơ lớn hơn ,tốc độ đáp ứng nhanh hơn,mạch hơn.
    - B. Giao tiếp vi điều khiển với máy tính qua cổng COM hay cổng LPT
    - C. Dùng ngôn ngữ cấp cao để lập trình như ( C,C++,Bascom ,..).

    8. Bạn dowload chương trình hoạt động,bài báo cáo ,..ở đây :
    + Bạn có thể dowload file .ASM và file .HEX của chường trình trên ở đây :
    http://www.mediafire.com/file/f1qj5kkytmu/CHUONG TRINH HOAT DONG.rar
    file mạch điện :
    http://www.mediafire.com/?ewcsdmtv2en

    + Powerpoint báo cáo giữa kì của tôi :
    http://www.mediafire.com/file/gjwmmdytnyh/...VIDIEUKHIEN.rar

    9. Nguồn tài liệu tham khảo :
    - www.ngohaibac.net
    - ebook : giáo trình họ vi điều khiển 8051
    - www.8052.com
    - www.dientuvietnam.net/forums
    - http://www.alldatasheet.com/view.jsp?Searc...383&q=C2383
    http://www.alldatasheet.com/view.jsp?Searc...815&q=C1815
    http://www.alldatasheet.com/view.jsp?Searc...3&q=ULN2803
  44. lxtinh Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    1:HỌ VÀ TÊN: LÊ XUÂN TÍNH
    MSSV:05111103
    LỚP: 051112B
    EMAIL: lxtinh05@yahoo.com
    ĐT: 01267624500
    Tên đề tài:quét led ma trận sử vi điều khiển 89s52
    Yêu cầu:hiển thị kí tự và chạy một số hiệu ứng
    2:Các phương án:
    -sử dụng thanh ghi dịch quét cột, xuất mã chữ ra hàng(được nối chung)
    nhược điêm:số lượng led ít (lớn nhất 10 con)
    ưu điểm:chương trình đơn gian...
    -sử dụng thanh ghi dịch xuất mã chữ ra hàng, quét cột(được nối chung)
    3:Sơ đồ mạch nguyên lý:
    sử dụng thanh ghi dịch tpic6b595
    capture:
    display:
    [IMG]
    control:
    [IMG]
    layout:
    [IMG]
    4:lưu đồ giải thuật:
    chữ cdt chạy từ phải qua trái:
    [IMG]
    đếm số:
    [IMG]
    5:chương trình
    dser_in bit p2.4
    dsrck bit p2.5
    drck bit p2.6
    resetc bit p2.7
    ;////////////////////////dem tu 0->9//////////////////////
    dv equ 20h
    chuc equ 21h
    dcdv equ 24h
    dcchuc equ 25h

    org 00h
    jmp main
    org 01bh
    jmp ngat
    org 30h

    main:
    mov tmod,#10h
    setb ea
    setb et1
    mov th1,#high(-50000)
    mov tl1,#low(-50000)
    setb tr1
    mov r7,#00h
    mov 20h,#00h
    mov 21h,#00h
    clr dsrck
    clr drck
    clr resetc
    lcall delay
    setb resetc

    clr resetc
    lcall delay
    setb resetc

    td2:


    lcall tang
    mov r4,#20

    xoay20lan1:

    mov dptr,#600h
    mov r2,#32
    setb dser_in

    xoay32bit1:

    mov a,r2
    cjne a,#24,htd
    mov a,24h
    add a,#7
    mov dpl,a
    lcall quet2

    htd:

    mov a,r2
    cjne a,#14,htc
    mov a,25h
    add a,#7
    mov dpl,a
    lcall quet2

    htc:

    setb dsrck
    clr dsrck
    mov p3,#00h
    setb drck
    clr drck
    lcall delay
    clr dser_in
    djnz r2,xoay32bit1
    djnz r4,xoay20lan1
    mov a,chuc
    cjne a,#1,td2
    clr tr1
    jmp hu

    quet2:hien thi so tai dia chi duoc nap vao dpl
    mov r6,#8

    x111:
    setb dsrck
    clr dsrck
    mov p3,#00h
    setb drck
    clr drck
    mov a,#00h
    movc a,@a+dptr
    mov p3,a
    lcall delay
    mov a,dpl
    dec a
    mov dpl,a
    dec r2
    djnz r6,x111
    ret

    ngat:sau 1s tang hang dv len 1

    push 0e0h
    clr tr1
    mov th1,#high(-50000)
    mov tl1,#low(-50000)
    inc r7
    mov p1,20h
    mov a,r7
    cjne a,#20,exit
    mov r7,#00h
    inc 20h
    exit:
    pop 0e0h
    setb tr1
    reti

    tang:;neu hang dv=10 thi hangdv=0 hang chuc tang1
    mov a,20h
    cjne a,#10,cd
    inc 21h
    mov 20h,#00h
    mov a,21h
    cjne a,#10,cd
    mov 21h,#0
    cd:
    mov b,#8
    mov a,21h
    mul ab
    mov 25h,a
    mov b,#8
    mov a,20h
    mul ab
    mov 24h,a
    ret

    hu:;////////////////////////////chay tu phai qua trai///////////////
    td3: mov dptr,#500h
    mov r4,#32
    x3: mov r5,#30h
    x2: setb dser_in
    mov r2,#32
    mov dpl,r4
    x1: setb dsrck
    clr dsrck
    mov p3,#00h
    setb drck
    clr drck
    mov a,#0
    movc a,@a+dptr
    mov p3,a
    lcall delay
    clr dser_in
    mov a,dpl
    dec a
    mov dpl,a
    djnz r2,x1
    djnz r5,x2
    inc r4
    cjne r4,#60h,x3
    clr resetc
    setb resetc


    ;/////////tu phai qua trai///////////////////
    mov dptr,#500h
    mov r4,#89
    x6: mov r5,#30h
    x5: setb dser_in
    mov r2,#32
    mov dpl,r4
    x4: setb dsrck
    clr dsrck
    mov p3,#00h
    setb drck
    clr drck
    mov a,#0
    movc a,@a+dptr
    mov p3,a
    lcall delay
    clr dser_in
    mov a,dpl
    dec a
    mov dpl,a
    djnz r2,x4
    djnz r5,x5
    dec r4
    cjne r4,#32,x6
    clr resetc
    setb resetc

    ;//////////////sang tu tren xuong//////////////////////////
    mov r0,#1
    mov 23h,#5
    x9: mov 22h,#20
    x8:
    mov dptr,#500h
    mov r2,#32
    mov dpl,#58
    setb dser_in
    x7: setb dsrck
    clr dsrck

    mov a,#00h
    movc a,@a+dptr
    mov 21h,a

    clr c
    mov 20h,r0
    mov r1,#00h

    s1: mov a,21h; xoay a voi r1 r0 lan
    rlc a
    mov 21h,a
    mov a,r1
    rlc a
    mov r1,a
    djnz 20h,s1
    mov p3,#00h

    setb drck
    clr drck

    mov p3,r1

    lcall delay

    clr dser_in

    mov a,dpl
    dec a
    mov dpl,a

    djnz r2,x7


    djnz 22h,x8
    inc r0
    cjne r0,#17,x9
    mov r0,#1
    djnz 23h,x9

    ;//////////////////sang lan luot t>d>c/////////////////////////////

    mov 20h,#1
    mov 21h,#1
    mov 22h,#1
    mov r5,#5
    td1:
    mov r4,#20
    xoay20lan:
    mov dptr,#500h
    mov r2,#32
    setb dser_in
    xoay32bit:

    mov a,r2
    cjne a,20h,hienthichut
    mov dpl,#55
    lcall quet1

    hienthichut:
    mov a,20h
    cjne a,#28,hienthichud
    mov a,r2
    cjne a,21h,hienthichud
    mov dpl,#47
    lcall quet1

    hienthichud:

    mov a,21h
    cjne a,#20,hienthichuc
    mov a,r2
    cjne a,22h,hienthichuc
    mov dpl,#39

    hienthichuc:
    cjne r2,#0,jump
    jmp jump1
    jump:
    setb dsrck
    clr dsrck
    mov p3,#00h
    setb drck
    clr drck
    lcall delay
    clr dser_in

    djnz r2,xoay32bit
    jump1:
    djnz r4,xoay20lan

    ;tang 20h len 28 thi dung roi tang 21h len 20 thi dung roi tang 22h len 12 thi dung//
    mov a,20h
    cjne a,#28,inc0
    jmp notinc0
    inc0:
    inc 20h
    jmp td1
    notinc0:
    mov a,21h
    cjne a,#20,inc1
    jmp notinc1
    inc1:
    inc 21h
    jmp td1
    notinc1:
    mov a,22h
    cjne a,#12,inc2
    jmp notinc2
    inc2:
    inc 22h
    jmp td1
    notinc2:
    ;////
    djnz r5,td1
    jmp hu1


    quet1:
    mov r6,#8

    x11:
    setb dsrck
    clr dsrck
    mov p3,#00h
    setb drck
    clr drck
    mov a,#00h
    movc a,@a+dptr
    mov p3,a
    lcall delay
    mov a,dpl
    dec a
    mov dpl,a
    djnz r2,exit1
    ret
    exit1:
    djnz r6,x11
    ret

    ;///////////////sangdontu tren xuong/////////////////////
    hu1:
    mov r5,#1
    mov r1,#00h
    mov 24h,#8

    x101: mov r4,#1
    x91: mov r3,#20
    x81: mov r0,60h
    mov dptr,#500h
    mov r2,#32
    mov dpl,#58
    setb dser_in

    x71: setb dsrck
    clr dsrck

    mov a,#00h
    movc a,@a+dptr
    anl a,r1
    mov 21h,a
    mov 25h,r5; lay bit thu r5
    mov 20h,r4
    mov a,#00h
    movc a,@a+dptr
    z31:
    rrc a
    djnz 25h,z31
    ;(lay 1bit vao co c)
    mov a,#00h
    z21: rrc a
    djnz 20h,z21
    mov 22h,a
    ;(xoay r4 lan)
    ;xuat ra

    mov a,22h
    orl a,21h
    mov p3,#00h
    setb drck
    clr drck
    mov p3,a
    lcall delay
    clr dser_in
    mov a,dpl
    dec a
    mov dpl,a
    djnz r2,x71
    djnz r3,x81
    mov a,24h
    cjne a,#1,z41
    jmp z51
    z41: inc r4
    mov a,r4
    cjne a,24h,x91
    ;//////////////////////////////
    z51: setb c ;khi r4=0 hang thi tang 1hang va giam so lan xoay di 1
    mov a,r1
    rlc a
    mov r1,a
    inc r5 ;lay bit thu r5 tang
    djnz 24h,x101 ;giam so lan xoay di 1


    ;///////////////sang don tu duoi len///////////////////
    mov r5,#1
    mov r1,#00h
    mov 24h,#8

    x102: mov r4,#1
    x92: mov r3,#20
    x82: mov r0,60h
    mov dptr,#500h
    mov r2,#32
    mov dpl,#58
    setb dser_in

    x72: setb dsrck
    clr dsrck

    mov a,#00h
    movc a,@a+dptr
    anl a,r1
    mov 21h,a
    ;////////////////////////////////////////////////////////////
    mov 25h,r5; lay bit thu r5
    mov 20h,r4
    mov a,#00h
    movc a,@a+dptr
    z32:
    rlc a
    djnz 25h,z32
    ;(lay 1bit vao co c)
    mov a,#00h
    z22: rlc a
    djnz 20h,z22
    mov 22h,a
    ;(xoay r4 lan)
    ;///////xuat ra///////////////////////////////////

    mov a,22h
    orl a,21h
    mov p3,#00h
    setb drck
    clr drck
    mov p3,a
    lcall delay
    clr dser_in
    mov a,dpl
    dec a
    mov dpl,a
    djnz r2,x72
    djnz r3,x82
    mov a,24h
    cjne a,#1,z42
    jmp z52
    z42: inc r4
    mov a,r4
    cjne a,24h,x92
    ;///////////////////////////////////////
    z52: setb c ;khi r4=0 hang thi tang 1hang va giam so lan xoay di 1
    mov a,r1
    rrc a
    mov r1,a
    inc r5 ;lay bit thu r5 tang
    djnz 24h,x102 ;giam so lan xoay di 1
    jmp td3



    delay: mov 70h,#50
    djnz 70h,$
    ret
    org 500h
    db 0,0,0,0,0,0,0,0
    db 0,0,0,0,0,0,0,0
    db 0,0,0,0,0,0,0,0
    db 0,0,0,0,0,0,0,0
    db 7eh,0ffh,0ffh,0c3h,0e7h,0e7h,66h,00h
    db 0ffh,0ffh,0dbh,0c3h,0ffh,0ffh,7eh,00h
    db 07h,03h,0ffh,0ffh,0ffh,03h,07h,00h
    db 0,0,0,0,0,0,0,0
    db 0,0,0,0,0,0,0,0
    db 0,0,0,0,0,0,0,0
    db 0,0,0,0,0,0,0,0
    db 0,0,0,0,0,0,0,0
    db 0,0,0,0,0,0,0,0
    db 0,0,0,0,0,0,0,0

    org 600h ;so 0
    db 0,0,7eh,0ffh,0c3h,0ffh,7Eh,0
    org 608h ;so 1
    db 0,0h,0cch,0feh,0ffh,0ffh,0c0h,0
    org 610h ;so2
    db 0,0c6h,0e3h,0f3h,0fbh,0dfh,0ceh,0
    org 618h ;so 3
    db 0,67h,0e3h,0cbh,0dfh,0ffh,73h,0
    org 620h ;so4
    db 0,70h,78h,7ch,6eh,0f7h,0f3h,0
    org 628h ;so 5
    db 0,0dfh,0dfh,0dbh,0dbh,0fbh,073h,0
    org 630h ;so6
    db 0,7eh,0ffh,0dbh,0dbh,0fbh,073h,0
    org 638h ;so7
    db 0,0c7h,0e3h,0e3h,07fh,03fh,01fh,0
    org 640h ;so8
    db 0,076h,0ffh,0dbh,0dbh,0ffh,076h,0
    org 648h ;so9
    db 0,0ceh,0dfh,0dbh,0dbh,0ffh,07eh,0
    end
    6:hình ảnh:
    display:
    [IMG]
    control:
    [IMG]
    phim:
    http://www.mediafire.com/?zowmzgzjhzh
    7:kết quả đạt được
    mạch chạy ổn định, hiển thị được một số hiệu ứng
    8:download
    code:
    http://www.2shared.com/file/4650271/fadc0566/Untitled.html
    mach:
    http://www.mediafire.com/?zowmzgzjhzh
    9:tài liệu tham khảo
  45. huynhcaovan 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 CAO VÂN
    MSSV : 05111118
    LỚP : 051112B
    EMAIL : huynhcaovan123@yahoo.com.vn
    ĐT : 01684569455


    2.TÊN ĐỀ TÀI:
    THIẾT KẾ ĐỒNG HỒ BẤM GIỜ

    Mô tả: thiết kế đồng hồ bấm giờ trong thể thao với các chế độ start/pause; reset

    3.Phương án lựa chọn:
    Sử dụng phương pháp quét led 7 đoạn để tiết kệm port
    chương trình hiển thị và quét led nằm trong chương trình ngắt
    chương trình kiểm tra nút nhấn trong chương trình ngắt

    4.Sơ đồ mạch nguyên lý:
    -Mạch kit:

    [IMG]

    +mạch in:
    [IMG]
    -mạch hiển thị
    +mạch nguyên lý:

    [IMG]

    +mạch in:
    [IMG]


    5.Lưu đồ giải thuật:

    [IMG]



    ;;;;;;;THIET KE DONG HO BAM GIO;;;;;;;;;;;;;;;
    ;;;HO TEN: HUYNH CAO VAN;;;;;;;;;;;;;;;;;;;;;;
    ;;;MSSS : 05111118;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;;LOP : 051112B;;;;;;;;;;;;;;;;;;;;;;;;;;;;


    ;;;;;;;;;;;KHAI BAO DIA CHI CAC BIEN;;;;;;;;;;
    ;;;;;;;;;;;VA CAC NUT NHAN;;;;;;;;;;;;;;;;;;;;

    CH1 EQU 50H;DIA CHI CHUA BIEN ÐEM ÐÃ GIAI MA LED7ÐOAN
    CH2 EQU 52H
    CH3 EQU 54H
    CH4 EQU 56H
    CH5 EQU 58H
    CH6 EQU 5AH
    CH7 EQU 5CH
    CH8 EQU 5EH

    SAO EQU 60H;DIA CHI CAC BIEN ÐEM
    CSAO EQU 61H
    GIAY EQU 62H
    CGIAY EQU 63H
    PHUT EQU 64H
    CPHUT EQU 65H

    START BIT P1.0;CAC NUT NHAN START/PAUSE
    RESET BIT P1.1;NUT NHAN RESET


    ORG 0000H
    SJMP MAIN
    ORG 000BH
    AJMP T0ISR

    ORG 0030H

    ;;;;;;;;;;CHUONG TRINH CHINH;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    MAIN:

    MOV R7,#0FFH;GIA TRI BAN DAU CUA R7
    MOV DPTR,#7SEGCODE

    MOV 51H,#11111110B;MA QUET LED
    MOV 53H,#11111101B
    MOV 55H,#11111011B
    MOV 57H,#11110111B
    MOV 59H,#11101111B
    MOV 5BH,#11011111B
    MOV 5DH,#10111111B
    MOV 5FH,#01111111B

    MOV TMOD,#12H;KHOI TAO TIMER0 CHE ÐO 2 VA TIMER1 CHE DO 1
    MOV TH0,#-250;NAP GIA TRI ÐEM CHO TH0
    SETB TR0
    MOV IE,#82H;CHO PHEP TIMER0 NGAT
    MOV R1,#25
    MOV R0,#CH1 ;#CH1 TUONG UNG VOI O NHO 50H DO TA KHAI BAO O TREN


    ;;;;;;KHOI TAO CAC BIEN ÐEM=00;;;;;;;;;;;;;;;;;;;
    MOV CH1,#0
    MOV CH2,#0
    MOV CH3,#10111111B ;ma cua dau gach ngang
    MOV CH4,#0
    MOV CH5,#0
    MOV CH6,#10111111B
    MOV CH7,#0
    MOV CH8,#0

    CPHUT0: MOV CPHUT,#0
    PHUT0: MOV PHUT,#0
    CGIAY0: MOV CGIAY, #0
    GIAY0: MOV GIAY, #0
    CSAO0: MOV CSAO, #0
    SAO0: MOV SAO, #0

    DEMLEN:
    CALL GIAIMA
    CJNE R7,#0H,DEMLEN

    CALL DELAY

    INC SAO
    MOV A,SAO
    CJNE A, #10, DEMLEN

    INC CSAO
    MOV A,CSAO
    CJNE A, #10, SAO0

    INC GIAY
    MOV A,GIAY
    CJNE A, #10, CSAO0

    INC CGIAY
    MOV A,CGIAY
    CJNE A, #6, GIAY0

    INC PHUT
    MOV A,PHUT
    CJNE A, #10, CGIAY0

    INC CPHUT
    MOV A,CPHUT
    CJNE A, #6, PHUT0

    SJMP CPHUT0


    ;;;;;;CHUONG TRINH NGAT CUA TIMER0;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    T0ISR:
    DJNZ R1,ENDT0ISR
    ;MOV A,P2
    ;ANL A,#00000000B
    MOV P2,#11111111B
    MOV R1,#25
    MOV P0,@R0
    INC R0
    ;MOV A,@R0
    ;ORL A,P2
    MOV P2,@R0
    INC R0
    CJNE R0,#60H,ENDT0ISR
    MOV R0,#CH1

    ;;;;;KIEM TRA NUT NHAN TRONG NGAT;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    MOV R4,#50
    STAR:
    JB START,RES
    DJNZ R4,STAR
    STAR1:
    MOV R4,#50
    STAR2:
    JNB START,STAR1
    DJNZ R4,STAR2
    PUSH ACC
    MOV A,R7
    CPL A
    MOV R7,A
    POP ACC
    RES:
    JB RESET,ENDT0ISR
    MOV R7,#0FFH

    MOV CPHUT,#0
    MOV PHUT,#0
    MOV CGIAY,#0
    MOV GIAY,#0
    MOV CSAO,#0
    MOV SAO,#0

    ENDT0ISR:

    RETI


    ;;;;;;;CHUONG TRINH GIAI MA LED 7 ÐOAN;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    GIAIMA:
    MOV A,CPHUT
    MOVC A,@A+DPTR
    MOV CH1,A

    MOV A,PHUT
    MOVC A,@A+DPTR
    MOV CH2,A

    MOV A,CGIAY
    MOVC A,@A+DPTR
    MOV CH4,A

    MOV A,GIAY
    MOVC A,@A+DPTR
    MOV CH5,A

    MOV A,CSAO
    MOVC A,@A+DPTR
    MOV CH7,A

    MOV A,SAO
    MOVC A,@A+DPTR
    MOV CH8,A
    RET


    ;;;;;CHUONG TRINH DELAY ÐE TANG BIEN ÐEM;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    DELAY:
    MOV R3,#5
    DEL:
    MOV TH1,#HIGH(-500)
    MOV TL1,#LOW(-500)
    SETB TR1
    JNB TF1,$
    CLR TR1
    CLR TF1
    DJNZ R3,DEL
    RET

    ;;;;;;;;MA LED 7 ÐOAN;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    7SEGCODE:
    DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80H, 90H
    END

    6.video clip

    http://ifile.it/azn7hsk

    7.kết quả đạt đươc

    -mạch chạy led sáng đẹp,nhờ thơi gian quét phù hợp
    -sử dụng chống nhiễu bằng phần mềm
    -sử dụng đươc các nút nhấn start/pause ;reset

    8.Download: code chương trình

    http://ifile.it/wcypfde

    9.Tài liệu tham khảo:
    -sách vdk 8051 của TỐNG VĂN ON
    -Các ví dụ mẫu của thầy



    svth: HUỲNH CAO VÂN
  46. LongThan315 New Member

    Số bài viết: 9
    Đã được thích: 0
    Điểm thành tích: 0
    <div class='quotetop'>QUOTE (5111103 @ Jan 12 2009, 10:32 AM) <{POST_SNAPBACK}></div><div class='quotemain'>post file mach in va mach nguyen ly,de anh em tham khao,,,, [IMG][/b][/quote]

    Có trong link tổng hợp đấy thôi. Dù sao cũng thêm link. [IMG]
    ENJOY! [IMG]
  47. lehungduong87 Guest

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

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    Họ tên: Phạm Hoàng Giang
    MSSV: 05111022
    Tên đề tài : Ứng dụng vi điều khiển 89S52 hiển thị trên led 7 đoạn
    Mô tả: mạch gồm ba chế độ hoạt động:
    Chế độ một :Đồng hồ
    Chê độ hai :Đếm tỉ số trận đấu bóng đá
    Chế độ ba :Đếm lên xuống bôn số
    Sơ đồ nguyên lí, file powerpoint, mã chuơng trình
    chuong trình va mã
    Hình ảnh của mach:
    Chê độ đồng hồ
    [IMG]
    Chế độ đếm tỉ số
    [IMG]
  49. ngvanlinhqn Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
  50. 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
    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]
    [IMG]
    [IMG]
    [IMG]
    [IMG]
    mach 8 led 7 doan
    [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:
    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]

Chia sẻ trang này