Nguyên văn bởi 1991conga
Xem bài viết
Thông báo
Collapse
No announcement yet.
Led matran bằng ASM có nhiều bạn quang tâm..................
Collapse
X
-
Đây là code mới kết hợp 3 kiểu chạy các bạn ngâm cứu tiếp nhé
Code:;QUETLED hien thi gom 80 cot va 8 hang SI BIT P3.0 ;pin 14 74HC595 SCK BIT P3.1 ;pin 11 74HC595 RCK BIT P3.2 ;pin 12 74HC595 ;******************************************* CHONHANG EQU P2 ;CHONHANG PORT P2 ;******************************************* CON_TRO EQU R0 DIA_CHI EQU R1 SO_COT EQU R2 TOC_DO EQU R3 DICHBIT EQU 08H ;hang 0>7 p2=00H>>07H ;**************************************** ;************BAT DAU CHUONG TRINH ******** ;****************************************** ORG 0000H LJMP MAIN ; ORG 0003H ;LJMP EX0ISR ; ORG 000BH ;Dia chi vector bo dinh thoi 0 ; LJMP T0ISR ; ORG 001BH ;Dia chi vector bo dinh thoi 1 ; LJMP T1ISR ;tao am thanh bipbip ; ORG 002BH ;Dia chi vector bo dinh thoi 2 ;*************************************** ORG 0030H ;************************** MAIN : MOV SP,#60H MOV TMOD,#11H;11H ;Ca 2 bo dinh thoi che do 1 MOV IE,#8AH ;8A;cho phep ngat do cac bo dinh thoi MOV DPTR,#CONGMINH ;******************************************************* ;*************CH/TR Chinh ***************************** PLAY: ;*************************** MOV DIA_CHI,#-80 DICH_TRAI:MOV TOC_DO,#3 LRAM: LCALL LOADLENRAM LCALL QUET8HANG DJNZ TOC_DO,EX_01 MOV TOC_DO,#3 INC DIA_CHI CJNE R1,#80,EX_01 LJMP DICH_PHAI EX_01: LJMP LRAM ;*************************** DICH_PHAI: MOV DIA_CHI,#80 dich_phai1: MOV TOC_DO,#3 LRAM_P: LCALL LOADLENRAM LCALL QUET8HANG DJNZ TOC_DO,EX_02 MOV TOC_DO,#3 DEC DIA_CHI CJNE DIA_CHI,#-80,EX_02 LJMP DICH_LEN EX_02: LJMP LRAM_P ;************************** DICH_LEN:mov r6,#100 MOV DICHBIT,#7 MOV TOC_DO,#3 LRAM_L: LCALL DICH_RAM_LEN LCALL QUET8HANG MOV A,DICHBIT CJNE A,#0,EX_04;khi DICHBIT=0 thì dung lai djnz r6,EX_05 mov DIA_CHI,#-9 ljmp dich_trai ; ljmp dich_phai1 ; LJMP LRAM_L EX_04: DJNZ TOC_DO,EX_05 MOV TOC_DO,#3 DEC DICHBIT EX_05: LJMP LRAM_L LJMP PLAY ;************************************************ ;************************************************ ;**********CH/TR con ********************** DICH_RAM_LEN: PUSH 00H PUSH 01H PUSH 02H MOV CON_TRO,#80H MOV DIA_CHI,#-9;addr giua bang=(80-62)/2 MOV SO_COT,#80 ;80cot LAPL_02: MOV A,DIA_CHI MOVC A,@A+DPTR MOV R5,DICHBIT CJNE R5,#0,Q_T1 LJMP KHDICH Q_T1: RL A ;Chay chu duoi len Q_T: CLR C;,muon chay xuong thay bang RR A RRC A ;Chay chu duoi len , DJNZ R5,Q_T;muon chay xuong thay bang RRC A KHDICH: MOV @CON_TRO,A INC CON_TRO INC DIA_CHI MOV A,DIA_CHI DJNZ SO_COT,LAPL_02 POP 00H POP 01H POP 02H RET ;********************************************** LOADLENRAM: PUSH 00H PUSH 01H PUSH 02H MOV CON_TRO,#80H ;Dia chi dau MOV A,DIA_CHI MOV SO_COT,#80 ;80cot LAPL_01: MOV A,DIA_CHI MOVC A, @A+DPTR ;lay du lieu MOV @CON_TRO,A ;ghi vao ram INC CON_TRO ;tang con to dia chi INC DIA_CHI ;tang dia chi trung gian DJNZ SO_COT,LAPL_01;du so cot chua POP 00H POP 01H POP 02H RET ;*********************************************** QUET8HANG: PUSH 07H PUSH 00H MOV R7,#7 ;chon hang LAPHANG: MOV CON_TRO,#80H CLR RCK LAPCOT: CLR SCK MOV A,@CON_TRO CLR C RRC A MOV @CON_TRO,A SETB SCK MOV SI,C INC CON_TRO CJNE CON_TRO,#0D1H,LAPCOT SETB RCK MOV CHONHANG,R7;Sang hang LCALL DELAYLED MOV CHONHANG,#8 DEC R7 CJNE R7,#-1,LAPHANG POP 00H POP 07H RET ;******************************************* ;******************************* DELAYLED: MOV 09H,#8 D1: MOV 10H,#250 DJNZ 10H,$ DJNZ 09H,D1 RET ;***************************;*********** ;************* CONGMINH: DB 7CH,0FEH,82H,82H,0CEH,4CH,0H,5CH,0BEH,0A2H,0BEH,5CH,0H,3EH,3EH,20H,3EH,1EH,0H,19H,3DH,25H,3FH,3EH,0H,0H DB 0FEH,0FEH,60H,30H,60H,0FEH,0FEH,0H,0BCH,0BEH,4H,0H,3EH,3EH,20H,3EH,1EH,0H,0FEH,0FEH,20H,3EH,1EH,0H,0H DB 0FEH,0FEH,90H,90H,80H,64H,0F6H,92H,0DEH,4CH,0H ;************* END
Comment
-
Nguyên văn bởi CONGMINHfs Xem bài viếtBạn xem lại #1 cách mà mình thiết kế mạch là mạch thật luôn đó và khả năng mở rộng của nó,cái này bạn muốn 16 hang thì chỉ cần thêm 1em 74hc138 và tốn thêm 1 chân vdk nữa là ok rồi,tất nhiên phải sữa code lại là quét 8h thành 16hàng hay 24 hàng thì tùy bạn kể cả led 2 màu luôn..
Comment
-
Nguyên văn bởi CONGMINHfs Xem bài viếtTrong code có đó bạn vì ngẩu hứng nên mình chọn 80 byte ram từ 9EH đến EFH có phải là 80 byte không ,thực chất thì từ 9EH đến EEH nhưng vì lệnh so sánh nên phải là EFH
hỡi anh em còn ai thắc mắc gì nữa không ta....!!!!
Comment
-
Nguyên văn bởi CONGMINHfs Xem bài viếthỡi anh em còn ai thắc mắc gì nữa không ta....!!!!
Comment
-
Nguyên văn bởi hongphuong98 Xem bài viếtBạn ơi,mỗi khi muốn đổi nội dung phải lôi con atmel 8951 ra nạp lại code mất công quá,làm thế nào để nhập nội dung vào ô nhớ từ máy tính?cám ơn bạn nhé.
Comment
-
Nguyên văn bởi PDEL Xem bài viếtBác qua bền này nè hướng dẩn chi tiết lắm Hướng dẫn giao tiếp máy tính từ A đến Z(Hình ảnh)
Dùng max 232 giao tiếp 89xx với máy tính nạp mã ácii tôi không biết bạn ạ!
Comment
-
Nguyên văn bởi 1991conga Xem bài viếtý em là dùng kon 595 để đưa DL ra hàng và quét cột cơ chứ ko phải kon 138. kon 138 thì em làm đc rồi
cho hàng thì bây giờ xuất 2 byte
chúc thành công !...
Comment
-
Nguyên văn bởi Ck33spkt Xem bài viếtGiờ em mới nhớ ra cái để hỏi: Ở trên em thấy bác chạy chữ "Công Minh FS", chữ này tạo như thế nào vậy bác? Mình cũng phải kẻ các ô tròn kích thước 8x80 như cái matrix của mình rồi tô chữ vào đó, xong dựa vào đó để dò ra code hả bác?
Comment
-
bác Congminh cho em hỏi 2 vấn đề cái :
- bác đặt biến DIACHI=#-80 là nghĩa thế nào nhỉ ?
- để quét led lần lượt như vậy thì phải có một chương trình xử lý những đoạn mà có những cột không sáng ( kiểu như bác quét chữ CONGMINH thì đầu tiên là 32 cột tắt,sau đó là 31 cột tắt và 1 cột sáng, sau đó tiếp là 30 cột tắt và 2 cột sáng theo chữ mình quy định trong mã, cứ tiếp như vậy, đến 0 cột tắt và 32 cột sáng theo chữ trong bảng mã matrix, và sau đó là cứ dịch bình thường ). bác có thuật toán nào xử lý vấn đề đó không ? (em thì chỉ biết có hai cách là : 1, nạp thêm vào ROM những mã matrix; 2, viết một chương trình con để xử lý khoảng trắng đó- cái này hơi rắc rối), em xem trong code của bác không thấy (à em quên, bác code quét theo hàng, nhưng em muốn quét theo cột thì xử lý xao nhỉ ?)
cảm ơn bác.
Comment
-
Nguyên văn bởi huuthobka Xem bài viếtbác Congminh cho em hỏi 2 vấn đề cái :
- bác đặt biến DIACHI=#-80 là nghĩa thế nào nhỉ ?
- để quét led lần lượt như vậy thì phải có một chương trình xử lý những đoạn mà có những cột không sáng ( kiểu như bác quét chữ CONGMINH thì đầu tiên là 32 cột tắt,sau đó là 31 cột tắt và 1 cột sáng, sau đó tiếp là 30 cột tắt và 2 cột sáng theo chữ mình quy định trong mã, cứ tiếp như vậy, đến 0 cột tắt và 32 cột sáng theo chữ trong bảng mã matrix, và sau đó là cứ dịch bình thường ). bác có thuật toán nào xử lý vấn đề đó không ? (em thì chỉ biết có hai cách là : 1, nạp thêm vào ROM những mã matrix; 2, viết một chương trình con để xử lý khoảng trắng đó- cái này hơi rắc rối), em xem trong code của bác không thấy (à em quên, bác code quét theo hàng, nhưng em muốn quét theo cột thì xử lý xao nhỉ ?)
cảm ơn bác.
- bác đặt biến DIACHI=#-80 là nghĩa thế nào nhỉ ?
bản led của mình là 80 cột đúng không bạn,vậy từ trái qua phải cột đầu tiên mình chọn daichi là 0
thì tương ứng cột cuối bên trái là +80 và cột cuối bên phải là -80.
- để quét led lần lượt như vậy thì phải có một chương trình xử lý những đoạn mà có những cột không sáng ( kiểu như bác quét chữ CONGMINH thì đầu tiên là 32 cột tắt,sau đó là 31 cột tắt và 1 cột sáng, sau đó tiếp là 30 cột tắt và 2 cột sáng theo chữ mình quy định trong mã, cứ tiếp như vậy, đến 0 cột tắt và 32 cột sáng theo chữ trong bảng mã matrix, và sau đó là cứ dịch bình thường ). bác có thuật toán nào xử lý vấn đề đó không ? (em thì chỉ biết có hai cách là : 1, nạp thêm vào ROM những mã matrix; 2, viết một chương trình con để xử lý khoảng trắng đó
hoanh nghênh bạn đã hiểu được thấu đáo vấn đề cố giắng phát huy nhé
nếu bạn quét cột (với số cột không lớn) thì để đơn giản bạn nên tắt cột bằng mã trong bảng(mảng) luôn.
chúc thành công..!..
Comment
-
Nguyên văn bởi CONGMINHfs Xem bài viết- bác đặt biến DIACHI=#-80 là nghĩa thế nào nhỉ ?
bản led của mình là 80 cột đúng không bạn,vậy từ trái qua phải cột đầu tiên mình chọn daichi là 0
thì tương ứng cột cuối bên trái là +80 và cột cuối bên phải là -80.
giả xử DIA_CHI=-80 ; sau đó có lệnh mov a,dai_chi ; rồi có lệnh movc a,@a+dptr thì nó xẽ lấy mã hiển thị ở trước ô 9E (tức là 9EH-80=4EH );
Vậy tức là mình đã tốn mất 80byte RAM rồi phải không ? (tổng cộng mất 160byte RAM cho dữ liệu trắng ?).
Em hiểu có gì sai mong bác thông cảm,
hy vọng bác giúp đàn em thắc mắc này.
thank.
Comment
-
Nguyên văn bởi huuthobka Xem bài viếtVấn đề em băn khoăn chính là chỗ này,
giả xử DIA_CHI=-80 ; sau đó có lệnh mov a,dai_chi ; rồi có lệnh movc a,@a+dptr thì nó xẽ lấy mã hiển thị ở trước ô 9E (tức là 9EH-80=4EH );
Vậy tức là mình đã tốn mất 80byte RAM rồi phải không ? (tổng cộng mất 160byte RAM cho dữ liệu trắng ?)..
Đúng rồi đó bạn nhưng ta sử lí 160byte này như thế nào chứ đâu thể dùng phí thế
lúc nào có dịp nào đó cụ thể mình sẽ hướng dẫn bạn về cái khoản trắng này,chỉ có vài lệnh thôi.
gợi ý: dlieutrang......dulieu......dlieutrang .khi diachi nằm trong tầm dlieutrang thì dptr không lấy dulieu ở bảng mà lấy dulieu trắng cố định là 00h hoặc FFH....
Comment
Bài viết mới nhất
Collapse
-
bởi dinhthuong80Dạ, theo thí nghiệm của chủ thớt thì hiệu ứng đó không ảnh hưởng gì, vì nó được tính theo công thức lí thuyết hợp lí: lưu lượng khí bằng thể tích khí do quạt vận chuyển được trong một phút (chỉ ảnh hưởng, hợp lí khi máy đo...
-
Channel: Điện tử gia dụng
hôm nay, 09:15 -
-
bởi tuyennhanChắc sai rồi quạt thông gió công nghiệp sử dụng mô tơ 3 pha 750 w mà lưu lượng gió chỉ 1500 m3 / h ....
-
Channel: Điện tử gia dụng
hôm nay, 07:55 -
-
bởi nguyendinhvan
Khi cái cánh chuyển động, một phần không khí xoáy , quay ngược lại phía sau cánh. Không phải tất cả đề đẩy ra phía trước....-
Channel: Điện tử gia dụng
Hôm qua, 19:01 -
-
bởi dinhthuong80Xin cảm ơn tất cả sự góp ý giúp đỡ.
Từ diện tích bạn mèomướp vẽ và tính giúp:
S' ~ 3272mm2 => độ dày cánh:
d=S'/156 = 21*10^-3m
S = pi/4 [ D1^2 - D2^2 ] ~ 0.785*[38^2-7^2]cm2 ~ 1095cm2 = 0.1095m2
Lưu lượng gió tại số 2, quạt 3 cánh:...-
Channel: Điện tử gia dụng
Hôm qua, 15:24 -
-
bởi appongthoGiới thiệu về lỗi H-56 trên máy giặt Panasonic
https://appongtho.com/xoa-loi-h-56-may-giat-panasonic/
Máy giặt Panasonic là một trong những dòng máy giặt hiện đại với nhiều tính năng tiên tiến. Tuy nhiên, trong quá trình sử dụng, máy...-
Channel: Điện tử gia dụng
Hôm qua, 09:59 -
-
bởi nguyendinhvanCần bổ sung cột số liệu nhiệt độ động cơ sau khi hoạt động 60 phút....
-
Channel: Điện tử gia dụng
Hôm qua, 01:53 -
-
bởi nguyendinhvanHình dạng cánh quạt được thiết kế tùy thuộc vòng quay.
Vòng quay càng lớn, cánh càng nhỏ.
Làm thế, hiệu suất mới cao.
Cái chân vịt tàu thủy, cánh nó to như kiể tai voi, vì động cơ tagu thủy vòng quay thấp.
Cánh quạt...-
Channel: Điện tử gia dụng
Hôm qua, 01:47 -
-
bởi mèomướpDạ quạt của chị ấy cánh bằng sắt han rỉ nhìn cũ lắm nhưng hông thấy hỏng chạy chắc tốn điện lắm ạ nên tiết kiệm hông dám dùng. Trưa Hôm nào cụ trưởng bản cũng sang thăm là chị ấy đóng kín cửa lúc sau ra thấy người mồ hôi...
-
Channel: Điện tử gia dụng
31-03-2025, 20:10 -
-
Trả lời cho Thay đổi led 7 đoạn 8051 asmbởi davidcopyDưới đây là đoạn code Assembly cho vi điều khiển AT89C51, thực hiện chức năng như bạn yêu cầu:
Nhấn nút lần 1, LED 7 đoạn hiển thị số 05.
Nhấn nút lần 2, LED 7 đoạn hiển thị số 08.
Nhấn nút lần 3, LED...-
Channel: Vi điều khiển họ 8051
31-03-2025, 19:00 -
Comment