先看看显示这个画面的程序:
$Device= m16 '使用mega16
$Stack = 32 '堆栈32字节
$Clock = 4 ' 时钟4MHz
$ShiftOut Data=PORTB.5, Clk=PORTB.7,Msb '申明一个简易SPI口
$GLCD Nokia3310, SCLK=PORTB.7, SDIN=PORTB.5, DC=PORTB.1, SCE=PORTB.4 '3310液晶连接定义
$Def RES=PORTB.0 '复位脚
$LeadChar=" ", Format(3,0) '显示数据格式化
$Def SL = PORTB.1 '去74HC165锁存
$Def led = PORTB.3 ' 去3310背光控制
Dim n_key As Byte '保存按键键值
Dim n As Byte '显示一个变量n好观察3310有没有运行
Dim x As Byte
Dim m As Byte
Dim F0HD As Flash Byte ' 英文字库F0HD
Dim dian As Flash Byte
Dim ya As Flash Byte
Dim Sclk1616HD As Flash Byte
n_key=255
Set DDRB.0: Nop 3: Set RES '复位3310LCD
Set DDRB.3
Reset led '点亮3310背光灯
GLcdInit '初始化3310LCD
FontSet F0HD '选择字体
GCls
GLcd(0,5),"www*atmel*com" '显示一个字符串
ImgSet(0,0),dian
ImgSet(15,0),ya
Do
GLcd(0,3),"key=";n_key '显示键值
GLcd(60, 0), n ' 显示一个变量n好观察3310有没有运行
Incr n
Reset SL
Set SL ' 锁存74HC165
Reset DDRB.5 '将SDIN变为输入为读取74HC165做准备
Set DDRB.7
n_key=ShiftIn '获得键值
n_key=Not n_key
WaitMs 100
Set DDRB.5 '将SDIN变为输出为写3310LCD做准备
ImgSet(68, 2, m), Sclk1616HD '循环显示沙漏的一个子图片
Incr m
If m>7 Then m=0
WaitMs 100