📄 tlcd.c
字号:
#include"iom8v.h"
void delay_1us(void)//延时,用于液晶
{
unsigned int i;
for(i=1;i<10;i++);
}
void data_0(unsigned int n)//传输N个0
{ int i;
for(i=0;i<n;i++)
{
PORTD&=0x7F; delay_1us();//data=0
PORTD&=0xBF;delay_1us();//wr=0
PORTD|=0x40; delay_1us();//wr=1
}
}
void data_1(unsigned int n)//传输N个1
{ int i;
for(i=0;i<n;i++)
{
PORTD|=0x80;delay_1us();//data=1
PORTD&=0xBF;delay_1us();//wr=0
PORTD|=0x40;delay_1us();//wr=1
}
}
void data_x(unsigned int x,unsigned int n)//传输X的前N位
{int i;
for(i=0;i<n;i++)
{ PORTD&=0x7F;//data=0,不影响传输为
PORTD|=(x&0x80);delay_1us();//将CODE最高位给PD7
PORTD&=0xBF;delay_1us();//wr=0
PORTD|=0x40;delay_1us();//wr=1
x=(x<<1);//CODE左移一位
}
}
void command_write(unsigned int command_code)
{
int i;
DDRD=0xf0; delay_1us();//PD4为CS,PD6为WR,PD7为DATA
PORTD=0xff; delay_1us();
PORTD&=0xEF; delay_1us();//cs=0
data_1(1);//送1
data_0(2);//送两个0
data_x(command_code,8);//送八个CODE
data_0(1);//送0
PORTD|=0xC0; delay_1us();//WR=1;DATA=1
PORTD|=0x10; delay_1us();//cs=1
}
void data_write(unsigned int address,unsigned int data)
{int i;
DDRD=0xf0; delay_1us();//PD4为CS,PD6为WR,PD7为DATA
PORTD=0xff; delay_1us();
PORTD&=0xEF; delay_1us();//cs=0
data_1(1);//送1
data_0(1);//送0
data_1(1);//送1
data_0(1);//送0
data_x(address,5);//送5个ADDR
data_x(data,4);//送4个DATA
PORTD|=0xC0; delay_1us();//WR=1;DATA=1
PORTD|=0x10; delay_1us();//cs=1
}
void main()
{int i,j;
//延迟时间200毫秒
for(i=0;i<10;i++)
for(j=0;j<6000;j++);
//
//液晶复位
DDRD |= 0xf0; //PD4-PD7输出
PORTD |= 0xf0; //高电平
command_write(0x29);
command_write(0x18);
command_write(0x01);
command_write(0x03);
while(1)
{
data_write(0x00,0x60);//显示9
data_write(0x08,0xc0);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -