¿Qué hermano o hermana tiene un programa C51 para hacer un reloj electrónico con una pantalla de matriz de puntos de 16*64? Envíeme una copia. Después de pensarlo durante mucho tiempo, todavía siento que es demasiado engorroso para escribir. Yo mismo. ¡Gracias!
*El uso comercial está estrictamente prohibido, los infractores serán responsables de las consecuencias*
* Q Q: 513696765 *
* *
* *
* Entorno operativo: microcontrolador STC89C52, oscilador de cristal de 12 M*
* Descripción del programa: *
************ ************************************************* /
#includelt;reg52.hgt;
#include lt;intrins.hgt;
#define uchar unsigned char
# define uint unsigned int
char a, b, c, sec=56, min=34,
hora=12, sec1, sec2, min1, min2, hora1, hora2,
sec11, sec22, min11, min22, hora11, hora22, temp;
int k, n, m //Defina K para calcular el número de dígitos para mover caracteres (si hay más) es necesario mover los dígitos, defina K como int; de lo contrario, pueden aparecer caracteres confusos)
uchar taxe[94]; //definir una carga de matriz variable, sec1, sec2, min1, min2, hora1, hora2 modo palabra
sbit sclk=P3^4; //Definir el flanco ascendente del puerto de reloj 74HC595 para escribir datos
sbit rclk=P3^5 //Definir la salida 74HC595; puerto de reloj
sbit ser=P3^6; //Definir los datos de salida del flanco ascendente del puerto de entrada de datos de 74HC595
/******* Número de dígitos 0-9, año, mes, día matriz de modo de palabra** *******/
tabla de códigos de caracteres[14][8]=
{
{0x7c, 0x8a, 0x92, 0xa2, 0x7c , 0x00, 0x00, 0x00,}, //0
{0x00, 0x42, 0xfe, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,}, //1
{0x42, 0x86, 0x8a, 0x92, 0x62,
}
}
}
void main()
{
TMOD=0X01
TH0=0X3C
TL0=0XB0; ;
EA=1;
p>
ET0=1
TR0 =1;
{
for(c= 0;clt;60;c) //se usa para regular qué tan rápido o lento fluyen los personajes
{
P1=0xff; //Procesamiento de desenfoque de matriz de puntos
for(b=24;bgt;0;b--) //Debido a que 3 74HC595 están en cascada, cada línea debe usar la serie analógica puerto para enviar datos de 24 bits
{
sclk=0; // La escritura de datos requiere el flanco ascendente de 74HC595, así que bájelo primero
_nop_();
_nop_() ;
if(taxe[b k]amp; yu[a]) //Enviar datos para una línea determinada
ser=1 //escribir 1 a los datos si una de las líneas en la palabra modelo es 1 else escribe 0
else
ser=0; //escribe 0 en los datos
sclk=1; generar un flanco ascendente para escribir datos
_nop_()
_nop_()
}
rclk=0; Baje el nivel del puerto de entrada de datos 74HC595 y espere a que el flanco ascendente genere datos
_nop_()
_nop_()
rclk=; 1; // Sube el nivel del puerto de entrada de datos 74HC595 para generar un flanco ascendente
_nop_()
_nop_()
rclk=; 0; //Baja el nivel del puerto de entrada de datos 74HC595 para retener los datos
P1=~yu[a 1] //Selección de fila (nivel bajo activo)
retardo(5) ;
a ;
si(agt; 6)
a=0
}
a; =0 ;
k ; //definimos k para contar el número de bits para mover el carácter
if(kgt;=70) //si el carácter se desplaza asigna 0 para empezar de nuevo
{
k=0
}
}
}
void T0_TIME()interrupción 1
{
TH0=0X3C
TL0=0XB0
n ; p>
if(ngt;=10)
{
n=0;
qushu();
m ;
{
if(mgt;=2)
{
m=0;
shizhong () ;
}
}
}
}