سلام دوستان
من بالاخره این دماسنج رو ساختم ولی حالا با یه مشکل جدید تر روبرو شده ام .
اون هم پرپر زدن سگمنت به هنگام نمایش عدد دماست.
با کمک یکی از دوستان حرفه ای برنامه ای نوشته شده برای حل این مشکل که در اینجا قرار میدهم :
کد:
$regfile = "m8def.dat"
$crystal = 1000000
On Ovf0 Refresh
Config Portd = Output
Config Portb = Output
Config Adc = Single , Prescaler = Auto , Reference = Internal
Config Timer0 = Timer , Prescale = 8
Dim Select_line As Byte , N As Byte , Sum As Integer
Dim A As Word , B As Word , C As Integer , W As Word , D As Byte , S As Byte
Select_line = 1
Start Adc
Start Timer0
Enable Ovf0
Enable Interrupts
'=================================================================
Do
Sum = 0
For N = 0 To 127
A = Getadc(0)
B = Getadc(1)
C = A - B
C = C / 4
Sum = Sum + C
Next N
C = Sum / 128
If C > 0 Then
S = 12
End If
If C < 0 Then
C = C / -1
S = 11
End If
W = C
waitms 1000
Loop
'=======================================================================
Refresh:
Portd = Portd And &HF0
Select Case Select_line
Case 1 : D = S
Case 2 : D = W / 10
Case 4 : D = W Mod 10
Case 8 : D = 10
End Select
Portb = Lookup(d , 7seg)
Portd = Portd Or Select_line
Select_line = Select_line * 2
If Select_line = 16 Then Select_line = 1
Return
'=============================================================================
7seg:
Data &H3F , &H6 , &H5B , &H4F , &H66 , &H6D , &H7D , &H7
Data &H7F , &H6F , &H63 , &H40 , &H00
لازم به ذکر است که این مشکل رو دوستان دیگری هم که این دماسنج رو ساخته اند داشته اند و با توجه به راهنمایی آن دوست عزیز که در یکی از سایت ها زحمت کشیده بودند و برنامه رو نوشته بودند مشکل آنها حل شده ولی من هنوز با مشکل مواجهم.
فایل پروتئوس رو هم آپ کرده ام (پست اول).هنگام تست با پروتئوس متوجه مشکل میشوید.
جالب است بدانید که بقیه با این برنامه جدید هیچ مشکلی ندارند ولی من ...
سگمنت کاتد مشترک است.
ممنون میشم راهنمایی کنید.