仿真圖proteus8.16(有低版本)
程序編譯器:keil 4/keil 5
編程語(yǔ)言:C語(yǔ)言
設(shè)計(jì)編號(hào):P10
1.主要功能:
基于51單片機(jī)AT89C51/52(與AT89S51/52、AT89C51/52、STC89C51/52等51內(nèi)核單片機(jī)通用)
基于51單片機(jī)的簡(jiǎn)易密碼鎖設(shè)計(jì)數(shù)碼管顯示
以單片機(jī)為核心,設(shè)計(jì)一個(gè)六位電子密碼鎖。利用矩陣鍵盤輸入密碼,8位數(shù)碼管顯示輸入的內(nèi)容,要求如下:
1、初始狀態(tài)數(shù)碼管為熄滅狀態(tài),不顯示內(nèi)容,系統(tǒng)等待按鍵按下。
2、矩陣鍵盤按下,數(shù)碼管按順序顯示被按下的按鍵數(shù)字,共六位。
3、每按下六次按鍵,系統(tǒng)判斷一次密碼。密碼正確,數(shù)碼管顯示open,然后回到初始狀態(tài);密碼錯(cuò)誤,數(shù)碼顯示------,持續(xù)2秒,然后回到初始狀態(tài)。
4、密碼錯(cuò)誤3次以上,禁止輸入,如需再輸入,需按下復(fù)位按鍵。
4、密碼為六位,初始密碼為000 000。
5、使用keil編程,proteus仿真調(diào)試,普中開發(fā)板完成實(shí)物演示。
(目前僅完全適配普中開發(fā)板A234,其他普中開發(fā)板型號(hào)可能需要做代碼修改或接線)
需注意仿真中51單片機(jī)芯片是兼容的,AT89C51,AT89C52是51單片機(jī)的具體型號(hào),內(nèi)核是一樣的。相同的原理圖里,無(wú)論stc還是at都一樣,引腳功能都是一樣的,程序是兼容的,芯片可以替換為STC89C52/STC89C51/AT89C52/AT89C51等51單片機(jī)芯片。
資料下載鏈接:
P系列單片機(jī)設(shè)計(jì)下載鏈接(復(fù)制到瀏覽器打開)
https://docs.qq.com/doc/DS2pPenNRaHB6SlR1
以下為本設(shè)計(jì)資料展示圖:
實(shí)物圖:
2.仿真
開始仿真
打開仿真工程,雙擊proteus中的單片機(jī),選擇hex文件路徑,然后開始仿真。
3. 程序代碼
使用keil4或者keil5編譯,代碼有注釋,可以結(jié)合報(bào)告理解代碼含義。
#include<reg52.h>
完整代碼在文章開頭下載鏈接
#define uchar unsigned char
#define uint unsigned int
uchar old1,old2,old3,old4,old5,old6; //原始密碼000000
uchar new1,new2,new3,new4,new5=1,new6=1; //每次MCU采集到的密碼輸入
uchar a=16,b=16,c=16,d=16,e=16,f=16; //送入數(shù)碼管顯示的變量
uchar wei,key,temp,num1;
uint tt=100;
uchar allow,wanbi,cwflag; //各個(gè)狀態(tài)位
sbit beep=P1^7;
sbit jdq=P1^0;
uchar code led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f, //數(shù)碼管段碼
0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40,
0x3f,0x73,0x79,0x37 //open
}; //
uchar code table[]={0x00,0x04,0x08,0x0c,0x10,0x14,0x18,0x1c}; //數(shù)碼管位選
void delay(unsigned int i) //延時(shí)
{
uint j,k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f) //數(shù)碼管顯示
{
P0=0x00; //數(shù)碼管關(guān)閉
P0=led[a]; //段選
P2=table[7]; //位選
delay(5); //延時(shí)
P0=0x00;
P0=led[b];
P2=table[6];
delay(5);
P0=0x00;
P0=led[c];
P2=table[5];
delay(5);
P0=0x00;
P0=led[d];
P2=table[4];
delay(5);
P0=0x00;
P0=led[e];
P2=table[3];
delay(5);
P0=0x00;
P0=led[f];
P2=table[2];
delay(5);
}
void delay_uint(uint i)//延時(shí)
{
while(i--);
}
uchar scan_key=0;
uchar Matrix_buttons_scan(){
uchar i,j;
i=0;
j=0;
P1=0x0f;
if(P1!=0x0f) //檢測(cè)有無(wú)按下
{
delay_uint(10000);
if(P1!=0x0f) //檢測(cè)有無(wú)按下
{
switch(P1)//檢測(cè)行
{
case 0x0e:i=3;break;
case 0x0d:i=2;break;
case 0x0b:i=1;break;
case 0x07:i=0;
}
P1=0xf0;
switch(P1)//檢測(cè)列
{
case 0xe0:j=13;break;
case 0xd0:j=9;break;
case 0xb0:j=5;break;
case 0x70:j=1;
}
}
}
if(scan_key!=i+j)
{
scan_key=i+j;
return scan_key;
}else{
return 0;
}
}
//按鍵掃描子函數(shù)
void keyscan()
{
uchar i=0;
i=Matrix_buttons_scan();//按鍵檢測(cè)
if(i==1)
{
key=0; //按鍵0定義
wei++; //輸入位數(shù)+1
}else if(i==2)
{
key=1; //按鍵1定義
wei++; //輸入位數(shù)+1
}else if(i==3)
{
key=2; //按鍵2定義
wei++; //輸入位數(shù)+1
}else if(i==4)
{
key=3; //按鍵3定義
wei++; //輸入位數(shù)+1
}else if(i==5)
{
key=4; //按鍵4定義
wei++; //輸入位數(shù)+1
}else if(i==6)
{
key=5; //按鍵5定義
wei++; //輸入位數(shù)+1
}else if(i==7)
{
key=6; //按鍵6定義
wei++; //輸入位數(shù)+1
}else if(i==8)
{
key=7; //按鍵7定義
wei++; //輸入位數(shù)+1
}else if(i==9)
{
key=8; //按鍵8定義
wei++; //輸入位數(shù)+1
}else if(i==10)
{
key=9; //按鍵9定義
wei++; //輸入位數(shù)+1
}
}
4. 設(shè)計(jì)報(bào)告
6198字設(shè)計(jì)報(bào)告,內(nèi)容包括目錄,硬件設(shè)計(jì)、軟件設(shè)計(jì)、軟硬件框圖、調(diào)試、結(jié)論等
5. 設(shè)計(jì)資料內(nèi)容清單
資料設(shè)計(jì)資料包括仿真,程序代碼、講解視頻、功能要求、設(shè)計(jì)報(bào)告、軟硬件設(shè)計(jì)框圖等。
0、常見使用問題及解決方法–必讀?。。。?/p>
1、仿真圖
2、程序源碼注釋
3、功能要求
4、開題報(bào)告
5、設(shè)計(jì)報(bào)告
6、軟硬件流程框圖
7、燒錄工具
8、講解視頻
Altium Designer 安裝破解
KEIL+proteus 單片機(jī)仿真設(shè)計(jì)教程
KEIL安裝破解
Proteus安裝
Proteus簡(jiǎn)易使用教程
單片機(jī)學(xué)習(xí)資料
普中-2&普中-3&普中-4開發(fā)板原理圖.pdf
相關(guān)數(shù)據(jù)手冊(cè)
答辯技巧
設(shè)計(jì)報(bào)告常用描述
鼠標(biāo)雙擊打開查找嘉盛單片機(jī)51 STM32單片機(jī)課程畢業(yè)設(shè)計(jì).url