上午
写完了所有老化程序;
解决了依次按键显示加1的问题(在外层加了一个for循环);
贴上main.c的代码:
#include "delay.h"
#include "sys.h"
#include "Key.h"
#include "74hc595.h"
#include "Input.h"
#include "Output.h"
#include "Epprom.h"
#include "LED.h"
u8 t;
int main(void)
{
delay_init(); //延时函数初始化
//LED_Init(); //初始化与LED连接的硬件接口
KEY_Init(); //初始化与按键连接的硬件接口
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
HC595_Init();
IN_Init();
OUT_Init();
delay_init();
HC595_Init();
AT24CXX_Init();
AT24CXX_Check();
HC595SendData(0x00);
int i, j;
for (j = 1; j <= 4; j++) { //KEY5有BUG,所以分成两部分,跳过KEY5;
while (1) { // 循环读按键值;
t = KEY_Scan(0);
if (t == j) {
break; // 读到键值则跳出;
}
else {
Light_Error();
}
}
for (i = 0; i < 10;) {
Light_upi(i); //显示'i, 8, 8, 8, 8, 8';
t = KEY_Scan(0);
if (t == j) {
i++;
}
}
}
for (j = 6; j <= 9; j++) {
while (1) { // 循环读按键值;
t = KEY_Scan(0);
if (t == j) {
break; // 读到键值则跳出;
}
else {
Light_Error();
}
}
for (i = 0; i < 10;) {
Light_upi(i);
t = KEY_Scan(0);
if (t == j) {
i++;
}
}
}
int tp = 0, dx = 0, y, x;
OUT1 = 1, OUT2 = 1, OUT3 = 1, OUT4 = 1, OUT5 = 1, OUT6 = 1;
// OUT1=0,OUT2=0,OUT3=0,OUT4=0,OUT5=0,OUT6=0;
LED1 = 0;
LED2 = 0;
WEI1 = 1;
WEI2 = 1;
WEI3 = 1;
WEI4 = 1;
WEI5 = 1;
WEI6 = 1;
Light_up(0);
y = AT24CXX_ReadOneByte(12);
while (1)
{
while (In1 == 0 && In2 == 0 && In3 == 0 && In5 == 0 && In6 == 07 & In7 == 0)
{
while (dx == 0)
{
Light_up(8);
dx++;
}
if (KEY1 == 0 && y == 1)
{
Light_up(1);
y = 1;
if (tp == 0)
{
AT24CXX_WriteOneByte(12, y);
tp = 1;
}
}
if (KEY2 == 0 && y == 2)
{
Light_up(1);
y = 2;
if (tp == 1)
{
AT24CXX_WriteOneByte(12, y);
tp = 0;
}
}
}
Light_Error3();
}
return 0;
}
下午
目前的两个任务:
- 解决单片机与屏之间的数据读写问题;
- 解决屏幕时间读取与显示问题;
- 批量烧录问题(长远问题);
Task 1
首先开启数据自动上传功能:
修改CFG文件中的标志位
在地址5中修改,初始值为0x38:
按照配置说明来修改的话,该地址上的二进制值为:00111000 = 0x38;
也就是说默认开启了数据变量自动上传;
Task 2
查资料找到读RTC指令,可能可以通过故障时读RTC时间,再发送给HEX控件显示,来达到目的;
简单设置了一下RTC控件;
载入屏内后是默认显示 2000-00-00 00:00:00;
说明需要有些设置来启动计时;