در این آموزش میخوایم روش کار با سون سگمنت های مالتیپلکس رو آموزش بدیم. در سگمنت های مالتی پلکس تمام قطعات یکسان ارقام به هم وصل میشن و فقط پایه مشترک هر عدد جداست. مثلا برای روشن کردن سون سگمنت دوتایی مالتی پلکس کاتد مشترک اول باید تغذیه منفی عدد اول رو وصل کنیم و بعدش دیتای مربوط به عدد رو روی دیتاهای مشترک قرار بدیم و چند میلی ثانیه صبر کنیم و بلافاصت دیتاها رو خاموش کنیم و به سراغ عدد دوم بریم و اینکارو حدود 50 بار در ثانیه انجام بدیم
با این روش تمام اعداد رو بخاطر خطای چشم بصورت ثابت و روشن می بینیم و این روش بخاطر اینه که پایه های کمتر استفاده بشه. در تابلو روان ها و ماتریسها هم همینطوریه و بصورت تازه سازی صفحه یا Refresh کردن کار میکنن. ما تو این برنامه عدد 64 رو روی سون سگمنت دوتایی مالتیپلکس کاتد مشترک نشون میدیم. برنامه با کامپایلر اورجینال بسکام Bascom AVR نوشته شده و براحتی میشه به زبان های دیگه نوشت.
شماتیک
نقشه شماتیک این پروژه رو که با EasyEDA ی آنلاین کشیدیم میبینید:

برنامه
در این قسمت هم سورس بسکام Bascom رو میبینید که برای Atmega8 نوشته شده:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 |
'Multiplex 2 digit 7-segment Driver By Behnam Zakizadeh @ 1399/11/05 'AVR64.com 2021 $regfile = "m8adef.dat" $crystal = 4000000 $hwstack = 64 $swstack = 64 $framesize = 64 '_______________________________________________________________________________ Config Watchdog = 2048 Start Watchdog Reset Watchdog '_______________________________________________________________________________ 'I/O 'Come Anodes 1 2 Config Pinb.1 = Output '10 Config Pinb.2 = Output '02 'Segments a b c d e f g Config Pind.0 = Output 'a Config Pind.1 = Output 'b Config Pind.2 = Output 'c Config Pind.3 = Output 'd Config Pind.4 = Output 'e Config Pind.5 = Output 'f Config Pind.6 = Output 'g Seg_a Alias Portd.0 Seg_b Alias Portd.1 Seg_c Alias Portd.2 Seg_d Alias Portd.3 Seg_e Alias Portd.4 Seg_f Alias Portd.5 Seg_g Alias Portd.6 Comm_1 Alias Portb.1 Comm_2 Alias Portb.2 '_______________________________________________________________________________ Dim I As Byte , A As Byte I = 64 '_______________________________________________________________________________ Do Gosub Send Reset Watchdog Loop End '_______________________________________________________________________________ Refresh: Gosub Rst7 Select Case A Case 0: Seg_a = 1 Seg_b = 1 Seg_c = 1 Seg_d = 1 Seg_e = 1 Seg_f = 1 Case 1: Seg_b = 1 Seg_c = 1 Case 2: Seg_a = 1 Seg_b = 1 Seg_d = 1 Seg_e = 1 Seg_g = 1 Case 3: Seg_a = 1 Seg_b = 1 Seg_c = 1 Seg_d = 1 Seg_g = 1 Case 4: Seg_b = 1 Seg_c = 1 Seg_f = 1 Seg_g = 1 Case 5: Seg_a = 1 Seg_c = 1 Seg_d = 1 Seg_f = 1 Seg_g = 1 Case 6: Seg_a = 1 Seg_c = 1 Seg_d = 1 Seg_e = 1 Seg_f = 1 Seg_g = 1 Case 7: Seg_a = 1 Seg_b = 1 Seg_c = 1 Case 8: Seg_a = 1 Seg_b = 1 Seg_c = 1 Seg_d = 1 Seg_e = 1 Seg_f = 1 Seg_g = 1 Case 9: Seg_a = 1 Seg_b = 1 Seg_c = 1 Seg_d = 1 Seg_f = 1 Seg_g = 1 End Select Waitms 2 Gosub Rst7 'Clear Screen Return '_______________________________________________________________________________ Rst: Set Comm_1 Set Comm_2 Return '_______________________________________________________________________________ Rst7: Reset Seg_a Reset Seg_b Reset Seg_c Reset Seg_d Reset Seg_e Reset Seg_f Reset Seg_g Return '_______________________________________________________________________________ Send: Gosub Rst : Reset Comm_1 : A = I \ 10 : Gosub Refresh Gosub Rst : Reset Comm_2 : A = I Mod 10 : Gosub Refresh Return |
بازدیدها: 1368