熱門(mén): 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂(lè)園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2017-11-29 10:08
正文摘要:我在做指紋密碼鎖的電子密碼部分的仿真,按照原理圖連線,輸入正確程序后但是無(wú)法運(yùn)行。跪求大神們幫我看看是哪里出現(xiàn)了問(wèn)題。 |
cjjcjj1 發(fā)表于 2017-11-29 11:20 #include <reg52.h> #include <intrins.h> #include"LCD12864.h" /************************************************************** //串/并方式控制 /******************************************************************* 常量聲明區(qū) ********************************************************************/ unsigned char code AC_TABLE[]={ //坐標(biāo)編碼 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, 0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f, 0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f, }; /**************************************************************** 發(fā)送一個(gè)字節(jié) *****************************************************************/ void SendByte(unsigned char Dbyte) { unsigned char i; for(i=0;i<8;i++) { SCK = 0; Dbyte=Dbyte<<1; SID = CY; SCK = 1; SCK = 0; } } /********************************************************** 接收一個(gè)字節(jié) ***********************************************************/ unsigned char ReceiveByte(void) { unsigned char i,temp1,temp2; temp1=temp2=0; for(i=0;i<8;i++) { temp1=temp1<<1; SCK = 0; SCK = 1; SCK = 0; if(SID) temp1++; } for(i=0;i<8;i++) { temp2=temp2<<1; SCK = 0; SCK = 1; SCK = 0; if(SID) temp2++; } return ((0xf0&temp1)+(0x0f&temp2)); } /**************************************************************** 檢查忙狀態(tài) ******************************************************************/ void CheckBusy( void ) { do SendByte(0xfc); //11111,RW(1),RS(0),0 while(0x80&ReceiveByte()); } /****************************************************************** 寫(xiě)一個(gè)字節(jié)的指令 *******************************************************************/ void WriteCommand( unsigned char Cbyte ) { CS = 1; CheckBusy(); SendByte(0xf8); //11111,RW(0),RS(0),0 SendByte(0xf0&Cbyte); SendByte(0xf0&Cbyte<<4); CS = 0; } /************************************************************* 寫(xiě)一個(gè)字節(jié)的數(shù)據(jù) **************************************************************/ void WriteData( unsigned char Dbyte ) { CS = 1; CheckBusy(); SendByte(0xfa); //11111,RW(0),RS(1),0 SendByte(0xf0&Dbyte); SendByte(0xf0&Dbyte<<4); CS = 0; } /****************************************************************** lcd初始化函數(shù) *******************************************************************/ void LcmInit( void ) { WriteCommand(0x30); WriteCommand(0x03); WriteCommand(0x0c); WriteCommand(0x01); WriteCommand(0x06); } /******************************************************************************************************* 設(shè)定光標(biāo)函數(shù) ********************************************************************************************************/ void Location_xy_12864(unsigned char x,unsigned char y) { switch(x) { case 0: x=0x80;break; case 1: x=0x90;break; case 2: x=0x88;break; case 3: x=0x98;break; default: x=0x80; } y=y&0x07; WriteCommand(0x30); WriteCommand(y+x); WriteCommand(y+x); } /*********************************************************************************** 清除文本 ************************************************************************************/ void LcmClearTXT( void ) { unsigned char i; WriteCommand(0x30); WriteCommand(0x80); for(i=0;i<64;i++) WriteData(0x20); Location_xy_12864(0,0); } /************************************************************************************** 清除圖片 *****************************************************************************************/ /* void LcmClearBMP( void ) { unsigned char i,j; WriteCommand(0x34); WriteCommand(0x36); for(i=0;i<32;i++) { WriteCommand(0x80|i); WriteCommand(0x80); for(j=0;j<32;j++) WriteData(0); } } */ //顯示溫度 /**************************************************************************************** 顯示字符串 *****************************************************************************************/ void PutStr(unsigned char row,unsigned char col,unsigned char *puts) { WriteCommand(0x30); WriteCommand(AC_TABLE[8*row+col]); while(*puts != '\0') { if(col==8) { col=0; row++; } if(row==4) row=0; WriteCommand(AC_TABLE[8*row+col]); WriteData(*puts); puts++; if(*puts != '\0') { WriteData(*puts); puts++; col++; } } } /* //顯示一個(gè)四位的數(shù)字 void PutNum(unsigned char row,unsigned char col,unsigned int num) { WriteCommand(0x30); WriteCommand(AC_TABLE[8*row+col]); WriteData((num/1000)+48); WriteData(((num%1000)/100)+48); WriteData(((num%100)/10)+48); WriteData((num%10)+48); }*/ |
Powered by 單片機(jī)教程網(wǎng)