文档库 最新最全的文档下载
当前位置:文档库 › 4×4键盘及8位数码管显示构成的电子密码锁

4×4键盘及8位数码管显示构成的电子密码锁

4×4键盘及8位数码管显示构成的电子密码锁
4×4键盘及8位数码管显示构成的电子密码锁

1.

用4×4组成0-9数字键及确认键。

用8位数码管组成显示电路提示信息,当输入密码时,只显示“8.”,当密码位数输

入完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则门开,此处用

LED发光二极管亮一秒钟做为提示,同时发出“叮咚”声;若密码不正确,禁止按键输入3

秒,同时发出“嘀、嘀”报警声;若在3秒之内仍有按键按下,则禁止按键输入3秒被重新

禁止。(此句在下面程序中需要再按下ENTER键方有效)

2.电路原理图

图4.33.1

3.系统板上硬件连线

(1).把“单片机系统”区域中的P0.0-P0.7用8芯排线连接到“动态数码显示”区域中的ABCDEFGH端子上。

(2).把“单片机系统“区域中的P2.0-P2.7用8芯排线连接到“动态数码显示”区域中的S1S2S3S4S5S6S7S8端子上。

(3).把“单片机系统”区域中的P3.0-P3.7用8芯排线连接到“4×4行列式键盘”区域中的R1R2R3R4C1C2C3C4端子上。

(4).把“单片机系统”区域中的P1.0用导线连接到“八路发光二极管模块”区域中的L2端子上。

(5).把“单片机系统”区域中的P1.7用导线连接到“音频放大模块”区域中的SPK IN 端子上。

(6).把“音频放大模块”区域中的SPK OUT接到喇叭上。

4.程序设计内容

(1).4×4行列式键盘识别技术:有关这方面内容前面已经讨论过,这里不再重复。

(2).8位数码显示,初始化时,显示“P ”,接着输入最大6位数的密码,当密码输入完后,按下确认键,进行密码比较,然后给出相应的信息。在输入密码过程中,显

示器只显示“8.”。当数字输入超过6个时,给出报警信息。在密码输入过程中,若输

入错误,可以利用“DEL”键删除刚才输入的错误的数字。

(3).4×4行列式键盘的按键功能分布图如图4.33.2所示:

图4.33.2

5.C语言源程序

#include

unsigned char ps[]={1,2,3,4,5}; //设定的密码

unsigned char code dispbit[]={0xfe,0xfd,0xfb,0xf7,

0xef,0xdf,0xbf,0x7f};

unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,

0x6d,0x7d,0x07,0x7f,0x6f,

0x77,0x7c,0x39,0x5e,0x79,0x71,

0x00,0x40,0x73,0xff}; unsigned char dispbuf[8]={18,16,16,16,16,16,16,16}; unsigned char dispcount;

unsigned char flashcount;

unsigned char temp;

unsigned char key;

unsigned char keycount;

unsigned char pslen=5;

unsigned char getps[6];

bit keyoverflag;

bit errorflag;

bit rightflag;

unsigned int second3;

unsigned int aa,bb;

unsigned int cc;

bit okflag;

bit alarmflag;

bit hibitflag;

unsigned char oka,okb;

void main(void)

{

unsigned char i,j;

TMOD=0x01;

TH0=(65536-500)/256;

TL0=(65536-500)%256;

TR0=1;

ET0=1;

EA=1;

while(1)

{

P3=0xff;

P3_4=0;

temp=P3;

temp=temp & 0x0f;

if (temp!=0x0f)

{

for(i=10;i>0;i--)

for(j=248;j>0;j--);

temp=P3;

temp=temp & 0x0f;

if (temp!=0x0f)

{

temp=P3;

temp=temp & 0x0f;

switch(temp)

{

case 0x0e:

key=7;

break;

case 0x0d:

key=8;

break;

key=9;

break;

case 0x07:

key=10;

break;

}

temp=P3;

P1_1=~P1_1;//后面也有,貌似无用

if((key>=0) && (key<10))

{

if(keycount<6)

{

getps[keycount]=key;

dispbuf[keycount+2]=19; //前两位已经用于显示“P ”

}

keycount++;

if(keycount==6)

{

keycount=6;

}

else if(keycount>6)

{

keycount=6;

keyoverflag=1; //key overflow 输入密码长度超过

}

}

else if(key==12) //delete key

{

if(keycount>0)

{

keycount--;

getps[keycount]=0; //最近1次数入的数值清0

dispbuf[keycount+2]=16;

}

else

{

keyoverflag=1; //未输入密码,按到功能键,报错!嘀一声。

}

}

else if(key==15) //enter key

{

if(keycount!=pslen)

{

errorflag=1;

rightflag=0;

second3=0;

}

else

{

for(i=0;i

{

if(getps[i]!=ps[i])

{

i=keycount;

errorflag=1;

rightflag=0;

second3=0;

goto a;

}

}

errorflag=0;

rightflag=1;

a: i=keycount;

}

temp=temp & 0x0f;

while(temp!=0x0f)

{

temp=P3;

temp=temp & 0x0f;

}

keyoverflag=0;

}

}

P3=0xff;

P3_5=0;

temp=P3;

temp=temp & 0x0f;

if (temp!=0x0f)

{

for(i=10;i>0;i--)

for(j=248;j>0;j--);

temp=P3;

temp=temp & 0x0f;

if (temp!=0x0f)

{

temp=P3;

temp=temp & 0x0f;

switch(temp)

{

case 0x0e:

key=4;

break;

case 0x0d:

key=5;

break;

case 0x0b:

key=6;

break;

case 0x07:

key=11;

break;

}

temp=P3;

P1_1=~P1_1;

if((key>=0) && (key<10))

{

if(keycount<6)

{

getps[keycount]=key;

dispbuf[keycount+2]=19;

}

keycount++;

if(keycount==6)

{

keycount=6;

}

else if(keycount>6)

{

keycount=6;

keyoverflag=1;//key overflow

}

}

else if(key==12)//delete key

{

if(keycount>0)

{

keycount--;

getps[keycount]=0;

dispbuf[keycount+2]=16;

}

else

{

keyoverflag=1;

}

}

else if(key==15)//enter key

{

if(keycount!=pslen)

{

errorflag=1;

rightflag=0;

second3=0;

}

else

{

for(i=0;i

{

if(getps[i]!=ps[i])

{

i=keycount;

errorflag=1;

rightflag=0;

second3=0;

goto a4;

}

}

errorflag=0;

rightflag=1;

a4: i=keycount;

}

}

temp=temp & 0x0f;

while(temp!=0x0f)

{

temp=P3;

temp=temp & 0x0f;

}

keyoverflag=0;

}

}

P3=0xff;

P3_6=0;

temp=P3;

temp=temp & 0x0f;

if (temp!=0x0f)

{

for(i=10;i>0;i--)

for(j=248;j>0;j--);

temp=P3;

temp=temp & 0x0f;

if (temp!=0x0f)

{

temp=P3;

temp=temp & 0x0f;

switch(temp)

{

case 0x0e:

key=1;

break;

case 0x0d:

key=2;

break;

case 0x0b:

key=3;

break;

case 0x07:

key=12;

break;

}

temp=P3;

P1_1=~P1_1;

if((key>=0) && (key<10))

{

if(keycount<6)

{

getps[keycount]=key;

dispbuf[keycount+2]=19;

}

keycount++;

if(keycount==6)

{

keycount=6;

}

else if(keycount>6)

{

keycount=6;

keyoverflag=1;//key overflow

}

}

else if(key==12)//delete key

{

if(keycount>0)

{

keycount--;

getps[keycount]=0;

dispbuf[keycount+2]=16;

}

else

{

keyoverflag=1;

}

}

else if(key==15)//enter key

{

if(keycount!=pslen)

{

errorflag=1;

rightflag=0;

second3=0;

}

else

{

for(i=0;i

{

if(getps[i]!=ps[i])

{

i=keycount;

errorflag=1;

rightflag=0;

second3=0;

goto a3;

}

}

errorflag=0;

rightflag=1;

a3: i=keycount;

}

}

temp=temp & 0x0f;

while(temp!=0x0f)

{

temp=P3;

temp=temp & 0x0f;

}

keyoverflag=0;

}

}

P3=0xff;

P3_7=0;

temp=P3;

temp=temp & 0x0f;

if (temp!=0x0f)

{

for(i=10;i>0;i--)

for(j=248;j>0;j--);

temp=P3;

temp=temp & 0x0f;

if (temp!=0x0f)

{

temp=P3;

temp=temp & 0x0f;

switch(temp)

{

case 0x0e:

key=0;

break;

case 0x0d:

key=13;

break;

case 0x0b:

key=14;

break;

case 0x07:

key=15;

break;

}

temp=P3;

P1_1=~P1_1;

if((key>=0) && (key<10))

{

if(keycount<6)

{

getps[keycount]=key;

dispbuf[keycount+2]=19;

}

keycount++;

if(keycount==6)

{

keycount=6;

}

else if(keycount>6)

{

keycount=6;

keyoverflag=1;//key overflow

}

}

else if(key==12)//delete key

{

if(keycount>0)

{

keycount--;

getps[keycount]=0;

dispbuf[keycount+2]=16;

}

else

{

keyoverflag=1;

}

}

else if(key==15)//enter key

{

if(keycount!=pslen)

{

errorflag=1;

rightflag=0;

second3=0;

}

else

{

for(i=0;i

{

if(getps[i]!=ps[i])

{

i=keycount;

errorflag=1;

rightflag=0;

second3=0;

goto a2;

}

}

errorflag=0;

rightflag=1;

a2: i=keycount;

}

}

temp=temp & 0x0f;

while(temp!=0x0f)

{

temp=P3;

temp=temp & 0x0f;

}

keyoverflag=0;

}

}

}

}

void t0(void) interrupt 1 using 0

{

TH0=(65536-500)/256;

TL0=(65536-500)%256;

flashcount++;

if(flashcount==8)

{

flashcount=0;

P0=dispcode[dispbuf[dispcount]];

P2=dispbit[dispcount];

dispcount++;

if(dispcount==8)

{

dispcount=0;

}

}

if((errorflag==1) && (rightflag==0)) //发出“嘀、嘀”报警声

{

bb++;

if(bb==800)

{

bb=0;

alarmflag=~alarmflag;

}

if(alarmflag==1) //sound alarm signal

{

P1_7=~P1_7;

}

aa++;

if(aa==800) //light alarm signal

{

aa=0;

P1_0=~P1_0; //LED发光二极管闪

}

second3++;

if(second3==6400) //闪4次后(8次变换),自动复位到按ENTER前的状态{

second3=0;

errorflag=0;

rightflag=0;

alarmflag=0;

bb=0;

aa=0;

}

}

else if((errorflag==0) && (rightflag==1)) //发出“叮咚”声

{

P1_0=0; //LED发光二极管亮

cc++;

if(cc<1000)

{

okflag=1;

}

else if(cc<2000)

{

okflag=0;

}

else //自动复位到按ENTER前的状态

{

errorflag=0;

rightflag=0;

P1_7=1;

cc=0;

oka=0;

okb=0;

okflag=0;

P1_0=1; //LED发光二极管灭

}

if(okflag==1)

{

oka++;

if(oka==2)

{

oka=0;

P1_7=~P1_7;

}

}

else

{

okb++;

if(okb==3)

{

okb=0;

P1_7=~P1_7;

}

}

}

if(keyoverflag==1) //嘀一声。

{

P1_7=~P1_7;

}

}

实验三 数码管显示实验

实验十九数码管显示实验 一、实验目的 1、了解数码管的显示原理; 2、掌握数码管显示的编程方法。 二、实验内容 1、编写数码管显示程序,循环显示0-F字符 三、实验设备 1、硬件: JX44B0实验板; PC机; JTAG仿真器; 2、软件: PC机操作系统(WINDOWS 2000); ARM Developer Suite v1.2; Multi-ICE V2.2.5(Build1319); 四、基础知识 1、掌握在ADS集成开发环境中编写和调试程序的基本过程。 2、了解ARM 应用程序的框架结构; 3、了解数码管的显示原理; 五、实验说明 1、LED显示原理 发光二极管数码显示器简称LED显示器。LED显示器具有耗电低、成本低、配置简单灵活、安装方便、耐震动、寿命长等优点,目前广泛应用于各类电子设备之中。 7段LED由7个发光二极管按“日”字排列。所有发光二极管的阳极连接在一起称共阳极接法,阴极连接在一起称为共阴极接法。一般共阴极可以不需要外接电阻。 其中各二极管的排列如上图在共阳极接法中,如果显示数字“5”,需要在a、c、d、f、g端加上高电压,其它加低电压。这样如果按照dp、g、fe、d、c、b、a的顺序排列的话对应的码段是:6DH。其它的字符同理可以得到。

2、数码管显示驱动 数码管的显示一般有动态显示和静态显示两大类,另外按照驱动方式又分串行驱动和并行驱动两种方式。串行驱动主要是提供串-并转换,减少控制线数量;并行驱动对每一个段提供单独的驱动,电路相对简单。这方面参看数字电路相关内容。 下面主要介绍静态显示和动态显示: 1)静态显示: LED数码管采用静态接口时,共阴极或共阳极节点连接在一起地或者接高电平。每个显示位的段选线与一个8位并行口线相连,只要在显示位上的段选位保持段码电平不变,则该位就能保持相应的显示字符。这里的8位并行口可以直接采用并行I/O口,也可以采用串行驱动。相应的电路如下: 很明显采用静态显示方式要求有较多的控制端(并行)或较复杂的电路(串行)。但是在设计中对器件的要求低。

四位数字密码锁

数字电路基础实验设计报告班级:521 姓名:李世龙 学号:2010052106 设计题目:四位数字密码锁 指导老师:张光普

四位密码锁 一设计任务:通过组合逻辑电路来实现四位密码锁功能。当输入正确的密码时LED灯亮但蜂鸣器不响,输入错误密码时LED灯不亮但蜂鸣器响。当关闭密码锁开关时无论输入什么样的密码LED灯都亮蜂鸣器都响。密码的输入由开关的闭合与断开控制高低电平进行密码的输入。 二设计原理: 开关J1,J2, J3,J4通过接低电平或者接入高电平进行密码的输入,J5为密码锁的开关当它接入高低电平来控制密码锁是否工作。其他的门电路来实现密码锁转换功能。

真值表 J5 J1 J2 J3 J4 LEDBUZZE R 0 ×××× 1 1 1 0 0 0 0 0 1 1 0 0 0 1 0 1 1 0 0 1 0 0 1 1 0 0 1 1 01 1 0 1 0 0 0 1 1 0 1 0 1 0 1 1 0 1 1 0 0 1 1 0 1 1 1 0 1 1 1 0 0 0 0 1 1 1 0 0 1 0 1 1 1 0 1 0 0 1 1 1 0 1 1 0 1 1 1 1 0 0 10 1 1 1 0 1 0 1 1 1 1 1 0 0 1 1 1 1 1 1 0 1 三测量和调试结果: 当J5接入电平密码锁处于非工作状态无论输入密码是什么LED灯都会亮起,蜂鸣器会一直响。当J5接入高电平时密码锁处于正常工作状态,当输入正确的密码1100时即J1,J2接入高电平J3,J4接入低电平时LED灯会亮但蜂鸣器不会响,当输入其他密码时均为错误密码LED灯不亮蜂鸣器会响。 按照设计原理图接好电路后发现输入正确的密码LED灯会亮,但输入错误的密码和密码锁处于非工作状态时蜂鸣器不响。通过对电路的检查发现蜂鸣器的正负接反了重新改正电路,电路正常工作 设计任务完成 四参考文献

数码管显示程序注释

/***************************************************** (本程序基于本人单片机实际电路开发,只需改动个别地方,即可实现) 数码管显示其实就是利用视觉停留来显示 实际上它是一个接着一个亮,但人以为是一起亮的 当然它也可以全部一起亮(不同数字)但物理连接麻烦得多,成本高,所以一般不采用(个人理解) ***************************************************/ #include #define unint unsigned int #define unchar unsigned char /***************************************************** 位声明 ***************************************************/ sbit guan1=P2^4; //位选:第1个数码管io sbit guan2=P2^5; //位选:第2个数码管io sbit guan3=P2^6; //位选:第3个数码管io sbit guan4=P2^7; //位选:第4个数码管io unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //数码管编码 /***************************************************** 函数功能:延时 ***************************************************/ void delay(unsigned int i) { unsigned char j; for(;i>0;i--) for(j=110;j>0;j--); } void display(unint num)//带参数显示函数 { unchar ge,shi,bai,qian,sh,fe; //存储个,十,百,千位的空间 sh=num/100; //将num数的前两位分离并存储在sh fe=num%100;//将num数的后两位分离并存储在fe guan1=0;//P2=0Xbf;//11101111 第一个数码管亮位选开 qian=sh/10; //分离千位 P0=table[qian];//段选 delay(60); //延时 guan1=1; //位选关 guan2=0;//P2=0X7f;//11011111 bai=sh%10; //分离百位 P0=table[bai]; //段选

根据VHDL的电子密码锁的设计

《E D A仿真与实践实习》 学院:信息科学与工程学院 课题名称:硬件描述语言设计 ——基于VHDL的电子密码锁的设计班级: 学生: 学号: 指导教师:

1 引言 在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。 基于EDA技术设计的电子密码锁。以其价格便宜、使用方便、安全性高、成本低、功耗低、易操作等优点,受到了人们的普遍关注。而以可编程逻辑器件(FBDA)为设计载体,以硬件描述语言(VHDL)为主要表达方式,以QuartusⅡ5.1开发软件等为设计工具设计的电子密码锁,由于其能够实现密码输入、密码校验、密码设置和更改等功能,因此,能够满足社会对安全防盗的需求。 本设计的各个模块由相应的VHDL程序具体实现,并在QuartusⅡ5.1环境下进行了整体电路的模拟仿真,最终实现“密码锁控制器设计”的要求。 2 设计内容和要求 2.1 设计内容: 题目:电子密码锁 内容:设计一个4位串行数字锁。 (1)开锁代码为4位二进制,当输入代码的位数与锁内给定的密码一致,且按规定程序开锁时,方可开锁,并点亮一个指示灯。否则进入“错误”状态,并发出报警信号。 (2)锁内的密码可调,且预置方便,保密性好。 (3)串行数字锁的报警由点亮一个灯,直到按下复位开关,报警才停下。此时,数字锁又自动等待下一个开锁状态。 要求: (1)通过查阅相关技术资料,详细描述电子密码锁的基本原理。 (2)编写电子密码锁的Verilog HDL或VHDL程序,并仿真编译下载验证。 (3)给出完整的系统顶层模块图与波形仿真图。

基于FPGA的四位电子密码锁设计与实现 专业综合实训报告

基于FPGA的四位电子密码锁设计与实现 摘要: 针对于传统密码锁安全性能低及可靠性差等问题,立足于芯片中数据存储的保密性,运用EDA技术自顶向下的设计方法,提出了基于FPGA的四位电子密码锁的设计与实现方法,所设计的四位电子密码锁具有解锁、密码修改、报警提示及液晶显示功能。设计分析与仿真结果表明,基于FPGA所设计的四位电子密码锁保密性更高、灵活性更好,使得数据存储的整体可靠性增强,为提高数据的保密性提供了新的解决方案。 关键词:密码锁;FPGA;保密性;EDA技术; Design and Implementation of 4-Bit Electronic Cipher Lock Based on FPGA WANG Guo-qiang LI Shang-fu WANG Fei XIE Li-li WANG Qin SUN Bai School of Electronic Engineering,Heilongjiang University; Abstract: Traditional lock faces safety problem of low performance and poor reliability. Based on the data stored in the chip of confidentiality,and using EDA technology top-down design approach,we proposed the design and implementation of a 4-bit FPGA-based electronic lock,which provides unlock,passwordchange,alarm and LCD functions.Design analysis and simulation results show that the designed FPGA-based electronic lock provides better confidentiality,flexibility and reliability for data storage.This approach provides a novel solution for improving data confidentiality. Keyword: Coded lock;FPGA;Confidentiality;EDA technology; 0 引言 随着时代的发展,人们生活水平逐步提高,同时安全意识也日益增强,如何实现家庭防盗这一问题就尤其突出。传统的机械锁由于其构造简单,锁芯直接外露,导致被撬的事情比比皆是。因此,随着电子技术工业的发展,数字电子技术已经深入到人们的日常生活中,层出不穷的电子产品也向着高端方向发展,电子密码锁也就应运而生,在生活安全领域,具有防盗、报警功能的电子密码锁完全打破了机械密码锁的密码量少和安全性差的缺点[1]。 电子密码锁的复杂性,需要设计专门的电子电路和技术,许多相关研究机构和组织的科研人员进行了大量研究。目前该领域的研究主要集中在如何使电子密码锁体积缩小、可靠性

6位7段LED数码管显示

目录 1. 设计目的与要求..................................................... - 1 - 1.1 设计目的...................................................... - 1 - 1.2 设计环境...................................................... - 1 - 1.3 设计要求...................................................... - 1 - 2. 设计的方案与基本原理............................................... - 2 - 2.1 6 位 8 段数码管工作原理....................................... - 2 - 2.2 实验箱上 SPCE061A控制 6 位 8 段数码管的显示................... - 3 - 2.3 动态显示原理.................................................. - 4 - 2.4 unSP IDE2.0.0 简介............................................ - 6 - 2.5 系统硬件连接.................................................. - 7 - 3. 程序设计........................................................... - 8 - 3.1主程序......................................................... - 8 - 3.2 中断服务程序.................................................. - 9 - 4.调试............................................................... - 12 - 4.1 实验步骤..................................................... - 12 - 4.2 调试结果..................................................... - 12 - 5.总结............................................................... - 14 - 6.参考资料........................................................... - 15 - 附录设计程序汇总.................................................... - 16 -

(完整word版)6位电子密码锁设计

电子信息工程《专业基础课程设计》研究报告 电子密码锁设计 学生姓名: 学生学号: 指导教师: 所在学院: 专业班级: 中国·大庆 2015年 6 月

信息技术学院 课程设计任务书 学院专业级,学号姓名 一、课程设计课题: 电子密码锁设计 二、课程设计工作日自年月日至年月日 三、课程设计进行地点:信息技术学院 321 四、程设计任务要求: 1.课题来源: 教师下发。 2.目的意义:设计一个电子密码锁。 3.基本要求: (1)设计6位电子密码锁,当输入正确密码时,输出开锁信号,用相应的发光二极管点亮表示开锁和关锁; (2)密码可以修改; (3)从第一个按钮触动后15秒内若锁未打开,则电路进入自锁状态,并进行声、光报警。 课程设计评审表

目录 1 设计任务要求 (1) 2 方案比较 (1) 3单元电路设计 (2) 4元件选择 (6) 5整体电路 (8) 6说明电路工作原理 (9) 7 困难问题及解决措施 (10) 8 总结与体会 (10) 9 致谢 (11) 10参考文献 (12)

1设计任务要求 (1)设计6位电子密码锁,当输入正确密码时,输出开锁信号,用相应的发光二极管点亮表示开锁和关锁;(2)密码可以修改; (3一个按钮触动后15秒内若锁未打开,则电路进入自锁状态,并进行声、光报警。 1.1 设计概述 通过本次设计掌握数字电路系统设计的方法,熟悉电子密码锁设计相关硬件的使用,了解电子密码锁的系统构成,利用数字门电路实现电子密码锁的设计与实现,可以加深自己对所学专业的认识,关联知识,增强自己的动手能力,积累实践经验,为以后的工作打好基础。通过本次设计掌握数字电路系统设计的方法,熟悉电子密码锁设计相关硬件的使用,了解电子密码锁的系统构成,利用数字门电路实现电子密码锁的设计与实现,可以加深自己对所学专业的认识,关联知识,增强自己的动手能力,积累实践经验,为以后的工作打好基础。 2方案比较 2.1.1 方案选择 本方案是用按键式的输入方式输入密码,然后预设密码由74HC160和BCD数码管显示,而输入密码则由4508和BCD数码管显示,密码比较由异或门器件来实现,定时装置由555定时 图2方案二原理框图

数码管显示程序(汇编语言)

实验三数码显示 一、实验目的 了解LED数码管动态显示的工作原理及编程方法。 二、实验内容 编制程序,使数码管显示“DJ--88”字样。 三、实验程序框图 四、实验步骤 联机模式: (1)在PC机和实验系统联机状态下,运行该实验程序,可用鼠标左键单击菜单栏“文件”或工具栏“打开图标”,弹出“打开文件”的对话框,然后打开598K8ASM

文件夹,点击S6.ASM文件,单击“确定”即可装入源文件,再单击工具栏中编译装载,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。 (2)数码管显示“DJ--88”字样。 脱机模式: 1、在P.态下,按SCAL键,输入2DF0,按EXEC键。 2、数码管显示“DJ--88”字样。 五、实验程序清单 CODE SEGMENT ;S6.ASM display "DJ--88" ASSUME CS:CODE ORG 2DF0H START: JMP START0 PA EQU 0FF20H ;字位口 PB EQU 0FF21H ;字形口 PC EQU 0FF22H ;键入口 BUF DB ?,?,?,?,?,? data1: db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0 c6h,0a1h db 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH,0F0H START0: CALL BUF1 CON1: CALL DISP JMP CON1 DISP: MOV AL,0FFH ;00H MOV DX,PA OUT DX,AL MOV CL,0DFH ;显示子程序 ,5ms MOV BX,OFFSET BUF DIS1: MOV AL,[BX] MOV AH,00H PUSH BX MOV BX,OFFSET DATA1 ADD BX,AX MOV AL,[BX] POP BX MOV DX,PB

四位电子密码锁.

专业工程设计说明书 题目:4位电子密码锁设计 院(系):电子工程与自动化学院 专业:测控技术与仪器(卓越) 学生姓名:蔡伟航 学号:1200820206 指导教师:黄源 2015年1月16日

锁是置于可启闭的器物上,用以关住某个确定的空间范围或某种器具的,必须以钥匙或暗码打开的扣件。锁具发展到现在已有若干年的历史了,人们对它的结构、机理也研究得很透彻。随着社会科技的进步,锁已发展到了密码锁、磁性锁、电子锁、激光锁、声控锁等等。当今安全信息系统应用越来越广泛,特别在保护机密、维护隐私和财产保护方面起到重大作用,而基于电子密码锁的安全系统是其中的组成部分,因此研究它具有重大的现实意义。 本设计由主控芯片51单片机,单片机时钟电路,矩阵键盘,数码管的动态显示,报警电路和开锁电路组成。单片负责控制整个系统的执行过程。 关键词:AT89S51、时钟电路、矩阵键盘、数码管的动态显示、报警电路,开锁电路。

引言 (1) 1课程设计题目 (1) 2 系统设计 (2) 2.1 总的系统设计结构图 (2) 2.2系统硬件设计 (2) 3 AT89S52最小系统设计 (3) 3.1 时钟电路设计 (3) 3.2 复位电路设计 (4) 4 键盘及显示报警电路的硬件设计 (5) 4.1 矩阵键盘电路设计 (5) 4.2 显示电路硬件设计 (5) 4.3 继电器驱动电路及报警电路设计 (6) 4.3.1继电器简介 (6) 4.3.2 固态继电器驱动电路设计 (7) 4.3.3报警提示电路 (7) 5 系统软件设计 (8) 5.1主程序模块 (9) 5.2密码比较判断模块 (9) 5.3键盘扫描模块 (9) 5.4修改密码模块 (10) 5.5数码管液晶显示模块 (11) 6 总体调试 (11) 7 总结 (12) 参考文献 (13) 附录 (14)

基于51单片机电子密码锁设计

一、设计目的 1.1课题简介 如何实现防盗是很多人关心的问题,传统的机械锁由于其构造简单,被撬的事件屡见不鲜,使人们的人身及财产安全受到很大威胁。电子密码锁是一种依靠电子电路来控制电磁锁的开和闭的装置,开锁需要输入正确密码,若密码泄露,用户可以随时更改密码。因此其保密性高,使用灵活性好,安全系数高,可以满足广大用户的需要,现在广泛使用的有红外遥控电子密码锁,声控密码锁,按键密码锁等。 1.2课题研究目的 本设计是一种基于单片机的密码锁方案,根据基本要求规划单片机密码锁的硬件电路和软件程序,同时对单片机的型号选择、硬件设计、软件流程图、单片机存储单元的分配等都有注释。现在很多地方都需要密码锁,电子密码锁的性能和安全性大大超过了机械锁,为了提高密码的保密性,必须可以经常更改密码,以便密码被盗时可以修改密码。 本次设计的密码锁具备的功能:LED数码管显示初始状态“——————”,用户通过键盘输入密码,每输入一位密码,LED数码管相应有一位变为“P”,若想重新输入密码,只需按下“CLR”键。密码输入完毕后按确认键“#”,密码锁控制芯片将输入的密码和密码锁控制芯片中存储的密码相比,若密码错误,则不开锁,会有红灯亮提示,同时显示“Error”。若正确,则开锁,会有绿灯亮提示,同时显示“PASS”。用户可以根据实际情况随意改变密码值或密码长度,密码输入正确后可以按下“CHG”修改密码,输入新密码时每输入一位新密码相应有一位变为“H”,以便提示用户此时输入的是新密码,修改新密码时若想重新输入新密码只需按下“CLR”键即可。输入新密码后按确认键即修改成功,新密码写入单片机内部RAM中,以便以后用来确认密码的正确性。按下复位键,系统恢复初始状态,密码也恢复初始密码,本设计中初始密码是“096168”。 本次设计中硬件主要由我完成,软件主要由张振完成。 二、硬件设计 2.1概述 本系统主要由单片机最小系统、电源电路、输入键盘电路、输出显示电路、开锁电路等组成,系统框图如图1所示:

4位数字密码锁的设计

1技术指标 用与非门设计一个4位或多位代码的数字锁,要求如下: A:设计一个保险箱用的多位代码数字锁,比如4位代码ABCD四个输入端和一个开锁用的钥匙插孔输入端E,当开箱时(E=1),如果输入代码(例如ABCD=1010)与设定的代码相同,则保险箱被打开,即输出端Z=1,否则电路发出报警信号: B: 进行电路仿真,并说明其工作原理。

2方案比较 方案一:由4个单刀双掷开关构成密码开关,用户可以通过控制开关来控制A、B、C、

3Proteus软件介绍 Proteus软件是来自英国Labcenter electronics公司的EDA工具软件。 Proteus软件有十多年的历史,在全球广泛使用,除了其具有和其它EDA工具一样的原理布图、PCB自动或人工布线及电路仿真的功能外,其革命性的功能是,他的电路仿真是互动的,针对微处理器的应用,还可以直接在基于原理图的虚拟原型上编程,并实现软件源码级的实时调试,如有显示及输出,还能看到运行后输入输出的效果,配合系统配置的虚拟仪器如示波器、逻辑分析仪等,您不需要别的,Proteus为您建立了完备的电子设计开发环境!尤其重要的是Proteus Lite可以完全免费,也可以花微不足道的费用注册达到更好的效果;功能最强的Proteus专业版也非常便宜,人人用得起,对高校还有更多优惠。 Proteus组合了高级原理布图、混合模式SPICE仿真,PCB设计以及自动布线来实现一个完整的电子设计系统。此系统受益于15年来的持续开发,被《电子世界》在其对PCB 设计系统的比较文章中评为最好产品—“The Route to PCB CAD”。Proteus产品系列也包含了我们革命性的VSM技术,用户可以对基于微控制器的设计连同所有的周围电子器件一起仿真。用户甚至可以实时采用诸如LED/LCD、键盘、RS232终端等动态外设模型来对设计进行交互仿真。 其功能模块:—个易用而又功能强大的ISIS原理布图工具;PROSPICE混合模型SPICE仿真;ARES PCB设计。PROSPICE仿真器的一个扩展PROTEUS VSM:便于包括所有相关的器件的基于微处理器设计的协同仿真。此外,还可以结合微控制器软件使用动态的键盘,开关,按钮,LEDs甚至LCD显示CPU模型。 Proteus支持许多通用的微控制器,如PIC,A VR,HC11以及8051。 交互的装置模型包括:LED和LCD显示,RS232终端,通用键盘。 Proteus有强大的调试工具;包括寄存器和存储器,断点和单步模式。 IAR C-SPY和Keil uVision2等开发工具的源层调试。 Proteus应用特殊模型的DLL界面-提供有关元件库的全部文件。 Proteus与其他的仿真软件相比较,在下面的优点: 1、能仿真模拟电路、数字电路、数模混合电路; 2、能绘制原理图、PCB图; 3、几乎包括实际中所有使用的仪器;

6位数字密码锁控制器

得分:_______ 南京林业大学 研究生设计报告 2011 ~ 2012 学年第一学期 课程名称:微机控制与自动化 报告题目:六位数字密码锁控制器 学号: 作者:陈亭亭 联系电话: 任课教师: 二○一一年十二月

六位数字密码锁控制器 一、设计目的: 随着社会的发展,单片机市场已经形成一个规格齐全、品种繁多的大家族,用户有非常大的选择余地。单片机的应用十分广泛,在工业控制领域、家电产品、智能化仪器仪表、计算机外部设备,特别是机电一体化产品中,都有非常重要的用途。本设计作为微机原理与自动化的课程作业,泥实现以下目的: 1.通过自主编程,以熟悉80c51单片机的控制及编程方法; 2.通过设计与编程,熟悉单片机与外设的连接方法; 3.通过使用protel绘画电路图,熟悉protel软件; 4.熟悉液晶显示器的使用方法。 二、设计实现的功能: 1.通过0~9十个数字键实现六位密码的设置,验证和修改,在密码输入错误时系统 会自动报警,可按复位键重新输入密码。 2.通过LED七段数码管显示密码。 三、设计所需的芯片器材 ATMEL公司的AT89C51单片机,74LS273的8D锁存器,74LS244的8位三态缓冲器,LED显示器、按键若干。 四、总体方案设计 1.总体框图设计 选用AT89C51单片机,加上相应的按键、晶振、复位、显示电路,并进行各种软件的设计。密码锁控制器的总体设计框图如图1所示。 2. 显示控制方案 在构成多位LED显示时,点亮数码管的方式有静态显示和动态显示两种。 静态显示方式:LED的静态显示是指当数码管显示某一字符时,相应段的发光二极管处于恒定地导通或截止状态,直到显示另一字符为止。 静态显示方式各位可独立显示。由于各位分别由一个8位I/O接口控制段选码,故在同一时间里,每一位显示的字符可以各不相同。这种显示方式接口,较小的电流即可获得

51单片机并行口驱动LED数码管显示电路及程序

51单片机并行口驱动LED数码管显示电路及程序 介绍利用51单片机的一个并行口实现多个LED数码管显示的方法,给出了利用此方法设计的多路LED显示系统的硬件电路结构原理图和软件程序流程,同时给出了采用51汇编语言编写程序。 1 硬件电路 多位LED显示时,常将所有位的段选线并联在一起,由一个8位I/O口控制,而共阴极点或共阳极点分别由另一个8位I/O口控制;也可采用并行扩展口构成显示电路,通常,需要扩展器件管脚的较多,价格较高。本文将介绍一种利用单片机的一个并行I/O口实现多个LED显示的简单方法,图1所示是该电路的硬件原理图。其中,74LS138是3线-8线译码器,74LS164是8位并行输出门控串行输入移位寄存器,LED采用L05F型共阴极数码管。 显示时,其显示数据以串行方式从89C52的P12口输出送往移位寄存器74LS164的A、B 端,然后将变成的并行数据从输出端Q0~Q7输出,以控制开关管WT1~WT8的集电极,然后再将输出的LED段选码同时送往数码管LED1~LED8。位选码由89C52的P14~P16口输出并经译码器74LS138送往开关管Y1~Y8的基极,以对数码管LED1~LED8进行位选控制,这样,8个数码管便以100ms的时间间隔轮流显示。由于人眼的残留效应,这8个数码管看上去几乎是同时显示。

<51单片机并行口驱动LED数码管显示电路> 2 软件编程 该系统的软件编程采用MCS-51系列单片机汇编语言完成,并把显示程序作为一个子程序,从而使主程序对其进行方便的调用。图2所示是其流程图。具体的程序代码如下:

<51单片机并行口驱动LED数码管显示程序>

四位电子密码锁

沈阳 课程设计 (说明书) 四位电子密码锁的设计 班级/ 学号 学生姓名 指导教师

课程设计任务书 课程名称数字逻辑课程设计 课程设计题目四位电子密码的设计 课程设计的内容及要求: 一、设计说明与技术指标 设计一个四位电子密码锁电路,技术指标如下: ①通过键盘电路输入四位密码。初始密码0000设定。 ②密码输入正确后,锁打开。在锁打开时,才可修改密码。 ③密码输入错误有适当的提示。三次错误后,具有声、光报警功能。二、设计要求 1.在选择器件时,应考虑成本。 2.根据技术指标,通过分析计算确定电路和元器件参数。 3.画出电路原理图(元器件标准化,电路图规范化)。 三、实验要求 1.根据技术指标制定实验方案;验证所设计的电路,用软件仿真。 2.进行实验数据处理和分析。 四、推荐参考资料 1. 彭介华.电子技术课程设计指导[M].北京:高等教育出版社 2. 孙梅生,李美莺,徐振英. 电子技术基础课程设计[M]. 北京:高等教育出版社 3. 梁宗善. 电子技术基础课程设计[M]. 武汉:华中理工大学出版社 4. 张玉璞,李庆常. 电子技术课程设计[M]. 北京:北京理工大学出版社 5. 谢自美.电子线路设计·实验·测试(第二版)[M].武汉:华中科技大学出版社 五、按照要求撰写课程设计报告 成绩指导教师日期

一、概述 随着人们生活水平的提高,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,因此电子密码锁在实现家庭防盗这一问题也变得尤其的突出,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的青睐。这种锁是通过键盘输入一组密码来达到开锁的目的。本课程设计一个电子密码锁,要求是设定4位的密码锁,输入4位输入密码,然后与已设置好的密码相比较,密码输入正确后即可开锁,开锁后才可执行密码修改的功能,如果输入三次错误密码就不断报警(包括声音和光两种报警方式)。 二、方案论证 设计一个四位电子密码锁,通过输入四位密码,并且一位一位的进行比较,能够在输入正确的密码后打开锁,并且只有在打开锁之后判断是否修改密码,如果输入密码错误,则记录一次输入错误信息,如果输入三次错误密码,则有声音(蜂鸣)或者光(灯亮)报警。 方案一: 本方案通过控制开关键入密码,通过74LS148把相应的十进制数转化成相应的四位二进制码,与寄存在74LS195的原始密码通过数值比较器74LS85进行比较,如果四位密码都输入正确,则提示锁打开,然后提示可以修改密码;如果密码输入错误,则记录一次,当输入错误三次,则有报警提示。 图1 四位电子密码锁电路的原理框图

数码管显示程序

数码管显示程序 一、程序X1 1、程序X1的功能:最右边的数码管显示“0” 2、程序: ORG 0 LJMP STR ORG 0100H STR: MOV P3, #0FEH ;送最低位有效的位码 MOV P0, #0C0H ;送“0”的段码“0C0H” SJMP STR END 二、程序X2: 用查表方式显示某个显示缓冲器中的数字 1、查表显示的预备知识 设从右到左各显示器对应的显示缓冲器为片内RAM79H~7EH

3、 实例: 例:已知(79H )= 0 7H , 查段码表在最右边的数码管显示79H 中的 “7”; 注:共阳极的段码表: TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH 若:(A )= 0XH 则数字“X ”对应的段码在段码表中的表地址 = TAB + X ORG 0 LJMP STR ORG 0100H ① 各显示器与显示缓冲器地址对应关系 显示缓冲器: 7EH 7DH 7CH 7BH 7AH 79H 对应显示 器: ② 显示缓冲器的值与显示数字的关系: 显示缓冲器中的值 对应段码表地址 显示的数字 0XH 表首址+OXH X

STR: MOV P3, #11111110B ;送最低位有效的位码 MOV 79H , #07H ;送要显示的数据到显示缓冲器 MOV A , 79H ;显示缓冲器的数作为查表变址送A MOV DPTR , #TAB ;表首址送DPTR MOVC A , @A+ DPTR ;查表将数字转换为对应段码MOV P0, A ; 段码送段码口(P0) SJMP STR TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH END 例2:. 查段码表在最右边的数码管循环显示“0”~“F” ORG 0 LJMP STR ORG 0100H STR: MOV P3, #11111110B ;送最低位有效的位码 LP0: MOV 79H , #0H ;送要显示的数据的初值到显示缓冲器MOV R3 , #6 ; 送要显示的数据的个数 LP: MOV A , 79H ;显示缓冲器的数作为查表变址送A MOV DPTR , #TAB ;表首址送DPTR MOVC A , @A+ DPTR ;查表将数字转换为对应段码MOV P0, A ; 段码送段码口(P0)

单片机密码锁设计(汇编语言-)带原理图电路图-

单片机密码锁设计(汇编语言)带原理 图电路图 什么是密码锁 电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。 硬件设计 基于AT89C51为核心的单片机控制的电子密码锁设计。本设计能完成开锁,修改密码,密码错误报警,LCD显示密码等基本的密码锁功能。设计的电路框如图1。 《 , 图一 & 电路的功能单元设计

1.单片机AT89C51组成基本框图 单片机引脚介绍 P0:P0口是一个漏极开路的8位双向I/O口。在访问片外存储器时P0分时提供低8位地址线和8位双向数据线。当不接片外存储器或不扩展I/O口时,P0可作为一个通用输入/输出口。P0口作输入口使用时,应先向口锁存器写“1”,P0口作输出口时,需接上拉电阻。 P1:P1口是一个内部提供上拉电阻的8位双向I/O口,因此它作为输出口使用时,无需再外接上拉电阻,当作为输入口使用时,同样也需先向其锁存器写“1”。 & P2:P2口也是一个内部提供上拉电阻的8位双向I/O口,在访问片外存储器时,输出高8位地址。 P3:P3口除了一般的准双向通用I/O口外,还有第二功能。 VCC:+5V电源 VSS:接地 ALE:地址锁存器控制信号。在系统扩展时,ALE用于控制把P0口输出的低8位地址锁存起来,以实现低位地址和数据的隔离。此外,由于ALE是以晶振1/6的固定频率输出的正脉冲,因此,可作为外部时钟或外部定时脉冲使用。 /PSEN:外部程序存储器读选通信号。在读外部ROM时,/PSEN有效(低电平),以实现外部ROM单元的读操作。 /EA:访问程序存储控制信号。当/EA信号为低电平时,对ROM的读操作限定在外部程序存储器;当/EA信号为高电平时,对ROM的读操作是从内部程序存储器开始,并可延至外部程序存储器。 RST:复位信号。当输入的复位信号延续两个机器周期以上的高电平时即为有效,用完

数字电子技术课程设计电子密码锁

课程设计说明书课程名称:数字电子技术课程设计 题目:电子密码锁 学生姓名: 专业: 班级: 学号: 指导教师: 日期:年月日

电子密码锁 一、设计任务与要求 1.用电子器件设计制作一个密码锁,使之在输入正确的代码时开锁。 2.在锁的控制电路中设一个可以修改的4位代码,当输入的代码和控制电路 的代码一致是锁打开。 3.用红灯亮、绿灯灭表示关锁,绿灯亮、红灯灭表示开锁 4.如5s内未将锁打开,则电路自动复位进入自锁状态,并发报警信号。 二、方案设计与论证 1、用按键输入四位十进制数字,输入密码要存储。 2、比较输入密码和原始密码。当输入正确密码时,给出开锁信号,开锁信号用一个绿色指示灯表示,绿灯亮表示密码输入正确;如果输入密码不正确,用红灯表示。 3、锁的开关用红灯和绿灯表示,一次只能亮一盏。红灯亮、绿灯灭表示关锁,绿灯亮、红灯灭表示开锁。 4、设置倒计时电路和自锁电路。如果密码在5s内未能输入正确则发出报警声,并且自锁电路。 5、设置密码设置开关,开关闭合后,允许设置密码,设置好密码后,打开此开关。 6、需要在输入密码开始时识别输入,并由此触发计时电路。 方案一用74LS147译码器来把按键输入转化为二进制。通过8片四位寄存器74LS194实现密码功能,其中四片用来存储预置密码,另四片则用来存储输入的密码。当密码开始输入时开始计时,通过74LS192计数器实现计时功能;然后在密码输入期间,用74LS138数据选择器来选片存储。数据选择器的输入端又一个两位的二进制的加法计数器来控制,当键盘有按键输入时计数器就加1,当一个按键按完后会轮到下一个芯片存储。自锁功能利用74LS138来控制。通过四片74LS85芯片判断原始密码和输入密码是否相同,接着用指示灯来表示密码的输入正确与否,如果密码没有输入正确的话,则红灯亮,否则则绿灯亮。若是没在规定时间输入正确密码,则会发出警报信号(蜂鸣器响)。

数字逻辑电路课程设计电子密码锁

数字逻辑电路课程设计 课题:电子密码锁设计 姓名: 班级:13通信 学号: 成绩: 指导教师: 开课时间:

目录 摘要 (1) 一课程设计目的内容及安排 (2) 1.1设计目的 (2) 1.2设计内容 (2) 1.3设计安排 (2) 1.4设计内容 (2) 二电子密码锁设计要求及总框图 (3) 2.1设计要求 (3) 2.2总框图 (4) 三各模块电路设计 (5) 3.1密码输入存储比较模块 (5) 3.2五秒计时电路 (6) 3.3二十秒计时电路 (8) 3.4报警电路 (10) 3.5总电路 (11) 四设计心得 (12) 五参考文献 (13)

电子密码锁 摘要:设计一个密码锁的控制电路,当输入正确代码时,输出开锁信号以推动执行机构工作,用红灯亮、绿灯熄灭表示关锁,用绿灯亮、红灯熄灭表示开锁;在锁的控制电路中储存一个可以修改的4位代码,当开锁按钮开关(可设置成6位至8位,其中实际有效为4位,其余为虚设)的输入代码等于储存代码时,开锁;从第一个按钮触动后的5秒内若未将锁打开,则电路自动复位并进入自锁状态,使之无法再打开,并由扬声器发出持续20秒的报警信号。密码输入存储及比较部分使用芯片74LS194及74LS85。五秒及时部分采用芯片74LS161和数码显示管。二十秒报警电路由74LS160,555定时器组成的多谐振荡器,LED灯和蜂鸣器组成。利用multisim对电路进行仿真可以得到结果。 关键词:电子密码锁,计时电路,报警电路

一课程设计目的内容及安排 1.1设计目的 1 根据设计要求,完成对交通信号灯的设计。 2 加强对Multisim10仿真软件的应用。 3 掌握交通信号灯的主要功能与在仿真软件中的实现方法。 4 掌握74LS160,74LS192等功能。 1.2 设计内容 设计一个密码锁的控制电路,当输入正确代码时,输出开锁信号以推动执行机构工作,用红灯亮、绿灯熄灭表示关锁,用绿灯亮、红灯熄灭表示开锁; 在锁的控制电路中储存一个可以修改的4位代码,当开锁按钮开关(可设置成6位至8位,其中实际有效为4位,其余为虚设)的输入代码等于储存代码时,开锁; 从第一个按钮触动后的5秒内若未将锁打开,则电路自动复位并进入自锁状态,使之无法再打开,并由扬声器发出持续20秒的报警信号。 1.3设计安排

数码管显示

数码管显示 第3讲数码管显示 第3讲数码管显示 一、数码管显示原理 我们最常用的是七段式和八段式LED数码管,八段比七段多了一个小数点,其他的基本相同。所谓的八段就是指数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形。数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个LED的阴极连在一起,让其接地,这样给任何一个LED 的另一端高电平,它便能点亮。而共阳极就是将八个LED的阳极连在一起。其原理图如下。 其中引脚图的两个COM端连在一起,是公共端,共阴数码管要将其接地,共阳数码管将其接正5伏电源。一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段选线(即a,b,c,d,e,f,g,dp)连在一起,而各自的公共端称为位选线。显示时,都从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点亮。 数码管的8段,对应一个字节的8位,a对应最低位,dp对应最高位。所以如果想让数码管显示数字0,那么共阴数码管的字符编码为00111111,即0x3f;共阳数码管的字符编码为11000000,即0xc0。可以看出两个编码的各位正好相反。如下图。

二、点亮一个数码管 下面以七段共阴数码管为例讲述如何点亮一个数码管。 l 51系列单片机的P0口没有上拉电阻(其他端口有),所以如果直接接数码管的段选线,那么不能将其点亮。我们需要为其加上220欧姆的上拉电阻,注意,上拉电阻阻值不能过大。实验原理图如下。 其中,7SEG-COM-CAT-GRN为七段共阴数码管,显示为绿色。RES为电阻。查找电阻时,需要选中下面的Resistors,如下图。

相关文档