#include "stc15f2k60s2.h"
#include "onewire.h"
#include "intrins.h"
#include "iic.h"
sbit R1=P3^0;
sbit R2=P3^1;
sbit R3=P3^2;
sbit R4=P3^3;
sbit C4=P3^4;
sbit C3=P3^5;
sbit C2=P4^2;
sbit C1=P4^4;
sbit L3=P0^2;
unsigned int date;
unsigned char moshi;
unsigned int temp=0;
unsigned char flag=1;
unsigned int tmp;
unsigned char code SMG_duanma[]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x80,0xc6,0xc0,0x86,0x8e,
0xbf,0x7f,0xc1,0xff}; //不带小数点的段码
unsigned char code SMG_duanma_1[]=
{0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,
0x00,0x10}; //带小数点的段码
void SelectHC573(unsigned char n)
{
switch(n)
{
case 4:
P2=0x80;break;
case 5:
P2=0xa0;break;
case 6:
P2=0xc0;break;
case 7:
P2=0xe0;break;
}
}
void SMG_bit(unsigned char value,unsigned char pos)
{
SelectHC573(7);
P0=0xff;
SelectHC573(6);
P0=0x01 << pos;
SelectHC573(7);
P0=value;
}
void delay_1(unsigned int t)
{
while(t--);
}
//----------------------------------初始化
void chushihua()
{
SelectHC573(5);
P0=0x00;
SelectHC573(4);
P0=0xff;
}
//----------------------------------LED灯
void led()
{
if(flag==1)
{
moshi=1;
date=temp;
SelectHC573(4);
P0=0xfe;
delay_1(500);
}
if(flag==2)
{
moshi=2;
tmp=tmp/255.0*1000;
date=tmp;
SelectHC573(4);
P0=0xfd;
delay_1(500);
}
}
void led_3()
{
if(ES==0)
{
SelectHC573(4);
L3=0;
delay_1(500);
L3=1;
delay_1(500);
}
}
//----------------------------------蜂鸣器和继电器
void RelayandBuzzer()
{
if(flag==1)
{
if(date>=280)
{
SelectHC573(5);
P0=0x10;
}
else
{
SelectHC573(5);
P0=0x00;
}
}
if(flag==2)
{
if(date>360)
{
SelectHC573(5);
P0=0x40;
}
else
{
SelectHC573(5);
P0=0x00;
}
}
}
//----------------------------------数码管
void SMG()
{
SMG_bit(SMG_duanma[18],0);delay_1(100);
SMG_bit(SMG_duanma[moshi],1);delay_1(100);
SMG_bit(SMG_duanma[19],2);delay_1(100);
SMG_bit(SMG_duanma[19],3);delay_1(100);
SMG_bit(SMG_duanma[19],4);delay_1(100);
if(flag==1)
{
SMG_bit(SMG_duanma[date/100],5);delay_1(100);
SMG_bit(SMG_duanma_1[date%100/10],6);delay_1(100);
SMG_bit(SMG_duanma[date%10],7);delay_1(100);
}
if(flag==2)
{
SMG_bit(SMG_duanma_1[date/100],5);delay_1(100);
SMG_bit(SMG_duanma[date%100/10],6);delay_1(100);
SMG_bit(SMG_duanma[date%10],7);delay_1(100);
}
}
void delaySMG(unsigned int x)
{
while(x--)
{
SMG();
}
}
//------------------------------------按键
void anjian()
{
C1=0;
C2=C3=C4=1;
R1=R2=R3=R4=1;
if(R4==0)
{
while(R4==0);
ES=0;
}
C1=0;
C2=C3=C4=1;
R1=R2=R3=R4=1;
if(R3==0)
{
while(R3==0);
if(ES==0)
{
ES=1;
}
}
}
//------------------------------------读取温度
void Read_DS18B20_temp()
{
unsigned char LSB,HSB;
init_ds18b20();
Write_DS18B20(0xcc);
Write_DS18B20(0x44);
delaySMG(250);
init_ds18b20();
Write_DS18B20(0xcc);
Write_DS18B20(0xbe);
LSB=Read_DS18B20();
HSB=Read_DS18B20();
temp=HSB;
temp=(temp<<8)|LSB;
if((temp&0xf800)==0x0000)
{
temp>>=4;
temp=temp*10;
temp=temp+(LSB&0x0f)*0.625;
}
}
//-------------------------------------------------读取电压
unsigned char PCF8591_adc()
{
IIC_Start();
IIC_SendByte(0x90);
IIC_WaitAck();
IIC_SendByte(0x03);
IIC_WaitAck();
IIC_Stop();
IIC_Start();
IIC_SendByte(0x91);
IIC_WaitAck();
tmp = IIC_RecByte();
IIC_SendAck(0);
IIC_Stop();
return tmp;
}
//-----------------------------------串口
unsigned char date_1=0x00;
void InitUart()
{
TMOD=0x20; //设置定时器1
TH1=0xfd; //9600的波特率
TL1=0xfd;
TR1=1; //打开定时器开关
SCON=0x50; //定义串口工作方式
AUXR=0x00; //辅助寄存器清零
//ES=1; //打开中断-----//通过ES锁定
EA=1; //打开总中断
}
void ServiceUart() interrupt 4
{
if(RI==1) //接收完全自动置1
{
RI=0; //程序清零
date_1=SBUF;//读SBUF数据
}
}
void sendbyte(unsigned char dat)
{
SBUF=dat; //发送数据,完成TI自动置1
while(TI==0);//等待TI置1
TI=0; //程序清零
}
void SendString(unsigned char *str)
{
while(*str!='\0')
{
delay_1(1000);
sendbyte(*str++);
}
}
void uart()
{
if(date_1!=0x00)
{
switch(date_1)
{
case 0x41:
SendString("TEMP:27.5℃\r\n");flag=1;date_1=0x00;break;
case 0x42:
SendString("Voltage:1.35V\r\n");flag=2;date_1=0x00;break;
}
}
}
void main ()
{
chushihua();
InitUart();
ES=1;
while(1)
{
led();
led_3();
RelayandBuzzer();
anjian();
Read_DS18B20_temp();
PCF8591_adc();
SMG();
uart();
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
scm221364.zip
共62个文件
obj:11个
lst:11个
c:8个
需积分: 0 0 下载量 133 浏览量
2023-04-07
16:50:14
上传
评论
收藏 163KB ZIP 举报
温馨提示
scm221364.zip
资源推荐
资源详情
资源评论
收起资源包目录
scm221364.zip (62个子文件)
scm221364
iic.h 227B
Objects
SCM221364 31KB
onewire.obj 6KB
SCM221364.obj 20KB
SCM221364.lnp 178B
STARTUP.obj 828B
SCM221364.hex 7KB
iic.obj 8KB
SCM221364.build_log.htm 1013B
onewire.c 1KB
STARTUP.A51 6KB
wwwwwwww
wangfei.uvgui.王飞 70KB
iic.h 226B
Objects
onewire.obj 6KB
wangfei 28KB
STARTUP.obj 828B
wangfei.obj 17KB
wangfei.build_log.htm 1KB
wangfei.lnp 172B
wangfei.hex 7KB
iic.obj 8KB
onewire.c 1KB
STARTUP.A51 6KB
wangfei.uvopt 6KB
wangfei.uvproj 14KB
Listings
wangfei.lst 7KB
onewire.lst 3KB
wangfei.m51 26KB
iic.lst 4KB
STARTUP.lst 14KB
iic.c 2KB
wangfei.c 3KB
onewire.h 230B
SCM221364.c 5KB
SCM221364.uvgui.王飞 71KB
Listings
SCM221364.lst 11KB
onewire.lst 3KB
SCM221364.m51 33KB
iic.lst 4KB
STARTUP.lst 14KB
SCM221364.uvopt 6KB
iic.c 2KB
SCM221364.uvproj 14KB
十二届省赛
wangfei.uvgui.王飞 69KB
Objects
onewire.obj 6KB
wangfei 20KB
STARTUP.obj 828B
wangfei.obj 16KB
wangfei.build_log.htm 986B
wangfei.lnp 150B
wangfei.hex 4KB
onewire.c 1KB
STARTUP.A51 6KB
wangfei.uvopt 5KB
wangfei.uvproj 14KB
Listings
wangfei.lst 8KB
onewire.lst 3KB
wangfei.m51 22KB
STARTUP.lst 14KB
wangfei.c 4KB
onewire.h 230B
onewire.h 230B
共 62 条
- 1
资源评论
风华是一指流沙40
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功