C51_将按键次数写入AT24C02,再读出送LCD显示

该博客详细介绍了如何使用C51语言,通过消抖程序检测按键,计数后将按键次数写入AT24C02存储器,并从存储器读取数据在LCD上显示。开发过程中要注意AT24C02的正确连接和检查。
摘要由CSDN通过智能技术生成

//C51_将按键次数写入AT24C02,再读出送LCD显示
//这篇文章较为详细介绍了AT24C02,感谢!
//开发版在连接AT24C02千万别连错,视力不好的近视的连好了仔细检查
//思路:1.利用以前编写的LCD显示函数(直接copy)
2.消抖程序确认按键按下(电平改变,直接copy)
3.计数程序
4.AT24C02的相关程序
#code

#include<reg51.h>       
#include<intrins.h>     //包含_nop_()函数的头文件
/*LCD模块与单片机引脚连接确定*/
sbit RS=P1^0;//RS为寄存选择位,引脚根据自己的电路图定义
sbit RW=P1^1;//读写选择位
sbit E=P1^2;//LCD模块使能端
sbit BF=P0^7;//1602字符型LCD设置的忙碌标志位BF连接在8位双向数据线的D7位上根据单片机原理图我对应于P0^7引脚
sbit S=P1^4;            //开关
#define	OP_READ	0xa1	// 宏 全局定义
#define	OP_WRITE 0xa0	
sbit SDA=P3^4;          //SDA根据原理图设置引脚
sbit SCL=P3^3;         
unsigned char code digit[ ]={
   "0123456789"}; //
/*LCD设置*/
/***************************************************
延时基函数:设置目的为根据所需时间随意改变谁让这是1ms
***************************************************/
void delay1ms()
{
   
   unsigned char i,j;	
	 for(i=0;i<10;i++)
	  for(j=0;j<33;j++)//time~=3*(i*j)
	   ;		 
 }
/*****************************************************
延时自定义函数:根据基变量1ms来自定义定延迟时间函数
***************************************************/
 void delaynms(unsigned char n)
 {
   
   unsigned char i;
	for(i=0;i<n;i++)
	   delay1ms();
 }
/*****************************************************
LCD模块状态检测>>>LCD模块是慢显示器>>>在写每一条指令前需要检测
忙碌状态,忙等,不忙在执行。
***************************************************/
 unsigned char BusyTest(void)
  {
   
    bit result;
	RS=0;       
//RS是寄存器选择,RS=0为选择了指令寄存器>>>检查是否忙碌跟指令相关
    RW=1;
//RW为读写选择,RW=1为读LCD的忙碌状况>>>检查是要去读状态
    E=1;        
//E是模块使能端,负跳变时E=1,LCD模块开始执行命令
    _nop_();   //一个空的机器周期(记住就OK啦!)
    _nop_();
    _nop_(); 
    _nop_();   //4个机器周期,让硬件有充足反应时间>>>LCD是一个慢显示器
    result=BF;  //把BF的状态给result返回传达忙碌状态
   E=0;         //不得进行读/写操作
   return result;//result=1 busy;result
  • 11
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值