多语言展示
当前在线:180今日阅读:126今日分享:42

双色点阵显示程序详解

双色点阵显示程序详解,8X8双色点阵
工具/原料
1

电脑

2

开发板

方法/步骤
1

主要利用二极管的动态扫描,根据电路图,分配I/O整理思路

2

#include 'reg52.h'//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

3

#define uint unsigned int#define uchar unsigned char

4

sbit smg=P3^7;uchar count=0,j=0,a=0;uchar code saomiao[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,}; //共阳极uint code xianshi [18][8]={{0xff,0xff,0xc1,0xbe,0xbe,0xbe,0xc1,0xff}, //0{0xff,0xff,0xff,0xff,0xde,0x80,0xfe,0xff}, //1{0xff,0xff,0xd8,0xba,0xba,0xba,0xc6,0xff}, //2{0xff,0xff,0xdd,0xb6,0xb6,0xb6,0xc9,0xff}, //3{0xff,0xff,0xf3,0xeb,0xdb,0x80,0xfb,0xff}, //4{0xff,0xff,0x8d,0xae,0xae,0xae,0xb1,0xff}, //5{0xff,0xff,0xc1,0xb6,0xb6,0xb6,0xd9,0xff}, //6{0xff,0xff,0xbf,0xbf,0xbf,0xb0,0x8f,0xff}, //7{0xff,0xff,0xc9,0xb6,0xb6,0xb6,0xc9,0xff}, //8{0xff,0xff,0xcd,0xb6,0xb6,0xb6,0xc1,0xff}, //9{0xff,0xff,0x80,0xb7,0xb7,0xcf,0xff,0xff}, //P{0xff,0xff,0x80,0xb7,0xb3,0x8c,0xff,0xff}, //R{0xff,0xff,0x80,0xb6,0xb6,0xb6,0xff,0xff}, //E{0xff,0xff,0xc1,0xbe,0xbe,0x9d,0xff,0xff}, //C{0xff,0xff,0x80,0xf7,0xf7,0x80,0xff,0xff}, //H{0xff,0xff,0xff,0x00,0x00,0xff,0xff,0xff}, //I{0xff,0x80,0xef,0xf7,0xfb,0x80,0xff,0xff}, //N{0x83,0xb7,0xb7,0x00,0xb7,0xb7,0x83,0xff}//中};

5

/******************************************************************//*                    延时函数声明                                *//******************************************************************//*void mdelay(uint t){  uchar n; for(;t>0;t--)  for(n=0;n<125;n++)   {;}}*/void mdelay(uint t){ uchar n; while(t--) { for(n=0;n<123;n++)   {;}  }  }

6

/******************************************************************//*                   主函数                                       *//******************************************************************/void main(){  uchar i;  EA=1;//开总中断开关 TH0=0x3c;//设置初值50ms TL0=0xb0; ET0=1;//打开定时器中断 TR0=1;//启动定时器 TMOD=0x01;//设置定时器0为工作方式1  while(1) {   if(a==1)  { for(i=0;i<8;i++) { P0=saomiao[i]; //公共端,高电平有效 smg=1; //锁存 smg=0; P0=0xff; P0=xianshi[j][i];//数组显示 mdelay(2); }      }      else      { for(i=0;i<8;i++) { P0=saomiao[i]; //公共端,高电平有效 smg=1; //锁存 smg=0; P0=0xff; P2=xianshi[j][i];//数组显示 mdelay(2); }      }   }}

7

/******************************************************************//*                   定时器0                                       *//******************************************************************/void time0() interrupt 1{  TH0=0x3c; TL0=0xb0; count++; if(count==20) {    j++; //间隔1s a++; count=0; if(j==18) j=0; if(a==2) a=0;  }}

8

本经验只供参考,如有不足,还请见谅,如果有什么疑问请在下边留言,及时给你解答。。。

注意事项

电脑

推荐信息