- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
完整项目程序.doc
完整项目程序
#define uint unsigned int
#define uchar unsigned char
#define DUAN P0
//头函数
#include reg52.h
uchar code ssw[]=
{
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90
};
uchar code wei[]=
{
0xfe,0xfd,0xfb,0xf7
};
uchar pdata tt[51]; //定义空数组用于AD0809取平均值
uchar scale=20,rsd_sec,put[4]; //定义占空比比例,热释电计时秒变量
char min,sec; //定义计时分秒
bit bdata flag_auto,ss,flag_bs,flag_rsd,flag_jiejin=1; //位定义自动切换的,闪烁标志,报警位标志,热释电动作标志,接近传感器标志
uchar flag_set=0,time; //设置变量:0 正常 1 调分 2 调秒
uint lum;
bit beep1; //ad0809读出值
//函数声明
void delay(uchar i);
//管脚声明
sbit LED = P3^5; //灯光控制输出
sbit change= P1^4; //自动模式切换按键
sbit set = P1^5; //设置按键
sbit add = P1^6; //加按键
sbit sub = P1^7; //减按键
sbit rsd = P3^6; //热释电
sbit jiejin=P3^4; //接近开关
sbit buzz=P3^7;
sbit led_1=P3^2;
sbit led_2=P3^3;
sbit CS=P1^2;
sbit CLK=P1^0;
sbit DIO=P1^1;
void display()
{
uchar i;
if(flag_set==1ss==0)
{
put[0]=0xff;
put[1]=0xff0x7f;
}else
{
put[0]=ssw[min/10%10];
put[1]=ssw[min%10]0x7f;
}
if(flag_set==2ss==0)
{
put[2]=0xff;
put[3]=0xff;
}else
{
put[2]=ssw[sec/10%10];
put[3]=ssw[sec%10];
}
for(i=0;i4;i++)
{
P2=wei[i];
P0=put[i];
delay(1);
P0=0xff;
}
}
unsigned int A_D()
{
unsigned char i,dat;
CS=1; //一个转换周期开始
CLK=0; //为第一个脉冲作准备
CS=0; //CS置0,片选有效
DIO=1; //DIO置1,规定的起始信号
CLK=1; //第一个脉冲
CLK=0; //第一个脉冲的下降沿,此前DIO必须是高电平
DIO=1; //DIO置1, 通道选择信号
CLK=1; //第二个脉冲,第2、3个脉冲下沉之前,DI必须跟别输入两位数据用于选择通道,这里选通道CH0
CLK=0; //第二个脉冲下降沿
DIO=0; //DI置0,选择通道0
CLK=1; //第三个脉冲
CLK=0; //第三个脉冲下降沿
DIO=1; //第三个脉冲下沉之后,输入端DIO失去作用,应置1
CLK=1; //第四个脉冲
for(i=0;i8;i++) //高位在前
{
CLK=1; //第四个脉冲
CLK=0;
dat=1; //将下面储存的低位数据向右移
dat|=(unsigned char)DIO; //将输出数据DIO通过或运算储存在dat最低位
}
CS=1; //片选无效
return dat; //将读出的数据返回
}
/*****************按键函数*****************/
void KEY()
{
uint lum_mean,lum_all;
uchar b,c;
if(change==0)
文档评论(0)