راه اندازی تاچ اسکرین
در این بخش دانلود پروژه راه اندازی صفحات حساس به لمس یا تاچ اسکرین Touch Screen توسط میکروکنترلر AVR با قابلیت کالیبراسیون, توسط تیم الکترونیک و برنامه نویسی الکترونیک ۹۸ برای شما علاقه مندان به پروژه های میکروکنترلر AVR آماده شده است. اگر جزوء آن دسته از کسانی هستید که در پروژه های خود از صفحات لمسی (تاچ اسکرین Touch Screen) کمک گرفته اید, بی شک با مشکل کالیبره کردن تاچ اسکرین مواجه شده اید!
برخی از مشکلات مهم در راه اندازی تاچ اسکرین ها
در زیر به برخی از مشکلات مهم در راه اندازی تاچ اسکرین ها با میکروکنترلرهای AVR به روش های مرسوم اشاره شده است :
1- عدم دقت کافی و وجود خطای زیاد.
2- گذراندن مراحل سخت و طاقت فرسا برای بدست آوردن مختصات دقیق هر نقطه جهت انجام پروژه مورد نظرمان.
3- نوشتن برنامه جدید و تکرار مراحل پیچیده بدست آوردن مختصات نقاط برای استفاده از صفحات لمسی با سایزهای متفاوت.
4- بدست آوردن مجدد مختصات نقاط و ویرایش برنامه با کمی تکان خوردن تاچ اسکرین.
5- ویرایش برنامه نوشته شده و بدست آوردن مجدد مختصات نقاط با تعویض تاچ اسکرین.
کالیبراسیون صفحات لمسی
در بسیاری از دستگاهای الکترونیکی که از تکنولوژی صفحات لمسی استفاده می کنند, (همانند برخی از گوشی های موبایل تاچ اسکرین) برای افزایش دقت صفحات لمسی از روش کالیبراسیون استفاده می شود. در این پروژه ما نیز برای راه اندازی حرفه ای و البته کاملا اصولی صفحات لمسی (تاچ اسکرین Touch Screen) با میکروکنترلر AVR از روش کالیبراسیون استفاده می کنیم.
در روش کالیبراسیون در ابتدای راه اندازی دستگاه, به ترتیب بر روی صفحه نمایش چندین نقطه (بستگی به اندازه صفحه نمایش) نمایش داده می شود, و به این ترتیب شما باید به ترتیب نقاط مشخص شده را لمس کنید. بعد از اتمام این مرحله پردازشگر طبق نقاط به دست آمده به صورت اتوماتیک سایر مشخصات نقاط را محاسبه می نماید. از مزایای استفاده از این شیوه عدم نیاز به بدست آوردن دستی تمام مشخصات نقاط و همچنین امکان تعویض و استفاده از هر تاچ اسکرینی با هر ابعادی بدون نیاز به ویرایش برنامه و بدست آوردن مجدد مشخصات نقاط و البته دقت بالای آن می باشد.
شرح عملکرد پروژه
همانطور که در مطالب قبلی بیان شد ما نیز در این پروژه برای راه اندازی صفحات لمسی با میکروکنترلر ATmega16 از روش کالیبراسیون استفاده کردیم, بدین صورت که در ابتدا با راه اندازی مدار, میکروکنترلر به ترتیب سه نقطه را بر روی صفحه نمایش نشان می دهد, که شما باید با دقت هر سه نقطه مشخص شده را لمس کنید.
به این ترتیب بر اساس برنامه نوشته شده میکروکنترلر AVR با بدست آوردن مشخصات سه نقطه اولیه, طبق فرمول های استفاده شده در برنامه سایر نقاط موجود بر روی صفحه نمایش را محاسبه می کند و در خروجی محل دقیق فشرده شدن تاچ اسکرین را بر اساس پیکسل بر روی LCD گرافیکی نمایش می دهد و همچنین پیکسل مورد نظر را بر روی ال سی دی گرافیکی روشن می کند.
با استفاده از این پروژه می توانید تمامی پروژه های خود را که در آن نیاز به استفاده از صفحات لمسی دارید (تاچ اسکرین Touch Screen) را به راحتی عملی کنید.
ویدئو ضبط شده از نحوه عملکرد پروژه
نقشه شماتیک راه اندازی صفحه لمسی با قابلیت کالیبراسیون
برنامه نوشته شده در نرم افزار BASCOM-AVR به زبان بیسیک BASIC
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 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 |
$regfile = "m16def.dat" $crystal = 1000000 $hwstack = 64 $swstack = 64 $framesize = 64 $lib "glcdKS108.LBX" $include "font8x8.font" Config Graphlcd = 128 * 64sed , Dataport = Portc , Controlport = Portb , Ce = 1 , Ce2 = 2 , Cd = 5 , Rd = 4 , Reset = 0 , Enable = 3 Setfont Font8x8 Config Portb.6 = Output Set Portb.6 Dim X As Word Dim Y As Word Dim X_e As Single Dim X1 As Word Dim X2 As Word Dim Y_e As Single Dim Y1 As Word Dim Y2 As Word Dim Var As Word Dim Var1 As Single Gosub Calibration_x1_y1 Calibration_x1_y1: Cls Pset 0 , 0 , 255 Pset 1 , 0 , 255 Pset 0 , 1 , 255 Pset 1 , 1 , 255 Lcdat 4 , 1 , " electronics 98 " , 1 Do Gosub Scan If X > 50 Then Waitms 50 Gosub Scan X1 = X Y1 = Y Cls Lcdat 4 , 1 , " electronics 98 " , 1 Lcdat 5 , 1 , " +Saved " , 0 Do Gosub Scan If X < 50 Then Gosub Calibration_x2 Loop End If Loop Return Calibration_x2: Cls Pset 126 , 0 , 255 Pset 127 , 0 , 255 Pset 126 , 1 , 255 Pset 127 , 1 , 255 Lcdat 4 , 1 , " electronics 98 " , 1 Do Gosub Scan If X > 50 Then Waitms 50 Gosub Scan X2 = X Cls Lcdat 4 , 1 , " electronics 98 " , 1 Lcdat 5 , 1 , " +Saved " , 0 Do Gosub Scan If X < 50 Then Gosub Calibration_y2 Loop End If Loop Return Calibration_y2: Cls Pset 0 , 62 , 255 Pset 1 , 62 , 255 Pset 0 , 63 , 255 Pset 1 , 63 , 255 Lcdat 4 , 1 , " electronics 98 " , 1 Do Gosub Scan If Y > 50 Then Waitms 50 Gosub Scan Y2 = Y Cls Lcdat 4 , 1 , " electronics 98 " , 1 Lcdat 5 , 1 , " +Saved " , 0 Do Gosub Scan If Y < 50 Then Gosub Calibration Loop End If Loop Return Calibration: If X1 > X2 Then Var = X1 - X2 X_e = Var / 128 Else Var = X2 - X1 X_e = Var / 128 End If If Y1 > Y2 Then Var = Y1 - Y2 Y_e = Var / 64 Else Var = Y2 - Y1 Y_e = Var / 64 End If Gosub Paint Return Paint: Cls Lcdat 4 , 1 , " electronics 98 " , 1 Do Gosub Scan If X1 < X2 Then Var = X - X1 Var1 = Var / X_e X = Var1 End If If X2 < X1 Then Var = X - X2 Var1 = Var / X_e X = Var1 X = 128 - x End If If Y1 < Y2 Then Var = Y - Y1 Var1 = Var / Y_e Y = Var1 End If If Y2 < Y1 Then Var = Y - Y2 Var1 = Var / Y_e Y = Var1 Y = 64 - y End If If X < 128 And Y < 64 Then Lcdat 5 , 1 , "X:" ; X ; "/ Y:" ; Y ; " " , 0 Pset X , Y , 255 End If Loop Return Scan: Config Porta.0 = Output Config Pina.1 = Input Config Porta.2 = Output Config Pina.3 = Input Set Porta.0 Reset Porta.1 Reset Porta.2 Reset Porta.3 Config Adc = Single , Prescaler = Auto Start Adc X = Getadc(1) Waitms 10 Config Pina.0 = Input Config Porta.1 = Output Config Pina.2 = Input Config Porta.3 = Output Reset Porta.0 Set Porta.1 Reset Porta.2 Reset Porta.3 Config Adc = Single , Prescaler = Auto Start Adc Y = Getadc(2) Waitms 10 Return End 'end program |
من این پروژه رو خرید داشتم .میخاستم لطف کنین کد سی رو هم برام بفرستید
سلام دوست عزیز
این پروژه تنها به زبان بیسیک برنامه نویسی شده است و زبان C آن موجود نیست.
دستور pset چیکار میکنه؟
یک پیکسل با مشخصات X و Y را بر روی صفحه نمایشگر روشن و یا خاموش می کند.