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

📄 text1.c

📁 摇摇棒资料
💻 C
📖 第 1 页 / 共 2 页
字号:
	EA=1;	//开放中断
	ET0=1;	//开放定时器0中断
	TR0=1;	//启动定时器0,开始计时*/
	key=0;	//初始化显示第一组文字
	keyy=0;
	P1M0=0x55;	//0101 0101	/P1.0  P1 .2 P1.4 P1.6推挽输出
    P1M1=0xAA; 

	while(1){//等待中断
	   
	if(key1==0){	//有键按下
	 DelayUs(50);
	 if(key1==0){			
		key++;				//更换下一幅图片		
		if(key>7) key=0;	//图片循环显示 根据显示的组数来定义 这里有9组 所以就要keyy>9
		while(key1==0);		//等待按键释放			
		}
		}
	if(num>10) //每中断10次切换
		{
		keyy++;
		num=0;
		}     
        if(keyy>7)keyy=0;	//图片循环显示 根据显示的组数来定义 这里有9组 所以就要keyy>9
	}	
}
   
/*********文字显示子程序**********/

void display_word(unsigned char code *text)
{ 
   unsigned	char i,j=2;		        //j为图片起始位置 3 为第3个开始是图片 如果要显示高时32的大字 也属于图片格式
    DelayUs(6300);	
	
	for(i=0;i<64;i++)
	{
 		
        P3M0=0x00;			//0000 0000	//P3.0推挽输出 P3 .1 P3.3 P3.4输入高阻
	    P3M1=0x1B;
		if((key>=j)||(keyy>=j))
		BUFF=(*(text+i*4+3));
		else 			
		BUFF=(*(text+128+i*2+1));
		led4=0;
		P1=~BUFF>>1;
		P3M0=0x10;			//0001 0000	//P3.4推挽输出 P3 .0 P3.3 P3.1输入高阻
	    P3M1=0x0B;          //0000 1011 
		 delay(1);
		P3M0=0x00;			//0000 0000	//P3.0推挽输出 P3 .1 P3.3 P3.4输入高阻
	    P3M1=0x1B; 			//0001 1011
		led4=1;
     	P1=BUFF;             //01010101  1357
		P3M0=0x10;			//0001 0000	//P3.4推挽输出 P3 .0 P3.3 P3.1输入高阻
	    P3M1=0x0B;          //0000 1011 
	 	delay(1);
		P3M0=0x00;			//0000 0000	//P3.0推挽输出 P3 .1 P3.3 P3.4输入高阻
	    P3M1=0x1B; 			//0001 1011
		if((key>=j)||(keyy>=j))
		BUFF=(*(text+i*4+2));
		else
		BUFF=(*(text+128+i*2));
		led3=0;
		P1=~BUFF>>1;
		P3M0=0x08;			//0000 1000	//P3.3推挽输出 P3 .0 P3.1 P3.4输入高阻
	    P3M1=0x13;          //0001 0011
		delay(1);
		P3M0=0x00;			//0000 0000	//P3.0推挽输出 P3 .1 P3.3 P3.4输入高阻
	    P3M1=0x1B; 			//0001 1011
		led3=1;
     	P1=BUFF;             //01010101  1357
		P3M0=0x08;			//0000 1000	//P3.3推挽输出 P3 .0 P3.1 P3.4输入高阻
	    P3M1=0x13;          //0001 0011
	 	delay(1);
		P3M0=0x00;			//0000 0000	//P3.0推挽输出 P3 .1 P3.3 P3.4输入高阻
	    P3M1=0x1B;
		if((key>=j)||(keyy>=j))
		BUFF=(*(text+i*4+1));
		else
		BUFF=(*(text+i*2+1));
		led2=0;
	    P1=~BUFF>>1;
		P3M0=0x02;			//0000 0010	//P3.1推挽输出 P3 .0 P3.3 P3.4输入高阻
	    P3M1=0x19;			//0001 1001
		delay(1);
		P3M0=0x00;			//0000 0000	//P3.0推挽输出 P3 .1 P3.3 P3.4输入高阻
	    P3M1=0x1B; 			//0001 1011
		led2=1;       
     	P1=BUFF;            //01010101  1357
		P3M0=0x02;			//0000 0010	//P3.1推挽输出 P3 .0 P3.3 P3.4输入高阻
	    P3M1=0x19;			//0001 1001
	 	delay(1);
		P3M0=0x00;			//0000 0000	//P3.0推挽输出 P3 .1 P3.3 P3.4输入高阻
	    P3M1=0x1B; 			//0001
		if((key>=j)||(keyy>=j))
		BUFF=(*(text+i*4));
		else
		BUFF=(*(text+i*2));
		led1=0;
		P1=~BUFF>>1;
		P3M0=0x01;			//0000 0001	//P3.0推挽输出 P3 .1 P3.3 P3.4输入高阻
	    P3M1=0x1A; 			//0001 1010
		delay(1);
	    P3M0=0x00;			//0000 0000	//P3.0推挽输出 P3 .1 P3.3 P3.4输入高阻
	    P3M1=0x1B; 			//0001 1011
		led1=1;       		
     	P1=BUFF;            //01010101  1357
		P3M0=0x01;			//0000 0001	//P3.0推挽输出 P3 .1 P3.3 P3.4输入高阻
	    P3M1=0x1A; 			//0001 1010
	 	delay(1);

} }
/*********显示内容选择子程序**********/
void display(unsigned char t)
{	keyy=0;
	switch (t){		//通过按键选择显示内容
		case 0:	{display_word(text0);}break;
		case 1:	{display_word(text1);}break;
		case 2:	{display_word(text2);}break;
		case 3:	{display_word(text3);}break;
		case 4:	{display_word(text4);}break;
		case 5:	{display_word(text5);}break;
		case 6:	{display_word(text6);}break;
		case 7:	{display_word(text7);}break;
	//	case 8:	{display_word(text8);}break;		
	//	case 9:	{display_word(text9);}break;
	//	case 10:{display_word(text10);}break;
		//default:{display_word(text1);}
		
		
		}}
/*****************************************/
void display1(unsigned char y)
{
	switch (y){		//通过按键选择显示内容
		case 0:	{display_word(text0);}break;
		case 1:	{display_word(text1);}break;
		case 2:	{display_word(text2);}break;
		case 3:	{display_word(text3);}break;
		case 4:	{display_word(text4);}break;
		case 5:	{display_word(text5);}break;
		case 6:	{display_word(text6);}break;
		case 7:	{display_word(text7);}break;
	//	case 8:	{display_word(text8);}break;
	//	case 9:	{display_word(text9);}break;
	//	case 10:{display_word(text10);}break;
		}
		}
/***************************************/
/*********延时子程序**********/
void delay(unsigned char n)
{
	for(;n>0;n--){
		DelayN=DelayTime;
		while (DelayN);
	}
}
/*********中断子程序**********/
void int0() interrupt 0	//使用外部中断0
{
 KY=~KY;
 if(KY==0)
 {			
	DelayTime=TimeCount/1580;	
	TimeCount=0;	//延时周期计数清零
	if(key==0)
	{
	 num++;
	 display1(keyy);	//根据按键选择循环显示文字
	}
	else
	{
	display(key);	//根据按键选择循环显示文字
	}
}
}
void timer0() interrupt 1		//定时器0中断子程序
{
	TimeCount++;
	if (DelayN!=0)
	DelayN--;
}

⌨️ 快捷键说明

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