标题:
单片机LED旋转显示屏的程序,有些地方不理解 求解释
[打印本页]
作者:
1085662623
时间:
2020-5-22 21:14
标题:
单片机LED旋转显示屏的程序,有些地方不理解 求解释
下面是LED旋转显示屏的程序,有些地方不理解。哪位能帮我解释一下,zhushi,不用全部,主要是从定时器0中断部分
单片机源程序如下:
#include "reg51.h"
#include "DS1302.H"
#include "hongwai.H"
#define uchar unsigned char
#define uint unsigned int
uchar xdata ShowDat[176];
uint ShowNum;
uchar nian,yue,ri,shi,fen,miao;
uchar ms,ziNum,NB;
uchar i;
bit QuanOK; //bit一般作为程序判断的标志位
uchar flagset=0;
uchar Tim_red_tab[6]={0}; //记录年月日时分秒和系统状态信息
uchar send_ok=0;
uchar code Zimo[][16];
uchar code Zimo1[][16];
uchar code Zimo2[][16];
uchar code Zimo3[][16];
void delayms(uint xms) //延时1ms
{
uchar k;
while(xms--)
{for(k=0;k<125;k++);}
}
void InterConfig(void)
{
TMOD|=0x01; //TMOD|=0x01等价于TMOD=TMOD|0x01;设置定时器0的工作方式,且保证其他位不变
TH0=0xfe;
TL0=0x0b;
ET0=1; //打开定时器0的中断
TR0=1; //定时器0工作
EX0=1; //允许外部中断
IT0=1; //外部中断的方式为 下降沿触发
EA=1; //中断总开关
}
void main()
{
InterConfig();//中断、定时器设置
for(i=0;i<176;i++) //显示数据缓存清空
{
ShowDat[i]=0xff; //设为高电平
}
TIM1init();//定时器1 红外使用
EX1init();// 外部中断1 红外使用
delayms(1000);
while(1)
{
delayms(100);
if(irok==1) //红外接收完成
{
Ircordpro();
irok=0;
}
if(irpro_ok==1) //红外解析完成
{
irpro_ok=0;
if(IRcord[2]==0x0c)//键1
{
IRcord[2]=0;
for(i=0;i<176;i++)
{
ShowDat[i]=0xff;
}
ShowNum=0; ms=0; QuanOK=0; ziNum=0;
flagset=1;
}
}
}
}
void EX0_int() interrupt 0 //外部中断0
{
ShowNum=0;
ms++;
}
void timer0() interrupt 1 //定时中断0 中断处理
{
TH0=0xfe; //0.37ms 11.0592M 晶振
TL0=0xab;
if(flagset==1)
{ if(ShowNum<80)
{
P1=ShowDat[ShowNum*2]; //送数据低位显示
P0=ShowDat[ShowNum*2+1];
ShowDat[ShowNum*2]=ShowDat[ShowNum*2+2];
ShowDat[ShowNum*2+1]=ShowDat[ShowNum*2+3];
ShowNum++;
QuanOK=1;
}
else
{
P1=P0=0xff;
if(ms==8)
{
ms=0;
QuanOK=0;
for(i=0;i<16;i++)
{
ShowDat[160+i]=Zimo1[ziNum][i];
}
ziNum=(ziNum+1)%61; //重复
}
else
{
if(QuanOK==1&&ms!=0) // 如果全部数据发送完毕 则更新160---176 数据
{
QuanOK=0;
for(i=0;i<7;i++)
{
ShowDat[(80+i)*2]=ShowDat[(80+i)*2+2];
ShowDat[(80+i)*2+1]=ShowDat[(80+i)*2+3];
}
}
}
}
}
uchar code Zimo1[][16]=
{
0xEF,0xFF,0xF3,0xFF,0xBB,0xC0,0xDB,0xFE,0xEB,0xFE,0xFB,0xFE,0xFA,0xFE,0x39,0x00,
0xFB,0xFE,0xFB,0xFE,0xEB,0xEE,0xDB,0xDE,0xBB,0xE0,0xEB,0xFF,0xF3,0xFF,0xFF,0xFF,/*"帘",0*/
0xFF,0x7E,0x3F,0xBF,0xCF,0xDE,0xE0,0xED,0xEF,0xF3,0xEF,0xFC,0x0F,0xFF,0xFF,0xFF,
0xFF,0xFF,0x00,0x00,0xDF,0xFF,0xBF,0xFF,0x7F,0xFF,0xFF,0xFC,0xFF,0xFF,0xFF,0xFF,/*"外",1*/
0xBF,0xFF,0xBD,0xFF,0x33,0x80,0xFF,0xDF,0xBF,0xEF,0xDF,0xFF,0x07,0x00,0xB0,0xDD,
0xB7,0xDD,0xB6,0xDD,0x01,0xC0,0xB7,0xDD,0xB7,0xDD,0xB7,0xDD,0xF7,0xDF,0xFF,0xFF,/*"谁",2*/
0xFF,0xDE,0xF7,0xDE,0xF7,0xEE,0xD7,0xEE,0x37,0xF6,0xF7,0xFA,0xF7,0xFC,0x00,0x00,
0xF7,0xFC,0xF7,0xFA,0x77,0xF6,0x97,0xEE,0xF7,0xEE,0xF7,0xDE,0xFF,0xDE,0xFF,0xFF,/*"来",3*/
0xEF,0xFB,0xEF,0xBB,0xEF,0x7D,0x00,0x80,0xEF,0xFE,0xAF,0xFF,0xDF,0xFF,0x07,0x00,
0xB0,0xDD,0xB7,0xDD,0xB6,0xDD,0x05,0xC0,0xB7,0xDD,0xB7,0xDD,0xF7,0xDF,0xFF,0xFF,/*"推",4*/
0xDF,0xDD,0xCF,0x98,0x53,0xDD,0x9C,0xED,0xCF,0x6D,0x6F,0xBF,0xAD,0xCE,0xCD,0xF0,
0xED,0xFE,0x01,0xF6,0xEE,0xB2,0xCE,0x74,0xAE,0xB7,0x6F,0xC7,0x7F,0xFF,0xFF,0xFF,/*"绣",5*/
0xFF,0xFF,0xFF,0x7F,0xFF,0x9F,0x07,0xE0,0xF7,0xFE,0xF7,0xFE,0xF6,0xFE,0xF1,0xFE,
0xF7,0xFE,0xF7,0xFE,0xF7,0xFE,0xF7,0xFE,0x07,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*"户",6*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xA7,0xFF,0xC7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*",",7*/
0xEF,0xFB,0xEF,0xFC,0x2F,0xFF,0x00,0x00,0x6F,0xFF,0xEF,0xBE,0xFB,0xBF,0xFB,0xBE,
0xFB,0xBE,0xFB,0xBE,0x03,0x80,0xFB,0xBE,0xFB,0xBE,0xFB,0xBE,0xFB,0xBF,0xFF,0xFF,/*"枉",8*/
0xDF,0xFB,0x5B,0xF5,0x5B,0xB6,0x5B,0x77,0x00,0x81,0x5B,0xFA,0x4B,0xFB,0xD7,0x7B,
0x7B,0xBF,0x8F,0xDF,0x70,0xEC,0xF7,0xF3,0xF7,0xCC,0x07,0xBF,0xF7,0x7F,0xFF,0xFF,/*"教",9*/
0xFF,0x7F,0xFF,0xBF,0xFF,0xDF,0xFF,0xEF,0xFF,0xF3,0xFF,0xFC,0x3F,0xFF,0xC0,0xFF,
0x3F,0xFF,0xFF,0xFC,0xFF,0xF3,0xFF,0xEF,0xFF,0xDF,0xFF,0xBF,0xFF,0x7F,0xFF,0xFF,/*"人",10*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0xFF,0xF7,0xFF,0xE7,0xFF,0xCF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*"、",11*/
0xBF,0xFF,0xBB,0x7F,0xDB,0x77,0xEB,0x7B,0x80,0xBD,0x6B,0xBA,0xDB,0xD6,0xFF,0xEE,
0xDB,0xEE,0xEB,0xF6,0x80,0xFA,0xEB,0xFC,0xDB,0xFF,0xBB,0xFF,0xBF,0xFF,0xFF,0xFF,/*"梦",12*/
0xFF,0xFF,0x03,0xC0,0xDF,0xDD,0xDB,0xDE,0x57,0xDF,0x00,0xD0,0x57,0xDF,0xDB,0x5C,
0xFF,0x9F,0x03,0xE0,0xBB,0xFF,0xBB,0xFF,0x3B,0x00,0xBD,0xFF,0xBF,0xFF,0xFF,0xFF,/*"断",13*/
0xBB,0xEF,0xBB,0xCF,0x03,0xE0,0xBB,0xF7,0xBB,0xF7,0xFF,0xFF,0x6B,0xFD,0x9B,0x85,
0xBB,0xBD,0xAB,0xBD,0x1D,0x80,0xBD,0xBD,0x9C,0xBD,0xA5,0x05,0xFF,0xFD,0xFF,0xFF,/*"瑶",14*/
0xFF,0xFF,0xBF,0xFF,0x1F,0xFF,0xAF,0x01,0xB7,0xBD,0xBB,0xBD,0xBC,0xBD,0xBF,0xBD,
0xBF,0xBD,0xBF,0xBD,0xB7,0xBD,0xAF,0x01,0x9F,0xFF,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,/*"台",15*/
0xFF,0xFF,0x0F,0x00,0xEF,0xBD,0xEF,0xBD,0xEF,0xBD,0x00,0x80,0xEF,0xBD,0xEF,0xBD,
0xEF,0xBD,0x00,0x80,0xEF,0xBD,0xEF,0xBD,0xEF,0xBD,0x0F,0x00,0xFF,0xFF,0xFF,0xFF,/*"曲",16*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xE7,0xFF,0xDB,0xFF,0xDB,0xFF,0xE7,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*"。",17*/
0x7F,0xEF,0x77,0xC7,0x77,0xEB,0x77,0xEC,0x00,0xEF,0x77,0xEB,0x77,0xE7,0x77,0xCF,
0x7F,0xFF,0x03,0x00,0xFB,0xFF,0xFB,0xF7,0xFB,0xEF,0x03,0xF0,0xFF,0xFF,0xFF,0xFF,/*"却",18*/
0xFF,0x7F,0xFF,0x7F,0xFD,0xBF,0xE1,0xBF,0x9D,0xDF,0x7D,0xEE,0xFD,0xF5,0xFD,0xFB,
0xFD,0xF5,0x7D,0xEE,0x8D,0xDF,0xF1,0xBF,0xFF,0xBF,0xFF,0x7F,0xFF,0x7F,0xFF,0xFF,/*"又",19*/
0xFF,0x7E,0xFF,0xBE,0xFF,0xDE,0x80,0xE2,0xB6,0xDE,0xB6,0xBE,0xB6,0x7E,0xB6,0x00,
0xB6,0x76,0xB6,0x76,0xB6,0x76,0x80,0x76,0xFF,0x76,0xFF,0x7E,0xFF,0x7E,0xFF,0xFF,/*"是",20*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xA7,0xFF,0xC7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*",",21*/
0xFF,0x7F,0xFF,0x9F,0x01,0xE0,0xFD,0xFF,0xED,0xDF,0xDD,0xEF,0x3D,0xF3,0xFD,0xFC,
0x3D,0xF3,0xCD,0xCF,0xFD,0xFF,0x01,0xF0,0xFF,0xCF,0xFF,0xBF,0xFF,0x07,0xFF,0xFF,/*"风",22*/
0xFB,0x00,0x8B,0xFE,0xAB,0xE2,0xAA,0xEA,0xA9,0xEA,0xAB,0xA2,0x8B,0x7E,0xFB,0x80,
0xBF,0x7F,0x3F,0xBC,0xBF,0xD3,0x80,0xEF,0xB7,0xD3,0x37,0xBC,0xF7,0x7F,0xFF,0xFF,/*"敲",23*/
0x7F,0xFF,0xBF,0xFF,0xCF,0xFF,0xE0,0xFF,0x0F,0x00,0xEF,0xFF,0x6F,0xFF,0xBF,0xFF,
0xCF,0xFF,0xE0,0xBF,0xEF,0x7F,0x0F,0x80,0xEF,0xFF,0xEF,0xFF,0xEF,0xFF,0xFF,0xFF,/*"竹",24*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xE7,0xFF,0xDB,0xFF,0xDB,0xFF,0xE7,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*"。",25*/
0xFF,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,
0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,/*"—",26*/
0xFF,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,
0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,/*"—",27*/
0xFB,0xFF,0xBB,0xEF,0xBB,0x71,0xBB,0xBF,0xA0,0xDF,0xBB,0xE7,0x0B,0xF8,0xBB,0xFF,
0xBB,0xBF,0xBB,0x7F,0xA0,0xBF,0x3B,0xC0,0xFB,0xFF,0xFB,0xFE,0xFB,0xF1,0xFF,0xFF,/*"苏",28*/
0x37,0xF7,0x47,0xE7,0x70,0xF7,0x17,0x00,0x77,0xFB,0x77,0xFB,0xFF,0xDF,0x6F,0xDF,
0x6F,0xC0,0x6F,0xEF,0xEF,0xEF,0x00,0xF8,0xEF,0xC7,0xED,0xBF,0xEB,0x0F,0xFF,0xFF,/*"轼",29*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",22*/ //61行
};
复制代码
作者:
man1234567
时间:
2020-5-23 09:24
定时器0中断部分已包含注释看不清可以靠近点
作者:
1085662623
时间:
2020-5-23 10:04
man1234567 发表于 2020-5-23 09:24
定时器0中断部分已包含注释看不清可以靠近点
我是不理解那部分的工作流程,也就是从if(shownum<80)这里开
ShowDat[ShowNum*2]=ShowDat[ShowNum*2+2];
ShowDat[ShowNum*2+1]=ShowDat[ShowNum*2+3]; 这两句是让文字滚动起来的意思吗?也就是往前一列?,还还有后面的呢,是什么?更新数据?啥意思呀。
ShowDat[(80+i)*2]=ShowDat[(80+i)*2+2];
ShowDat[(80+i)*2+1]=ShowDat[(80+i)*2+3];
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1