微信建一个网站,网站建设存在的问题有哪些,怎样开发一个app软件,工商注册流程和需要的资料一、系统方案 本设计采用STC15单片机作为主控器。 DS18B20采集温度值送到液晶1602显示。 DS1302计时#xff0c;日期送到液晶1602显示。 LM35采集另一路温度值送到数码管显示。
二、硬件设计 原理图如下#xff1a;
三、单片机软件设计 1、首先是系统初始化
/IO初始化为…一、系统方案 本设计采用STC15单片机作为主控器。 DS18B20采集温度值送到液晶1602显示。 DS1302计时日期送到液晶1602显示。 LM35采集另一路温度值送到数码管显示。
二、硬件设计 原理图如下
三、单片机软件设计 1、首先是系统初始化
/IO初始化为准双向/ void IO_Init() { P0M0 0x00;P0M1 0x00; P1M0 0x00;P1M1 0x00; P2M0 0x00;P2M1 0x00; P3M0 0x00;P3M1 0x00; P4M0 0xFF;P4M1 0x00; P5M0 0x00;P5M1 0x00; P6M0 0x00;P6M1 0x00; P7M0 0x00;P7M1 0x00; P0 0x00;P1 0x00;P2 0x00;P3 0x00; P4 0x00;P5 0x00;P6 0x00;P7 0x00; }
2、液晶显示程序
//写指令函数 void LCD_write_command(uchar command) { LCD_DBcommand; LCD_RS0;//指令 LCD_RW0;//写入 LCD_E1; LCD_E0; delay_ms(2);//等待执行完毕 。。。 } //写数据函数 void LCD_write_data(uchar dat) { LCD_DBdat; LCD_RS1;//数据寄存器 LCD_RW0;//写入数据 LCD_E1; LCD_E0; delay_ms(2);//等待程序执行完毕 。。。 } //初始化函数 void LCD_init(void) { LCD_write_command(0x38);//设置8位格式2行57 LCD_write_command(0x38);//设置8位格式2行57 LCD_write_command(0x0c);//整体显示关光标不闪烁 LCD_write_command(0x06);//设定输入方式增量不移位 LCD_write_command(0x01);//清屏显示 LCD_write_command(0x80); delay_ms(2); } 3、DS1302检测程序 /*******************************************************************************
函 数 名 : Ds1302Write函数功能 : 向DS1302命令地址数据输 入 : addr,dat输 出 : 无 *******************************************************************************/
void Ds1302Write(uchar addr, uchar dat) { uchar n; RST 0; nop();
SCLK 0;//先将SCLK置低电平。
_nop_();
RST 1; //然后将RST(CE)置高电平。
_nop_();for (n0; n8; n)//开始传送八位地址命令
{DSIO addr 0x01;//数据从低位开始传送addr 1;SCLK 1;//数据在上升沿时DS1302读取数据_nop_();SCLK 0;_nop_();
}
for (n0; n8; n)//写入8位数据
{DSIO dat 0x01;dat 1;SCLK 1;//数据在上升沿时DS1302读取数据_nop_();SCLK 0;_nop_();
} RST 0;//传送数据结束
_nop_();}
/*******************************************************************************
函 数 名 : Ds1302Read函数功能 : 读取一个地址的数据输 入 : addr输 出 : dat *******************************************************************************/
uchar Ds1302Read(uchar addr) { uchar n,dat,dat1; RST 0; nop();
SCLK 0;//先将SCLK置低电平。
_nop_();
RST 1;//然后将RST(CE)置高电平。
_nop_();for(n0; n8; n)//开始传送八位地址命令
{DSIO addr 0x01;//数据从低位开始传送addr 1;SCLK 1;//数据在上升沿时DS1302读取数据_nop_();SCLK 0;//DS1302下降沿时放置数据_nop_();
}
_nop_();
for(n0; n8; n)//读取8位数据
{dat1 DSIO;//从最低位开始接收dat (dat1) | (dat17);SCLK 1;_nop_();SCLK 0;//DS1302下降沿时放置数据_nop_();
}RST 0;_nop_(); //以下为DS1302复位的稳定时间,必须的。
SCLK 1;_nop_();
DSIO 0;_nop_();
DSIO 1;_nop_();return dat; }
/*******************************************************************************
函 数 名 : Ds1302Init函数功能 : 初始化DS1302.输 入 : 无输 出 : 无 *******************************************************************************/
void Ds1302Init() { uchar n; Ds1302Write(0x8E,0X00); //禁止写保护就是关闭写保护功能 for (n0; n7; n)//写入7个字节的时钟信号分秒时日月周年 { Ds1302Write(WRITE_RTC_ADDR[n],time[n]); } Ds1302Write(0x8E,0x80); //打开写保护功能 }
/*******************************************************************************
函 数 名 : Ds1302ReadTime函数功能 : 读取时钟信息输 入 : 无输 出 : 无 *******************************************************************************/
void Ds1302ReadTime() { uchar n; for (n0; n7; n)//读取7个字节的时钟信号分秒时日月周年 { time[n] Ds1302Read(READ_RTC_ADDR[n]); }
}
4、核心算法程序
/温度转换显示函数/ void Disp_Temperature(uint temp) //显示温度 { uchar WenduData[8]; //实时温度 float tp0.0; tptemp; temptp0.06251000.5; sprintf(WenduData,“%d.%d”,temp/100,temp%100); gotoxy(0,2); LCD_display(WenduData); LCD_write_data(0xdf);LCD_write_data(‘C’);//LCD显示温度数据 } 四、proteus仿真设计 Proteus软件是一款应用比较广泛的工具它可以在没有硬件平台的基础上通过自身的软件仿真出硬件平台的运行情况这样就可以通过软件仿真来验证我们设计的方案有没有问题如果有问题可以重新选择器件连接器件直到达到我们设定的目的避免我们搭建实物的时候如果当初选择的方案有问题我们器件都已经焊接好了再去卸载下去再去焊接新的方案的器件测试这样会浪费人力和物力也给开发者带来一定困惑Proteus仿真软件就很好的解决这个问题我们在设计之初就使用该软件进行模拟仿真测试选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸焊接实物调试最终完成本设计的作品。