用as608默认的波特率略高,加载过快;建议忽略我的垃圾代码(lcd1602均为自己手写,lcd1602四线驱动,数据线为a4-a7,控制线为b0-b2,其中电源我连到了5v,对比我连到了3v的地线);
as608驱动参考于正点,不过没接感应线,因此导致。。。。谁用谁知道,可能跳函数,因此延时较多,如果有更好的办法,还请不利赐教。。。。因为感应线被占了,或许可以换别的位置,但我实在是。。单片机这个寒假就这样吧。
回顾踩坑点,之前想要用51单片机做,但我一直上位机失败,后来查询技术人员发现,我的开发板,有一个max芯片。。。so,我购买了迷你也就是现在的板子,正如你所知道的,我抱着试试的态度,因为对比度不高,很难辨别,但奇迹降临了,居然出现了,亮度极高的乱码。,于是,一番优化和更改后,
成功驱动lcd1602,as608因为有参考,很快就做了出来。
网上查询资料,还是51黑靠谱,所以很感谢老表,这长达三十多小时的有效学习中,51黑确实教会我很多,但说实话,一遍一遍的调试确实挺要命的。
总之,这就是我寒假的业余工作了。
暂时分别了,51黑的老哥们。
单片机源程序如下:
- #include "delay.h"
- #include "sys.h"
- #include "1602.h"
- #include "as608.h"
- #include "key.h"
- #include "usart2.h"
- int main(void)
- {
- u8 table1[]=" fingerprint stm";
- u8 table2[]=" add find del";
- u8 table3[]=" loading........";
- u8 table4[]=" add ok........";
- u8 table5[]=" find ok.......";
- u8 table6[]=" del ok.......";
- u8 table7[]=" open finger....";
- u8 table8[]=" receive failed ";
- u8 table9[]=" find failed ";
- u8 table10[]=" REG ok..... ";
- u8 t=0;
- int i;
- u8 ensure;
- u8 findensure;
- SearchResult seach;
- delay_init();
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
- usart2_init(57600);
- KEY_Init();
- PS_StaGPIO_Init();
- print(table1,16,1);
- print(table2,16,2);
- while(1)
- {
- t=KEY_Scan(0); //得到键值
- switch(t)
- {
- case KEY0_PRES:
- print(table3,16,1);
- delay_ms(1000);
- ensure=PS_GetImage();
- if(ensure==0x00){
- print(table7,16,1);
- delay_ms(10000);}
- ensure=PS_GenChar(1);
- if(ensure==0x00){
- print(table3,16,1);
- delay_ms(10000);}
- ensure=PS_GetImage();
- if(ensure==0x00){
- print(table7,16,1);
- delay_ms(10000);}
- ensure=PS_GenChar(2);
- if(ensure==0x00){print(table3,16,1);
- delay_ms(10000);}
- ensure=PS_RegModel();
- if(ensure==0x00){
- print(table10,16,1);
- delay_ms(10000);}
- ensure=PS_StoreChar(2,61);
- if(ensure==0x00){
- print(table4,16,1);}
-
- delay_ms(10000);
- break;
-
- //search my fingerprint
- case KEY1_PRES:
- print(table3,16,1);
- delay_ms(10000);
- findensure=PS_GetImage();
- if(findensure==0x01){print(table7,16,1);
- delay_ms(10000);}
- findensure=PS_GenChar(1);
- if(findensure==0x01){print(table3,16,1);
- delay_ms(10000);}
- findensure=PS_Search(1,0,300,&seach);
- if(findensure==0x00){
- print(table5,16,1);
- delay_ms(100);}
- else if(findensure==0x01){
- print(table8,16,1);
- delay_ms(100);
- }else if(findensure==0x09){
- print(table9,16,1);
- delay_ms(100);
- }
-
- break;
-
-
- case WKUP_PRES:
- print(table3,16,1);
- delay_ms(100);delay_ms(100);delay_ms(100);
- while(PS_Empty()==0x00){
- print(table6,16,1);
- delay_ms(10);
- break;
- }
- break;
- default:
- delay_ms(10);
- }
- }
- }
-
复制代码
所有资料51hei提供下载:
stm32的lcd1602指纹识别成功.7z
(238.57 KB, 下载次数: 92)
|