#include<reg52.h>
//#include<STC89C51RC_RD_PLUS.H>
unsigned char table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //表:共阳数码管 0-9
unsigned char b=0; //
volatile unsigned char shuxian=0,shuxian2=0,flag=0;
//引脚定义:
sbit SMG_q = P2^7;//定义数码管阳级控制脚(千位)
sbit SMG_b = P2^6;//定义数码管阳级控制脚(百位)
sbit SMG_s = P2^5;//定义数码管阳级控制脚(十位)
sbit SMG_g = P2^4;//定义数码管阳级控制脚(个位)
sbit BEEP0 = P2^0;
sbit BEEP1 = P2^1;
sbit BEEP2 = P2^2;
sbit BEEP3 = P2^3;
#define TH 0x00
#define TL 0x00
void delay(unsigned char x) //延时
{
int i,j;
for(i=0;i<x;i++)
{
for(j=0;j<5;j++);
}
}
/*void feng(void)//蜂鸣器
{
BEEP0=1;
BEEP1=1;
BEEP2=1;
BEEP3=1;
delay(1000);
}
*/
void timer0() interrupt 1
{
TH0=TH; //重新装载初值
TL0=TL;
/* if(P1^0==0) // 开启自加
{
b++;
if(b==1)
{ flag=1;}//数码管锁定
if(b==2)
{ flag=2; b=0;} //开启自减
}*/
if(P1^1==0&&P1^0==0) {shuxian=shuxian+10; delay(6553);}
if(P1^1==0&&P1^0==1) {shuxian=shuxian-10;delay(6553);}
if(P1^2==1&&P1^0==0) {shuxian++;delay(6553);}
if((P1^2==1)&&(P1^0==1)) {shuxian--;delay(6553);}
/*if(shuxian>=100)
{
shuxian2=shuxian/100;
shuxian=shuxian%100;
} */
else
{ shuxian=shuxian;delay(6553);}
}
//显示模块;
void display(volatile unsigned char shuxian)
{
SMG_g=0;//选择个位数码管
P0=table[shuxian%10];//获取个位值,查表输出定义好的数码管段值与P0口,显示相应的0-9
delay(1);//延时
P0=0xff;
SMG_g=1;//关闭个位数码管
SMG_s=0;//选择十位数码管
P0=table[shuxian/10];//获取十位值,查表输出定义好的数码管段值与P0口,显示相应的0-9
delay(1);//延时
P0=0xff;
SMG_s=1;//关闭十位数码管
SMG_b=0;//选择百位数码管
P0=table[shuxian2];
delay(1);//延时
P0=0xff;
SMG_b=1;//关闭百位数码管
SMG_q=0;//选择百位数码管
P0=table[0];
delay(1);//延时
P0=0xff;
SMG_q=1;//关闭百位数码管*/
}
//复位中断模块
void int0() interrupt 0
{
//清零
shuxian=0;
TMOD=0x01;//定时器0和1 ,方式1, 16位, 每次得装载
TH0=TH; //重新装载初值
TL0=TL;
display(0);
delay(60000);
delay(60000);
delay(60000);
flag=0;
}
void init()
{
BEEP0=0;
BEEP1=0;
BEEP2=0;
BEEP3=0;
shuxian=0;
EA=1; //总中断开关
ET0=1; //T0溢出中断开关
EX0=1;
TR0=1; //T0运行控制 1:启动计数,0:停止计数
TMOD=0x01;//定时器0和1 ,方式1, 16位, 每次得装载
IT0=1;
TH0=TH; //重新装载初值
TL0=TL;
display(0);
delay(10);
}
void main()
{
init();
while(1)
{
delay(10);
display(shuxian);
if((flag==2)&&(shuxian==0))//在光敏电阻遮挡2次,定时到时,发声
{
//feng();
delay(100);
break;
}
}
while(1);
}
XIN.rar_xinxin51_xinxin51理论第1_光电计时器_多个计时
版权申诉
25 浏览量
2022-09-20
19:35:28
上传
评论
收藏 18KB RAR 举报
weixin_42651887
- 粉丝: 80
- 资源: 1万+
最新资源
- Python脚本,它读取一个CSV文件,进行一些数据处理,并使用Matplotlib绘制结果
- 【完结】古代猎户的养家日常 作者 今日不上朝.txt
- python从CSV文件中读取数据,进行一些基本的数据分析,并绘制出数据的直方图
- VMware虚拟机安装教程.md
- 基于STM32的MQ2烟雾浓度检测和uyn6288语音播报
- 一个常见的任务是创建数据库、表,并插入一些示例数据
- openEuler-20.03-LTS-SP4-aarch64-dvd.zip.004
- python使用pandas来读取CSV文件,使用numpy进行一些数据操作,然后使用matplotlib进行数据可视化
- python基础知识点,有代码
- python读取一个CSV文件,对数据进行简单的清洗和处理,然后使用matplotlib进行可视化
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈