好房网

网站首页知识问答 >正文

今日更新1602引脚图(1602液晶模块引脚)

2022-05-13 06:02:13 知识问答来源:
导读 文章目录[隐藏]模块选择模块选择分析设计理念产品布线部分世代部分代码分析摘要602引脚图(1602液晶模块引脚)原心有电子企业专卖店2021-...

 

文章目录[隐藏]

模块选择模块选择分析设计理念产品布线部分世代部分代码分析摘要

602引脚图(1602液晶模块引脚)原心有电子企业专卖店2021-06-01 18:38

模块选择

模块选择分析

设计理念

产品布线

部分代码分析

摘要

模块选择

在设计电子钟的时候,采用了最基本的单片机51,使用的芯片是STC89C52RC,开发板使用最小的系统板,也方便朋友们了解接线和原理。简单明了。时钟芯片的选择选用DS1302的时钟模块,布线中采用杜邦线连接,显示采用低功耗的LCD1602。LCD1602的对比度调节选用单匝精度的10K电阻。

模块选择分析

模块的具体图片如下:

DS1302时钟芯片是美国DALLAS公司推出的具有涓流充电能力的低功耗实时时钟电路DS1302的结构、工作原理和应用。可以计时年、月、日、周日、时、分、秒,具有闰年补偿功能;

LCD1602液晶显示器是一种工业字符液晶显示器,可以同时显示16x02或32个字符。(16列2行),上面一行刚好可以显示年、月、日,下面一行可以显示时钟。

设计理念

简介***lcd1602显示实时时钟,时钟芯片的初始值可以在函数中设置。缺点:这个函数因为没有添加其他函数,比较简单,校准时间只能通过源码来校准。

流程:

在程序前端定义一个初始化的数组文件。注意,DS1302需要转换成压缩BCD码存储,方便时钟芯片初始化和芯片写保护时调用数组。

读写LCD1602和DS1302的初始化序列代码。由于DS51与LCD1602之间没有直接的SPI通信,因此DS1302类似于LCD1602的三线式SPI通信,可以使用软件进行模拟通信。

取出DS1302读取的数据,显示在LCD1602上。

产品布线

产品的接线如下图所示。在接线中,LCD的数据端口使用单片机的P0端口,时钟端口使用P2_0至P2 _ 3端口,DS1302使用P1_1至P1_3端口。具体效果和接线见下图:

部分世代

部分代码分析

串行通信字节发送分析:

如何将一个字节拆分成0101的二进制位发送出去,分析如何将0101的二进制位变成一个完整的字节。

首先,23 H=0010 0011B,最低位为1,最高位为0。现在操作0x23&0x01,结果当然是0x01。这时候我们要把数据线改成1,然后0x23右移一个二进制位,结果就是11h = 001 0001b(这里很重要的一点,数据右移,数据右移

假设上述数据右移两次后,初始的23 H变成08 h = 0000 1000 B,现在对0x08&0x01继续运算的结果是0。此时数据线变为0,如此循环重复8次,就可以将一个字节分割成串行数据,逐位传输。

接收解析:

假设串行数据首先发送最低位。首先一个数据00 H右移一个二进制位,得到的数据当然还是00 H。然后如果数据总线上的电平是1,那么此时00 H和80 H进行OR运算,结果是80 H,然后80 H在下一个电平右移一个二进制位,结果是40 H,如果此时数据线的电平还是1,求和继续到80 H。

时间序列分析

从上面的读写顺序可以看出,读取单个字节时,是时钟脉冲的下降沿脉冲信号。因此,在程序中,可以将下降沿脉冲信号变为时钟信号的高电平,然后变为低电平以读取一个字节。一个字节有8位,for循环可以用于8位循环读取。代码如下:

u8 DS1302_Read_Byte(){  u8 i, Byte ;  DS_CLK = 1 ;                                            //时钟线拉高  Byte = 0 ;  for( i=0; i>= 1 ;                                          //数据右移一个位    DS_CLK = 0 ;                                          //时钟线拉低产生下降沿    if( DS_IO==1 )                                          //判断数据线上的值为1      Byte |= 0x80 ;                                        //字节写入1    DS_CLK = 1 ;                                          //时钟线拉高  }  return Byte ;}

读的时序正好与写的时序相反,写在上升沿进行:

void DS1302_Write_Byte( u8 Byte ){  u8 i ;  for( i=0; i>= 1 ;                                          //数据右移一个位    DS_CLK = 0 ;                                          //时钟线复位    DS_CLK = 1 ;                                          //时钟线拉高产生上升沿  }}

1: LCD1602初始化代码

void LCD_init(void) {Write_Instruction(0x38);//8bit interface,2line,5*7dotsDelay_xms(5);Write_Instruction(0x38);Delay_xms(5);Write_Instruction(0x38);Write_Instruction(0x08);//关显示,不显光标,光标不闪烁Write_Instruction(0x01);//清屏Delay_xms(5);Write_Instruction(0x04);//写一字符,整屏显示不移动//Write_Instruction(0x05);//写一字符,整屏右移//Write_Instruction(0x06);//写一字符,整屏显示不移动//Write_Instruction(0x07);//写一字符,整屏左移Delay_xms(5);//Write_Instruction(0x0B);//关闭显示(不显示字符,只有背光亮)Write_Instruction(0x0C);//开显示,光标、闪烁都关闭//Write_Instruction(0x0D);//开显示,不显示光标,但光标闪烁//Write_Instruction(0x0E);//开显示,显示光标,但光标不闪烁//Write_Instruction(0x0F);//开显示,光标、闪烁均显示}

2: DS1302写初始值代码是因为前面有一个定义初始化时钟的数组,在先关闭芯片写保护的情况下可以直接写DS1302时钟的初始值。

void ds1302_write_time(void) {ds1302_write_byte(ds1302_control_add,0x00);//关闭写保护 ds1302_write_byte(ds1302_sec_add,0x80);//暂停时钟 //ds1302_write_byte(ds1302_charger_add,0xa9);    //涓流充电 ds1302_write_byte(ds1302_year_add,time_buf[1]);//年 ds1302_write_byte(ds1302_month_add,time_buf[2]);//月 ds1302_write_byte(ds1302_date_add,time_buf[3]);//日 ds1302_write_byte(ds1302_hr_add,time_buf[4]);//时 ds1302_write_byte(ds1302_min_add,time_buf[5]);//分ds1302_write_byte(ds1302_sec_add,time_buf[6]);//秒ds1302_write_byte(ds1302_day_add,time_buf[7]);//周 ds1302_write_byte(ds1302_control_add,0x80);//打开写保护     }

摘要

在这个51电子钟的设计过程中,没有使用校准和调试的按键等其他按钮。如果需要使用按键进行调试,可以基于这段代码添加case函数,做一个带蜂鸣器和中断功能的闹钟。如果你需要完整的代码,你可以从下面的消息邮箱中获得。这类文章可以一直关注很久。如果你喜欢他们,欢迎指出任何错误。

目前上述的内容应该能够为大家解答出大家对于1602引脚图(1602液晶模块引脚)的疑惑了,所以如果大家还想要了解更多的知识内容,也可以关注本站其他文章进行了解哦。


版权说明:本文由用户上传,如有侵权请联系删除!


标签:

热点推荐
热评文章
随机文章