📄 9220.c
字号:
/**************************************************************************
Controller IC:9220
Paraller type:16 bit-8080 interface
Resolutions: 176*220 pixels
P1 : DB0---DB7===>D0-D7
P2 : DB0---DB7===>D10-D17
P3 : P3.0 P3.1 P3.2 P3.3 P3.4 P3.5
cs reset rs wr rd setp
Modified date: 2007.09.24
***************************************************************************/
#include <reg52.h>
#include<intrins.h>
#include "image1.c" // 图片文件
/***********************************************/
#define DisplayCol 320 //列数
#define DisplaySeg 240 //行数
#define interface 16 //8位还是16位
#define Port1 P1 //数据口1
#define Port2 P2 //数据口2
#define black 0xffff
#define white 0x0000
#define red 0xf800
#define green 0x07e0
#define blue 0x001f
#define red_green 0xffe0
#define green_blue 0x07ff
#define blue_red 0xf81f
#define red_green_blue 0x8410
/****************接口定义**********************/
sbit cs= P3^0;
sbit reset= P3^1;
sbit rs= P3^2;
sbit wr= P3^3;
sbit rd= P3^4;
sbit setp= P3^5;
unsigned int page,seg;
/*****************函数声明***********************/
void Initst(); //初始化函数
void c_d_before(); //写数据前的命令子程序
void display_gray(); //灰度显示程序
void display_picture(); //图像显示程序
void delay(unsigned int param); //廷时子程序
void Data_Write(unsigned int a); //位写数据程序
void Command_Write(unsigned int a); //写命令程序
void control_out(unsigned int a,unsigned int b); //初始子程序
void colour_display(unsigned int param1,unsigned int param2); //各种颜色显示程序
/*
void displaye_colour_bar(); //彩条显示程序
void display_block(); //彩块显示程序
void display_snow(); //显示雪花程序
void display_h_l(); //水平线显示程序
void display_v_l(); //垂直线显示程序
*/
/****************主函数*************************/
void main(void)
{
unsigned int step=0;
Initst();
while(1)
{
for(step=1;step<9;step++)
{
switch(step)
{
case 8:display_picture() ;
while(setp){;};
break;
case 4:colour_display(white,white); //white colour yollow boder
while(setp){;};
break;
case 2:colour_display(green,green); //green colour red boder
while(setp){;};
break;
case 1:colour_display(red,red); //red colour blue boder
while(setp){;};
break;
case 3:colour_display(blue,blue); //blue colour green boder
while(setp){;};
break;
case 5:colour_display(black,black); //black colour white boder
while(setp){;};
break;
case 6:colour_display(black,white); //black colour white boder
while(setp){;};
break;
// case 6:displaye_colour_bar(); //colour bar
// while(setp){;};
// break;
// case 7:display_block(); //colour block
// while(setp){;};
// break;
//case 8:display_snow(); //colour block
//while(setp){;};
//break;
// case 9:display_h_l(); //colour block
//while(setp){;};
//break;
//case 10:display_v_l(); //colour block
//while(setp){;};
// break;
case 7:display_gray(); //colour block
while(setp){;};
break;
}
}
}
}
/****************延时子程序***************************/
void delay(unsigned int param)
{
int i;
for(;param>0;param--)
for(i=1000;i>0;i--);
}
/*************写数据的子程序*********************/
void Data_Write(unsigned int a)
{
if(interface==8)
{
cs=0;
rs=1;
rd=1;
wr=0;
Port1=(a>>8);
wr=1;
cs=1;
cs=0;
rd=1;
wr=0;
Port1=a;
wr=1;
cs=1;
rs=1;
}
else
{
cs=0;
rs=1;
rd=1;
wr=0;
Port2=(a>>8);
Port1=a;
wr=1;
cs=1;
rs=1;
}
}
/*************写命令的子程序*********************/
void Command_Write(unsigned int a)
{
if(interface==8)
{
cs=0;
rs=0;
rd=1;
wr=0;
Port1=(a>>8);
wr=1;
cs=1;
rs=1;
cs=0;
rs=0;
rd=1;
cs=0;
wr=0;
Port1=a;
wr=1;
cs=1;
}
else
{
cs=0;
rs=0;
rd=1;
cs=0;
wr=0;
Port2=(a>>8);
Port1=a;
wr=1;
rs=1;
cs=1;
}
}
/*************初始子程序*********************/
void control_out(unsigned int a,unsigned int b)
{
Command_Write(a);
Data_Write(b);
}
/***显示特殊颜色子程序,param1为主颜色,param2为边框颜色***/
void colour_display(unsigned int param1,unsigned int param2)
{
c_d_before();
for(seg=0;seg<DisplaySeg;seg++)
Data_Write(param1);
Data_Write(param1);
for(seg=0;seg<(DisplaySeg-2);seg++)
Data_Write(param2);
Data_Write(param1);
for(page=0;page<(DisplayCol-4);page++)
{
Data_Write(param1);
Data_Write(param2);
for(seg=0;seg<(DisplaySeg-4);seg++)
Data_Write(param1);
Data_Write(param2);
Data_Write(param1);
}
Data_Write(param1);
for(seg=0;seg<(DisplaySeg-2);seg++)
Data_Write(param2);
Data_Write(param1);
for(seg=0;seg<DisplaySeg;seg++)
Data_Write(param1);
}
/***************显示彩色条子程序******************/
/*
void displaye_colour_bar()
{
unsigned char i,m,k;
m=DisplayCol/7;
i=DisplayCol-m*7;
if(i>0)
{k=1;}
else
{k=0;}
c_d_before();
for(page=0;page<(m+k);page++)
for(seg=0;seg<DisplaySeg;seg++)
{
Data_Write(red); //red
i--;
if(i>0)
{k=1;}
else
{k=0;}
}
for(page=0;page<32;page++)
for(seg=0;seg<DisplaySeg;seg++)
{
Data_Write(red_green); //red+green
i--;
if(i>0)
{k=1;}
else
{k=0;}
}
for(page=0;page<32;page++)
for(seg=0;seg<DisplaySeg;seg++)
{
Data_Write(green); //green
i--;
if(i>0)
{k=1;}
else
{k=0;}
}
for(page=0;page<31;page++)
for(seg=0;seg<DisplaySeg;seg++)
{
Data_Write(green_blue); //green+blue
i--;
if(i>0)
{k=1;}
else
{k=0;}
}
for(page=0;page<31;page++)
for(seg=0;seg<DisplaySeg;seg++)
{
Data_Write(blue); //blue
i--;
if(i>0)
{k=1;}
else
{k=0;}
}
for(page=0;page<31;page++)
for(seg=0;seg<DisplaySeg;seg++)
{
Data_Write(blue_red); //blue+red
i--;
if(i>0)
{k=1;}
else
{k=0;}
}
for(page=0;page<31;page++)
for(seg=0;seg<DisplaySeg;seg++)
{
Data_Write(red_green_blue); // blue+red+green
i--;
if(i>0)
{k=1;}
else
{k=0;}
}
}
*/
/*********************显示彩色块子程序**************************/
/*
void display_block()
{ unsigned int i,k,c,cc,r,rr;
int c_l,r_l;
unsigned int x,x1,x2,x3,x4,x5,x6;
x=0;
x1=blue;
x2=green_blue;
x3=green;
x4=red_green;
x5=red;
x6=blue_red;
c=DisplayCol/12;
r=DisplaySeg/6;
c_l=(int)(DisplayCol-c*12);
if(c_l>0)
{cc=1;}
else
{cc=0;}
c_d_before();
for(i=0;i<12;i++)
{
for(page=0;page<(c+cc);page++)
{
r_l=(int)(DisplaySeg-r*6);
if(r_l>0)
{rr=1;}
else
{rr=0;}
for(seg=0;seg<(r+rr);seg++) //1
Data_Write(x1);
r_l--;
if(r_l>0)
{rr=1;}
else
{rr=0;}
for(seg=0;seg<(r+rr);seg++)
Data_Write(x2); //2
r_l--;
if(r_l>0)
{rr=1;}
else
{rr=0;}
for(seg=0;seg<(r+rr);seg++)
Data_Write(x3); //3
r_l--;
if(r_l>0)
{rr=1;}
else
{rr=0;}
for(seg=0;seg<(r+rr);seg++)
Data_Write(x4); //4
r_l--;
if(r_l>0)
{rr=1;}
else
{rr=0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -