توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : کمک در تغییر برنامه
سلام
برنامه زیر برا یه سون سگمنت 4تایی نوشته شده برا اینکه تبدیلش کنم به سون سگمنت های تکی چه تغیراتی باید بدهم؟
ممنون
$regfile = "M8def.dat"
$crystal = 1000000
Config Adc = Single , Prescaler = Auto
Config Pinc.5 = Input
Config Portb = Output : Portb = 0
Config Pinc.0 = Output : S1 Alias Portc.0 : Set S1
Config Pinc.1 = Output : S2 Alias Portc.1 : Set S2
Config Pinc.2 = Output : S3 Alias Portc.2 : Set S3
Dim A As Word
Dim Aa As Word
Dim I As Byte
Dim T As Word : T = 1
Dim W As Single
Declare Sub Show(byval A As Word)
Do
Start Adc
A = Getadc(5)
Stop Adc
If A < 205 Then
A = 0
Else
A = A - 205
W = A / 2.72
A = W
End If
Call Show(a)
Loop
End
'******************************* Show
Sub Show(a As Word)
Do
Incr I
Aa = A Mod 10
Select Case I
Case 1:
Portb = Lookup(aa , Annode_display)
Set S1 : Waitms T
Case 2:
Portb = Lookup(aa , Annode_display)
Set S2 : Waitms T
Case 3:
Portb = Lookup(aa , Annode_display)
Set S3 : Waitms T
End Select
Reset S1 : Reset S2 : Reset S3
A = A \ 10 : If A = 0 Then Exit Do
Loop
I = 0
Reset S1 : Reset S2 : Reset S3
End Sub
'_____________________________ For Annode Display
Annode_display:
Data 192 , 249 , 164 , 176 , 153 , 146 , 130 , 248 , 128 , 144
'CHAR 0 1 2 3 4 5 6 7 8 9
سلام مهندس
بعضی وقت ها نوشتن مجدد برنامه از تحلیل و ویرایش برنامه از پیش نوشته راحت تر و سریع تره..!!!:0013:
شما بگو میخای چیکار کنی ؟؟؟
این برنامه برای سگمنت 3تایی هست...!
منظور شما رو دقیقا متوجه نشدم ... میخواهید تنها یک رقم رو نمایش بدید یا چیز دیگه ایست قضیه ..!!!
برای نمایش کد ها هم میتونی گزینه code استفاده کنی :wink:
به این صورت :
$regfile = "M8def.dat"
$crystal = 1000000
Config Adc = Single , Prescaler = Auto
Config Pinc.5 = Input
Config Portb = Output : Portb = 0
Config Pinc.0 = Output : S1 Alias Portc.0 : Set S1
Config Pinc.1 = Output : S2 Alias Portc.1 : Set S2
Config Pinc.2 = Output : S3 Alias Portc.2 : Set S3
Dim A As Word
Dim Aa As Word
Dim I As Byte
Dim T As Word : T = 1
Dim W As Single
Declare Sub Show(byval A As Word)
Do
Start Adc
A = Getadc(5)
Stop Adc
If A < 205 Then
A = 0
Else
A = A - 205
W = A / 2.72
A = W
End If
Call Show(a)
Loop
End
'******************************* Show
Sub Show(a As Word)
Do
Incr I
Aa = A Mod 10
Select Case I
Case 1:
Portb = Lookup(aa , Annode_display)
Set S1 : Waitms T
Case 2:
Portb = Lookup(aa , Annode_display)
Set S2 : Waitms T
Case 3:
Portb = Lookup(aa , Annode_display)
Set S3 : Waitms T
End Select
Reset S1 : Reset S2 : Reset S3
A = A \ 10 : If A = 0 Then Exit Do
Loop
I = 0
Reset S1 : Reset S2 : Reset S3
End Sub
سلام مهندس
بعضی وقت ها نوشتن مجدد برنامه از تحلیل و ویرایش برنامه از پیش نوشته راحت تر و سریع تره..!!!:0013:
شما بگو میخای چیکار کنی ؟؟؟
این برنامه برای سگمنت 3تایی هست...!
منظور شما رو دقیقا متوجه نشدم ... میخواهید تنها یک رقم رو نمایش بدید یا چیز دیگه ایست قضیه ..!!!
برای نمایش کد ها هم میتونی گزینه code استفاده کنی :wink:
به این صورت :
$regfile = "m8def.dat"
$crystal = 1000000
config adc = single , prescaler = auto
config pinc.5 = input
config portb = output : Portb = 0
config pinc.0 = output : S1 alias portc.0 : Set s1
config pinc.1 = output : S2 alias portc.1 : Set s2
config pinc.2 = output : S3 alias portc.2 : Set s3
dim a as word
dim aa as word
dim i as byte
dim t as word : T = 1
dim w as single
declare sub show(byval a as word)
do
start adc
a = getadc(5)
stop adc
if a < 205 then
a = 0
else
a = a - 205
w = a / 2.72
a = w
end if
call show(a)
loop
end
'******************************* show
sub show(a as word)
do
incr i
aa = a mod 10
select case i
case 1:
portb = lookup(aa , annode_display)
set s1 : Waitms t
case 2:
portb = lookup(aa , annode_display)
set s2 : Waitms t
case 3:
portb = lookup(aa , annode_display)
set s3 : Waitms t
end select
reset s1 : Reset s2 : Reset s3
a = a \ 10 : If a = 0 then exit do
loop
i = 0
reset s1 : Reset s2 : Reset s3
end sub
سلام
میخواهم ورودی که یک تا 5 ولت میباشد را میکرو بگیرد یک واحد کم کند بعد ضربدر 75 کند
حالا عدد بدست امده مثلا 245است 5 را روی یک سون سگمنت 4 را روی یک سون سگمنت و 2 هم روی یک سون سگمنت نشون بدهد
ولی سون سگمنتهایمون جدا هستند
ممنون
قسمت ADC که مشکلی نداری درسته ؟
برای نمایش هم همین برنامه رو میتونی استفاده کنی حتی بدون تغیر
ولی سخت افزارت تغیر میکنه :
توی سگمنت 3تایی کلا ما 8تا پین دیتا داریم , 3تا پین فعال ساز برای هر سگمنت و یک پین هم آزاد (اگه اشتب نکرده باشم ولی بر فرض همچین پین هایی هست)
اما توی سگمنت تکی ما 8تا پین دیتا داریم , 1 پین فعال ساز برای یک سگمنت (همون مشترک) و یک پین هم آزاد
پین های فعال ساز همون S1 و S2 و S3 در سگمنت 3تایی
و همون پین مشترک در سگمنت تکی هستند برای هر سگمنت
اگر شما از 3 سگمنت جدا گانه استفاده کنی باید همه پینهای دیتای (a;b;c;d;e;f;g;dp) همه سگمنت هارو نظیر به نظیر به هم وصل کنی a به a و b به b الی آخر
حالا پایه مشترک سگمنت اول (یکان) میشه همون S1
پایه مشترک سگمنت دوم (دهگان) میشه همون S2
پایه مشترک سگمنت اول (صدگان) میشه همون S3
یادت باشه فقط سخت افزار تغیر کرد :wink:
قسمت adc که مشکلی نداری درسته ؟
برای نمایش هم همین برنامه رو میتونی استفاده کنی حتی بدون تغیر
ولی سخت افزارت تغیر میکنه :
توی سگمنت 3تایی کلا ما 8تا پین دیتا داریم , 3تا پین فعال ساز برای هر سگمنت و یک پین هم آزاد (اگه اشتب نکرده باشم ولی بر فرض همچین پین هایی هست)
اما توی سگمنت تکی ما 8تا پین دیتا داریم , 1 پین فعال ساز برای یک سگمنت (همون مشترک) و یک پین هم آزاد
پین های فعال ساز همون s1 و s2 و s3 در سگمنت 3تایی
و همون پین مشترک در سگمنت تکی هستند برای هر سگمنت
اگر شما از 3 سگمنت جدا گانه استفاده کنی باید همه پینهای دیتای (a;b;c;d;e;f;g;dp) همه سگمنت هارو نظیر به نظیر به هم وصل کنی a به a و b به b الی آخر
حالا پایه مشترک سگمنت اول (یکان) میشه همون s1
پایه مشترک سگمنت دوم (دهگان) میشه همون s2
پایه مشترک سگمنت اول (صدگان) میشه همون s3
یادت باشه فقط سخت افزار تغیر کرد :wink:
ممنون
این کار کردم
مشکل اونجاست که در این حالت چشمک زن میشود
ثابت نشون نمیده
اینو چطور حل کنم
ممنون
مشکل اونجاست که در این حالت چشمک زن میشود
ثابت نشون نمیده
اینو چطور حل کنم
این حالت چشمک زن از تاخیر هست...
مقدار متغیر t که برای تاخیر هست رو زیاد کن
5 تا 15 امتحان کن ببین درست میشه (تغیر بده تا مقدار مطلوب رو بدست بیاری)
این حالت چشمک زن از تاخیر هست...
مقدار متغیر t که برای تاخیر هست رو زیاد کن
5 تا 15 امتحان کن ببین درست میشه (تغیر بده تا مقدار مطلوب رو بدست بیاری)
سلام
شرمنده
تا 50 امتحان کردم باز درست نشد
امدم tرا برای هر کدوم مختلف گذاشتم بهتر میشه ولی خوب نه
به نظرتون نمیشه یه تاخیر یه جاش گذاشت
سلام مهندس
اول مقدار فرکانس کاری رو 8 مگ قرار بده بعد ببین چطوره ؟
اگه خوب نشد بیا از این برنامه استفاده کن ببین مشکلی نداره ...!
همشو کپی کن :wink:
$regfile = "m8def.dat"
$crystal = 8000000
config adc = single , prescaler = auto
config pinc.5 = input
config portb = output : Portb = 0
config pinc.0 = output : S1 alias portc.0 : Set s1
config pinc.1 = output : S2 alias portc.1 : Set s2
config pinc.2 = output : S3 alias portc.2 : Set s3
Dim A As Word
Dim Aa As Word
Dim I As Byte
Dim T As Byte : T = 1
Dim W As Single
do
start adc
a = getadc(5)
stop adc
if a < 205 then
a = 0
else
a = a - 205
w = a / 2.72
a = w
end if
Gosub Show
Waitms 10
loop
end
'******************************* show
Show:
For I = 1 To 3
aa = a mod 10
select case i
case 1:
Portb = Lookup(aa , Annode_display)
Reset S2 : Reset S3 : Set S1
case 2:
Portb = Lookup(aa , Annode_display)
Reset S1 : Reset S3 : Set S2
case 3:
Portb = Lookup(aa , Annode_display)
Reset S1 : Reset S2 : Set S3
end select
Next
Return
'_____________________________ For Annode Display
Annode_display:
Data 192 , 249 , 164 , 176 , 153 , 146 , 130 , 248 , 128 , 144
'CHAR 0 1 2 3 4 5 6 7 8 9
سلام مهندس
اول مقدار فرکانس کاری رو 8 مگ قرار بده بعد ببین چطوره ؟
اگه خوب نشد بیا از این برنامه استفاده کن ببین مشکلی نداره ...!
همشو کپی کن :wink:
$regfile = "m8def.dat"
$crystal = 8000000
config adc = single , prescaler = auto
config pinc.5 = input
config portb = output : Portb = 0
config pinc.0 = output : S1 alias portc.0 : Set s1
config pinc.1 = output : S2 alias portc.1 : Set s2
config pinc.2 = output : S3 alias portc.2 : Set s3
dim a as word
dim aa as word
dim i as byte
dim t as byte : T = 1
dim w as single
do
start adc
a = getadc(5)
stop adc
if a < 205 then
a = 0
else
a = a - 205
w = a / 2.72
a = w
end if
gosub show
waitms 10
loop
end
'******************************* show
show:
For i = 1 to 3
aa = a mod 10
select case i
case 1:
Portb = lookup(aa , annode_display)
reset s2 : Reset s3 : Set s1
case 2:
Portb = lookup(aa , annode_display)
reset s1 : Reset s3 : Set s2
case 3:
Portb = lookup(aa , annode_display)
reset s1 : Reset s2 : Set s3
end select
next
return
'_____________________________ for annode display
annode_display:
Data 192 , 249 , 164 , 176 , 153 , 146 , 130 , 248 , 128 , 144
'char 0 1 2 3 4 5 6 7 8 9
سلام
فرکانس گذاشتم درست نشد
برنامه شما رو کپی کردم مشکلش اینه همیشه دوتا از سون سگمنت ها خاموشن
Powered by vBulletin® Version 4.2.1 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.