//-------------------------------------------------------------------------------------------
//** 嵌入文件 **
//-------------------------------------------------------------------------------------------
#include <reg52.h> //51单片机硬件资源参数说明
#include<intrins.h>
#include"ir.h"
#include"Ds1302.h"
#include"zimo.h"
#include"delay.h"
//#include"Delay.h"
//-------------------------------------------------------------------------------------------
//** 变量说明 **
//-------------------------------------------------------------------------------------------
unsigned char V[25];
unsigned char ii,i,j,t; //显示定位,i:字符,j:字符其中的一列
unsigned int s; //每隔5毫秒的时间计数
unsigned char hour;
//unsigned char BG,BZ; //显示状态用标志
unsigned int N; //转速计数值
unsigned int Rt; //LED显示一列的时间
unsigned char Tz,St,mode;
/**用于显示函数中的变量定义**/
//unsigned char V[25]; //显示缓冲区用数组
//unsigned char cc; //取数值的位用变量
//unsigned int aa,bb,num;
//unsigned char Time[]={0,0,0,0,0,0,0};
unsigned char code max[]={59,59,23,7,31,12,99};//时间调整最大值
unsigned char code min[]={0, 0, 0, 1, 1, 1, 1};//时间调整最小值
//
void Display5(void);
void Dis_tz(void);
//void Display1(void);
void display8(void);
void Display1(void);
void Display2(void);
void Display6(void);
void Display7(void);
void Display10(void);
//-------------------------------------------------------------------------------------------
//函数名称:外部中断0处理程序
//函数功能: 确定显示的起点,打开定时器0
//-------------------------------------------------------------------------------------------
void intersvr0(void) interrupt 0
{
TH0=-150/256; //给定时器一定的偏移量
TL0=-150%256; //让外部中断与定时中断在时间上错开,避免冲突
s=0;
t=ii; //定义显示字符变量
P2=0x0f;
P1=0xff; //显示初始化
P2=0x00;
ET0=1; //打开定时器0
N++; //进行转速计数
}
//-------------------------------------------------------------------------------------------
//** 定时中断0处理函数 **
//-------------------------------------------------------------------------------------------
void timer0(void) interrupt 1
{
TH0=-(Rt/256);
TL0=-(Rt%256); //显示"一排"LED的时间
if(j>0)
j--; //在字符表中取字
else
{
j=5;
{
if(t>0)
t--;
else
{
t=0;
ET0=0; //关闭定时器0
}
}
}
if(t>24) i=t-25;
else i=t;
P1=~ASCIIDOC[V[i]*6+j]; //取出的数据到输出口
// P1=0xff;
if(mode==0)
Display1();
if(mode==4)
Display2();
if(mode==5)
Display10();
if(mode==6)
Display6();
if(mode==7)
Display7();
if(mode==8)
P1=0xff;
if(mode==1)
Display5();
if(mode==2)
Dis_tz();
// if(mode==1)
// display8();
// if(mode==1)
// Display1();
}
//-------------------------------------------------------------------------------------------
//** 定时中断1处理函数 **
//-------------------------------------------------------------------------------------------
void timer1(void) interrupt 3
{
TH1=-(Rt/256);
TL1=-(Rt%256); //将5毫秒作为一个时间段
s++;
P2=0x08;
P1=0x7f;
if(mode==3)
display8();
}
//-------------------------------------------------------------------------------------------
// 函数名称:定时器2中断服务函数
// 函数功能:为红外解码提供精确时间
// 解释: 定时器2为16位自动重装,中断初始化值赋0,
//------------------------------------------------------------------------------------------
void timer2(void) interrupt 5
{
}
//-------------------------------------------------------------------------------------------
//** 主程序 **
//-------------------------------------------------------------------------------------------
void main(void)
{
unsigned char k;//循环变量
TMOD=0x10; //使用定时器的方式
TH0=0;
TL0=0; //初始化定时器0
TR0=1; //开定时器0
ET0=1; //允许定时器中断
TH1=0;
TL1=0; //初始化定时器1
TR1=0; // 开定时器1
ET1=1; // 允许定时器1中断
TH2=0;
TL2=0; //初始化定时器2
TR2=1; //启动定时器2
EXEN2=0; //设置定时器2为16自动重装
IT0=1; //允许外部中断0
EX0=1; //设置外部中断0为边沿跳变方式
IT1=1; //允许外部中断1
EX1=1; // 设置外部中断1为边沿触发
EA=1; //打开总中断
Rt=7300; //设置LED显示1列的时间,由电机的转速与晶振的频率决定
//
// BZ=0; //显示状态标志置0
Set1302();
for(k=0;k<25;k++)
V[k]=10; //初始化显示数组
while(1) //进入主程序循环
{
// if(mode==1) {TMOD=0x01; Rt=1000;s=0;}
// else {Rt=8000;TMOD=0x10;}
Time[0]=Read1302(0x81);//从DS1302读取时间
Time[1]=Read1302(0x83);
Time[2]=Read1302(0x85);
Time[3]=Read1302(0x8b);
Time[4]=Read1302(0x87);
Time[5]=Read1302(0x89);
Time[6]=Read1302(0x8d);
/************************************************
使用遥控器,不同画面模式的选择
***********************************************/
if(irreceok)
{
irpros();
irreceok=0;
}
if(irprosok)
{
// if(ircode==28)
// Display1();
// if(St==0)
// {
// if(ircode==8) mode=!mode;
//// if(ircode==24) mode=3;
//
// }
if(ircode[2]==69)
{St=0;mode=1;}
if(ircode[2]==70) //调整模式进入或退出
{
St=1;
mode=2;
}
if(St==0)
{
if(ircode[2]==22) {mode=1;TR1=0;TR0=1;Rt=7300;}
// if(ircode[2]==12) mode=1;
if(ircode[2]==24) {mode=3;TR0=0;TR1=1;s=0;Rt=1000;}
if(ircode[2]==68) mode=5;
}
if(St==1) //进入调整状态
{
if(ircode[2]==64) //选择调整项,调整项左移
{
if(Tz<6)Tz++;else Tz=0;
}
if(ircode[2]==7) //选择调整项,调整项右移
{
if(Tz>0)Tz--;else Tz=6;
}
if(ircode[2]==9) //调整项加
{
if(Time[Tz]<max[Tz])Time[Tz]++;else Time[Tz]=min[Tz];
}
if(ircode[2]==21) //调整项减
{
if(Time[Tz]>min[Tz])Time[Tz]--;else Time[Tz]=max[Tz];
}
Set1302();
}
// if(ircode==69)
// mode=2;
irprosok=0;
}
switch(mode)
{
case 0:
case 4:
ii=49;
break;
case 1:
case 2:
case 5:
ii=24;
break;
}
if(mode==0)
{
delay(2000);
mode=6;
delay(4000);
mode=4;
delay(2000);
mode=7;
delay(4000);
mode=1;
}
if(mode==5)
{
delay(1500);
mode=7;
delay(3000);
mode=8;
}
}
}
void Display1(void)
{
P2=0X01;
V[0]=36; //W
V[1]=44; //e
V[2]=51; //l
V[3]=42; //c
V[4]=54; //o
V[5]=52; //m
V[6]=44; //e
V[7]=10; //(空)
V[8]=33; //T
V[9]=54; //o
V[10]=10; //(空)
V[11]=21; //H
V[12]=44; //e
V[13]=57; //r
V[14]=44; //e
V[15]=10; //(空)
V[16]=37; //X
V[17]=17; //D
V[18]=10; //(空)
V[19]=23; //J
V[20]=36; //W
V[21]=19; //F
V[22]=1; //1
V[23]=2; //2
V[24]=0; //0
}
void Display2(void)
{
P2=0X01;
V[0]=36; //W
V[1]=44; //e
V[2]=36; //W
V[3]=48; //i
V[4]=51; //l
V[5]=51; //l
V[6]=32; //S
V[7]=47; //h
V[8]=53; //o
V[9]=62; //w
V[10]=10; //(空)
V[11]=38;
pov.zip_57578h. com
版权申诉
120 浏览量
2022-09-19
21:51:23
上传
评论
收藏 65KB ZIP 举报
weixin_42651887
- 粉丝: 79
- 资源: 1万+
最新资源
- 基于matlab实现本份代码能对图像进行gabor滤波处理,结合指纹方向图以及指纹沟壑频率特性,对指纹图像进行增强.rar
- 基于matlab实现RBM神经网络实现了手写数字体识别的GUI程序.rar
- 基于matlab实现蝙蝠算法优化相关向量机建模对数据进行建模和预测.rar
- 基于matlab实现编写的禁忌搜索算法,解决了TSP问题,对初学者有重要的参考价值.rar
- 基于matlab实现SOH关于IMU进行姿态求解的C代码,里面包含了两套代码,分别是重力约束法求解和梯度下降法求解.rar
- 1_简单电子邮件客户端.zip
- 基于matlab实现powell优化搜索算法,适合于多参数优化且目标函数中不包含参数的情况.rar
- 基于matlab实现PID神经网络前向和反向学习算法的matlab的原程序代码.rar
- 基于matlab实现nsga-2的多目标优化算法,有注解.rar
- AIR-AP1815-K9-ME-8-5-182-0.zipFor 1815 1830 1840 1850 2700 3700
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈