📄 main_d.c
字号:
/********************************************************************************
* 描述: *
* 应首先将8字节的ROM码(可从IBUTTION的表面获取)写入到数组 *
* rom_secret[]中去,否则系统会提示密码验证通不过。 *
* *
*******************************************************************************/
#include <reg52.h>
#include <absacc.h>
#include <intrins.h>
#include<DEFINE.h>
uchar rom_secret[8]={0x59,0x00,0x00,0x0d,0xea,0x45,0x77,0x01};
uchar rom_n[8];
uchar rom_num[8];
uchar flag_code;
void delay_1s(void)
{
uint i;
uchar j;
for(i=0;i<1000;i++)
for(j=0;j<200;j++);
}
void compare_code(void)
{
uchar i;
i=0;
while(rom_num[i]==rom_n[i])
{
i++;
}
if(i==8)
{
flag_code=1;
}
else
{
flag_code=0;
}
for(i=0;i<8;i++)
{
rom_n[i]=0x00;
}
}
/********************************************************************
函 数 名:LED8X8_init()
功 能:8X8LED矩阵显示初始化子程序
说 明:
调 用:
入口参数:command
返 回 值:
***********************************************************************/
void LED8X8_inti()
{
P2_0 = 0;
P3_6 = 0;
P2_1 = 1;
P2_2 = 1;
}
main()
{
uchar pdata hz_ts1[14]={" 密码验证通过"};
uchar pdata hz_ts2[28]={"欢迎使用蓝海微芯实验开发系统"};
uchar pdata hz_ts3[14]={" 输入密码有误"};
uchar pdata hz_ts4[]={" 请输入密码"};
uchar i;
uchar m;
EX1=1;
EA=1;
flag=0;
ch451_init();
ch451_write(0x403);
P1_4=1;
P1_4=0;
P1_3=1;
P1_5=1;
write_iic_data(rom_secret,0,8); /*将8字节的ROM码写入到24C02*/
delay_1s();
read_iic_data(rom_num,0,8); /*读出8字节的ROM码*/
P2_1=1;
P2_2=1;
loop:
initial_GLCD();
command_GLCD(0x80);
for(i=0;i<14;i++)
{
write_GLCD(hz_ts4[i]);
}
while(flag==0);
flag=0;
ow_reset(); /* 发送复位信号 */
Delay_DS1990R(20);
write_byte(0x0f); /* 发送读取DS1990R的64位ROM码命令 */
Delay_DS1990R(14);
for(i=8;i>0;i--)
{
rom_n[i-1] = read_byte(); /*获取8字节的ROM码*/
}
compare_code();
initial_GLCD(); /*液晶屏初始化*/
command_GLCD(0x80); /*第一行显示*/
if(flag_code) /*flag_code=1密码正确*/
{
flag_code=0;
for(i=0;i<14;i++) /*显示密码验证通过*/
{
write_GLCD(hz_ts1[i]);
}
delay_1s();
delay_1s();
initial_GLCD();
command_GLCD(0x80);
for(i=0;i<14;i++)
{
write_GLCD(hz_ts2[i]);
}
command_GLCD(0x90);
for(i=14;i<28;i++)
{
write_GLCD(hz_ts2[i]);
}
LED8X8_inti();
delay_1s();
while(1)
{
LED8X8_BRISK(); /*密码验证通过则使8X8LED点阵不停地闪烁*/
}
}
else
{
for(i=0;i<14;i++)
{
write_GLCD(hz_ts3[i]);
}
}
m=0;
while(m<3)
{
m++;
P0=0x00; /*密码错误则使8个红色LED不停地闪烁*/
delay_1s();
P0=0xff;
delay_1s();
}
goto loop; /*提示重新输入密码*/
}
/*-----------------------------END-----------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -