📄 12232.c
字号:
#include"avr/io.h"
void write_command(unsigned char command);
void write_data(unsigned int data);
void delayMs( int x);
void delayUs(int x);
void Initi();
void read_busy();
void write_data_b(unsigned char data);
#define RS_H PORTD=PORTD|0X4//RS=PD4
#define RS_L PORTD=PORTD&0XFB
#define RW_H PORTD=PORTD|0X8//RW=PD3
#define RW_L PORTD=PORTD&0XF7
#define E_H PORTD=PORTD|0X10//E=PD2
#define E_L PORTD=PORTD&0XEF
#define OUT_DATA DDRC=0XFF,DDRD=DDRD|0XC0
#define IN_DATA DDRC=0,DDRD=DDRD&0X3F
unsigned char display_bit[3][9]={
{0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,},
{0,0X80,0X81,0X82,0X83,0X84,0X85,0X86,0X87,},
{0,0X90,0X91,0X92,0X93,0X94,0X95,0X96,0X97,}
};
unsigned int display[16]; //={
//0XCFC3,0XC3C5,0XD3EE,0XC1FA,0X2020,0X2020,0X2020,0X2020,
//0X2020,0X2020,0X2020,0X2020,0X2020,0XC0EE,0XBBAA,0X0120,};
int main()
{
unsigned char s,S1=1,S2=1,S3=0;
DDRD=DDRD|0X1C;
DDRB=1;
PORTB=0xfe;
Initi();
while(1)
{
display[0]=0XCFC3;
display[1]=0XC3C5;
display[2]=0XD3EE;
display[3]=0XC1FA;
display[4]=0XBBFA;
display[5]=0XD0B5;
display[6]=0X2020;
display[7]=0X2020;
display[8]=0X2020;
display[9]=0X2020;
display[10]=0X2020;
display[11]=0X2020;
display[12]=0X2020;
display[13]=0XC0EE;
display[14]=0XBBAA;
display[15]=0X0200;
for(s=16;s>0;--s)
{
read_busy();
write_command(display_bit[S1][S2]); //写地址
read_busy();
write_data(display[S3]);//写数据
++S2;
++S3;
if(S2==9){
S2=1;
++S1;
if(S1==3)S1=1;
};
if(S3==16)S3=0;
};//for(s=8;s>0;--s)
}//while(1)
}//main()
void write_command(unsigned char command)
{
OUT_DATA;
RS_L;RW_L;E_H ;
PORTC=command;
PORTD=command&0XC0;
E_L ;
}//write_command(unsigned char command)
void write_data(unsigned int data)
{
unsigned char d=0;
OUT_DATA;
RS_H;RW_L; E_H;
d=data>>8;
PORTC=d;
PORTD=d&0XC0;
E_L;
read_busy();
OUT_DATA;
RS_H;RW_L; E_H;
d=data;
PORTC=d;
PORTD=d&0XC0;
E_L;
}//write_data(unsigned char data)
void write_data_b(unsigned char data)
{
OUT_DATA;
RS_H;RW_L; E_H;
PORTC=data;
PORTD=data&0XC0;
E_L;
}//write_data(unsigned char data)
void read_busy()
{
unsigned char bsy;
IN_DATA;
do
{
RW_H;
RS_L;
E_H;
busy=PIND&0X50;
}
while(busy==0x80);
}//void read_busy()
void delayMs(int x)
{
unsigned int i;
while(x--)
{
for(i=0;i<1000;i++);
}
} //delayMs(unsigned int a)
void delayUs(int x)
{
while(x--);
} //delayMs(unsigned int a)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -