基于LCD1602的秒表计数器


  1. 写这篇文章前,我刚刚完成LCD1602的学习,对它也有了一些感悟,当然也存在一些困惑,在这里,我将尽量把我的感悟详细的保存。

  2. LCD1602
    1602分为8引脚的和4引脚的,所以,我们在编写它的**.h**文件时需要分情况讨论。
    而整个.h文件需要包含写命令的函数以及写数据的函数。这两个函数大体一致,区别在于RS引脚的设置。当它为0时,意味着写入命令,而当它为1时,则是写入数据。需要注意的是,最开始的时候,E和R/W都是低电平。但随着数据(命令)的输入,变化的只有E。当E为下降沿时,数据(命令)发出。1602时序图
    以下就是LCD1602的.h文件全部:

#include "lcd.h"


void Lcd1602_Delay1ms(uint c)  
{
   
    uchar a,b;
	for (; c>0; c--)
	{
   
		 for (b=199;b>0;b--)
		 {
   
		  	for(a=1;a>0;a--);
		 }      
	}
    	
}

/*******************************************************************************
 1. 函 数 名         : LcdWriteCom
 2. 函数功能		   : 向LCD写入一个字节的命令
 3. 输    入         : com
 4. 输    出         : 无
*******************************************************************************/
#ifndef 	LCD1602_4PINS	 //当没有定义这个LCD1602_4PINS时
void LcdWriteCom(uchar com)	  //写入命令
{
   
	LCD1602_E = 0;     //使能
	LCD1602_RS = 0;	   //选择发送命令
	LCD1602_RW = 0;	   //选择写入
	
	LCD1602_DATAPINS = com;     //放入命令
	Lcd1602_Delay1ms(1);		//等待数据稳定

	LCD1602_E = 1;	          //写入时序
	Lcd1602_Delay1ms(5);	  //保持时间
	LCD1602_E = 0;
}
#else 
void LcdWriteCom(uchar com)	  //写入命令
{
   
	LCD1602_E = 0;	 //使能清零
	LCD1602_RS = 0;	 //选择写入命令
	LCD1602_RW = 0;	 //选择写入

	LCD1602_DATAPINS = com;	//由于4位的接线是接到P0口的高四位,所以传送高四位不用改
	Lcd1602_Delay1ms(1);

	LCD1602_E = 1;	 //写入时序
	Lcd1602_Delay1ms(5);
	LCD1602_E = 0;

	LCD1602_DATAPINS = com << 4; //发送低四位
	Lcd1602_Delay1ms(1);

	LCD1602_E = 1;	 //写入时序
	Lcd1602_Delay1ms(5);
	LCD1602_E = 0;
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值