⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 基于C51的点阵时钟显示仿真电路和源码
💻 C
字号:

// Header:DIY摇棒
// Author:hxembed
// Date:2010年1月
#include<AT89x52.h>
#define uchar unsigned char
#define uint unsigned int

sbit key = P3^0;//定义切换画面开关
uchar Key_num;//定义按键次数
uchar Int0_num;//定义中断次数
uchar Direction;//定义摇动方向(从左到右)

uchar code Embed[]={
0x80,0x00,0x88,0x00,0x4A,0x80,0x4A,0x41,0x2A,0x21,0x2A,0x19,0x1A,0x07,0xFE,0x01,
0x19,0x09,0x19,0x0D,0x29,0x4B,0x29,0x89,0x49,0x48,0xC8,0x38,0x48,0x00,0x00,0x00,/*秀*/
0x80,0x00,0x88,0x00,0x4A,0x80,0x4A,0x41,0x2A,0x21,0x2A,0x19,0x1A,0x07,0xFE,0x01,
0x19,0x09,0x19,0x0D,0x29,0x4B,0x29,0x89,0x49,0x48,0xC8,0x38,0x48,0x00,0x00,0x00,/*秀*/


0x20,0x04,0x20,0x04,0x22,0x42,0x22,0x82,0xFE,0x7F,0x21,0x01,0x21,0x01,0x20,0x10,
0x20,0x10,0xFF,0x08,0x20,0x07,0x22,0x1A,0xAC,0x21,0x20,0x40,0x20,0xF0,0x00,0x00,/*我*/
0x00,0x40,0x40,0x20,0xB2,0xA0,0x96,0x90,0x9A,0x4C,0x92,0x47,0xF6,0x2A,0x9A,0x2A,
0x93,0x12,0x91,0x1A,0x99,0x26,0x97,0x22,0x91,0x40,0x90,0xC0,0x30,0x40,0x00,0x00,/*爱*/
0x80,0x00,0x40,0x00,0xF0,0x7F,0x2C,0x00,0x43,0x10,0x20,0x0C,0x98,0x03,0x0F,0x21,
0x0A,0x40,0xE8,0x3F,0x08,0x00,0x88,0x00,0x28,0x03,0x1C,0x1C,0x08,0x08,0x00,0x00,/*你*/

};

uchar code love[] = {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x3F,0x00,0x20,0x00,0x20,0x00,0x20,
0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x0F,
0x04,0x10,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x04,0x10,0xF8,0x0F,0x00,0x00,
0x00,0x00,0x00,0x00,0xFE,0x07,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x20,0x00,0x10,
0x00,0x08,0xFE,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x3F,0x82,0x20,0x82,0x20,
0x82,0x20,0x82,0x20,0x82,0x20,0x82,0x20,0x82,0x20,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*LOVE*/
};

uchar code love_picture[] = {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x78,0x00,0xFC,0x00,0xFE,0x01,0xFE,0x03,0xFE,0x07,0xFE,0x0F,0xFE,0x1F,0xFC,0x3F,
0xF8,0x7F,0xFC,0x3F,0xFE,0x1F,0xFE,0x0F,0xFE,0x07,0xFE,0x03,0xFE,0x01,0xFC,0x00,
0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*心形图案*/
};

uchar code Hello[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",0*/

0x08,0x20,0xF8,0x3F,0x08,0x21,0x00,0x01,0x00,0x01,0x08,0x21,0xF8,0x3F,0x08,0x20,/*"H",1*/

0x00,0x00,0x00,0x1F,0x80,0x22,0x80,0x22,0x80,0x22,0x80,0x22,0x00,0x13,0x00,0x00,/*"e",2*/

0x00,0x00,0x08,0x20,0x08,0x20,0xF8,0x3F,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,/*"l",3*/

0x00,0x00,0x08,0x20,0x08,0x20,0xF8,0x3F,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,/*"l",4*/

0x00,0x00,0x00,0x1F,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x20,0x00,0x1F,0x00,0x00,/*"o",5*/

0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x33,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,/*"!",6*/

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",7*/


};

uchar code Smile[] =  
{
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 0xF0,0x1F,0x3C,0x3C,0x0E,0xF7,0x06,0xEF,0xF3,0xDC,0xF3,0xB0,0x63,0xB0,0x03,0xB0,
 0xF3,0xB0,0xF3,0xB8,0x03,0xDD,0x06,0xEF,0x0E,0x76,0x3C,0x3C,0xF8,0x1F,0x00,0x00,
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};

uchar code Hxembed_Make[]={				  
0x00,0x00,0x00,0x0E,0x00,0x11,0x80,0x20,0x80,0x20,0x88,0x10,0xF8,0x3F,0x00,0x20,/*"d",6*/	
 0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,
      0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,
      0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,
      0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x00,


0x00,0x40,0x08,0x20,0x28,0x10,0x49,0x08,0x8A,0x04,0x0C,0x03,0xC8,0x06,0x38,0x38,
0x08,0x10,0x00,0x00,0xF8,0x07,0x00,0x20,0x00,0x40,0xFF,0x3F,0x00,0x00,0x00,0x00,/*刘*/
0x00,0x00,0x90,0x00,0x8C,0x00,0x84,0x00,0x84,0x00,0x84,0x40,0x85,0x80,0x86,0x7F,
0x84,0x00,0x84,0x00,0x84,0x00,0x84,0x00,0x94,0x00,0x8E,0x00,0x04,0x00,0x00,0x00,/*宁*/



0x00,0x00,0x00,0x00,0xC0,0x00,0xB8,0x1E,0xA0,0x02,0xFE,0x3F,0xA4,0x02,0x60,0x02,
0x50,0x1E,0x00,0x00,0xE0,0x03,0x00,0x00,0x14,0x60,0xEC,0x3F,0x00,0x00,0x00,0x00,/*"制",7*/

0x00,0x00,0x00,0x01,0x80,0x00,0x40,0x00,0xF0,0x3F,0x0C,0x00,0x80,0x00,0x40,0x00,
0x30,0x00,0xEE,0x7E,0x20,0x09,0x20,0x09,0x20,0x05,0x10,0x00,0x00,0x00,0x00,0x00,/*"作",8*/

};

uchar code Thanks[] = 
{
 0x00,0x00,0x00,0x08,0x00,0x09,0x00,0x10,
      0x00,0xFF,0x00,0x20,0x00,0x42,0x00,0x04,
      0x00,0xC8,0x00,0x30,0x00,0x2C,0x00,0xC3,
      0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,

 0x00,0x00,0x00,0x80,0x00,0x81,0x00,0x86,
      0x00,0x98,0x00,0xE0,0x00,0xB1,0x00,0xAA,
      0x00,0xA4,0x00,0xAA,0x00,0xB2,0x00,0xA1,
      0x00,0x81,0x00,0x01,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,
      0x00,0x00,0x00,0x08,0x00,0x10,0x00,0x61,
      0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x40
};

/*延时函数*/
void delay(uint X)
{
   uint i;
   for(i=0;i<=X;i++)
   ;
}
/* '嵌入式系统工程'显示112*16像素 */
void display1()
{
 uchar i;
 delay(4000);
 for(i=0;i<80;i++)
 {
     P0=~Embed[i*2];
     P2=~Embed[i*2+1];
     delay(40);//延时时间自己可以调,最好让画面显示在中间
 }
}
/*'LOVE'显示64*16像素 */
void display2()
{  
  uchar i;
  delay(4000);
  for(i=0;i<64;i++)
  {
   P0=~love[i*2];
 P2=~love[i*2+1];
 delay(120);
  }

}
/*心形图案 显示64*16像素 */
void display3()
{
   uchar i;
   delay(4000);
  for(i=0;i<64;i++)
  {
   P0=~love_picture[i*2];
 P2=~love_picture[i*2+1];
 delay(120);
  }
}

/*‘Hello!’显示64*16像素 */
void display4()
{
  uchar i;
  delay(4000);
  for(i=0;i<64;i++)
  {
   P0=~Hello[i*2];
 P2=~Hello[i*2+1];
 delay(120);
  }
}
/*笑脸图案 显示64*16像素*/
void display5()
{
  uchar i;
  delay(4000);
  for(i=0;i<64;i++)
  {
   P0=~Smile[i*2];
 P2=~Smile[i*2+1];
 delay(120);
  }
}

/*‘Hxembed制作 显示88*16像素’*/
void display6()
{
  uchar i;
  delay(4000);
  for(i=0;i<88;i++)
  {
   P0=~Hxembed_Make[i*2];
 P2=~Hxembed_Make[i*2+1];
 delay(60);
  }
}
/* '谢谢!'显示48*16像素 */
void display7()
{
   uchar i;
   delay(4000);
  for(i=0;i<48;i++)
  {
   P0=~Thanks[i*2];
 P2=~Thanks[i*2+1];
 delay(120);
  }
}

/*外部中断0子函数*/
void int0(void) interrupt 0 
{
Direction=~Direction;
 if(Direction==0)
 {
  Int0_num++;//中断次数加1
  switch(Key_num)
  {
  case 0:display1();break;
  case 1:display2();break;
  case 2:display3();break;
  case 3:display4();break;
  case 4:display5();break;
  case 5:display6();break;
  case 6:display7();break;
  default :display1();
  }
 }
}
void main(void)
{
EA=1;//开总中断
IT0=1;//下降沿中断
EX0=1;//启动外部中断0你——怒目

Key_num=0;//初始化按键次数为零

while(1)
{
 if(key==0)
 {
  delay(10000); // 去抖,可以跟自己的电路适当选择时间
  if(key==0)
  {
   Key_num++;
   if(Key_num>6)//如果超过切换页面的次数就清零
    Key_num=0;
  }
 }
}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -