📄 megalcd.c
字号:
/*****************************************************
http://www.sl.com.cn
双龙电子公司----中文LCD演示程序(ICCAVR)
作者:詹卫前
1、应包含头文件slavr.h
2、在工程选项中的Additional Lib中填入slavr
使编译器使用附加库文件libslavr.a
3、数据线D0~D7接PORTA
ASK=PORTE.6
ANSWER=PORTE.7
RESET=PORTC.3
*****************************************************/
#include <avr/io.h>
#include <avr/slavr.h>
#include <avr/delay.h>
#define uchar unsigned char
#define uint unsigned int
/* 定义OCMJ4X8端口 */
//DATA_PORT=PORTA
#define data_port PORTA
//ASK=PORTE.6
#define ask (PINE&0x40)
//ANSWER=PORTE.7
#define set_answer asm("sbi 0x03,7")
#define clr_answer asm("cbi 0x03,7")
//RESTE=PORTC.3
#define set_reset asm("sbi 0x15,3")
#define clr_reset asm("cbi 0x15,3")
#define wait asm("nop\n nop")
void send (uchar dat);
uchar tab2[]={
0x19,0x43,0x16,0x0b,0x19,0x04,0x32,0x15,0x14,0x53,0x31,0x07,0x1d,0x0f,0x32,0x42, 0x2b,0x29,
0x19,0x43,0x16,0x0b,0x19,0x04,0x32,0x15,0x14,0x53,0x31,0x07,0x1d,0x0f,0x32,0x42, 0x2b,0x29,
0x19,0x43,0x16,0x0b,0x19,0x04,0x32,0x15,0x14,0x53,0x31,0x07,0x1d,0x0f,0x32,0x42, 0x2b,0x29,
0x19,0x43,0x16,0x0b,0x19,0x04,0x32,0x15,0x14,0x53,0x31,0x07,0x1d,0x0f,0x32,0x42, 0x2b,0x29};
uchar tab4[]={
"Guangdong University of technology yi-song jiang make this work "
};
/*---------------延时子程序----------------*/
void delay (uint us)
{
while(us--);
}
void delay1 (uint ms)
{
uint i,j;
for(i=0;i<ms;i++)
for(j=0;j<1000;j++)
;
}
/*------------写命令或数据到LCD--------------*/
void wr_zb (uchar comm,uchar addr_x,uchar addr_y)
{
send(comm);
send(addr_x);
send(addr_y);
}
void send (uchar dat) //写命令或数据
{
// while(busy);
while(ask);
data_port=dat;
set_answer;
// while(busy==0);
while((ask)==0);
clr_answer;
}
/*--------------显示中文------------------*/
void disp_chn (uchar *chn)
{
uchar i,j;
for(j=0;j<4;j++)
{
for(i=2;i<10;i++)
{
wr_zb(0xf0,i,j);
send(chn[j*16+(i-2)*2]);//chn[0],chn[1]是一个汉字的区位码 。chn[2],chn[3]是一个汉字的区位码
send(chn[j*16+(i-2)*2+1]);
}
}
}
/*--------------显示字符------------------*/
void disp_eng (uchar *eng) //英文字符可以从任意点阵行开始。汉字只能在以16个点阵对齐的边界开始。
{
uchar i,j;
for(j=0;j<4;j++)
{
for(i=4;i<20;i++)
{
wr_zb(0xf9,i,j*16);
send(eng[j*16+i-4]);
}
}
}
/* OCMJ4X8LCD初始化 */
void ocmj_init(void)
{
MCUCR=0;
DDRA=0xff;
PORTA=0xff;
DDRE=0b10000000;
PORTE=0xff;
clr_reset;//LCD复位
_delay_ms(10);
set_reset;
clr_answer;
_delay_ms(10);
}
/*------------------主程序--------------------*/
int main ()
{
ocmj_init();//初始化
// PORTC|=0X10 ; //PC4输入上拉
while(1){
//send(0xf4); //清屏
// disp_lat(0xff,0xff);
// delay1(800);
send(0xf4);
disp_chn(tab2); //用命令F0输出国标汉字
_delay_ms(1000);
//delay1(800);
// send(0xf4);
//disp_lat(0xff,0x00);
//delay1(800);
send(0xf4);
disp_eng(tab4);//??
_delay_ms(1000);
// send(0xf4);
// disp_lat(0xcc,0xcc);
// delay1(800);
//send(0xf4);
//disp_img(tab6);//
// delay1(800);
};
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -