📄 ocmj4x8b(avr).c
字号:
/***********************
型号:OCMJ4X8B
单片机:ATmega8
内部RC振荡:4M
编写人:肇庆金鹏电子 吴英生 0758-2317972
日期:2007/1/5
修改纪录:
***********************/
#include <iom8v.h>
#include <macros.h>
#define data_ora PORTB //MCU PROTB<------> LCM
#define uchar unsigned char
#define uint unsigned int
#define sbit(x,y) (x|=(1<<y)) //Set Bit y of Byte x
#define cbit(x,y) (x&=~(1<<y)) //Clear Bit y of Byte x
#define chkbit(x,y) (x&(1<<y)) //Check Bit y of Byte x
#define invbit(x,y) (x^=(1<<y)) //Invert Bit y of Byte x
#define busy PORTD //PORTD0 H:已收到数据并在处理中,L:空闲可接收数据
#define req PORTD //PORTD1 请求信号,H有效
const uchar chn[]={
"本系列中文模块内"
"置二级字库,可在"
"任意位置反白显示"
"使用更方便更灵活"
};
const uchar eng[]={
"Golden Palm TECH"
"TEL:0758-2263858"
" No.31 Jianshe "
"Road3 Zhaoqing "
"P.R.China "
"Postcode: 526040"
};
const uchar pic[]={
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,
0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0x20,0x81,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0x61,0x83,0x00,0xE0,0x00,0x00,0x0F,0xFF,0xE0,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0xE3,0x87,0x03,0xE0,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x01,
0x80,0x00,0x00,0x01,0xC7,0x8F,0x07,0xC0,0x00,0x1F,0xFF,0xFF,0xFF,0xF0,0x00,0x01,
0x80,0x00,0x00,0x23,0xCF,0x9E,0x0F,0x80,0x00,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x01,
0x80,0x00,0x00,0x3B,0xFF,0xFF,0xFE,0x00,0x03,0xFF,0xFC,0x00,0x0F,0xFF,0x00,0x01,
0x80,0x00,0x00,0x3F,0xFF,0xFF,0xF8,0x00,0x0F,0xFF,0x80,0x00,0x00,0xFF,0x80,0x01,
0x80,0x00,0x00,0x3F,0xFF,0xFF,0xF0,0x00,0x3F,0xFF,0xFF,0xFF,0x00,0x0F,0xC0,0x01,
0x80,0x00,0x00,0x7C,0xFF,0xFF,0xC0,0x00,0xFF,0xFF,0xFF,0xFF,0xF0,0x07,0xC0,0x01,
0x80,0x00,0x00,0xFC,0xFF,0xFF,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFE,0x01,0xE0,0x01,
0x80,0x00,0x01,0xFF,0xFF,0xF0,0x00,0x03,0xFF,0xFF,0xF0,0x00,0xFF,0x80,0xF0,0x01,
0x80,0x00,0x01,0xFF,0xFF,0x80,0x00,0x07,0xFF,0xFF,0xFF,0xE0,0x0F,0xE0,0x70,0x01,
0x80,0x00,0x01,0x87,0xFF,0xE0,0x00,0x0F,0xFF,0xFF,0xFF,0xFE,0x01,0xF0,0x30,0x01,
0x80,0x00,0x01,0x0F,0xFF,0xF0,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xC0,0xF8,0x30,0x01,
0x80,0x00,0x00,0x7F,0xFF,0xF8,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xF0,0x78,0x30,0x01,
0x80,0x00,0x01,0xFF,0xFF,0xFC,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xF0,0x1C,0x30,0x01,
0x80,0x00,0x07,0xFF,0xFF,0xFE,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFC,0x1C,0x30,0x01,
0x80,0x00,0x1F,0xFF,0xFF,0xFE,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFE,0x0C,0x30,0x01,
0x80,0x00,0x3F,0xFF,0xFF,0xFE,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x0C,0x30,0x01,
0x80,0x00,0x7F,0xFF,0xFF,0xFE,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0C,0x30,0x01,
0x80,0x00,0xFF,0xFF,0xFF,0xFE,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x18,0x20,0x01,
0x80,0x00,0xFF,0xFF,0xFF,0xFE,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x10,0x40,0x01,
0x80,0x00,0xFF,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0xFF,0xFE,0x3F,0x00,0x80,0x01,
0x80,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x9F,0x00,0x00,0x01,
0x80,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xCF,0x00,0x00,0x01,
0x80,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xEF,0x00,0x00,0x01,
0x80,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xE7,0x00,0x00,0x01,
0x80,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0xE6,0x00,0x00,0x01,
0x80,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0xE6,0x00,0x00,0x01,
0x80,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xBF,0xC6,0x00,0x00,0x01,
0x80,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0x9F,0xC6,0x00,0x00,0x01,
0x80,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x7F,0xFF,0x9F,0x0C,0x00,0x00,0x01,
0x80,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x7F,0xFE,0x1E,0x0C,0x00,0x00,0x01,
0x80,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x7F,0xFE,0x1E,0x0C,0x00,0x00,0x01,
0x80,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x7F,0xFE,0x1C,0x0C,0x00,0x00,0x01,
0x80,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xFE,0xFC,0x18,0x0C,0x00,0x00,0x01,
0x80,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xE0,0xF8,0xF8,0x10,0x08,0x00,0x00,0x01,
0x80,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xE0,0xF9,0xF0,0x10,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0x21,0xF1,0xC0,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFE,0x21,0x81,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFE,0x11,0x01,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x01,0xFF,0xFE,0x7F,0xFE,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0x7F,0xF8,0x3F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0x1F,0xF0,0x0F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0x07,0xE6,0x03,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0x03,0xE0,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0x01,0xC0,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0x01,0xC0,0x00,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0x03,0xE0,0x00,0x3A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0x06,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0x0C,0x20,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0x31,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0xE1,0x90,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x01,0xFF,0xC1,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x03,0xFA,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
};
/*****1us延时函数****/
void delay_1us(void)
{
asm("nop");
}
/****Nus延时函数****/
void delay(uint n)
{
uint i=0;
for (i=0;i<n;i++)
delay_1us();
}
/****1ms延时函数****/
void delay_1ms(void)
{
uint i;
for (i=0;i<1140;i++);
}
/****Nms延时函数****/
void delay1(uint n)
{
uint i=0;
for (i=0;i<n;i++)
delay_1ms();
}
/*******IO口初始化******/
void port_init(void)
{
PORTB=0xff;
DDRB=0xff;
PORTD=0xff;
DDRD=0xfe;
}
/***********显示图形***********/
void disp_img (const uchar *img)
{
uchar i,j;
for(j=0;j<64;j++)
{
for(i=4;i<20;i++)
{
wr_zb(0xf3,i,j);
send(img[j*16+i-4]);
}
}
}
/*----------显示中文----------*/
void disp_chn (const 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]-0xa0);
send(chn[j*16+(i-2)*2+1]-0xa0);
}
}
}
/*------显示字符(8X16点阵)-----*/
void disp_eng (const uchar *eng)
{
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]);
}
}
}
/*------------写命令或数据到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(chkbit(PIND,PIND0));
data_ora=dat;
sbit(req,PORTD1);
while(!chkbit(PIND,PIND0));
cbit(req,PORTD1);
}
/*+++++++++主程序++++++++++*/
void main ()
{
CLI();
MCUCR=0x00;
GICR=0x00;
TIMSK=0x00; //timer interrupt sources
port_init();
cbit(req,PORTD1);
sbit(busy,PORTD0);
while(1)
{
send(0xf4);
disp_chn(chn);
delay1(800);
send(0xf4);
disp_eng(eng);
delay1(800);
send(0xf4);
disp_img(pic);
delay1(800);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -