📄 lcd.txt
字号:
#include <string.h>
#include <ctype.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include "sys/alt_alarm.h"
#include "io.h"
#include "stdio.h"
#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "alt_types.h"
#define uint unsigned int
#define uchar unsigned char
#define disp_off 0x3e //关显示
#define disp_on 0x3f //开显示
#define disp_x 0xb8 //设置页地址
#define disp_z 0xc0 //设置显示起始行
#define disp_y 0x40 //设置列地址
#define comm 0 //指令
#define dat 1 //数据
char di;
char rw;
char e;
char cs1;
char cs2;
char data_ora;
uchar hz31[]={
/*-- 文字: W --*/
/*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0xF8,0x00,0xC0,0x38,0xC0,0x00,0xF8,0x00,0x03,0x3C,0x03,0x00,0x03,0x3C,0x03,0x00};
//写数据或命令到LCD
void wr_lcd (uchar dat_comm,uchar content)
{di=dat_comm;
IOWR_ALTERA_AVALON_PIO_DATA(RS_BASE,di);
rw=0;
IOWR_ALTERA_AVALON_PIO_DATA(RW_BASE,rw);
data_ora=content;
IOWR_ALTERA_AVALON_PIO_DATA(DB_BASE,data_ora);
e=1;
IOWR_ALTERA_AVALON_PIO_DATA(E_BASE,e);
e=0;
IOWR_ALTERA_AVALON_PIO_DATA(E_BASE,e);
}
//写点阵
void lat_disp (uchar data1,uchar data2)
{uchar i,j;
cs1=1;cs2=1;
wr_lcd (comm,disp_on);
for(j=0;j<8;j++)
{wr_lcd (comm,disp_x+j);
wr_lcd (comm,disp_z);
wr_lcd (comm,disp_y);
for(i=0;i<32;i++)
{wr_lcd (dat,data1);
wr_lcd (dat,data2);
}
}
}
//指定位置(x,y)显示row_xl行(每行row_yl个)汉字(大小8xl*yl)
void chn_disp (uchar x,uchar y,uchar xl,uchar yl,uchar row_xl,uchar row_yl,uchar *chn)
{uchar i,j,k,l,a;
wr_lcd (comm,disp_on);
for(l=0;l<row_xl;l++)
{
for(k=0;k<row_yl;k++)
{
for(j=0;j<xl;j++)
{
wr_lcd (comm,disp_x+x+l*xl+j);
wr_lcd (comm,disp_z);
wr_lcd (comm,disp_y+y+k*yl);
a=l*xl*yl*row_yl+k*xl*yl+j*yl;
for(i=0;i<yl;i++)
wr_lcd (dat,chn[a+i]);
}
}
}
}
//初始化
void init_lcd (void)
{ cs1=1;cs2=1;
IOWR_ALTERA_AVALON_PIO_DATA(CS1_BASE,cs1);
IOWR_ALTERA_AVALON_PIO_DATA(CS2_BASE,cs2);
wr_lcd (comm,disp_off);
wr_lcd (comm,disp_on);
}
//显示主程序
void disp1 (void)
{ lat_disp(0x00,0x00);
cs1=1;cs2=0;
IOWR_ALTERA_AVALON_PIO_DATA(CS1_BASE,cs1);
IOWR_ALTERA_AVALON_PIO_DATA(CS2_BASE,cs2);
chn_disp (4,0,2,8,2,8,hz31);
}
//主程序
int alt_main ()
{
init_lcd ();
while(1)
{disp1 ();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -