1602显示原理及应用(课件) - 图文 联系客服

发布时间 : 星期一 文章1602显示原理及应用(课件) - 图文更新完毕开始阅读5f49e3a450e2524de5187ed0

} else {

ReadValue &= 0x7f ; }

DS1302_SCLK_HIGH DS1302_SCLK_LOW }

return ReadValue ; }

/******************************************************************************

* Function: void v_DS1302WriteByte_f( uint8 Address, uint8 Content ) * * Description: 从DS1302指定的地址写入一个字节的内容 * * Parameter: Address: 要写入数据的地址 * * Content: 写入数据的具体值 * *

Return: *

******************************************************************************/

void v_DS1302WriteByte_f( uint8 Address, uint8 Content ) {

DS1302_RST_LOW DS1302_SCLK_LOW DS1302_RST_HIGH

v_DS1302Write_f( Address ) ; v_DS1302Write_f( Content ) ;

DS1302_RST_LOW DS1302_SCLK_HIGH }

/***********************************************************************

*******

* Function: uint8 v_DS1302ReadByte_f( uint8 Address ) * * Description:从DS1302指定的地址读出一个字节的内容 * * Parameter:Address: 要读出数据的地址 * * *

* Return: 指定地址读出的值(uint8) *

******************************************************************************/

uint8 v_DS1302ReadByte_f( uint8 Address ) {

uint8 ReadValue ; DS1302_RST_LOW DS1302_SCLK_LOW DS1302_RST_HIGH

v_DS1302Write_f( Address ) ; ReadValue = v_DS1302Read_f() ;

DS1302_RST_LOW DS1302_SCLK_HIGH return ReadValue ; }

/******************************************************************************

* Function: void v_ClockInit_f( void ) *

* Description:初始化写入DS1302时钟寄存器的值(主程序中只需调用一次即可) * *

Parameter: *

* * * Return: *

******************************************************************************/

void v_ClockInit_f( void ) {

if( v_DS1302ReadByte_f( 0xc1) != 0xf0 ) {

v_DS1302WriteByte_f( 0x8e, 0x00 ) ; //允许写操作

v_DS1302WriteByte_f( DS1302_YEAR_WRITE, 0x08 ) ; //年 v_DS1302WriteByte_f( DS1302_WEEK_WRITE, 0x04 ) ; //星期 v_DS1302WriteByte_f( DS1302_MONTH_WRITE, 0x12 ) ; //月 v_DS1302WriteByte_f( DS1302_DAY_WRITE, 0x11 ) ; //日 v_DS1302WriteByte_f( DS1302_HOUR_WRITE, 0x13 ) ; //小时 v_DS1302WriteByte_f( DS1302_MINUTE_WRITE, 0x06 ) ; //分钟 v_DS1302WriteByte_f( DS1302_SECOND_WRITE, 0x40 ) ; //秒 v_DS1302WriteByte_f( 0x90, 0xa5 ) ; //充电

v_DS1302WriteByte_f( 0xc0, 0xf0 ) ; //判断是否初始化一次标识写入 v_DS1302WriteByte_f( 0x8e, 0x80 ) ; //禁止写操作 } }

/******************************************************************************

* Function: void v_ClockUpdata_f( void ) *

* Description:读取时间数据,并保存在结构体CurrentTime中 * *

Parameter: * * * *

Return: *

******************************************************************************/

void v_ClockUpdata_f( void ) {

CurrentTime.Second = v_DS1302ReadByte_f( DS1302_SECOND_READ ) ; CurrentTime.Minute = v_DS1302ReadByte_f( DS1302_MINUTE_READ ) ; CurrentTime.Hour = v_DS1302ReadByte_f( DS1302_HOUR_READ ) ; CurrentTime.Day = v_DS1302ReadByte_f( DS1302_DAY_READ ) ; CurrentTime.Month = v_DS1302ReadByte_f( DS1302_MONTH_READ ) ; CurrentTime.Week = v_DS1302ReadByte_f( DS1302_WEEK_READ ) ; CurrentTime.Year = v_DS1302ReadByte_f( DS1302_YEAR_READ ) ; }

有了上面的这些函数我们就可以对DS1302进行操作了。当我们想要获取当前时间时,只需要调用v_ClockUpdata_f( void )这个函数即可。读取到的时间数据保存在CurrentTime这个结构体中。至于

如何把时间数据在数码管或者是液晶屏上显示出来我相信大家应该都会了吧^_^.

看看显示效果如何~~

下面再让我们看看DS18B20吧。

DS18B20是单总线的数字温度传感器。其与单片机的接口只需要一根数据线即可。当然连线简单意味着软件处理上可能要麻烦一点。下面来看看它的优点:

看看它的靓照。外形和我们常用的三极管没有什么两样哦。