📄 text1.c
字号:
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 + -