12 复位系统 课后小练
密码锁
1.没有输入时,显示“- - - - - - - -”
2.有输入时,按下一个按键,开始按顺序写入
例如,第一个按下1,显示“1 - - - - - - -”
例如,第二个按下3,显示“1 3 - - - - - -”
3.当按下的密码为“ 1 2 3 4 5 6 7 0”时,数码管显示open的字符,否则,还是显示“- - - - - - - -”
新增:
1.看门狗,超时1秒自动复位
2.增加开机版本号,开机显示三秒的U 1.00 版本号
3.增加手动复位,P33按钮按下时重启(方便查看版本号和清除密码)
io.c部分代码
- u8 passward[8] = { 22,22,22,22,19,21,0,0};
- extern u16 Ms_Time;
- u8 Start_ms=0;
- //延时三秒函数
- void Timing_Start(void)
- {
-
- if(Start_ms==0)
- {
-
- if(Ms_Time==3000)
- {
- passward[0] = 20;
- passward[1] = 20;
- passward[2] = 20;
- passward[3] = 20;
- passward[4] = 20;
- passward[5] = 20;
- passward[6] = 20;
- passward[7] = 20;
-
- Start_ms=1;
- }
- }
-
- }
-
- u8 Seg_no = 0;
- void SEG_Task(void)
- {
- u8 num = 0;
-
- switch(Seg_no){
- case 0: Display_Seg( SEG_NUM[passward[0]], ~T_NUM[0] ); break;
- case 1: Display_Seg( SEG_NUM[passward[1]], ~T_NUM[1] ); break;
- case 2: Display_Seg( SEG_NUM[passward[2]], ~T_NUM[2] ); break;
- case 3: Display_Seg( SEG_NUM[passward[3]], ~T_NUM[3] ); break;
- case 4: Display_Seg( SEG_NUM[passward[4]], ~T_NUM[4] ); break;
- case 5: Display_Seg( SEG_NUM[passward[5]], ~T_NUM[5] ); break;
- case 6: Display_Seg( SEG_NUM[passward[6]], ~T_NUM[6] ); break;
- case 7: Display_Seg( SEG_NUM[passward[7]], ~T_NUM[7] ); break;
- }
- Seg_no ++;
- if( Seg_no>7 )
- Seg_no=0;
- }
复制代码
demo1.rar
(192.55 KB, 下载次数: 7)
|