📄 show.c
字号:
#include <avr/io.h>
#include <avr/signal.h>
#include <avr/delay.h>
#include "self_def.h"
//定义字码数组
unsigned char zima[]={
//{0}
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
//{1}
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
//{2}
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,
//{3}
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,
//{4}
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,
//{5}
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,
//{6}
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,
//{7}
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,
//{8}
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,
//{9}
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,
//{E}
0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,
//{S}
0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,
//{W}
0xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00,0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00,
//{N}
0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00,
//{R}
0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,
//{O}
0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,
//{A}
0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,
//{V}
0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00,
//{.}
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,
};
//发送主控制指令
void OUTMI(uchar i)
{
E1_H;
EN_INS;
PORTA=i;
//_delay_us(5);
E1_L;
}
//发送从控制指令
void OUTSI(uchar i)
{
E2_H;
EN_INS;
PORTA=i;
//_delay_us(5);
E2_L;
}
//发送主数据
void OUTMD(uchar i)
{
E1_H;
EN_DATA;
PORTA=i;
//_delay_us(5);
E1_L;
}
//发送从数据
void OUTSD(uchar i)
{
E2_H;
EN_DATA;
PORTA=i;
//_delay_us(5);
E2_L;
}
//设置页面
void SetPage(uchar i,uchar j)
{
OUTMI(0xB8|i);
OUTSI(0xB8|j);
}
//设置物理地址
void SetAddress(uchar i,uchar j)
{
OUTMI(i);
OUTSI(i);
}
//清屏
void clrscr(void)
{
uchar i,page;
for(page=0;page<4;page++)
{
SetPage(page,page);
SetAddress(0,0);
for(i=0;i<61;i++)
{
OUTMD(0);
OUTSD(0);
}
}
}
//显示两行汉字
//字码为宋体,常规,小四,16*16格式
void display_word(uchar d,uchar x_add,uchar layer,uchar length)
{
//page表示页面,address表示显存的物理地址,window左右部分
uchar x,address=0,window=0;
unsigned int d_where;
//uchar dis_data;
d_where=d*length*2;
for(x=0;x<length;x++)
{
if(x_add>60){
window=1;
address=x_add%61;
}
else
address=x_add;
if(layer==0)
{
//写第一行8个字
SetPage(0,0); //写page0
SetAddress(address,address);
if(1==window) //判断左边还是右边,即主还是从
OUTSD(zima[d_where]);
else
OUTMD(zima[d_where]);
SetPage(1,1); //写page1
SetAddress(address,address);
if(1==window)
OUTSD(zima[d_where+length]);
else
OUTMD(zima[d_where+length]);
}
else
{
//写第二行8个字
SetPage(2,2);
SetAddress(address,address);
if(1==window)
OUTSD(zima[d_where]);
else
OUTMD(zima[d_where]);
SetPage(3,3);
SetAddress(address,address);
if(1==window)
OUTSD(zima[d_where+length]);
else
OUTMD(zima[d_where+length]);
}
x_add++;
d_where++;
}
}
//初始化LCD
void init_lcd(void)
{
DDRA=0xFF;
DDRB|=(1<<PB0)|(1<<PB1)|(1<<PB4);
DDRD|=(1<<PD4);
EN_WRITE;
OUTMI(0xE2);OUTSI(0xE2); //复位
OUTMI(0xAE);OUTSI(0xAE); //POWER SAVE
OUTMI(0xA4);OUTSI(0xA4); //动态驱动
OUTMI(0xA9);OUTSI(0xA9); //1/32占空比
OUTMI(0xA0);OUTSI(0xA0); //顺时针
OUTMI(0xEE);OUTSI(0xEE); //写模式
OUTMI(0x00); //column 0
OUTMI(0xC0); //从第一行开始显示
OUTSI(0x00);
OUTSI(0xC0);
OUTMI(0xAF);OUTSI(0xAF); //display on
clrscr();
}
/*********************************************************
//取字码地址
uchar get_d_where(uchar c)
{
uchar d_where;
if(c>='0'&&c<='9')
d_where=c-'0';
else if(c=='E'||c=='e')
d_where=10;
else if(c=='S'||c=='s')
d_where=11;
else if(c=='W'||c=='w')
d_where=12;
else
d_where=13;
return d_where;
}
**********************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -