📄 text1.c
字号:
//*************12Mhz*************************
//*************头文件************************
#include<AT89X52.H>
//*************宏定义************************
#define clk1 P1_0
#define clk2 P1_2
#define io P1_1
#define num_words 2 //修改字数
//*************全局变量声明******************
//-------------------------------------------
// 数组初始化,直接复制过来,【行】, 【列】
//-------------------------------------------
code unsigned char word_1[32]={
/*-- 文字: 欢 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x80,0x00,0x80,0xFC,0x80,0x05,0xFE,0x85,0x04,0x4A,0x48,0x28,0x40,0x10,0x40,
0x18,0x40,0x18,0x60,0x24,0xA0,0x24,0x90,0x41,0x18,0x86,0x0E,0x38,0x04,0x00,0x00,
};
//*************函数声明**********************
void Delay(unsigned int x);
void init(void);
void time0(void);
void Byte_out(unsigned char);
//*************主程序************************
void main (void)
{
/////////////////
init();
Delay(50);
/////////////////
while(1)
{
}
}
//***初始化*****************************
void init(void)
{
P2=P1=P3=P0=0xff; //复位后就是0XFF 为什么要设置?
// UART_init
/*
SCON =0x00;//串行口方式0,允许发送,启动发送过程
ES=0; // 禁止串口中断
*/
EA=1; // 中断总允许位。EA=1,CPU开放中断
ET0 = 1;//T0溢出中断允许位。ET0=1,允许T0中断
TMOD = 0X11;//定时器工作方式:16位计数定时器 只要用软件使TR0(或TR1)置1就能启动定时器T0(或T1);
TR0 = 1;//启动
}
/******************************************************************/
/* 函数名:定时器中断
/* 参 数:无
/* 功 能:用于时间的刷新,日期的维护
/******************************************************************/
void time0(void) interrupt 1
{
static unsigned char time_add;
static unsigned char i=0,i2=0,i2_1=0,j=0,pos_r=0,pos_l=0,pos_=num_words*2;
unsigned char k,m;
//TH0 = 0xf0; TL0 = 0xc4; //f0c4 3.9ms,12Mhz;
//TH0 = 0xe1; TL0 = 0x88; //e188 7.8ms,12Mhz; 3.9ms,24Mhz
TH0 = 0xe8; TL0 = 0x90; //6ms 12mhz /******[2(16)-T0]X10(-6)=6X10(-3) =》T0=E890******/ 时间计数器
time_add++; //时间计数器加1
P0=0x00;
if(i>=32){i=0;}
i2 = i<<1;
i2_1 = i2+1;
clk1 =0;//位置很重要
for(k=0; k<num_words*2; k++)
{
Byte_out(word_1[32]);
}
}
//-------------------------------------------------------------------------------------------------------
// 函数名称:Byte_out()
// 输入参数:byte,需要从74LS595并行口输出的数据
// 输出参数:无
// 功能说明:发送八位串行数据至并口
//--------------------------------------------------------------------------------------------------------
void Byte_out(unsigned char byte)
{
unsigned char i;
clk1=0;
clk1=1;//开始串行移位
/*
SBUF = byte;
while (TI==0){;}
TI=0;
*/
for(i=0;i<8;i++)
{
io=byte&0x01;
byte=byte>>1;
clk2=0;
clk2=1;
}
}
/******************************************************************/
/* 函数名:Delay(unsigned int x)
/* 参 数:int型延时参数
/* 功 能:延时
/******************************************************************/
void Delay(unsigned int x)
{
unsigned int j;
while(x--)
{
for (j=0;j<200;j++){;}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -