这个是坛友的程序改的。已经改好四位共阳数码管显示曝光时间。设定好时间后按启动开始曝光。时间到后蜂鸣器报警一会继电器关闭曝光。想改成按下启动后继电器吸合开启曝光,时间到后继电器关闭。蜂鸣器报警一会。
复位后可以再次工作。
单片机源程序如下:
//头文件
#include <reg51.h>
#include <intrins.h>
//宏定义
#define uchar unsigned char
#define uint unsigned int
uint a;
//数码管段码端口
#define PP P0
//共阳极数码管段码
uchar code SEG7[]={/*0,1,2,3,4,5,6,7,8,9,*/
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,};
//数码管显示缓冲
uchar num[]={1,2,3,4};
//数码管位码端口
sbit q1=P2^0;
sbit q2=P2^1;
sbit q3=P2^2;
sbit q4=P2^3;
//复位开始停止加1减1按键
sbit k1=P1^0;
sbit k2=P1^1;
sbit k3=P1^2;
sbit k4=P1^3;
sbit k5=P1^4;
sbit kaiguan=P3^7;
sbit buzz=P2^5;
//延时函数ms
void _delay_ms(uint t)
{
uint i,j;
for(i=0;i<t;i++)
for(j=0;j<120;j++);
}
//数码管显示
void dis()
{
//------------------
//显示第1位
PP=num[0];
q1=1;
_delay_ms(2);
q1=0;
//显示第2位
PP=num[1];
q2=1;
_delay_ms(2);
q2=0;
//显示第3位
PP=num[2];
q3=1;
_delay_ms(2);
q3=0;
//显示第4位
PP=num[3];
q4=1;
_delay_ms(2);
q4=0;
}
//计时变量
uint jishu1s=300; //复位默认秒
uint jishu1=300; //开机默认秒
uint jishu2;
//开始停止变量
uint bz;
//显示控制
void dispaly()
{
num[0]=SEG7[jishu1%10]; |