智能门禁(STM32F407ZGT6探索者版本)

1.硬件

1.1 硬件组成

1. 正点原子STM32F407探索者开发板
2. RC522模块
3. 3.5寸电阻触摸屏
4. 继电器+5V小灯

1.2 硬件连接

1,DS0(LED0)(连接在PF9),DS1(LED1)(连接在PF10)
2,蜂鸣器(连接在PF8)
3,按键KEY1(PE3)开锁/KEY2(PE2)关锁
4.继电器(连接在PE1)
5.RC522连线说明
*1--SDA  <----->PF0
*2--SCK  <----->PF1
*3--MOSI <----->PF2
*4--MISO <----->PF3
*5--悬空
*6--GND <----->GND
*7--RST <----->PF4
*8--VCC <----->VCC 3.3V

2.功能实现

2.1LCD主界面显示(时间显示+欢迎光临+虚拟按键)
2.2DS0(LED0)指示灯(红色)闪烁表示门禁系统正常运行,DS1(LED1)指示灯(绿色)门禁开启时点亮
2.3门铃功能(按下门铃,响铃1S)
2.4继电器吸合模拟门禁开启,KEY_1按键按下模拟门禁关闭,KEY_2按键按下模拟门禁开启
2.5刷卡和密码输入两种方式开启门禁
2.6卡片管理(录入卡号保存在SPIFLASH中),密码管理(密码修改保存在EEPROM)

3.软件实现步骤

3.1LCD汉字显示采用取模方式实现,采用PCtoLCD2002取模工具

工具设置的字宽和字高要同每行显示的数据保持一致,设置2424和3232还有4848的字体***

在这里插入图片描述
代码实现:

uint8_t tfont24[][24] = {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x02,0x00,0x20,0x04,0x10,0x20,0x04,0x10,0x20,0x08,0x10,0x20,0x10,0x10,0x20,0x20},
{0x10,0x20,0xC0,0x10,0x23,0x80,0x10,0x3E,0x00,0x1F,0xF0,0x00,0x10,0x30,0x00,0x10,0x2C,0x00,0x10,0x23,0x00,0x10,0x20,0xC0},
{0x10,0x20,0x60,0x10,0x20,0x30,0x30,0x20,0x18,0x10,0x60,0x0C,0x00,0x60,0x0E,0x00,0x20,0x04,0x00,0x00,0x00,0x00,0x00,0x00},/*"天",0*/

{0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08},
{0x00,0x00,0x08,0x00,0x00,0x08,0x3F,0xFF,0xF8,0x1F,0xFF,0xF8,0x00,0x40,0x08,0x00,0x40,0x08,0x00,0x40,0x08,0x00,0x40,0x08},
{0x00,0x40,0x08,0x00,0x40,0x08,0x00,0xC0,0x08,0x00,0x40,0x08,0x00,0x00,0x18,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00},/*"上",0*/



};



uint8_t tfont48[][48] = {
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x01,0x00,0x08,0x00,0x00,0x00,0x01,0x00,0x10,0x00,0x00,0x00,0x09,0x00,0x10,0x00,0x00,0x00,0x31,0x00,0x20,0x00,0x00},
{0x00,0xE1,0x00,0x60,0x00,0x00,0x07,0xC1,0x00,0xC0,0x00,0x00,0x7F,0x01,0x01,0xC0,0x00,0x00,0x3D,0x01,0x03,0x80,0x00,0x00,0x31,0x01,0x07,0x00,0x00,0x00,0x01,0x01,0x1E,0x7F,0xFF,0xFC,0x01,0x01,0xFC,0x3F,0xFF,0xF8,0x01,0xFF,0xF0,0x1F,0xFF,0xF8},
{0x01,0xFF,0xE0,0x10,0x20,0x20,0x01,0xF1,0x20,0x10,0x20,0x20,0x01,0x01,0x30,0x10,0x20,0x20,0x01,0x01,0x18,0x10,0x20,0x20,0x01,0x01,0x1C,0x10,0x20,0x20,0x03,0x01,0x0E,0x10,0x20,0x20,0x07,0x03,0x0F,0x10,0x20,0x20,0x03,0x07,0x07,0x90,0x20,0x20},
{0x01,0x07,0x07,0xD0,0x20,0x20,0x00,0x03,0x00,0x10,0x20,0x20,0x00,0x01,0x00,0x10,0x20,0x20,0x00,0x00,0x00,0x10,0x20,0x20,0x07,0xFF,0xFF,0x90,0x20,0x20,0x03,0xFF,0xFF,0x10,0x20,0x20,0x01,0xFF,0xFF,0x10,0x20,0x20,0x01,0x00,0x08,0x10,0x20,0x20},
{0x01,0x00,0x08,0x10,0x20,0x20,0x01,0x00,0x08,0x10,0x20,0x20,0x01,0x00,0x08,0x1F,0xFF,0xFC,0x01,0x00,0x08,0x3F,0xFF,0xF8,0x01,0x00,0x08,0x3F,0xFF,0xF8,0x01,0x00,0x08,0x10,0x00,0x00,0x01,0x00,0x08,0x00,0x00,0x00,0x01,0x00,0x08,0x00,0x00,0x00},
{0x03,0xFF,0xFF,0x00,0x00,0x00,0x03,0xFF,0xFE,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"智",0*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x00,0x00,0x00,0x00,0x0F,0x1F,0xFF,0xFF,0xFC,0x00,0x1B,0x1F,0xFF,0xFF,0xF8},
{0x00,0x33,0x0F,0xFF,0xFF,0xF8,0x00,0xE2,0x08,0x20,0x80,0x00,0x01,0xC2,0x08,0x20,0x80,0x00,0x03,0x86,0x08,0x20,0x80,0x00,0x0F,0x06,0x08,0x20,0x80,0x00,0x3E,0x06,0x08,0x20,0x80,0x40,0x1C,0x06,0x08,0x20,0x80,0x20,0x08,0x06,0x08,0x20,0x80,0x20},
{0x00,0x06,0x08,0x20,0x80,0x30,0x00,0x04,0x08,0x20,0x80,0x38,0x00,0x84,0x08,0x20,0x80,0x7C,0x00,0x64,0x1F,0xFF,0xFF,0xF8,0x00,0x74,0x3F,0xFF,0xFF,0xF0,0x00,0x3C,0x1C,0x00,0x00,0x00,0x00,0x1F,0x88,0x00,0x00,0x00,0x00,0x0F,0x80,0x00,0x00,0x00},
{0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xE0,0x0F,0xFF,0xF8,0x7F,0xFF,0xF0,0x0F,0xFF,0xFC,0x3F,0xFF,0xF8,0x0C,0x04,0x1C,0x20,0x60,0x38,0x00,0x04,0x0C,0x00,0x40,0x18},
{0x00,0x08,0x0C,0x00,0xC0,0x18,0x00,0x18,0x0C,0x00,0x80,0x18,0x00,0x10,0x0C,0x01,0x80,0x18,0x00,0x30,0x0C,0x03,0x00,0x18,0x00,0x70,0x0C,0x07,0x00,0x18,0x00,0xE0,0x0C,0x0E,0x00,0x18,0x01,0xE0,0x0C,0x1E,0x00,0x18,0x01,0xC0,0x0C,0x3C,0x00,0x18},
{0x00,0xC0,0x0C,0x18,0x00,0x18,0x00,0x40,0x7C,0x08,0x00,0x38,0x00,0x03,0xFC,0x00,0x1F,0xF8,0x00,0x00,0x18,0x00,0x00,0xF0,0x00,0x00,0x10,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"能",0*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0xF8},
{0x00,0x3F,0xFF,0xFF,0xFF,0xF8,0x00,0x1F,0xFF,0xFF,0xFF,0xF0,0x00,0x18,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x00},
{0x07,0xE0,0x00,0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00},
{0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x80},
{0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0xC0,0x01,0x00,0x00,0x00,0x00,0xE0,0x01,0x00,0x00,0x00,0x00,0xF8,0x01,0x00,0x00,0x00,0x00,0xF8,0x03,0xFF,0xFF,0xFF,0xFF,0xF0,0x07,0xFF,0xFF,0xFF,0xFF,0xE0},
{0x03,0xFF,0xFF,0xFF,0xFF,0xC0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"门",0*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x02,0x03,0x00,0x00,0x00,0x40,0x04,0x02,0x00,0x00,0x00,0x40,0x0C,0x02,0x00,0x10,0x00,0x40,0x18,0x02,0x00,0x20,0x00,0x40,0x70,0x02,0x00,0x60},
{0x00,0x40,0xE0,0x02,0x00,0xC0,0x00,0x43,0xC0,0x02,0x01,0x80,0x00,0x47,0x80,0x42,0x03,0x80,0x00,0x5E,0x00,0x42,0x07,0x00,0x00,0x7C,0x00,0x42,0x0E,0x00,0x3F,0xFF,0xFE,0x42,0x1E,0x00,0x1F,0xFF,0xFE,0x42,0x3C,0x00,0x1F,0xFF,0xFE,0x42,0x78,0x00},
{0x10,0x48,0x00,0x42,0x70,0x40,0x00,0x44,0x00,0x42,0x30,0x40,0x00,0x47,0x00,0x42,0x00,0x60,0x00,0xC7,0x80,0x42,0x00,0x20,0x01,0xC3,0xE0,0x42,0x00,0x30,0x00,0xC1,0xC0,0x42,0x00,0x3C,0x00,0x40,0x04,0x42,0x00,0x3C,0x00,0x00,0x0C,0x43,0xFF,0xF8},
{0x00,0x00,0x18,0x43,0xFF,0xF0,0x00,0x40,0x30,0x43,0xFF,0xE0,0x00,0x40,0x60,0x42,0x00,0x00,0x00,0x41,0xC0,0x42,0x00,0x00,0x00,0x43,0x80,0x42,0x00,0x00,0x00,0x4F,0x00,0x42,0x00,0x00,0x00,0x7E,0x00,0x42,0x40,0x00,0x00,0x78,0x00,0x42,0x20,0x00},
{0x3F,0xFF,0xFE,0x42,0x30,0x00,0x1F,0xFF,0xFC,0x42,0x18,0x00,0x10,0x70,0x00,0xC2,0x1C,0x00,0x00,0x4C,0x01,0xC2,0x0E,0x00,0x00,0x47,0x01,0xC2,0x0F,0x00,0x00,0x43,0x80,0xC2,0x07,0x80,0x00,0x41,0xC0,0x42,0x03,0xC0,0x00,0x40,0xE0,0x02,0x01,0xF0},
{0x00,0xC0,0x70,0x06,0x00,0xE0,0x01,0xC0,0x78,0x0E,0x00,0x00,0x01,0xC0,0x3C,0x1E,0x00,0x00,0x00,0xC0,0x30,0x0E,0x00,0x00,0x00,0x40,0x10,0x06,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"禁",0*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0xC0},
{0x01,0x00,0x00,0x00,0x01,0x80,0x01,0x00,0x00,0x30,0x01,0x00,0x01,0x00,0x00,0x3C,0x03,0x00,0x01,0x00,0xE0,0x3C,0x06,0x00,0x01,0x00,0xF0,0x78,0x0E,0x00,0x01,0x00,0xF0,0x78,0x1C,0x00,0x01,0x01,0xE0,0xD8,0x38,0x00,0x03,0x03,0x60,0xF8,0x70,0x00},
{0x03,0x03,0x60,0xB1,0xF0,0x00,0x03,0x06,0x61,0xB1,0xE0,0x80,0x02,0x0C,0x41,0x30,0xE0,0x80,0x02,0x1C,0x43,0x30,0x40,0xC0,0x02,0x38,0x46,0x30,0x00,0xC0,0x02,0x70,0xC6,0x30,0x00,0xE0,0x02,0xE0,0xCC,0x30,0x00,0x70,0x07,0xE0,0xCC,0x30,0x00,0x78},
{0x07,0xC0,0xD8,0x3F,0xFF,0xF0,0x06,0xC0,0xD8,0x3F,0xFF,0xF0,0x06,0x80,0xB0,0x3F,0xFF,0xC0,0x06,0x00,0xE0,0x20,0x00,0x00,0x04,0x00,0xE0,0x20,0x00,0x00,0x0C,0x00,0xC0,0x20,0x00,0x00,0x0C,0x01,0xC0,0x20,0x80,0x00,0x0C,0x01,0x80,0x20,0x80,0x00},
{0x0C,0x03,0x84,0x20,0x40,0x00,0x1C,0x07,0x06,0x20,0x60,0x00,0x1C,0x0F,0x02,0x20,0x70,0x00,0x1C,0x0E,0x03,0x40,0x30,0x00,0x1C,0x06,0x03,0xC0,0x38,0x00,0x3C,0x00,0x01,0xE0,0x1C,0x00,0x18,0x00,0x01,0xF0,0x1E,0x00,0x08,0x00,0x00,0xF8,0x0F,0x00},
{0x04,0x00,0x00,0x7C,0x0F,0xC0,0x00,0x00,0x00,0x3C,0x07,0xE0,0x00,0x00,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"系",0*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x02,0x00,0x00,0x00,0xF0,0x08,0x03,0x80,0x00,0x01,0xF0,0x1E,0x07,0xC0,0x00,0x03,0xF0,0x3F,0x07,0x80,0x00,0x07,0x60,0x7E,0x07,0x00},
{0x00,0x1C,0x60,0xEE,0x07,0x00,0x00,0x78,0x61,0xCC,0x06,0x00,0x01,0xE0,0x43,0x8C,0x0E,0x00,0x07,0xC0,0x47,0x08,0x0C,0x00,0x3F,0x00,0x5C,0x18,0x0C,0x00,0x1E,0x00,0x78,0x18,0x08,0x00,0x1C,0x00,0xF0,0x18,0x18,0x04,0x08,0x01,0xE0,0x10,0x18,0x04},
{0x00,0x07,0xC0,0x10,0x10,0x08,0x00,0x1F,0x80,0x10,0x10,0x08,0x00,0x0F,0x00,0x10,0x30,0x18,0x00,0x06,0x00,0x00,0x20,0x10,0x00,0x20,0x02,0x00,0x00,0x30,0x00,0x20,0x03,0x80,0x00,0x60,0x00,0x20,0x07,0xC0,0x00,0xE0,0x00,0x20,0x0F,0x80,0x01,0xC0},
{0x00,0x20,0x1B,0x80,0x07,0x80,0x00,0x20,0x33,0x00,0x3F,0x00,0x00,0x20,0xE3,0xFF,0xFE,0x00,0x00,0x21,0xC3,0xFF,0xF0,0x00,0x30,0x27,0x03,0xFF,0x00,0x00,0x18,0x3E,0x03,0x00,0x00,0x00,0x1F,0x3E,0x03,0x00,0x00,0x00,0x0F,0xEC,0x03,0x00,0x00,0x00},
{0x07,0xA0,0x02,0x00,0x00,0x00,0x00,0x20,0x02,0x00,0x00,0x00,0x00,0x20,0x83,0xFF,0xFF,0xF0,0x00,0x20,0x43,0xFF,0xFF,0xF8,0x00,0x20,0x62,0x00,0x00,0x38,0x00,0x20,0x32,0x00,0x00,0x18,0x00,0x20,0x3A,0x00,0x00,0x18,0x00,0x20,0x1E,0x00,0x00,0x18},
{0x00,0x60,0x1F,0x00,0x00,0x18,0x00,0xE0,0x0F,0x80,0x00,0x18,0x00,0xE0,0x07,0xC0,0x00,0xF8,0x00,0x60,0x00,0x00,0x0F,0xF8,0x00,0x20,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"统",0*/
    

};


//在指定位置 显示1个24*24的汉字
//(x,y):汉字显示的位置
//index:tfont数组里面的第几个汉字
//color:这个汉字的颜色
void Test_Show_CH_Font24(uint16_t x,uint16_t y,uint8_t index,uint16_t color)
{                   
    uint8_t temp,t,t1;
    uint16_t y0=y;                  
    for(t=0;t<72;t++)//每个24*24的汉字点阵 有72个字节
    {   
        if(t<24)temp=tfont24[index*3][t];           //前24个字节
        else if(t<48)temp=tfont24[index*3+1][t-24]; //中24个字节                              
        else temp=tfont24[index*3+2][t-48];         //后24个字节
        for(t1=0;t1<8;t1++)
        {
            if(temp&0x80)lcd_draw_point(x,y,color);//画实心点
            else lcd_draw_point(x,y,BLUE);   //画空白点(使用背景色)
            temp<<=1;
            y++;
            if((y-y0)==24)
            {
                y=y0;
                x++;
                break;
            }
        }    
    }          
}

//在指定位置 显示1个48*48的汉字
//(x,y):汉字显示的位置
//index:tfont数组里面的第几个汉字
//color:这个汉字的颜色
void Test_Show_CH_Font48(uint16_t x,uint16_t y,uint8_t index,uint16_t color)
{                   
    uint16_t temp,t,t1;
    uint16_t y0=y;                 
    for(t=0;t<288;t++)//每个24*24的汉字点阵 有72个字节
    {   
        if(t<48)temp=tfont48[index*6][t];           //前48个字节   1
        else if(t<96)temp=tfont48[index*6+1][t-48]; //48~96个字节          2                    
        else if(t<144)temp=tfont48[index*6+2][t-96];         //96~144个字节     3
        else if(t<192)temp=tfont48[index*6+3][t-144];   //4
        else if(t<240)temp=tfont48[index*6+4][t-192];   //5
        else temp=tfont48[index*6+5][t-240];   //6
        
        for(t1=0;t1<8;t1++)
        {
            if(temp&0x80)lcd_draw_point(x,y,color);//画实心点
            else lcd_draw_point(x,y,BLUE);   //画空白点(使用背景色)
            temp<<=1;
            y++;
            if((y-y0)==48)
            {
                y=y0;
                x++;
                break;
            }
        }    
    }          
}

主界面显示
主界面

3.2

4.项目展示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值