基于51的EEPROM C语言程序

发布者:清新心情最新更新时间:2016-03-03 来源: eefocus关键字:EEPROM  C语言程序 手机看文章 扫描二维码
随时随地手机看文章
#include "reg52.h"//单片机51头文件,存放着单片机的寄存器

#include
#define uchar unsigned char
#define uint unsigned int
uchar code tab[]="0123456789";
sbit SID=P2^0;   //数据信号
sbit SCLK=P2^1;   //时钟信号
uint tcnt;        //定时中断次数
bit write=0;             //写24C08的标志;
sbit scl=P3^7; //24c08 SCL
sbit sda=P3^6; //24c08 SDA
uchar a,b,c,d,e,f;

void delay(uint t)
{
uint i,j;
for(i=0; i     for(j=0; j<10; j++);
}


void sendbyte(uchar zdata)
{
uint i;
for(i=0; i<8; i++)
{
   if((zdata << i) & 0x80)
   {
    SID = 1;
   }
   else
   {
    SID = 0;
   }
   SCLK = 0;
   SCLK = 1;
}
}


void write_com(uchar cmdcode)
{
sendbyte(0xf8);   //11111abc a如果高表示从LCD读数据,低表示往LCD写数据。 b 高表示显示数据,低表示控制指令 c 固定为0
sendbyte(cmdcode & 0xf0); //取cmdcode的高四位
sendbyte((cmdcode << 4) & 0xf0); //取cmdcode的第四位
delay(2);
}


void write_data(unsigned char Dispdata)
{
sendbyte(0xfa);
sendbyte(Dispdata & 0xf0);
sendbyte((Dispdata << 4) & 0xf0);
delay(2);
}


void lcdinit()
{
delay(200);
write_com(0x30);
delay(50);
write_com(0x0c);
delay(50);
write_com(0x01);
delay(50);
}


void hzkdis(unsigned char code *s)
{
while(*s > 0)
    {
   write_data(*s);
   s++;
   delay(50);
    }
}
void delay1(unsigned char x)
{ unsigned int i;
   for(i=0;i }
void flash()
{ ; ; }

void x24c02_init() //24c02初始化子程序
   {scl=1; flash(); sda=1; flash();}

void start()        //启动I2C总线
{sda=1; flash(); scl=1; flash(); sda=0; flash(); scl=0; flash();}

void stop()         //停止I2C总线
{sda=0; flash(); scl=1; flash(); sda=1; flash();}
void writex(uchar j) //写一个字节
{ uchar i,temp;
    temp=j;
    for (i=0;i<8;i++)
    {temp=temp<<1; scl=0; flash(); sda=CY; flash(); scl=1; flash();}
    scl=0; flash(); sda=1; flash();
}
uchar readx()   //读一个字节
{
    uchar i,j,k=0;
    scl=0; flash(); sda=1;
    for (i=0;i<8;i++)
    { flash(); scl=1; flash();
       if (sda==1) j=1;
       else j=0;
       k=(k<<1)|j;
    scl=0;}
    flash(); return(k);
}
void clock()         //I2C总线时钟
{
    uchar i=0;
    scl=1; flash();
    while ((sda==1)&&(i<255))i++;
    scl=0; flash();
}
uchar x24c02_read(uchar address)
{
    uchar i;
    start(); writex(0xa0);
    clock(); writex(address);
    clock(); start();
    writex(0xa1); clock();
    i=readx(); stop();
    delay1(10);
    return(i);
}
void x24c02_write(uchar address,uchar info)
{
   
    start(); writex(0xa0);
    clock(); writex(address);
    clock(); writex(info);
    clock(); stop();
    delay1(50);
}
void yejing()
{
write_com(0x90);
delay(10);
write_data(tab[a]);
delay(10);
write_data(tab[b]);
//delay(10);
//write_com(0x91);
delay(10);
write_data(tab[c]);
//write_com(0x90);
delay(10);
write_data(tab[d]);
delay(10);
write_data(tab[e]);
delay(10);
write_data(tab[f]);
}
void main(void)
{
lcdinit();
x24c02_init();
while(1)
    {
         a=x24c02_read(0);//读出保存的数据赋于sec
        b=x24c02_read(1);
        c=x24c02_read(2);
        d=x24c02_read(3);
        e=x24c02_read(4);
        f=x24c02_read(5);
        yejing();
        x24c02_write(0,8);delay(10);
        x24c02_write(1,7);delay(10);
        x24c02_write(2,0);delay(10);
        x24c02_write(3,2);delay(10);
        x24c02_write(4,0);delay(10);
        x24c02_write(5,8);delay(10);
        delay(1000);
     }
}


关键字:EEPROM  C语言程序 引用地址:基于51的EEPROM C语言程序

上一篇:基于51单片机的GSM模块C语言发送短信程序
下一篇:基于51单片机运用LCD12864液晶显示

推荐阅读最新更新时间:2024-03-16 14:46

利用89C51单片机的P1口控制8个发光二极管LED编程
利用89C51的P1口控制8个发光二极管LED。相邻的4个LED为一组,使2组每隔0。5S 交替发亮一次,周尔复始。试编写程序。 解: ORG 0100H MOV A,#0FH ABC: MOV P1,A ACALL D05 SWAP A SJMP ABC D05:MOV R6,250 DY: MOV R7,250 DAY:NOP NOP DJNZ R6,DAY DJNZ R7,DAY RET END
[单片机]
51单片机学习笔记【八】——步进电机
一.步进电机基础 1.定义 步进电机是将电脉冲转化为角位移的执行机构,主要使用永磁性步进电机,本实验使用的步进电机为四线双性步进电机; 步进电机的相数指产生不同极性N,S磁场的激磁线圈对数,常用m表示; 步进电机的拍数指完成一个磁场周期性变化所需脉冲数,以四线二相电机为例: 单向四拍:A/-B-A-B/ 双向四拍:A/B-AB-AB/-A/B/ 单&双八拍:A/-A/B-B-AB-A-AB/-B/-A/B/ 步进角指定子没改变一次通电状态,转子转过的角度,与磁极数,定子相数,通电方式节拍成负相关。计算 360/(m*Z*C) m–定子向数 Z–转子磁极数 C–通电方式 C=1 单或双轮流通电 C=2 单和双轮流通电 2.步进电
[单片机]
<font color='red'>51</font>单片机学习笔记【八】——步进电机
基于AT89C51单片机的量程自切换频率计
近年来,随着科学技术的快速发展,特别是类似单片机等相关集成电路生产技术的快速堀起,推动了仪器仪表及家电产业的快速发展,用程序代码来简化硬件电路的复杂程度,使其不断向着体积小,价格低廉,功能更加多样化、智能化的方向发展。功能齐全,价格低廉的产品越来越受到人们的青睐,当然,科技的发展最先受益的还是从事前沿科技研究领域的人员,对于他们来说,一款好的测量设备将为他们的研究工作带来便利的同时也减轻很多负担。就目前而言,高端仪器设备很多均依赖进口,研究并制造出属于我们国家自己的高端仪器设备将是我们一直努力的方向,而且也具有非常广阔的发展前景。 1 硬件电路设计 本设计主要由信号采集电路、放大整形电路、分频电路、信号处理电路、电源电路
[单片机]
基于AT89C<font color='red'>51</font>单片机的量程自切换频率计
基于89C51单片机的喷油校泵台调速系统设计
1 引言 燃油喷射系统的性能直接影响柴油机的工作过程和性能指标,是柴油机改善排放、降低油耗和提高性能的关键部分。传统的内燃机车柴油喷油校泵台主要用于喷油泵的磨合及性能试验,其驱动部分采用晶闸管电磁转差离合器无级调速系统,控制和显示喷油泵的主轴转速。由于采用分离元件,测试灵敏度低,设定调整不方便且故障率高。目前,国外喷油校泵台采用微机控制及数显系统。为此,按国际标准采用89C51单片机设计了一种新型的校泵台调速系统,能够实时控制主轴转速测试和调节,并将相关测量数据传输给上位PC机进行显示,从而提高测试灵敏度。 2 系统结构设计   该系统设计采用转速单闭环凋速系统,如图1所示。驱动电路由晶闸管和电机构成,而控制电路则由转
[汽车电子]
基于89C<font color='red'>51</font>单片机的喷油校泵台调速系统设计
基于AT89C51 单片机的节拍器
1 硬件电路原理 节拍器以AT89C51 单片机为控制中心,由LED 显示模块、调节键盘模块、声音输出模块组成。图1 是节拍器的电路原理图。ATMEL 公司生产的AT89C51 单片机与MCS51指令系统兼容,40 脚结构,是系统的控制中心。显示模块由四位一体的共阳极蓝色LED 显示器构成,采用动态扫描显示方式, Q11~ Q14是LED 的位选择开关三极管, R6~ R13是数码管段发光二极管的限流电阻。四位一体的LED 数码管完成显示节拍数、各功能代码及参数值的功能。键盘调节模块由4 只按键构成,分别是功能选择键A、设置参数选择键B、参数增加键C和参数减少键D ,4 只按键可以完成各种功能的选择和各参数的设置。声音输出模块
[单片机]
基于AT89C<font color='red'>51</font> 单片机的节拍器
MCS-51单片机I/O端口的存取
MCS-51单片机通常有4个8位I/O端口, 向各端口的写数据均写入到对应端口的锁存器中, 但对各端口的读操作却有两个方式:读锁存器和读引脚 1 读-修改-写操作 Pn(指P0,P1,P2,P3)在51汇编语言中是特殊的标识符,既代表Pn端口引脚,又代表Pn锁存器(Pn SFR)。在MCS-51指令系统中有些指令读锁存器的值, 有些指令则读引脚上的值。读锁存器指令是从锁存器中读取一个值并进行处理, 把处理后的值(原值或已修改后的值)重新写入锁存器中。这类指令称为读-修改-写指令, 表1列举了有该功能的指令 当目的操作数是Pn端口或Pn端口的某一位时. 该指令读取锁存器的值. 这些指令的一个共同特点, 就是要先并行读
[单片机]
MCS-<font color='red'>51</font>单片机I/O端口的存取
基于89C51的T6963液晶驱动程序(通过验证的)
//file://汉字液晶子程 液晶屏分为4行*12列汉字,全部使用模拟接口方式。 // TGLCMLIMIT64A接口程序(模拟方式) /*************************************************************************** ;连线图: ;*LCM---89C52* *LCM---89C52* *LCM-------89C52* *LCM----------89C52* * ;*DB0---P0.0* *DB4---P0.4* *D/I-------P2.6* *CS1----------P2.4* * ;*DB1---P0.1* *DB5---P
[单片机]
c51单片机中断认知
包含五个中断源,两级中断优先级,优先级可编程设置,通过IP进行设置: PX0(IP.0),外部中断0优先级设定位; PT0(IP.1),定时/计数器T0优先级设定位; PX1(IP.2),外部中断0优先级设定位; PT1(IP.3),定时/计数器T1优先级设定位; PS (IP.4),串行口优先级设定位; PT2 (IP.5) ,定时/计数器T2优先级设定位。 从这张图里我们可以看出: EA是中断控制位,EA=1开放中断,EA=0屏蔽所用中断(编程时人为设定) 那EA是在哪里进行设置的呢?它就是在IE(中断允许寄存器)里进行设定的 第七位就是EA,剩下的还有第四位的ES,第三位的ET1,第二位的EX1,第一位的ET0
[单片机]
c<font color='red'>51</font>单片机中断认知
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
更多每日新闻
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved