عمل آنالوگ به دیجیتال انجام شده و داده باینری آن در dptr ذخیره شده. حال برای نمایش آن بر روی LCD باید چه کار کرد؟ اگر دیتای ما اعشاری باشد چکار باید کرد؟ لطفا پاسخ در زبان اسمبلی باشد متشکرم
اطلاعیه
Collapse
No announcement yet.
سوال در مورد تبدیل آنالوگ به دیجیتال
Collapse
X
-
پاسخ : سوال در مورد تبدیل آنالوگ به دیجیتال
اگر شما میخواهید مقدار ثبات رو مستقیم نشون بدین عدد اعشاری نمیاد ولی اگر بخواهین روی مقدار ثبات dptr عمل تقسیم انجام بدین تا به اون رنج دلخواهتون برسه .. من خودم توی یه پروژه 8051 (البته آنالوگ به دیجیتال 8 بیتی بود) ..از دستور div a,b استفاده کردم که مقدار a را در b تقسیم میکند و خارج قسمت را در a و باقی مانده را در b میریزد و شما این 2 رو بصورت a.b روی lcd نشون میدین که یعنی مثلا خارج قسمت a=4 و باقی مانده b=3 باشد عدد روی lcd = 4.3 میشود ...اگر مشکلتون تقسیم کردن ثبات 16 بیتی است که خودتون باید یه ترفندی بزنید و اگر مشکل کار با lcd است که بگین تا کمکتون کنم...نمیدونم مشکلتون حل شده یا نه ...اگر نه که بگین مشکل دقیقا چیه تا بتونم کمکتون کنمدست هایی که کمک میکنند از دست هایی که دعا میکنند مقدس ترند....کوروش کبیر
-
پاسخ : سوال در مورد تبدیل آنالوگ به دیجیتال
سلام
یه عدد صحیح دودیی 16 بیتی رو میتونید با استفاده از الگوریتم زیر به یک رشته ASCII برای نمایش روی LCD تبدیل کنید. اعشاری رو نمیدونم! :mrgreen:
این الگوریتم برای اسمبلی 8051 هست و در اون ورودی R6 و R7 هستن (R6 بایت با ارزش) و خروجی در 32H-36H قرار میگیره.
;**********************************
WORD2STR:
MOV 36H,#0
MOV 35H,#0
MOV 34H,#0
MOV 33H,#0
MOV 32H,#0
MOV B,#10
MOV A,R7
DIV AB
MOV 36H,B
MOV B,#10
DIV AB
MOV 35H,B
MOV 34H,A
CJNE R6,#0H,HIGH_BYTE ; CHECK FOR HIGH BYTE
JMP ENDD
HIGH_BYTE:
MOV A,#6
ADD A,36H
MOV B,#10
DIV AB
MOV 36H,B
ADD A,#5
ADD A,35H
MOV B,#10
DIV AB
MOV 35H,B
ADD A,#2
ADD A,34H
MOV B,#10
DIV AB
MOV 34H,B
MOV R4,33H
CJNE R4,#00D,ADD_IT
SJMP CONTINUE
ADD_IT: ADD A,33H
CONTINUE:
MOV 33H,A
DJNZ R6,HIGH_BYTE
MOV B,#10
MOV A,33H
DIV AB
MOV 33H,B
MOV 32H,A
ENDD: ORL 32H,#30H
ORL 33H,#30H
ORL 34H,#30H
ORL 35H,#30H
ORL 36H,#30H
RET
;**********************************
دیدگاه
دیدگاه