|
此設(shè)計(jì)基于IAP15F2K61S2單片機(jī),硬件設(shè)計(jì)利用沈陽(yáng)工業(yè)大學(xué)MDM22小系統(tǒng)板,附件中含有keil4工程與硬件系統(tǒng)原理圖
實(shí)物圖:
0.jpg (64.69 KB, 下載次數(shù): 53)
下載附件
2017-12-19 18:52 上傳
0.jpg (75.29 KB, 下載次數(shù): 32)
下載附件
2017-12-19 18:52 上傳
Altium Designer畫(huà)的原理圖和PCB圖如下:(51hei附件中可下載工程文件)
0.jpg (131.35 KB, 下載次數(shù): 26)
下載附件
2017-12-19 18:52 上傳
0.jpg (106.15 KB, 下載次數(shù): 31)
下載附件
2017-12-19 18:53 上傳
0.jpg (11.67 KB, 下載次數(shù): 41)
下載附件
2017-12-19 18:53 上傳
單片機(jī)源程序如下:
- #include "ch452.h"
- uchar DIGCode[]={0x00,0x18,0xd5,0xd9,0x78,0xe9,0xed,0x98,0xfd,0xf9,0xe4,0xbd};//數(shù)碼管字形碼
- void ch452_init(void) //定義芯片初始化
- {
- ch452_din = 0;
- ch452_din = 1;
- ch452_load = 1;
- ch452_clk = 1;
- ch452_write(0x403);//系統(tǒng)參數(shù)設(shè)定開(kāi)啟鍵盤掃描,顯示
- ch452_write(0x500);//不啟用BCD模式
- }
- /**********輸入數(shù)據(jù)******/
- void ch452_write(unsigned int command)
- {
- unsigned char i;
- ch452_load=0;
- for(i=0;i<12;i++) /*輸入12位數(shù)據(jù),低位在前,&表按位與*/
- {
- ch452_din=command&1;
- ch452_clk=0;
- ch452_clk=1;
- command>>=1; /*上升沿有效*/
- }
- ch452_load=1; /*上升沿加載數(shù)據(jù)*/
- }
- /*******讀數(shù)據(jù)************************************/
- uint ch452_read()
- {
- uchar i,j,keyw=0,cmd=0x07;
- ch452_load=0;
- /*******發(fā)送讀取按鍵命令**************************************/
- for(j=0;j<4;j++)
- {
-
- ch452_din=cmd&0x01;
- ch452_clk=0;
- cmd>>=1;
- ch452_clk=1;
- }
- ch452_load=1;
- for(j=0;j<100;j++);
- /********讀取鍵值**********************************************/
- for(i=0;i<7;i++)
- {
- keyw<<=1;
- if(ch452_dout)
- {
- keyw++;
- }
- ch452_clk=0;
- ch452_clk=1;
- }
- return keyw;
- }
- /*******讀取鍵盤數(shù)字***********************************/
- uint keyword()
- {
- uint keya,keynum=0;
- keya=ch452_read();
- switch(keya)
- {
- case 0x44:keynum=1;break;
- case 0x45:keynum=2;break;
- case 0x46:keynum=3;break;
- case 0x47:keynum=4;break;
- case 0x4c:keynum=5;break;
- case 0x4d:keynum=6;break;
- case 0x4e:keynum=7;break;
- case 0x4f:keynum=8;break;
- default:keynum=-1;
- }
- return keynum;
- }
- /***********數(shù)碼管顯示*****************************/
- void ch452_display(uchar n,uchar m)
- {
- ch452_write(0xc00+n*256+DIGCode[m]);
- }
復(fù)制代碼- #include "ch452.h"
- #include"LCD12864.H"
- uchar pass_sd[4]={6,6,6,6};//設(shè)定的密碼
- uchar pass_mm[4]={0};//輸入的密碼
- uchar c=0;//定義C:用c的數(shù)值表示狀態(tài)
- uchar k; //
- uchar cw=0;//表示密碼輸錯(cuò)的次數(shù)
- uchar mw=0;//表示密碼的位數(shù)
- uchar count;//在第幾個(gè)數(shù)碼管上顯示
- uint ds=0; //進(jìn)入定時(shí)器的次數(shù)
- uchar bz=0; //報(bào)警器標(biāo)志位
- /*延時(shí)函數(shù)*/
- void delay_xs(uint x)
- { uint i,j;
- for(i=x;i>0;i--)
- for(j=110;j>0;j--);
- }
- /*定時(shí)器*/
- void dingshi() //定時(shí)器
- {
- TMOD=0X01; //工作方式一
- TH0=(65536-50000)/256; //定時(shí)50ms
- TL0=(65536-50000)%256;
- ET0=1; //允許T1中斷
- TR0=1; //啟動(dòng)中斷函數(shù)
- }
- /*中斷函數(shù)*/
- void time1()interrupt 1 //定時(shí)器0中斷函數(shù)
- {
- ds++;
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- if(ds>450)
- {
- c=5;
- cw=0;
- EA=0;
- }
- }
- /*報(bào)警器*/
- void baojing()
- {
- if(bz==1)
- { while(ds<200)
- { EA=1;
- {
- P54=0; delay_xs(500);
- P54=1; delay_xs(500);
- }
- }
- }
- }
- /*輸入密碼*/
- void key_in( count)
- { if(ch452_dout==0)
- {k=keyword();
- if(k!=-1)
- {pass_mm[count]=k; //將鍵值放入輸入密碼數(shù)組中
- ch452_display(count,k); //數(shù)碼管顯示鍵值
- c++;
- if(c==4)
- ch452_display(3,k);
- delay_xs(500);
- mw++; //錯(cuò)誤次數(shù)加1
- }}}
- /*判斷密碼*/
- void key_panduan()
- {
- if(pass_sd[0]==pass_mm[0]&&pass_sd[1]==pass_mm[1]&&pass_sd[2]==pass_mm[2]&&pass_sd[3]==pass_mm[3])
- { clear_screen();
- display_GB2312_string(5,5,"請(qǐng)進(jìn)"); //屏幕顯示請(qǐng)進(jìn)
- delay_xs(9000); //延時(shí)
- c=5;
- cw=0;}
- else
- {ch452_display(0,0);//數(shù)碼管0不顯示
- ch452_display(1,0);//數(shù)碼管1不顯示
- ch452_display(2,0);//數(shù)碼管2不顯示
- ch452_display(3,0);//數(shù)碼管3不顯示
- clear_screen();
- delay_xs(500);
- cw++;
- if(cw==3)
- {bz=1; //報(bào)警器標(biāo)志置1
- c=6;}
- else
- c=5;
- }
- }
- /*主函數(shù)*/
- void main()
- {
- loop:c=0;
- ds=0;
- bz=0;
- ch452_init(); //ch452初始化
- dingshi(); //定時(shí)器初始化
- initial_lcd();//12864屏幕初始化
- clear_screen(); //清屏幕
- display_GB2312_string(5,5,"請(qǐng)輸入密碼");//顯示請(qǐng)輸入密碼
- ch452_display(0,0);//數(shù)碼管0不顯示
- ch452_display(1,0);//數(shù)碼管1不顯示
- ch452_display(2,0);//數(shù)碼管2不顯示
- ch452_display(3,0);//數(shù)碼管3不顯示
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
0.jpg (21.96 KB, 下載次數(shù): 30)
下載附件
2017-12-19 18:54 上傳
所有資料51hei提供下載:
密碼報(bào)警.rar
(6.52 MB, 下載次數(shù): 85)
2017-12-19 10:15 上傳
點(diǎn)擊文件名下載附件
兩個(gè)文件夾,一個(gè)是程序工程,一個(gè)是硬件原理圖PCB圖 下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|