http://www.mcselec.com/index.php?option=com_content&task=view&id=189&Itemid=57
Вот тестовая программа:
- Код: Выделить всё
$regfile = "m128def.DAT"
'$crystal = 14745600
'$baud = 19200
'$eepleave
'$loadersize = 512
'$hwstack = 100
'$swstack = 75
'$framesize = 40
$lib "glcdKS108.lib" 'Include the library for the KS-108 controler
Config Graphlcd = 128 * 64sed , Dataport = Porta , Controlport = Portc , Ce = 0 , Ce2 = 1 , Cd = 2 , Rd = 3 , Reset = 5 , Enable = 4 , Mode = 6
'The dataport is the portname that is connected to the data lines of the LCD
'The controlport is the portname which pins are used to control the lcd
'CE =CS1 Chip select
'CE2=CS2 Chip select second chip
'CD=Data/instruction
'RD=Read
'RESET = reset
'ENABLE= Chip Enable
Config Adc = Single , Prescaler = Auto , Reference = Internal 'Setting up the a/d convertor
Dim X As Word , Y As Word
Setfont Font8x8
Start Adc ' Start the ad convertor
' =====Main=====
Main:
'*************************
' Here your main prog
'*************************
Do
Gosub Readtouch
Lcdat 1 , 1 , "TS READING"
Lcdat 2 , 1 , "X = " ; X
Lcdat 3 , 1 , "Y = " ; Y
Waitms 300
Cls
Loop ' Read the touch cordinates
Readtouch:
Config Portf.0 = Output ' Makes port F.0 output
Config Portf.2 = Output ' Makes port F.0 output
Set Portf.0 ' Sets port F.0 High
Reset Portf.2 ' Sets port F.2 Low
Config Pinf.1 = Input ' Sets port F.1 as input
Config Pinf.3 = Input ' Sets port F.1 as input because we need it now as ad input
Waitms 20 ' Wait until the port is stable
Y = Getadc(3) ' Read the ad value for the y
Y = 1024 - Y ' Invert the reading
Config Portf.1 = Output ' Makes port F.1 output
Config Portf.3 = Output ' Makes port F.3 output
Reset Portf.1 ' Sets port F.1 Low
Set Portf.3 ' Sets port F.3 High
Config Pinf.0 = Input ' Sets port F.0 as input
Config Pinf.2 = Input ' Sets port F.2 as input because we need it now as ad input
Waitms 20 ' Wait until the port is stable
X = Getadc(2) ' Read the ad value for the x
X = 1024 - X ' Invert the reading
Return
End
$include "font8x8.font"
-------------------------------------------------------
Текст оригинал
-------------------------------------------------------
The problem is that I can not get a reading on the top left quarter of the screen. The reading in this section is always 1 on both X and Y axis no matter where I touch.
As you can see in the below sketch, the readings start at the bottom right hand corner of the red box.
The reading at this corner begin from 1 and go to the maximum of (for example 400) as you progress toward the right and down.
Can anyone help me understand why is this happening?
-------------------------------------------------------
Кривой перевод
-------------------------------------------------------
Проблема заключается в том, что я не могу получить чтении в верхней левой четверти экрана. Чтение в этом разделе всегда равен 1 на X и Y оси независимо от того, где я касаюсь.
Как вы можете видеть ниже на рисунке, чтения начинаются в нижнем правом углу окна красный.
Чтение на этом углу начать с 1 и перейти к максимальной (например, 400), как вы прогресс в направлении справа и вниз.
Может ли кто-нибудь помочь мне понять, почему это происходит?
-------------------------------------------------------
Ему ответили
-------------------------------------------------------
You're using the internal reference for the ADC. Use AVcc instead and you'll be fine !
-------------------------------------------------------
Кивой перевод
-------------------------------------------------------
вы, используя внутренние ссылки на ADC. Используйте вместо AVcc и вам будет хорошо!
У меня такаяже проблема ( неработает угол экрана-сенсорного ) не могу тоже вьехать в чем дело. Пожалуста разьесните что имелось под ответом, использовать сылки на ADC вместо AVcc ?