1602液晶模块引脚 1602引脚图
602引脚图(1602液晶模块引脚)原心有电子企业专卖店2021-06-01 18:38
模块选择
模块选择分析
设计理念
产品布线
部分代码分析
摘要
模组选型在设计电子钟的时候,采用了最基本的单片机51,使用的芯片是STC89C52RC,开发板使用最小的系统板,也方便朋友们了解接线和原理 。简单明了 。时钟芯片的选择选用DS1302的时钟模块,布线中采用杜邦线连接,显示采用低功耗的LCD1602 。LCD1602的对比度调节选用单匝精度的10K电阻 。
模组选型解析模块的具体图片如下:
DS1302时钟芯片是美国DALLAS公司推出的具有涓流充电能力的低功耗实时时钟电路DS1302的结构、工作原理和应用 。可以计时年、月、日、周日、时、分、秒,具有闰年补偿功能;
LCD1602液晶显示器是一种工业字符液晶显示器,可以同时显示16x02或32个字符 。(16列2行),上面一行刚好可以显示年、月、日,下面一行可以显示时钟 。
设计思路简介***lcd1602显示实时时钟,时钟芯片的初始值可以在函数中设置 。缺点:这个函数因为没有添加其他函数,比较简单,校准时间只能通过源码来校准 。
流程:
1.在程序前端定义一个初始化的数组文件 。注意,DS1302需要转换成压缩BCD码存储,方便时钟芯片初始化和芯片写保护时调用数组 。
2.读写LCD1602和DS1302的初始化序列代码 。由于DS51与LCD1602之间没有直接的SPI通信,因此DS1302类似于LCD1602的三线式SPI通信,可以使用软件进行模拟通信 。
3.取出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 )//判断数据线上的值为1Byte |= 0x80 ;//字节写入1DS_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函数,做一个带蜂鸣器和中断功能的闹钟 。如果你需要完整的代码,你可以从下面的消息邮箱中获得 。这类文章可以一直关注很久 。如果你喜欢他们,欢迎指出任何错误 。
推荐阅读
- 如何区分市面上的液晶显示屏?找到最适合你的液晶显示屏!
- 动画模块的构成及功能 动画模块
- 平板电视和液晶电视有什么区别 平板电视选购
- 液晶电视好还是oled电视好 等离子好还是液晶好
- 显示器修理 液晶显示器维修视频
- qq背景图片带字 qq模块图片
- 电脑显示器一般什么品牌的比较好 液晶显示器哪个牌子好
- facelift rs3 EV300整车网络中车身控制模块中FL是指什么?
- 液晶高分子材料的应用 液晶高分子
- 液晶电视花屏自修方法 液晶显示器花屏
