首页 测试环境亮度程序(ad0832测试)

测试环境亮度程序(ad0832测试)

举报
开通vip

测试环境亮度程序(ad0832测试)#include "reg52.h" #define uchar unsigned char #define uint unsigned int sbit T_CLK = P1^7; /*实时时钟时钟线引脚*/ sbit T_IO = P1^6; /*实时时钟数据线引脚*/ sbit T_RST = P1^5; /*实时时钟复位线引脚*/ sbit ACC0 = ACC^0; sbit ACC7 = ACC^7; void RTInputByte(uchar); /* 输入1Byte */ uc...

测试环境亮度程序(ad0832测试)
#include "reg52.h" #define uchar unsigned char #define uint unsigned int sbit T_CLK = P1^7; /*实时时钟时钟线引脚*/ sbit T_IO = P1^6; /*实时时钟数据线引脚*/ sbit T_RST = P1^5; /*实时时钟复位线引脚*/ sbit ACC0 = ACC^0; sbit ACC7 = ACC^7; void RTInputByte(uchar); /* 输入1Byte */ uchar RTOutputByte(void); /* 输出?1Byte */ void W1302(uchar, uchar); uchar R1302(uchar); void Set1302(uchar *); /* 设置时间*/ void Bcd2asc(uchar,uchar *); void Get1302(uchar curtime[]); /* 读取1302当前时间*/ uchar setclk[13]={0x00,0x00,0x12}; uchar getclk[13]; uchar const seg[11]={0x7f,0x44,0xbd,0xf5,0xe6,0xf3,0xfb,0x65,0xff,0xf7,0x00}; uchar dis[8]={0,0,0,0}; //设置显示缓冲存储器 uchar get_ad(bit channel); /******************************************************************** 函数名:RTInputByte() 功能:实时时钟写入一字节 说明:往DS1302写入1Byte数据(内部函数) 入口参数:d 写入的数据 返回值:无 设计:zhaojunjie 日期:2002-03-19 修改:日期: ***********************************************************************/ void RTInputByte(uchar d) { uchar i; ACC = d; for(i=8; i>0; i--) { T_IO = ACC0; /*相当于汇编中的RRC */ T_CLK = 1; T_CLK = 0; ACC = ACC >> 1; } } /******************************************************************** 函数名:RTOutputByte() 功能:实时时钟读取一字节 说明:从DS1302读取1Byte数据(内部函数) 入口参数:无 返回值:ACC 设计:zhaojunjie 日期:2002-03-19 修改:日期: ***********************************************************************/ uchar RTOutputByte(void) { uchar i; for(i=8; i>0; i--) { ACC = ACC >>1; /*相当于汇编中的RRC */ ACC7 = T_IO; T_CLK = 1; T_CLK = 0; } return(ACC); } /******************************************************************** 函数名:W1302() 功能:往DS1302写入数据 说明:先写地址,后写命令/数据(内部函数) 调用:RTInputByte() , RTOutputByte() 入口参数:ucAddr: DS1302地址, ucData: 要写的数据 返回值:无 设计:zhaojunjie 日期:2002-03-19 修改:日期: ***********************************************************************/ void W1302(uchar ucAddr, uchar ucDa) { T_RST = 0; T_CLK = 0; T_RST = 1; RTInputByte(ucAddr); /* 地址,命令*/ RTInputByte(ucDa); /* 写1Byte数据*/ T_CLK = 1; T_RST = 0; } /******************************************************************** 函数名:R1302() 功能:读取DS1302某地址的数据 说明:先写地址,后读命令/数据(内部函数) 调用:RTInputByte() , RTOutputByte() 入口参数:ucAddr: DS1302地址 返回值:ucData :读取的数据 设计:zhaojunjie 日期:2002-03-19 修改:日期: ***********************************************************************/ uchar R1302(uchar ucAddr) { uchar ucData; T_RST = 0; T_CLK = 0; T_RST = 1; RTInputByte(ucAddr); /* 地址,命令*/ ucData = RTOutputByte(); /* 读1Byte数据*/ T_CLK = 1; T_RST = 0; return(ucData); } /******************************************************************** 函数名:BurstW1302T() 功能:往DS1302写入时钟数据(多字节方式) 说明:先写地址,后写命令/数据 调用:RTInputByte() 入口参数:pWClock: 时钟数据地址格式为: 秒分时日月星期年控制 8Byte (BCD码)1B 1B 1B 1B 1B 1B 1B 1B 返回值:无 设计:zhaojunjie 日期:2002-03-19 修改:日期: ***********************************************************************/ void BurstW1302T(uchar *pWClock) { uchar i; W1302(0x8e,0x00); /* 控制命令,WP=0,写操作?*/ T_RST = 0; T_CLK = 0; T_RST = 1; RTInputByte(0xbe); /* 0xbe:时钟多字节写命令*/ for (i = 8; i>0; i--) /*8Byte = 7Byte 时钟数据+ 1Byte 控制*/ { RTInputByte(*pWClock); /* 写1Byte数据*/ pWClock++; } T_CLK = 1; T_RST = 0; } /******************************************************************** 函数名:BurstR1302T() 功能:读取DS1302时钟数据 说明:先写地址/命令,后读数据(时钟多字节方式) 调用:RTInputByte() , RTOutputByte() 入口参数:pRClock: 读取时钟数据地址格式为: 秒分时日月星期年 7Byte (BCD码)1B 1B 1B 1B 1B 1B 1B 返回值:无 设计:zhaojunjie 日期:2002-03-19 修改:日期: ***********************************************************************/ void BurstR1302T(uchar *pRClock) { uchar i; T_RST = 0; T_CLK = 0; T_RST = 1; RTInputByte(0xbf); /* 0xbf:时钟多字节读命令*/ for (i=8; i>0; i--) { *pRClock = RTOutputByte(); /* 读1Byte数据*/ pRClock++; } T_CLK = 1; T_RST = 0; } /******************************************************************** 函数名:BurstW1302R() 功能:往DS1302寄存器数写入数据(多字节方式) 说明:先写地址,后写数据(寄存器多字节方式) 调用:RTInputByte() 入口参数:pWReg: 寄存器数据地址 返回值:无 设计:zhaojunjie 日期:2002-03-19 修改:日期: ***********************************************************************/ void BurstW1302R(uchar *pWReg) { uchar i; W1302(0x8e,0x00); /* 控制命令,WP=0,写操作*/ T_RST = 0; T_CLK = 0; T_RST = 1; RTInputByte(0xfe); /* 0xbe:时钟多字节写命令*/ for (i=31; i>0; i--) /* 31Byte 寄存器数据*/ { RTInputByte(*pWReg); /* 写1Byte数据*/ pWReg++; } T_CLK = 1; T_RST = 0; } /******************************************************************** 函数名:BurstR1302R() 功能:读取DS1302寄存器数据 说明:先写地址,后读命令/数据(寄存器多字节方式) 调用:RTInputByte() , RTOutputByte() 入口参数:pRReg: 寄存器数据地址 返回值:无 设计:zhaojunjie 日期:2002-03-19 修改:日期: ***********************************************************************/ void BurstR1302R(uchar *pRReg) { uchar i; T_RST = 0; T_CLK = 0; T_RST = 1; RTInputByte(0xff); /* 0xff:时钟多字节读命令*/ for (i=31; i>0; i--) /*31Byte 寄存器数据*/ { *pRReg = RTOutputByte(); /* 读1Byte数据*/ pRReg++; } T_CLK = 1; T_RST = 0; } /******************************************************************** 函数名:Set1302() 功能:设置初始时间 说明:先写地址,后读命令/数据(寄存器多字节方式) 调用:W1302() 入口参数:pClock: 设置时钟数据地址格式为: 秒分时日月星期年 7Byte (BCD码)1B 1B 1B 1B 1B 1B 1B 返回值:无 设计:zhaojunjie 日期:2002-03-19 修改:日期: ***********************************************************************/ void Set1302(uchar *pClock) { uchar i; uchar ucAddr = 0x80; W1302(0x8e,0x00); /* 控制命令,WP=0,写操作?*/ for(i =7; i>0; i--) { W1302(ucAddr,*pClock); /* 秒分时日月星期年*/ pClock++; ucAddr +=2; } W1302(0x8e,0x80); /* 控制命令,WP=1,写保护?*/ } /******************************************************************** 函数名:Get1302() 功能:读取DS1302当前时间 说明: 调用:R1302() 入口参数:ucCurtime: 保存当前时间地址。当前时间格式为: 秒分时日月星期年7Byte (BCD码) 1B 1B 1B 1B 1B 1B 1B 返回值:无 设计:zhaojunjie 日期:2002-03-19 修改:日期: ***********************************************************************/ void Get1302(uchar ucCurtime[]) { uchar i; uchar ucAddr = 0x81; for (i=0; i<7; i++) { ucCurtime[i] = R1302(ucAddr);/*格式为: 秒分时日月星期年*/ ucAddr += 2; } } /*//////////////////////////////////////////////////////////////////////*/ void delaytime_e(uint time) //延时程序 { bit a=0; for(;time!=0;time--) { a=1; a=0; a=1; a=0; a=1; a=0; a=1; a=0; a=1; } } sbit BB=P3^6; void beep(uchar t) { uchar i; uint j; for(j=0;j0;i--);//给i赋的初值决定输出的频率 BB=~BB; } } main() { uchar i=0; uchar k=0; uchar ch=0; uchar xdata *x; uchar light=0; Set1302(setclk); Get1302(getclk); for(x=0x0000;x<0x8000;x++) { ch=*x; //保存该地址的值 *x=0xaa; //写入0xaa,读出检测 if(*x!=0xaa) { break; } *x=0x55; //写入0x55,读出检测 if(*x!=0x055) { break; } } if(x==0x8000) beep(10);// 哔一声内存检测正常 while (1) { if(k>20) { Get1302(getclk); light=get_ad(1); k=0; P0=0Xff; P1=0xff; } k++; for (i = 0; i < 6; i++) { //循环显示6位数据 switch (i) { case 0: P0=0Xdf; P1=P1|0X03; break; case 1: P0=0XBF; P1=P1|0X03; break; case 2: P0=0X7F; P1=P1|0X03; break; case 3: P0=0XFF; P1=0xfe; break; case 4: P0=0XFF; P1=0XFd; break; case 5: P0=0Xef; P1=0xff; break; } dis[5]=(light/100); //显示亮度 dis[0]=((light%100)/10); //显示接收到的十位 dis[1]=(light%10); dis[2]=(getclk[1]&0x0f); //显示时间 dis[3]=(getclk[0]>>4); //显示接收到的百位 dis[4]=(getclk[0]&0x0f); //显示接收到的十位 //dis[4]=gh%10; //显示接收到的个位 delaytime_e(200); //延时10MS 人眼睛看清数据 if((i==1)||(i==3)) P2=seg[dis[i]]&0xdf; //送数据到显示位 else P2=seg[dis[i]]; } } } sbit SCS=P1^4; sbit SCLK=P1^6; sbit SDOUT=P1^7; sbit SDIN=P1^5; uchar bdata DATAIN; sbit BITIN=DATAIN^0; uchar get_ad(bit channel) { uchar i; SCLK=0; SCS=1;//选通允许 SCS=0; SDIN=1; //启动位 SCLK=1; SDIN=1;//SGL SCLK=0; SCLK=1; SDIN=channel;//ODD=1; 选CH1通道,采样光敏电阻。ODD=0; 选CH0通道,采样咪头。 SCLK=0; SCLK=1; SCLK=0; //MUX seting time SCLK=1; SCLK=0; for(i=0;i<8;i++) { DATAIN=DA TAIN<<1; //移位8次取到采样的值 BITIN=SDOUT; SCLK=1; SCLK=0; } SCS=1; return(DATAIN); }
本文档为【测试环境亮度程序(ad0832测试)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_083599
暂无简介~
格式:doc
大小:44KB
软件:Word
页数:24
分类:互联网
上传时间:2019-02-12
浏览量:12