4T第十五届第一套模拟

那个old的直接在输入数据的出来后进行判断,然后就把new赋给old,之前还想写数组

感觉就是按键那里难写,后面还是要专门写一下按键题

一、Seg

unsigned char ucRtc[3]={23,9,59};//写09会以为时是八进制,所以要写9

unsigned char Seg_Mode=0;//0-时间界面 1-输入界面 2-记录界面
unsigned char ucRtc[3]={23,9,59};//写09会以为时是八进制,所以要写9
unsigned char Input_Data[4]={10,10,10,10};//密码门输入
unsigned char Input_Index=0;//密码门索引值
unsigned char JiLu_Time[3]={23,9,59};//触发时间

①可以把时钟放进来

这样只有在时钟界面时才读取时钟,就不会浪费资源

②双倒序:

数码管的最后一位保存正在输入的数据,然后前一个数据要向前移

移动一位数码管就-1向前一位,在Input_Index=0的时候他是不显示数据的,因为此时还没赋值,只有按下按键了才赋值,然后Input_Index+1
 Input_Index是1--4属于是,所以要-1,-i就是把之前显示过的都显示上,-0 -1一直到-i嘛

之前没倒序,就是input的第0位就直接输入在数码管第0位

二、Key

输入界面按下对应按键,实现对一位数据输入,显示如图三所示

unsigned char Input_Data[4]={10,10,10,10};//密码门输入
unsigned char Input_Index=0;//密码门索引值
unsigned char JiLu_Time[3]={23,9,59};//触发时间


unsigned int Data;//储存输入数据到eeprom
unsigned int Data_Old;//输入数据老的值
bit LL_Flag;//新的比老的大标志位

unsigned char EEPROM_String_New[4];//eeprom存放数组
unsigned char EEPROM_String_Old[4];//eeprom读取数组

1.对输入界面清0:

①界面限制

②按下按键

③把数据熄灭

④标志位置位

2.如果读取到一位数据就记录当前记录数据的时间

之前是在记录界面就读取就报错了

3.密码门:

①限制要输入的位数

之前没写index<4他后面就可以输入值,就报错了


②密码门改底层,把不连续的键码值改了,然后重复的就+10什么的

(之前以为是顺序的就直接键码值-6了)

③把键码值赋给输入数据
④赋完值后索引值++,然后为4时卡死4,在跳转界面时再置0

改底层

temp要是0,所以改底层的不连续的对应的密码门都+1,在main里再键码值-1

4.按键切换+eeprom保存:

①如果按下切换按键,并且进入记录界面,那就先进入一个eeprom的保存

        1.将需要保存的数据由一个一个数变成一整个数

        2.把要保存的数放进eeprom的数组里

        3.将eeprom的数组里的数写进eeprom里

        4.对比新老数据的大小(输入数据)

        5.把new新数据赋给old老数据

②界面切换

③每次切换把输入数据清0

三、Led

四、eeprom

1.如何查看eeprom是否正确:

因为他是上电又读取嘛,然后又有old和new,那就这一次输入1111,然后关掉掉电,再上电,输入1212,看看L4有没有亮(new>old就亮),然后再掉电,再上电,输入1111,看看是不是灭的。这样就看出来eeprom有没有写进去了

2.按键切换+eeprom保存:

①如果按下切换按键,并且进入记录界面,那就先进入一个eeprom的保存

        1.将需要保存的数据由一个一个数变成一整个数

        2.把要保存的数放进eeprom的数组里

        3.将eeprom的数组里的数写进eeprom里

        4.对比新老数据的大小(输入数据)

        5.把new新数据赋给old老数据

②界面切换

③每次切换把输入数据清0

tips:也可以先界面切换再保存,mode==2时

3.将十进制存进去时存为八进制:

①高位:>>8移动到低位上

②低位:&0x0ff 把高位除掉

4.EEPROM_String_Data:

一个数据对应一个索引值

5.上电后读取老old值:

读取到eeprom的old的数组里

然后把这个数组的第2、3位的数据读出来,然后十六进制变十进制(高位移动8位移回来)赋给data_old

6.不用写限制啊,只是以十六进制写进去eeprom里,只要移位就行了,然后数据在eeprom前和后写,不要在按键里写,之前报错(读取的是0)应该就是因为写在按键里了,因为他们每次进的时候不一样所以不行,显示什么储存什么都要写一起

把那个flag删了就对了,seg_mode==1时清0是ok的

芜湖!!!

  • 24
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值