基于12864液晶显示图片(4)

2019-04-10 10:28

武汉理工大学《能力拓展训练》说明书

while (!IRIN) //等IR变为高电平,跳过9ms的前导低电平信号。 {delay0(1);} for (j=0;j<4;j++) //收集四组数据 { for (i=0;i<8;i++) //每组数据有8位 { while (IRIN); //等IR变为低电平,跳过4.5ms的前导高电平信号。 while (!IRIN); //等IR变为高电平 while (IRIN) //计算IR高电平时长 { delay0(1); N++; if (N>=30) { EX0=1; return; } //0.14ms计数过长自动离开。 } //高电平计数完毕 Reive[j]=Reive[j] >> 1; //数据最高位补“0” if (N>=8) {Reive[j] = Reive[j] | 0x80;} //数据最高位补“1” N=0; }//end for i }//end for j if (Reive[2]!=~Reive[3]) { EX0=1; return; } yaokong=Reive[2]; flag=Code_Chang(yaokong); if(flag>0&&flag<5) { Last=flag; } EX0=1; }

/********************************************************* * 主函数 */ void main() { uchar line=8; // Last=flag; IE = 0x81; TCON = 0x01;

16

武汉理工大学《能力拓展训练》说明书

}

IRIN=1;

delay1(100); //上电,等待稳定 init_display(); while(1) { switch (flag) { case 0:break; case 1:picture_move_Up(Photo1,8);break; case 2:picture_move_Down(Photo1,Photo3,8);break; case 3:picture_mov_Left(Photo1,Photo2); picture_mov_Left(Photo2,Photo1);break; case 4:picture_mov_Right(Photo2,Photo1); picture_mov_Right(Photo1,Photo2);break; case 6:flag=Last;break; default:flag=0;break; } }

4.2.2 液晶显示函数文件12864.h

#include #include

#define uchar unsigned char #define uint unsigned int

uint time=2000,flag=0;//闪烁间隔时间--显示方式标志位flag /************* 12864LCD引脚定义 *************/ #define LCD_data P0 //数据口

sbit LCD_RS = P2^0; //寄存器选择输入 sbit LCD_RW = P2^1; //液晶读/写控制 sbit LCD_EN = P2^2; //液晶使能控制 sbit LCD_PSB = P2^3; //串/并方式控制 sbit LCD_RST = P2^5; //液晶复位端口

#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};

/*********************************************************/ uchar code DIS1[] = {\ 武汉理工大学 %uchar code DIS2[] = {%uchar code DIS3[] = {\ 能力扩展训练 %uchar code DIS4[] = {\电信0805 23号 \

/*********************************************************/ /* 图像字模省略 */ /*********************************************************/ uchar code Photo1[] ={}; uchar code Photo2[]={};

17

武汉理工大学《能力拓展训练》说明书

uchar code Photo3[1]={0};//该数组为调用前面的数据用

/*******************************************************************/ /* 延时函数 */ void delay1(int ms) {

while(ms--) {

uchar y; for(y=0;y<100;y++) ; } }

/*******************************************************************/ /*检查LCD忙状态 */ bit lcd_busy()

{ bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; delayNOP();

result = (bit)(P0&0x80); LCD_EN = 0; return(result); }

/*******************************************************************/ /*写指令数据到LCD */ void lcd_wcmd(uchar cmd)

{ while(lcd_busy()); LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; _nop_(); _nop_(); P0 = cmd; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; }

/*******************************************************************/ /*写显示数据到LCD */ void lcd_wdat(uchar dat)

{

18

武汉理工大学《能力拓展训练》说明书

while(lcd_busy()); LCD_RS = 1; LCD_RW = 0; LCD_EN = 0; P0 = dat; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; }

/*******************************************************************/ /* LCD初始化设定 */ void lcd_init() {

LCD_PSB = 1; //并口方式 LCD_RST = 0; //液晶复位 delay1(3); LCD_RST = 1; delay1(3);

lcd_wcmd(0x34); //扩充指令操作 delay1(5);

lcd_wcmd(0x30); //基本指令操作 delay1(5);

lcd_wcmd(0x0C); //显示开,关光标 delay1(5);

lcd_wcmd(0x01); //清除LCD的显示内容 delay1(5); }

/*********************************************************/ /* 设定显示位置 */ void lcd_pos(uchar X,uchar Y) { uchar pos; if (X==1) {X=0x80;} else if (X==2) {X=0x90;} else if (X==3) {X=0x88;} else if (X==4) {X=0x98;} pos = X+Y ;

lcd_wcmd(pos); //显示地址

19

武汉理工大学《能力拓展训练》说明书

}

/********************************************************* * 闪烁函数 */ void lcdflag(uint z) {

lcd_wcmd(0x08); delay1(z);

lcd_wcmd(0x0c); delay1(z);

lcd_wcmd(0x08); delay1(z);

lcd_wcmd(0x0c); delay1(z);

lcd_wcmd(0x08); delay1(200);

lcd_wcmd(0x0c); delay1(5);

lcd_wcmd(0x01); delay1(5); }

/********************************************************* * 图形显示 */ void photodisplay(uchar *bmp) {

uchar i,j;

lcd_wcmd(0x34); //写数据时,关闭图形显示 for(i=0;i<32;i++) {

lcd_wcmd(0x80+i); //先写入水平坐标值 lcd_wcmd(0x80); //写入垂直坐标值

for(j=0;j<16;j++) //再写入两个8位元的数据 lcd_wdat(*bmp++); delay1(1); }

for(i=0;i<32;i++) {

lcd_wcmd(0x80+i); lcd_wcmd(0x88);

for(j=0;j<16;j++) lcd_wdat(*bmp++); delay1(1); }

lcd_wcmd(0x36); //写完数据,开图形显示 }

20


基于12864液晶显示图片(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:评选推荐先进典型活动方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: