?? 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 + -