双色点阵动态显示

来源:互联网 发布:刺客信条3a卡优化 编辑:程序博客网 时间:2024/05/01 00:02
/*-----------------------------------------------  名称:双色点阵  内容:锁存器输入公共端信号,红绿信号分别是P0口、P2口控制,锁存输入端由P0口控制,锁存端接P3.7,由J6跳帽控制例如:   dofly_WeiMa:00000001  0x01dofly_DuanMa:11111111   0xff    // 心形图像                 00000010   0x02    10010011   0x93     00000100  0x04    011011010x6d00001000  0x08    01111101   0x7d00010000  0x10    101110110xbb00100000  0x20    110101110xd701000000  0x40    111011110xef10000000  0x80    111111110xff------------------------------------------------*/
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#define uchar unsigned char#define uint  unsigned intstatic unsigned int count,i,j,x; sbit LE=P3^7;//定义锁存使能端口 unsigned char code dofly_WeiMa[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};// 输出到公共端unsigned char code dofly_DuanMa[19][8]={                                       {0xff,0x93,0x6d,0x7d,0xbb,0xd7,0xef,0xff},  //心形图像,低电平有效  {0xE7,0xDB,0xDB,0xDB,0xDB,0xDB,0xDB,0xE7},  //0  {0xEF,0xE7,0xEF,0xEF,0xEF,0xEF,0xC7,0xFF},  //1                                         //1  {0xE7,0xDB,0xDF,0xEF,0xF7,0xFB,0xC3,0xFF},  //2  {0xE7,0xDB,0xDF,0xE7,0xDF,0xDB,0xE7,0xFF},  //3  {0xEF,0xE7,0xEB,0xED,0x81,0xEF,0xEF,0xEF},  //4  {0xC3,0xFB,0xFB,0xE3,0xDF,0xDF,0xE3,0xFF},  //5  {0xE7,0xDB,0xFB,0xE3,0xDB,0xDB,0xDB,0xE7},  //6      {0xC3,0xDB,0xDF,0xEF,0xF7,0xF7,0xF7,0xFF},  //7                                         //1  {0xE7,0xDB,0xDB,0xE7,0xDB,0xDB,0xE7,0xFF},  //8  {0xE7,0xDB,0xDB,0xC7,0xDF,0xDB,0xE7,0xFF},  //9  {0xE7,0xDB,0xBD,0xBD,0x81,0xBD,0xBD,0xBD},  //A  {0xE3,0xDB,0xDB,0xE3,0xDB,0xDB,0xDB,0xE3},  //B  {0xC3,0xBD,0xFD,0xFD,0xFD,0xFD,0xBD,0xC3},  //C  {0xE1,0xDD,0xBD,0xBD,0xBD,0xBD,0xDD,0xE1},  //D                                         //1  {0x81,0xFD,0xFD,0x81,0x81,0xFD,0xFD,0x81},  //E  {0x81,0xFD,0xFD,0x81,0x81,0xFD,0xFD,0xFD},  //F  {0xC3,0xBD,0x5A,0x24,0x7E,0x5A,0xA5,0xC3},  //笑脸  {0xFF,0x99,0x00,0x00,0x00,0x81,0xC3,0xE7},  //红心 };/*------------------------------------------------                    函数声明------------------------------------------------*/void Delay(unsigned int i)//延时函数{ while(i--);}/*------------------------------------------------                    主函数------------------------------------------------*/main(){ for(x=0;x<19;x++)  //显示0————红心,一共19行{  for(j=0;j<20;j++) //用于决定绿色图像显示的时长    for(i=0;i<8;i++)  {  P0=dofly_WeiMa[i]; //公共端信号,高电平有效,扫描行     LE=1;                 //锁存     LE=0;  P0=0xff;  P0=dofly_DuanMa[x][i];//红颜色控制端信号,显示这一行的数据  Delay(300);               //扫描间隙延时,时间太长会闪烁,太短会造成重影 }           for(j=0;j<20;j++)        //用于决定绿色图像显示的时长     for(i=0;i<8;i++) {  P0=dofly_WeiMa[i]; //公共端信号,高电平有效 ,扫描行       LE=1;                 //锁存       LE=0;  P0=0xff;            //红色端置1,防止点亮红       P2=dofly_DuanMa[x][i]; //绿颜色控制端信号 ,显示这一行的数据  Delay(300);               //扫描间隙延时,时间太长会闪烁,太短会造成重影  P2=0xff;          }   }while(1){   for(j=0;j<10;j++)  //用于决定红色图像显示的时长      {     for(i=0;i<8;i++)  {  P0=dofly_WeiMa[i]; //公共端信号,高电平有效,扫描行     LE=1;                 //锁存     LE=0;  P0=0xff;  P0=dofly_DuanMa[18][i];//红颜色控制端信号,显示这一行的数据  Delay(300);               //扫描间隙延时,时间太长会闪烁,太短会造成重影 }}          for(j=0;j<10;j++)//用于决定绿色图像显示的时长      {    for(i=0;i<8;i++) {  P0=dofly_WeiMa[i]; //公共端信号,高电平有效 ,扫描行       LE=1;                 //锁存       LE=0;  P0=0xff;            //红色端置1,防止点亮红       P2=dofly_DuanMa[18][i]; //绿颜色控制端信号 ,显示这一行的数据  Delay(300);               //扫描间隙延时,时间太长会闪烁,太短会造成重影  P2=0xff;     } }       }       }