主函数

#include <stc15f2k60s2.h>
#include <intrins.h>
#include <12.h>
void shumaguan();
sbit K1=P3^0;
unsigned char a;void Timer0Init();unsigned char abile[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBF,0XFF};
unsigned char saomiao[]={0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF};
void Delay100us()       //@11.0592MHz
{unsigned char i, j;_nop_();_nop_();i = 2;j = 15;do{while (--j);} while (--i);
}void main()
{P2=0XA0;P0=0X00;a=At24c02Read(1);Timer0Init();while(1){if(K1==0){Delay100us();if(K1==0){a++;}while(!K1);}shumaguan();At24c02Write(1,a);}
}
void Timer0Init(void)       //100??@11.0592MHz
{AUXR |= 0x80;     //?????1T??TMOD &= 0xF0;       //???????TL0 = 0xAE;       //??????TH0 = 0xFB;        //??????TF0 = 0;       //??TF0??TR0 = 1;      //???0????ET0=1;EA=1;
}
void Timer0() interrupt 1
{int i;P2=P2&0x1f|0xe0;P0=0xff;P2&=0x1f;P2=P2&0x1f|0xc0;P0=1<<i;P2&=0x1f;P2=P2&0x1f|0xe0;P0=saomiao[i];P2&=0x1f;i++;if(i>7)i=0;
}void shumaguan()
{saomiao[0]=abile[a%1000/100];saomiao[1]=abile[a%100/10];saomiao[2]=abile[a%10];saomiao[3]=0xff;saomiao[4]=0xff;saomiao[5]=0xff;saomiao[6]=0xff;saomiao[7]=0xff;
}

12.c


#include <stc15f2k60s2.h>
#include <12.h>/*******************************************************************************
* º¯ÊýÃû         : Delay10us()
* º¯Êý¹¦ÄÜ         : ÑÓʱ
* ÊäÈë           : ÎÞ
* Êä³ö           : ÎÞ
*******************************************************************************/void Delay10us()
{unsigned char a,b;for(b=1;b>0;b--)for(a=2;a>0;a--);}
/********************************************************************
*º¯ÊýÃû   £ºI2cStart()
*º¯Êý¹¦ÄÜ £ºÆðʼÐźţ¬ÔÚSCLʱÖÓÐźÅÔڸߵçƽÆÚ¼äSDAÐźŲúÉúÒ»¸öϽµÑØ
*ÊäÈë     £ºÎÞ
*Êä³ö     £ºÎÞ
*±¸×¢     £ºÆðʼ֮ºóSDAºÍSCL¶¼Îª0
********************************************************************/
void I2cStart()
{SDA=1;       //³õʼ»¯Delay10us();SCL=1;Delay10us(); //½¨Á¢Ê±¼äÊÇSDA±£³Öʱ¼ä>4.7usSDA=0;       //²úÉúϽµÑØDelay10us(); //±£³Öʱ¼äÊÇ>4usSCL=0;       //Éè¼ÆΪµÍµçƽDelay10us();
}
/********************************************************************
*º¯ÊýÃû   £ºI2cStop()
*º¯Êý¹¦ÄÜ £ºÖÕÖ¹Ðźţ¬ÔÚSCLʱÖÓÐźŸߵçƽÆÚ¼äSDAÐźŲúÉúÒ»¸öÉÏÉýÑØ
*ÊäÈë     £ºÎÞ
*Êä³ö     £ºÎÞ
*±¸×¢     £º½áÊøÖ®ºóSDAºÍSCL¶¼Îª1£¬±íʾ×ÜÏß¿ÕÏÐ
********************************************************************/
void I2cStop()
{SDA=0;Delay10us();SCL=1;Delay10us(); //½¨Á¢Ê±¼ä´óÓÚ4usSDA=1;Delay10us(); //SDA³ÖÐøʱ¼ä´óÓÚ4.7us
}
/*********************************************************************************
*º¯ÊýÃû   £ºI2cSendByte(unsigned char num)
*º¯Êý¹¦ÄÜ £ºÍ¨¹ýI2C·¢ËÍÒ»¸ö×Ö·û¡£ÔÚSCLʱÖÓÐźŸߵçƽÆڼ䣬±£³Ö·¢ËÍÐźÅSDC±£³ÖÎȶ¨
*ÊäÈë     £ºnum
*Êä³ö     £º0»ò1£¬·¢Ëͳɹ¦·µ»Ø1£¬·¢ËÍʧ°Ü·µ»Ø0
*±¸×¢     £º·¢ËÍÍêÒ»¸ö×Ö·ûSCL=0£¬SDA=1
*********************************************************************************/
unsigned char I2cSendByte(unsigned char dat)
{unsigned char a=0,b=0; //×î´ó255£¬Ò»¸ö»úÆ÷ÖÜÆÚΪ1us,×î´óÑÓ³Ù255us¡£for(a=0;a<8;a++)       //Òª·¢ËÍ8룬´Ó×î¸ßλ¿ªÊ¼{SDA=dat>>7;          //ÆðʼÐźÅÖ®ºóSCL=0£¬ËùÒÔ¿ÉÒÔÖ±½Ó¸Ä±äSDAÐźÅdat=dat<<1;Delay10us();SCL=1;Delay10us();         //½¨Á¢Ê±¼ä>4.7usSCL=0;Delay10us();         //ʱ¼ä´óÓÚ4us}SDA=1;Delay10us();SCL=1;while(SDA)             //µÈ´ýÓ¦´ð£¬Ò²¾ÍÊǵȴý´ÓÉ豸°ÑSDAÀ­µÍ{b++;if(b>200)            //Èç¹û³¬¹ý2000usûÓÐÓ¦´ð·¢ËÍʧ°Ü£¬»òÕßΪ·Ç´ðÓ¦£¬±íʾ½ÓÊÜʧ°Ü{SCL=0; Delay10us();return 0;}}SCL=0;Delay10us();return 1;
}
/****************************************************
*º¯ÊýÃû   £ºI2cReadByte()
*º¯Êý¹¦ÄÜ £ºÊ¹ÓÃI2C¶ÁÈ¡Ò»¸ö×Ö½Ú
*ÊäÈë     £ºÎÞ
*Êä³ö     £ºdat
*±¸×¢     £º½ÓÊÜÍêÒ»¸ö×Ö½ÚSCL=0,SDA=1.
****************************************************/
unsigned char I2cReadByte()
{unsigned char a=0,dat=0;SDA=1;       //ÆðʼºÍ·¢ËÍÒ»¸ö×Ö½ÚÖ®ºóSCL¶¼µÃ0Delay10us();for(a=0;a<8;a++){SCL=1;Delay10us();dat<<=1;dat|=SDA;Delay10us();SCL=0;Delay10us();}return dat;
}
/*******************************************************************
*º¯ÊýÃû   £ºvoid At24c02Write(unsigned char addr,unsigned char dat)
*º¯Êý¹¦ÄÜ £ºÍù24c02µÄÒ»¸öµØַдÈëÒ»¸öÊý¾Ý
*ÊäÈë     £ºÎÞ
*Êä³ö     £ºÎÞ
*******************************************************************/
void At24c02Write(unsigned char addr,unsigned char dat)
{I2cStart();I2cSendByte(0xa0); //·¢ËÍдÆ÷²ÄµØÖ·I2cSendByte(addr); //·¢ËÍҪдÈëÄÚ´æµØÖ·I2cSendByte(dat);  //·¢ËÍÊý¾ÝI2cStop();
}
/*******************************************************************
*º¯ÊýÃû   £ºunsigned char At24c02Read(unsigned char addr)
*º¯Êý¹¦ÄÜ £º¶ÁÈ¡24c02µÄÒ»¸öµØÖ·µÄÒ»¸öÊý¾Ý
*ÊäÈë     £ºÎÞ
*Êä³ö     £ºÎÞ
*******************************************************************/
unsigned char At24c02Read(unsigned char addr)
{unsigned char num;I2cStart();I2cSendByte(0xa0); //·¢ËÍдÆ÷²ÄµØÖ·I2cSendByte(addr); //·¢ËÍÒª¶ÁÈ¡µÄµØÖ·I2cStart();I2cSendByte(0xa1); //·¢ËͶÁÆ÷¼þµØÖ·num=I2cReadByte(); //¶ÁÈ¡Êý¾ÝI2cStop();return num;}

12.h

#ifndef __12_H__
#define __12_H__sbit SCL=P2^0;
sbit SDA=P2^1;void I2cStart();
void I2cstop();
unsigned char I2SendByte(unsigned char dat);
unsigned char I2cReadByte();
void At24c02Write(unsigned char addr,unsigned char dat);
unsigned char At24c02Read(unsigned char addr);#endif

基于stc15f2k60s2芯片单片机编程(EEPROM24C02实验)相关推荐

  1. 基于stc15f2k60s2芯片单片机编程(时钟DS1302)

    **stc15f2k60s2芯片编程(时钟DS1302)** main.c函数 #include <STC15F2K60S2.H> #include <intrins.h> # ...

  2. 基于stc15f2k60s2芯片单片机编程(数码管)

    **蓝桥杯stc15f2k60s2芯片编程(数码管)** ** ** (1)数码管显示01234567 ** ** #include <stc15f2k60s2.h>unsigned ch ...

  3. 基于stc15f2k60s2芯片单片机编程(串口+超声波)

    通过单片机发送当前超声波测量的距离给串口1显示 (感谢广东某大神的帮助) #include <stc15f2k60s2.h> #include <intrins.h>void ...

  4. 基于stc15f2k60s2芯片单片机编程(闹铃)

    用定时器中断写时钟加调节 1)关闭蜂鸣器.继电器等无关外设: 2)设备初始化时钟为 23 时 59 分 50 秒,闹钟提醒时间 0 时 0 分 0 秒. A.时间显示格式 2 3 - 5 9 - 5 ...

  5. 基于stc15f2k60s2芯片单片机编程(秒表)

    用定时器做一个秒表,精确到0.1,S7按下,开始计时,S6按下清零 #include <stc15f2k60s2.h> #include <intrins.h> void Ti ...

  6. 单片机编程.仿真.实验.工具

    2006-05-04 14:26:52 51单片机 <

  7. 单片机彩灯移动实验_基于构建主义的单片机彩灯实验

    基于构建主义的单片机彩灯实验 构建主义主张,学习不是由教师把知识信息简单地传 递给学生,而是要由学生自己主动地构建知识的意义,这种 构建是无法由他人来代替的.可以设想,如果我们的实验总 是先把实验的内 ...

  8. 单片机c语言实验,单片机实验C语言编程.doc

    单片机实验C语言编程.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文档所 ...

  9. 微型计算机实验报告温度控制,单片机、可编程控制器实验教学大纲.doc

    单片机.可编程控制器实验教学大纲.doc 单片机.可编程控制器实验教学大纲 一.实验课的性质与任务 本实验课是在学生学完单片机原理与应用课程之后,为巩固提高所学知识,而安排的一次综合设计实验.通过本实 ...

最新文章

  1. 网络编程学习笔记(udp_server函数)
  2. 《软件构架实践》阅读笔记三
  3. HDU多校2 - 6767 New Equipments(最小费用最大流)
  4. BZOJ 2124 等差子序列 线段树维护哈希
  5. “要么你去驾驭生命,要么生命驾驭你。你的心态决定谁是坐骑,谁是骑师。”...
  6. SM系列国密算法(转)
  7. php按钮打开文件选择框,在Select file(选择)页面单击Select file(选择文件)按钮
  8. 对象内存布局 (9)
  9. HDU 4283 You Are the One(区间DP)
  10. Python数学建模系列(一):规划问题之线性规划
  11. 2021广东工业大学837信号与系统真题自编答案
  12. 高中计算机基础知识课件,高中信息技术基础教案
  13. 谷歌浏览器误删怎么办
  14. 微信声音锁会上传到服务器吗,微信声音锁安全吗?微信声音锁可以换吗?
  15. 程序猿生存指南-7 相亲之路(下)
  16. mysql distribute by_hive与mysql的数据分区的异同
  17. android 第三方社区,从友盟微社区看Android第三方SDK架构实践
  18. 金融计算机怎么调成链式,FRM金融计算器使用方法
  19. 腾讯企业邮箱免费申请 mail-tencent.com
  20. 生信自学笔记(五)计分矩阵的实例

热门文章

  1. POI 导出Excel 带图片导出 使用XSSFWorkbook
  2. Java实现聊天室(TCP)
  3. arcgis利用栅格计算器修改DEM高程数据
  4. office2010的word没有工具栏
  5. 移远EC20 Ping指令,用域名获取IP 地址
  6. Springboot配置Druid数据源详解
  7. 电缆总管 Cable master(挑战程序设计竞赛)
  8. 因为接了一个外包 我在监狱蹲了456天!
  9. 2015.7.11 SDN南京技术交流会
  10. 阿里云2023年优惠券(代金券)领取方法汇总