赞
踩
一、使用proteus绘制简单的电路图,用于后续仿真
关于IIC的读写:
二、编写程序
- /********************************************************************************************************************
- ---- @Project: AT24C02
- ---- @File: main.c
- ---- @Edit: ZHQ
- ---- @Version: V1.0
- ---- @CreationTime: 20200721
- ---- @ModifiedTime: 20200721
- ---- @Description: 实现功能:
- ---- 4个被更改后的参数断电后不丢失,数据可以保存,断电再上电后还是上一次最新被修改的数据。
- ---- 一共有4个窗口。每个窗口显示一个参数。
- ---- 第8,7,6,5位数码管显示当前窗口,P-1代表第1个窗口,P-2代表第2个窗口,P-3代表第3个窗口,P-4代表第1个窗口。
- ---- 第4,3,2,1位数码管显示当前窗口被设置的参数。范围是从0到9999。S1是加按键,按下此按键会依次增加当前窗口的参数。S5是减按键,按下此按键会依次减少当前窗口的参数。S9是切换窗口按键,按下此按键会依次循环切换不同的窗口。
- ----
- ---- 单片机:AT89C52
- ********************************************************************************************************************/
- #include "reg52.h"
- /*——————宏定义——————*/
- #define FOSC 11059200L
- #define BAUD 9600
- #define T1MS (65536-FOSC/12/500) /*0.5ms timer calculation method in 12Tmode*/
-
- #define OP_READ 0xa1 /*器件地址以及读取操作,0xa1即为1010 0001B*/
- #define OP_WRITE 0xa0 /*器件地址以及写入操作,0xa0即为1010 0000B*/
-
- #define const_key_time1 9 /*按键去抖动延时的时间*/
- #define const_key_time2 9 /*按键去抖动延时的时间*/
- #define const_key_time3 9 /*按键去抖动延时的时间*/
-
- #define const_voice_short 20 /*蜂鸣器短叫的持续时间*/
-
- /*——————变量函数定义及声明——————*/
- /*蜂鸣器的驱动IO口*/
- sbit BEEP = P2^7;
- /*LED*/
- sbit LED = P3^5;
-
- /*按键*/
- sbit Key_S1 = P0^0; /*对应S1键,加键*/
- sbit Key_S2 = P0^1; /*对应S5键,减键*/
- sbit Key_S3 = P0^2; /*对应S9键,切换窗口*/
- sbit Key_S4 = P0^3; /*对应S13键,复位*/
- sbit Key_Gnd = P0^4;
-
- /*数码管*/
- sbit Dig_Hc595_Sh = P2^0;
- sbit Dig_Hc595_St = P2^1;
- sbit Dig_Hc595_Ds = P2^2;
-
- /*EEPROM*/
- sbit eeprom_scl_dr = P3^7; /*时钟线*/
- sbit eeprom_sda_dr_sr = P3^6; /*数据的输出线和输入线*/
-
- unsigned char ucKeySec = 0; /*被触发的按键编号*/
- unsigned int uiKeyTimeCnt1 = 0; /*按键去抖动延时计数器*/
- unsigned char ucKeyLock1 = 0; /*按键触发后自锁的变量标志*/
- unsigned int uiKeyTimeCnt2 = 0; /*按键去抖动延时计数器*/
- unsigned char ucKeyLock2 = 0; /*按键触发后自锁的变量标志*/
- unsigned int uiKeyTimeCnt3 = 0; /*按键去抖动延时计数器*/
- unsigned char ucKeyLock3 = 0; /*按键触发后自锁的变量标志*/
-
- unsigned int uiVoiceCnt = 0; /*蜂鸣器鸣叫的持续时间计数器*/
- unsigned char ucVoiceLock = 0; /*蜂鸣器鸣叫的原子锁*/
-
- unsigned char ucDigShow8; /*第8位数码管要显示的内容*/
- unsigned char ucDigShow7; /*第7位数码管要显示的内容*/
- unsigned char ucDigShow6; /*第6位数码管要显示的内容*/
- unsigned char ucDigShow5; /*第5位数码管要显示的内容*/
- unsigned char ucDigShow4; /*第4位数码管要显示的内容*/
- unsigned char ucDigShow3; /*第3位数码管要显示的内容*/
- unsigned char ucDigShow2; /*第2位数码管要显示的内容*/
- unsigned char ucDigShow1; /*第1位数码管要显示的内容*/
-
- unsigned char ucDigDot8; /*数码管8的小数点是否显示的标志*/
- unsigned char ucDigDot7; /*数码管7的小数点是否显示的标志*/
- unsigned char ucDigDot6; /*数码管6的小数点是否显示的标志*/
- unsigned char ucDigDot5; /*数码管5的小数点是否显示的标志*/
- unsigned char ucDigDot4; /*数码管4的小数点是否显示的标志*/
- unsigned char ucDigDot3; /*数码管3的小数点是否显示的标志*/
- unsigned char ucDigDot2; /*数码管2的小数点是否显示的标志*/
- unsigned char ucDigDot1; /*数码管1的小数点是否显示的标志*/
-
- unsigned char ucDigShowTemp = 0; /*临时中间变量*/
- unsigned char ucDisplayDriveStep = 1; /*动态扫描数码管的步骤变量*/
-
- unsigned char ucWd1Update = 1; /*窗口1更新显示标志*/
- unsigned char ucWd2Update = 0; /*窗口2更新显示标志*/
- unsigned char ucWd3Update = 0; /*窗口3更新显示标志*/
- unsigned char ucWd4Update = 0; /*窗口4更新显示标志*/
- unsigned char ucWd = 1; /*本程序的核心变量,窗口显示变量。类似于一级菜单的变量。代表显示不同的窗口。*/
- unsigned int uiSetData1 = 0; /*本程序中需要被设置的参数1*/
- unsigned int uiSetData2 = 0; /*本程序中需要被设置的参数2*/
- unsigned int uiSetData3 = 0; /*本程序中需要被设置的参数3*/
- unsigned int uiSetData4 = 0; /*本程序中需要被设置的参数4*/
-
- unsigned char ucTemp1 = 0; /*中间过渡变量*/
- unsigned char ucTemp2 = 0; /*中间过渡变量*/
- unsigned char ucTemp3 = 0; /*中间过渡变量*/
- unsigned char ucTemp4 = 0; /*中间过渡变量*/
-
- void Dig_Hc595_Drive(unsigned char, unsigned char);
-
- /*根据原理图得出的共阴数码管字模表*/
- code unsigned char Dig_Table[] =
- {
- 0x3f, /*0 序号0*/
- 0x06, /*1 序号1*/
- 0x5b, /*2 序号2*/
- 0x4f, /*3 序号3*/
- 0x66, /*4 序号4*/
- 0x6d, /*5 序号5*/
- 0x7d, /*6 序号6*/
- 0x07, /*7 序号7*/
- 0x7f, /*8 序号8*/
- 0x6f, /*9 序号9*/
- 0x00, /*不显示 序号10*/
- 0x40, /*- 序号11*/
- 0x73, /*P 序号12*/
- };
-
- /**
- * @brief 延时函数
- * @param 无
- * @retval 无
- **/
- void Delay_Long(unsigned int uiDelayLong)
- {
- unsigned int i;
- unsigned int j;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。