📄 3310._c
字号:
//ICC-AVR application builder : 2005-11-12 17:11:59
// Target : M16
// Crystal: 8.0000Mhz
// copyright:鲁军波(endylu)
#include <iom16v.h>
#include <macros.h>
#include "main.h"
// 6 x 8 font
// 1 pixel space at left and bottom
// index = ASCII - 32
const uint8 font6x8[][6] =
{
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },// sp
{ 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 },// !
{ 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 },// "
{ 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 },// #
{ 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 },// $
{ 0x23, 0x13, 0x08, 0x64, 0x62, 0x00 },// %
{ 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 },// &
{ 0x00, 0x00, 0x05, 0x03, 0x00, 0x00 },// '
{ 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 },// (
{ 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 },// )
{ 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 },// *
{ 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 },// +
{ 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00 },// ,
{ 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 },// -
{ 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 },// .
{ 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 },// /
{ 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E },// 0
{ 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 },// 1
{ 0x00, 0x42, 0x61, 0x51, 0x49, 0x46 },// 2
{ 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31 },// 3
{ 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10 },// 4
{ 0x00, 0x27, 0x45, 0x45, 0x45, 0x39 },// 5
{ 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30 },// 6
{ 0x00, 0x01, 0x71, 0x09, 0x05, 0x03 },// 7
{ 0x00, 0x36, 0x49, 0x49, 0x49, 0x36 },// 8
{ 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E },// 9
{ 0x00, 0x00, 0x36, 0x36, 0x00, 0x00 },// :
{ 0x00, 0x00, 0x56, 0x36, 0x00, 0x00 },// ;
{ 0x00, 0x08, 0x14, 0x22, 0x41, 0x00 },// <
{ 0x00, 0x14, 0x14, 0x14, 0x14, 0x14 },// =
{ 0x00, 0x00, 0x41, 0x22, 0x14, 0x08 },// >
{ 0x00, 0x02, 0x01, 0x51, 0x09, 0x06 },// ?
{ 0x00, 0x32, 0x49, 0x59, 0x51, 0x3E },// @
{ 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C },// A
{ 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36 },// B
{ 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22 },// C
{ 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C },// D
{ 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41 },// E
{ 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01 },// F
{ 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A },// G
{ 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F },// H
{ 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00 },// I
{ 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01 },// J
{ 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41 },// K
{ 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40 },// L
{ 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F },// M
{ 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F },// N
{ 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E },// O
{ 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06 },// P
{ 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E },// Q
{ 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46 },// R
{ 0x00, 0x46, 0x49, 0x49, 0x49, 0x31 },// S
{ 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01 },// T
{ 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F },// U
{ 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F },// V
{ 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F },// W
{ 0x00, 0x63, 0x14, 0x08, 0x14, 0x63 },// X
{ 0x00, 0x07, 0x08, 0x70, 0x08, 0x07 },// Y
{ 0x00, 0x61, 0x51, 0x49, 0x45, 0x43 },// Z
{ 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 },// [
{ 0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55 },// 55
{ 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00 },// ]
{ 0x00, 0x04, 0x02, 0x01, 0x02, 0x04 },// ^
{ 0x00, 0x40, 0x40, 0x40, 0x40, 0x40 },// _
{ 0x00, 0x00, 0x01, 0x02, 0x04, 0x00 },// '
{ 0x00, 0x20, 0x54, 0x54, 0x54, 0x78 },// a
{ 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38 },// b
{ 0x00, 0x38, 0x44, 0x44, 0x44, 0x20 },// c
{ 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F },// d
{ 0x00, 0x38, 0x54, 0x54, 0x54, 0x18 },// e
{ 0x00, 0x08, 0x7E, 0x09, 0x01, 0x02 },// f
{ 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C },// g
{ 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78 },// h
{ 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00 },// i
{ 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00 },// j
{ 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00 },// k
{ 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00 },// l
{ 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78 },// m
{ 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78 },// n
{ 0x00, 0x38, 0x44, 0x44, 0x44, 0x38 },// o
{ 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18 },// p
{ 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC },// q
{ 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08 },// r
{ 0x00, 0x48, 0x54, 0x54, 0x54, 0x20 },// s
{ 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20 },// t
{ 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C },// u
{ 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C },// v
{ 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C },// w
{ 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 },// x
{ 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C },// y
{ 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 },// z
//{ 0x14, 0x14, 0x14, 0x14, 0x14, 0x14 }// horiz lines
};
const uint8 Hzk3[][6]={
//停止
{0x3E,0x3E,0x3E,0x3E,0x3E,0x3E},
//播放
{0x00,0x7F,0x3E,0x1C,0x08,0x00},
//暂停
{0x3E,0x3E,0x00,0x00,0x3E,0x3E},
};
//=======================================================================
//LCD_init: 3310LCD初始化
void LCD_init(void)
{
LCD_ddr|=LCD_RST|LCD_DC|LCD_CS;
//DDRB|=SPI_MOSI|SPI_CLK;
LCD_port&=~LCD_RST; // 产生一个让LCD复位的低电平脉冲
Delay_us(1);
LCD_port|=LCD_RST;
LCD_port|=LCD_CS ; // 关闭LCD
Delay_us(1);
LCD_port&=~LCD_CS; // 使能LCD
Delay_us(1);
LCD_write_byte(0x21, 0);// 使用扩展命令设置LCD模式
LCD_write_byte(0xc8, 0);// 设置偏置电压 Vlcd=3.06+72*0.06=7.38<8.5
LCD_write_byte(0x06, 0);// 温度校正
LCD_write_byte(0x13, 0); // 1:48
LCD_write_byte(0x20, 0); // 使用基本命令
LCD_clear(); // 清屏
LCD_write_byte(0x0c, 0);// 设定显示模式,正常显示
LCD_port|=LCD_CS ;// 关闭LCD
}
//=======================================================================
//LCD_clear: LCD清屏函数
void LCD_clear(void)
{
LCD_write_String(0,0,14," ",0);
LCD_write_String(0,1,14," ",0);
LCD_write_String(0,2,14," ",0);
LCD_write_String(0,3,14," ",0);
LCD_write_String(0,4,14," ",0);
LCD_write_String(0,5,14," ",0);
LCD_write_String(0,6,14," ",0);
/*
uint16 i;
LCD_write_byte(0x0c, 0); // 设定显示模式,正常显示
LCD_write_byte(0x80, 0);
for (i=0; i<504; i++)
{
LCD_write_byte(0x00, 1);
}
*/
}
//=======================================================================
//LCD_set_XY: 设置LCD坐标函数
//输入参数:X:0-83
//Y:0-5
void LCD_set_XY(uint8 X, uint8 Y)
{
LCD_write_byte(0x40|Y, 0); // row
LCD_write_byte(0x80|X, 0); // cloumn
}
//=======================================================================
//LCD_write_char: 显示英文字符
//输入参数:c:显示的字符;
void LCD_write_char(uint8 c,uint8 N)
{
uint8 line;
c -= 32;
for (line=0; line<6; line++)
{if(N)
LCD_write_byte(~font6x8[c][line], 1);
else
LCD_write_byte(font6x8[c][line], 1);
}
}
//=======================================================================
//LCD_write_char: 英文字符串显示函数
//输入参数:*s:英文字符串指针;l:显示字符串的长度 ;X、Y: 显示字符串的位置
void LCD_write_String(uint8 X,uint8 Y,uint8 l,uint8 *s,uint8 N)
{
LCD_set_XY(X,Y);
while (l--)
{
LCD_write_char(*s,N);
s++;
}
}
//=======================================================================
//LCD_write_byte: 使用SPI接口写数据到LCD
//输入参数:data:写入的数据;command :写数据/命令选择;
void LCD_write_byte(uint8 data, uint8 command)
{
LCD_port &= ~LCD_CS ;// 使能LCD
if (command == 1)
LCD_port |= LCD_DC ;// 传送数据
else
LCD_port &= ~LCD_DC ;// 传送命令
SPDR = data;// 传送数据到SPI寄存器
while ((SPSR & 0x80) == 0)
{
}// 等待数据传送完毕
LCD_port |= LCD_CS ;// 关闭LCD
}
//=======================================================================
void LCD_write_tubiao(uint8 X, uint8 Y, uint8 line)
{
uint8 n;
LCD_set_XY(X,Y);//设置初始位置
for (n=0; n<6; n++)//画一个6*8的图标
{
LCD_write_byte(Hzk3[line][n],1);
}
}
//=======================================================================
//LCD_write_chi: 在LCD上显示汉字
//输入参数:X、Y:显示汉字的起始X、Y坐标;
//ch_with :汉字点阵的宽度
//num:显示汉字的个数;
//line:汉字点阵数组中的起始行数
//row:汉字显示的行间距
/*
void LCD_write_chi(unsigned char X, unsigned char Y,
unsigned char ch_with,unsigned char num,
unsigned char line,unsigned char row)
{
unsigned char i,n;
LCD_set_XY(X,Y);//设置初始位置
for (i=0;i<num;)
{
for (n=0; n<ch_with*2; n++)//写一个汉字
{
if (n==ch_with)//写汉字的下半部分
{
if (i==0) LCD_set_XY(X,Y+1);
else
LCD_set_XY((X+(ch_with+row)*i),Y+1);
}
LCD_write_byte(Hzk[line+i][n],1);
}
i++;
LCD_set_XY((X+(ch_with+row)*i),Y);
}
}
*/
//=======================================================================
//LCD_write_chi: 汉字移动
//输入参数:X、Y:显示汉字的起始X、Y坐标;
//T:移动速度;
/*
void LCD_move_chi(void)
{
unsigned char i,n,j=0;
unsigned char buffer_h[84]={0};
unsigned char buffer_l[84]={0};
for (i=0; i<172; i++)
{
if((i/12)>5)
{
buffer_h[83]=0x00;
buffer_l[83]=0x00;
}
else
{
buffer_h[83]=Hzk[i/12][j];
buffer_l[83]=Hzk[i/12][j+12];
}
j++;
if (j==12) j=0;
for (n=0; n<83; n++)
{
buffer_h[n]=buffer_h[n+1];
buffer_l[n]=buffer_l[n+1];
}
LCD_set_XY(0,0);
for (n=0; n<83; n++)
{
LCD_write_byte(buffer_h[n],1);
}
LCD_set_XY(0,1);
for (n=0; n<83; n++)
{
LCD_write_byte(buffer_l[n],1);
}
Delay_ms(250);
}
}
*/
//=======================================================================
void JINGDU(void)
{ uint8 i;
LCD_set_XY(0,4);
LCD_write_byte(0x7f,1);
i=82;
while(i--)
{
LCD_write_byte(0x41,1);
}
LCD_write_byte(0x7f,1);
}
//=======================================================================
void GEPAI(void)
{
uint8 i;
LCD_set_XY(6,2);
for(i=0;i<72;i++)
{
LCD_write_byte(0x00,1);
}
LCD_set_XY(6,3);
for(i=0;i<72;i++)
{
LCD_write_byte(0x00,1);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -