AVR单片机自带10位AD,这对控制4线的小尺寸触摸屏是非常合适的。
'------------------------------------------------------------------------
'使用芯片: Atmega48
'晶振: 内部8MHz晶振
'email: support@avrbascom.com
'软件版本: Bascom-AVR 1.11.8.7 Full version
'------------------------------------------------------------------------
$regfile = "m48def.DAT"
$crystal = 14745600
$baud = 19200
Dim Temp As Byte , X As Word , Y As Word
Config Adc = Single , Prescaler = Auto , Reference = Avcc '设定ADC转换参数,单次转换,转换速度由编译器自动设定,AVCC作为AD的参考源
Main:
Do
'*************************
' 在这里你可以根据需要添加你的程序
'*************************
Gosub Readtouch ' 读取触发屏坐标
Waitms 150
Loop
End
Readtouch:
Config Pinc.0 = Output ' 设定port c.0 为输出
Config Pinc.2 = Output ' 设定port c.2 为输出
Set Portc.0 ' port c.0 输出高电平
Reset Portc.2 ' port c.2 输出低电平
Ddrc.1 = 0 ' 设定port c.1 为输入
Ddrc.3 = 0 ' 设定port c.3 为输入
Waitms 20 ' 延时20ms,等待IO口状态稳定
Y = Getadc(3) ' 读取y轴坐标
Y = 1024 - Y ' 翻转坐标,该语句根据需要添加,具体与你引脚连接有关
Print "VALUE Y : " ; Y ' 将结果发到串口,调试时使用
Config Pinc.1 = Output ' 设定port c.1 为输出
Config Pinc.3 = Output ' 设定port c.3 为输出
Reset Portc.1 ' 设定port c.1 低电平
Set Portc.3 ' 设定port c.3 高电平
Ddrc.0 = 0 ' 设定port c.0 为输入
Ddrc.2 = 0 ' 设定port c.2 为输入
Waitms 20 ' 延时20ms,等待IO口状态稳定
X = Getadc(2) ' 读取x轴坐标
X = 1024 - X
Print "VALUE X : " ; X
Return
以上的程序,只是一个简单的介绍,经过简单的修改,就可以很容易的移植到其它AVR单片机。