基于51单片机的I2C通信及从AT24C02读取保存数据来显示在4位数码管上的项目工程

一、前言

1、基于51单片机的I2C通信及从AT24C02读取保存数据来显示在4位数码管上的项目包括用Keil软件编写单片机C语言程序和用Proteus软件仿真单片机外围电路

2、基于51单片机的I2C通信及从AT24C02读取保存数据来显示在4位数码管上的项目构思

(1)、声明程序变量思维导图

(2)、程序子函数思维导图

(3)、程序主函数思维导图

二、基于51单片机的I2C通信及从AT24C02读取保存数据来显示在4位数码管上的项目的Keil软件编写的单片机C语言程序

/***Main.C***/
#include <reg52.h>//包含52单片机头文件
#include "I2C.H"//包含I2C.H头文件
#define uchar unsigned char//自定义uchar为unsigned char(即无符号字符型数据,数据范围:0到255。)
#define uint unsigned int//自定义uint为unsigned int(即有符号整数型数据,数据范围:0到65535。)    
uchar i2cwriteflag;//AT24C02存储芯片写入标志位变量
uchar qian,bai,shi,ge;//数值个位变量、数值十位变量、数值百位变量、数值千位变量
uchar valuege,valueshi,valuebai,valueqian;//数值个位数变量、数值十位数变量、数值百位数变量、数值千位数变量
uint count,value;//声明定时器0中断次数变量、数值变量
uchar code table[]={
   0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f} ; //共阴数码管段码数字0~9字码表,高电平点亮数码管段码数字0~9。
  //  void Delay100us()	//晶振11.0592MHz,100微妙延时。
//{
   
//   unsigned char i, j;
//   _nop_();
//   _nop_();
//   i = 2;
//   j = 15;
//   do
// {
   
//	while (--j);
//   } 
//   while (--i);
// }
  void delay(uint z)//延时程序
{
   
   uint x,y;
   for(x=z;x>0;x--)
    for(y=110;y>0;y--);
 }
//  void ShuMaGuanDisplayValue(uint value)//数码管显示数值函数
//{  
//   qian=value%10000/1000;//数码管千位变量
//   bai=value%1000/100;//数码管百位变量
//   shi=value%100/10;//数码管十位变量
//   ge=value%10;//数码管个位变量
//  
//   P2=0xfe;//数码管千位显示位
//   P0=table[qian];//数码管千位数值显示
//   delay(5);//延时 
//
//   P2=0xfd;//数码管百位显示位
//   P0=table[bai];//数码管百位数值显示
//   delay(5);//延时
//
//
//   P2=0xfb;//数码管十位显示位
//   P0=table[shi];//数码管十位数值显示
//   delay(5);//延时
//
//   P2=0xf7;//数码管个位显示位
//   P0=table[ge];//数码管个位数值显示
//   delay(5);//延时

//   weixuan=1;
//   P0=0xfe;//数码管千位显示位
//   weixuan=0;
//   duanxuan=1;
//   P0=table[qian];//数码管千位数值显示
//   duanxuan=0;
//   P0=0xff;
//   Delay(5);//延时
//
//   weixuan=1;
//   P0=0xfd;//数码管百位显示位
//   weixuan=0;
//   duanxuan=1;
//   P0=table[bai];//数码管百位数值显示
//   duanxuan=0;
//   P0=0xff;
//   Delay(5);//延时
//  
//   weixuan=1;
//   P0=0xfb;//数码管十位显示位
//   weixuan=0;
//   duanxuan=1;
//   P0=table[shi];//数码管十位数值显示
//   duanxuan=0;
//   P0=0xff;
//   Delay(5);//延时
//
//   weixuan=1;
//   P0=0xf7;//数码管个位显示位
//   weixuan=0;
//   duanxuan=1;
//   P0=table[ge];//数码管个位数值显示
//   duanxuan=0;
//   P0=0xff;
//   Delay(5);//延时 
// }
  void ShuMaGuanDisplayValue(uchar valuege,valueshi,valuebai,valueqian)//数码管显示数值函数
{
     
   P2=0xf7;//数码管个位显示位
   P0=table[valuege];//数码管个位数值显示
   delay(5);//延时

   P2=0xfb;//数码管十位显示位
   P0=table[valueshi];//数码管十位数值显示
   delay(5);//延时

   P2=
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值