|
'/////////////////////////////////////////////////////////////////////////////////////
'///工程:FastAVR Basic AVR读手机触摸屏试验
'///芯片:mega16
'///简介:读出触摸屏受按压位置的坐标,并在240×128pix的LCD上显示出来(T6963控制器)
'///编译:通过
'///实践:实物测试通过
'///作者:agui2008
'///时间:2005/8/22整理
'/////////////////////////////////////////////////////////////////////////////////////
$Device= m16 '声明器件型号
$Stack = 32 '声明堆栈大小
$Clock = 12 '声明时钟频率
$Source= On '声明注释转移
,也就是所有的注释转移到汇编文件里面
$Baud=9600 '声明串口波特率
,后面有将坐标值通过串口输出
$GLCD T6963C, Data=PORTC, ctrl=PORTA, 240, 128, 1 '声明LCD和AVR的连接关系以及LCD的规格
$Gctrl CD=7, CE=6, RD=5, WR=4, FS=0 'FS无需I/O控制,请自己连接到gnd or vcc
,这个地方比BASCOM有优势
$LeadChar=" ",Format(3,0)
'声明显示的数据要格式化
$Def YH=PORTA.0
'触摸屏有4条线,在这里指明连接关系
$Def YL=PORTA.2
$Def XH=PORTA.1
$Def XL=PORTA.3
Dim x As Word
'x坐标
Dim y As Word
'y坐标
Dim cu As Flash Byte
'字符串“触”保存在Flash
Dim mo As Flash Byte
'字符串“摸”保存在Flash
Dim pin As Flash Byte
'字符串“屏”保存在Flash
Dim ce As Flash Byte
'字符串“测”保存在Flash
Dim si As Flash Byte
'字符串“试”保存在Flash
Set DDRB.0 '设置portb.0=1,为输出口接LCD RESET
Reset PORTB.0
'复位LCD
WaitMs 1
'lcd复位1MS
Set PORTB.0
WaitMs 200
'延时200ms
GrpHomeSet &h200 '设置图形显示区首地址
TxtHomeSet &h00
'设置文本显示区首地址
TxtAreaSet &h20 '设置文本显示区页宽
GrpAreaSet &H20 '设置图形显示区页宽fs=0,8×8,8×30=240
Gcommand &h80 '显示方式文本和图形相或
Gcommand &h9c
'
Gcommand &ha7
'
Gcommand &h9a '文本on,图形on
GCls
'清屏绘画页
Tcls
'清屏文本页,因为基于T6963的LCD有文本和绘画二个页面
WaitMs 250
'延时250ms
TLcd(0,15),"Email:agui868@21cn.net"
'在文本页0列15行显示字符串“Email:agui868@21cn.net”
TLcd(7,1),"test t6963c DEMO"
'在文本页7列01行显示字符串“test t6963c DEMO”
ImgSet(10,50),cu
'在绘画页10列50行显示字符串“触”
ImgSet(12,50),mo
'在绘画页12列50行显示字符串“摸”
ImgSet(14,50),pin
'在绘画页14列50行显示字符串“屏”
ImgSet(16,50),ce
'在绘画页16列50行显示字符串“测”
ImgSet(18,50),si
'在绘画页18列50行显示字符串“试”
Wait 1
'延时1s
Do
Reset DDRA.1
Reset DDRA.3
Set DDRA.0
Set DDRA.2
Set YH
Reset YL
WaitMs 2
Start Adc,Vref=Int
'开始ADC转换,使用内部基准
x=Adc(1)
'得到ADC通道1的值,它就是x坐标
Stop Adc
'停止ADC
If x=1023 Then x=0
Reset DDRA.0
Reset DDRA.2
Set DDRA.1
Set DDRA.3
Set XH
Reset XL
WaitMs 2
Start Adc,Vref=Int
y=Adc(0)
'同样得到y坐标
Stop Adc
If y=1023 Then y=0
TLcd(0,6),"x="
'在文本页0列6行显示字符串“x=”
TLcd(2,6),x
'在文本页2列6行显示变量x的值
TLcd(0,8),"y="
TLcd(2,8),y
Print "x=";x
'通过串口输出坐标值
Print "y=";y
WaitMs 50
Loop
$Include "c:\fastavr\ks0108b\cu.bas"
'字符串“触”的字模存放的路径
$Include "c:\fastavr\ks0108b\mo.bas"
'字符串“摸”的字模存放的路径
$Include "c:\fastavr\ks0108b\pin.bas"
'字符串“屏”的字模存放的路径
$Include "c:\fastavr\ks0108b\ce.bas"
'字符串“测”的字模存放的路径
$Include "c:\fastavr\ks0108b\si.bas"
'字符串“试”的字模存放的路径,其实这几个字模我们可以做在一起
End |