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

📄 imprimir

📁 this is a POV (persistence of vision) designed with atmega16.
💻
字号:
/*
Proyecto Final
Diseno de Sistemas de Computadora
Presentado por:
Raymundo Yamammoto
2004-0081
Desiree Gutierrez
2004-0878
*/


// Incluyendo librerias necesarias
#include <mega16.h>
#include <stdio.h>

//Declarando variables        
	unsigned	int	key=0;
	unsigned	int	time1=0;
	unsigned	int	time2=0;
	unsigned	char	timeh=0;
	unsigned	char	timel=0;
	char    	*letrero="Hola Desire";
    	char    	*puntero=0;
    	char    	i=0;
    	char    	final[28];
    	char    	e=0;
    	char    	a=0;
    	char    	o=0;
    	unsigned	char	salida[130];
    	unsigned	char	*abc1[26]={"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
     	unsigned	char	*abc2[26]={"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
     	unsigned	char	bits[130]=	{	
     						0b01111000,//A0
     						0b00100100,
     						0b00100010,
     						0b00100100,
     						0b01111000,
     						//--------
     						0b01111110,//B1
     						0b01001010,
     						0b01001010,
     						0b01001010,
     						0b00110100,
     						//--------
     						0b00111100,//C2
     						0b01000010,
     						0b01000010,
     						0b01000010,
     						0b01000010,
     						//--------
     						0b01111110,//D3
     						0b01000010,
     						0b01000010,
     						0b01000010,
     						0b00111100,
     						//--------
     						0b01111110,//E4
     						0b01001010,
     						0b01001010,
     						0b01001010,
     						0b01000010,
     						//--------
     						0b01111110,//F5
     						0b00001010,
     						0b00001010,
     						0b00001010,
     						0b00000010,
     						//--------
     						0b01111110,//G6
     						0b01000010,
     						0b01010010,
     						0b01010010,
     						0b01110010,
     						//--------
     						0b01111110,//H7
     						0b00010000,
     						0b00010000,
     						0b00010000,
     						0b01111110,
     						//--------
     						0b00000000,//I8
     						0b00000000,
     						0b01111110,
     						0b00000000,
     						0b00000000,
     						//--------
     						0b00100000,//J9
     						0b01000000,
     						0b01000000,
     						0b01000000,
     						0b00111110,
     						//--------
     						0b01111110,//K10
     						0b00010000,
     						0b00011000,
     						0b00100100,
     						0b01000010,
     						//--------
     						0b01111110,//L11
     						0b01000000,
     						0b01000000,
     						0b01000000,
     						0b01000000,
     						//--------
     						0b01111110,//M12
     						0b00000100,
     						0b00001000,
     						0b00000100,
     						0b01111110,
     						//--------
     						0b01111110,//N13
     						0b00000100,
     						0b00001000,
     						0b00010000,
     						0b01111110,
     						//--------
     						0b00111100,//O14
     						0b01000010,
     						0b01000010,
     						0b01000010,
     						0b00111100,
     						//--------
     						0b01111110,//P15
     						0b00010010,
     						0b00010010,
     						0b00010010,
     						0b00001100,
     						//--------
     						0b00111100,//Q16
     						0b01000010,
     						0b01000010,
     						0b01100010,
     						0b01111100,
     						//--------
     						0b01111110,//R17
     						0b00010010,
     						0b00010010,
     						0b00010010,
     						0b01101100,
     						//--------
     						0b01001100,//S18
     						0b01010010,
     						0b01010010,
     						0b01010010,
     						0b00100010,
     						//--------
     						0b00000010,//T19
     						0b00000010,
     						0b01111110,
     						0b00000010,
     						0b00000010,
     						//--------
     						0b00111110,//U20
     						0b01000000,
     						0b01000000,
     						0b01000000,
     						0b00111110,
     						//--------
     						0b00011110,//V21
     						0b00100000,
     						0b01000000,
     						0b00100000,
     						0b00011110,
     						//--------
     						0b00111110,//W22
     						0b01000000,
     						0b00111110,
     						0b01000000,
     						0b00111110,
     						//--------
     						0b01100110,//X23
     						0b00011000,
     						0b00011000,
     						0b00011000,
     						0b01100110,
     						//--------
     						0b00000010,//Y24
     						0b00000100,
     						0b01111000,
     						0b00000100,
     						0b00000010,
     						//--------
     						0b01000010,//Z25
     						0b01100010,
     						0b01010010,
     						0b01001010,
     						0b01000110
     						};
//Interrupcion del Compare Match 0 	
interrupt [TIM0_COMP] void comp()
{
	key	=	1;		//Indicando que ocurrio el compare match
}

//Interrupcion del Input Capture Pin
interrupt [TIM1_CAPT] void control()
{
	time1	=	ICR1H;			//Copiar parte alta del ICR1 en time1
	time2	=	ICR1L;			//Copiar parte baja del ICR1 en time2
	time1	=	(time1<<=8);		//Moviendo 8 bits a la izaquierda el valor de time1
	time1	=	(time1+time2);		//Sumando time 1 y time 2
	time1	=	(time1/101);		//Calculando tiempo de retardo
	timel	=	(time1&&0x00ff);	//Filtrando parte baja del registro
	time1	=	(time1>>=8);		//Moviendo 8 bits a la derecha el valor de time1
	timeh	=	(time1&&0x00ff);	//Filtrando parte alta del registro

}

//Funcion de delay entre posicion de LED
void delay_1()
{       
	
	TCNT0	=	0;
	OCR0	=	timeh;
	TCCR0	|=	0b00000010;
	while(key==0);
	key	=	0;
	TCCR0	&=	0b11111101;
	TCNT0	=	0;
	OCR0	=	timel;
	TCCR0	|=	0b00000010;
	while(key==0);
	key	=	0;
	TCCR0	&=	0b11111101;*/
}

void main()
{

	DDRA	=	0xff;			//Puerto A de salida
	DDRD.6	=	0;			//Pin D.6 de entrada
	TCCR0	=	0b01000000;		//Contador 0 en modo normal
	TCCR1A	&=	0b11111100;		//Contador 1 en modo normal
	TCCR1B	=	0b01000000;		//ICE flanco positivo
	TIMSK	|=	0b00100010;             //Seleccionando interrupciones
	SREG	|=	0b10000000;		//Activar interrupciiones.
	TCNT0	=	0;			//Contador 0 igual a cero
	TCNT1	=	0;			//Contador 1 igual a cero
        TCCR1B	|=	0b00000010;		//Activando prescaler
        
        for(i=0;i<=27;i++)			//Repetir 28 veces
    	{
        	puntero=letrero+i;		//Puntero
        	final[i]= (*puntero);		//Variable fn
    	}
    	
    	a=0;					//a igual a cero
    	for(i=0;i<=27;i++)			//Repetir 28 verds
    	{
    		for(e=0;e<=25;e++)		//repetir 26 veces
    		{
    			if(final[i]==(*abc1[e]||*abc2[e]))//seleccionando letra
    			{
    				o=(e*5);		//Multiplicando por 5 para seleccionar secuencia
    				salida[a]=bits[o];	//Guardando secuencia
    				a++;			//aumentando a
    				o++;                    //aumentando o
    				salida[a]=bits[o];	//Guardando secuencia
    				a++;			//aumentando a
    				o++;			//aumentando o
    				salida[a]=bits[o];	//Guardando secuencia
    				a++;			//aumentando a
    				o++;			//aumentando o
    				salida[a]=bits[o];	//Guardando secuencia
    				a++;			//aumentando a
    				o++;			//aumentando o
    				salida[a]=bits[o];	//Guardando secuencia
    				a++;			//aumentando a    			   				
    			}    		
    		}
    		o=0;				//Iniciando contador o    	
    	}
    	      
	while(1)				//Cerrar ciclo
	{
		for(i=0;i<=27;i++)		//Repetir 28 veces
    		{
        		a=(i*5);		//Seleccionando letra a mostrar
        		PORTA=salida[a];	//primera secuencia
        		delay_1();		//Esperando
        		PORTA=salida[a+1];      //segunda secuencia
        		delay_1();		//Esperando
        		PORTA=salida[a+2];	//tercera secuencia
        		delay_1();		//Esperando
        		PORTA=salida[a+3];	//cuarta secuencia
        		delay_1();		//Esperando
        		PORTA=salida[a+4];	//quinta secuencia
        		delay_1();		//Esperando
        		PORTA=0;		//sexta secuencia
        		delay_1();		//Esperando
    		}	
	}
}

⌨️ 快捷键说明

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