flask之上传图片及逻辑判断

前端的代码

前端的action表示你要把页面内容提交到哪个后端的视图上面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/upload"  method="post" enctype="multipart/form-data">
{#    如果是多媒体资源一定要加上#}
{#    enctype="multipart/form-data#}
    <input type="file" name="file">
    <input type="submit" value="上传">

</form>
</body>
</html>

后端的代码

from flask import Flask,render_template,request,send_from_directory,redirect,url_for
#send_from_directory表示从文件夹去找图片
import os

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('work/上传图片.html')

#告诉后端程序,如果查到了下面19行的图片,就保存
#保存到哪里呢?
UPLOAD_FOLDER = 'media'
#folder是文件的意思,告诉程序,这个函数的文件路径
#UPLOAD_FOLDER这个可以自定义。只要下面点save的时候传进去就行


@app.route('/upload',methods=['POST'])
def upload():
    file = request.files.get('file')
    #获取前端传的图片
    if file:
        file.save(os.path.join(UPLOAD_FOLDER,file.filename))#把图片保存在你写的路径里面
        #如果文件存在的话,就存起来,
        #file.filename获取图片的文件名字,可以做判断,
        #也可以在上传的时候,是给文件取名字。
        return redirect(url_for('show',name=file.filename))#上传图片完成之后就跳转视图,这酷爱用到了重定向
        #但是重定向show视图的时候有参数,所以这块必须给参数一个值



#一般上传完图片之后,会展示出来
#一般的路径是http://127.0.0.1:5000/..../1.jpg
#是带参数的
@app.route('/show/<name>')
def show(name):#这块得把图片的名字接收过来
    return send_from_directory(UPLOAD_FOLDER,name)
    #ctrl + 鼠标点进去,看源码,做填空题,哈哈
    #第一个表示图片的文件夹,第二个表示图片的名字



if __name__ == '__main__':
    app.run(debug=True)

这个已经可以上传图片了,但是,还有一个问题,用户上传的可能不是图片,所以我们要加一些判断(如果视图里面有重定向,请求方法里面一定别忘记加get!!!!!)

from flask import Flask,render_template,request,send_from_directory,redirect,url_for
#send_from_directory表示从文件夹去找图片
import os

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('work/上传图片.html')

#告诉后端程序,如果查到了下面19行的图片,就保存
#保存到哪里呢?
UPLOAD_FOLDER = 'media'
#folder是文件的意思,告诉程序,这个函数的文件路径
#UPLOAD_FOLDER这个可以自定义。只要下面点save的时候传进去就行


#为了防止用户乱上传,我们需要规定上传的类型
#这块是自定义的
ALLOW = ['txt','pdf','png','jpg','jpeg','gif']

#定义一个函数,设置一个参数
def allow_file(filename):
    return '.' in filename and filename.rsplit('.',1)[1] in ALLOW
    #表示点在这个参数里面,然后以点反向分割,分割一次,取下标为1的值(也就是第二个值)
    #取到之后再判断是否在allow里面
    #把结果返回给调用这个函数的地方


@app.route('/upload',methods=['POST','GET'])
def upload():
    if request.method == 'GET':
        return render_template('work/上传图片.html')
    else:
        #因为只支持了这两种方法,所以可以直接else
        file = request.files.get('file')
        #获取前端传的图片,这个也可以取到这个文件的文件名,也就是能接收到filename
        if file:
            #在这个地方判断一下用户上传的图片类型是否在allow里面
            #先判断有没有这个文件,在判断是否合法
            name = file.filename#取到文件的名字,赋值给name
            if not allow_file(name):
            #把文件名字传给这个参数,
                return redirect(request.url)
            #表示如果为flase的话,也就是文件名字不合法,就哪来的回哪去
            #否则的话,就走下面的程序

            file.save(os.path.join(UPLOAD_FOLDER,file.filename))#把图片保存在你写的路径里面
            #如果文件存在的话,就存起来,
            #file.filename获取图片的文件名字,可以做判断,
            #也可以在上传的时候,是给文件取名字。
            return redirect(url_for('show',name=file.filename))#上传图片完成之后就跳转视图,这酷爱用到了重定向
            #但是重定向show视图的时候有参数,所以这块必须给参数一个值



#一般上传完图片之后,会展示出来
#一般的路径是http://127.0.0.1:5000/..../1.jpg
#是带参数的
@app.route('/show/<name>')
def show(name):#这块得把图片的名字接收过来
    return send_from_directory(UPLOAD_FOLDER,name)
    #ctrl + 鼠标点进去,看源码,做填空题,哈哈
    #第一个表示图片的文件夹,第二个表示图片的名字



if __name__ == '__main__':
    app.run(debug=True)

这个代码就比较完善了,可以判断用户上传的文件是否合法,还有一个小问题,文件的后缀名问题。

如果你允许上传.cfg后缀名的文件,而.cfg正好是配置文件,可能会因为路径问题就直接覆盖掉原来的文件,那这个程序有可能崩掉
所以还要判断一下

from werkzeug.utils import secure_filename
#这个可以帮助检验上传文件的名字



@app.route('/upload',methods=['POST','GET'])
def upload():
    if request.method == 'GET':
        return render_template('work/上传图片.html')
    else:
        #因为只支持了这两种方法,所以可以直接else
        file = request.files.get('file')
        #获取前端传的图片,这个也可以取到这个文件的文件名,也就是能接收到filename
        if file:
            #在这个地方判断一下用户上传的图片类型是否在allow里面
            #先判断有没有这个文件,在判断是否合法
            name = file.filename#取到文件的名字,赋值给name
            if not allow_file(name):
            #把文件名字传给这个参数,
                return redirect(request.url)
            #表示如果为flase的话,也就是文件名字不合法,就哪来的回哪去
            #第一层校验成功,第二层校验一下是不是和配置文件的后缀名重复
            
            name1 = secure_filename(name)
            #有了这个之后,他会把路径改掉,不会让这个文件巧合的覆盖原来的配置文件
            #但是这个文件有个缺点,不支持中文

            #否则的话,就走下面的程序

            file.save(os.path.join(UPLOAD_FOLDER,name1))#把图片保存在你写的路径里面
            #如果文件存在的话,就存起来,
            #file.filename获取图片的文件名字,可以做判断,
            #也可以在上传的时候,是给文件取名字。
            return redirect(url_for('show',name=name1))#上传图片完成之后就跳转视图,这酷爱用到了重定向
            #但是重定向show视图的时候有参数,所以这块必须给参数一个值


认真看name1那块,那块开始了第二层校验,下面也有变动,

到这里上传图片算是完成了。

其实,编程就是翻译,得懂语法,要像英语一样能写出句子。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于单片机的密码锁设计 1 引言 1.1设计目的 随着电子技术的发展,各类电子产品应运而生,电子密码锁就是其中之一。电子密码 锁就是通过键盘输入一组密码完成开锁过程。研究这种锁的初衷,就是为提高锁的安全 性。 目前,国内自行研制开发的电子锁,应用还不广泛。国内的不少企业也引进了世界上 先进的技术,发展前景非常可观。希望通过不断的努力,使电子密码锁在我国也能得到 广泛应用。 1.2设计要求 本次课程设计要求使我们能够掌握并且实际运用课本知识。 通过利用所学的电子技术知识正确分析并设计电路,将适当电路运用到实际电路中,将课 本知识转化为实际能力。 1.3设计方法 系能够从键盘中输入密码,并相应地在显示器上显示 * ;能够判断密码是否正确,正确 则开锁,错误则输出相应信息。 (2)密码由程序直接设定,不可用户自己设定。 (3)具有自动报警功能。密码不正确,相应红灯亮,蜂鸣器发出报警声来提示。 (4)具有手动复位功能。 2设计方案及原理 2.1系统总体设计 根据以上分析,本次电子密码锁设计的主要重点是以下几个部分:4x3矩阵 键盘设计、LCD信息显示和密码的比较和处理。当然,除了这几个部分外还有报警等 功能模块。其中矩阵键盘用于输入数字密码和进行各种功能的实现。由用户通过连接单 片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行对比 ,从而判断密码是否正确,然后控制引脚的高低电平传到开锁电路或者报警电路是报警 。系统整体框图如图1所示。 图1 系统整体框图 2.2本设计硬件资源分配 P3.0~P3.7用于LCD液晶显示作用。 P1.6、P1.7用于蜂鸣器和报警灯的控制。 P1.4用于开锁电路的控制。 P2.0~P2.7用于键盘电路的控制。 P1.0~P1.2用于LCD显示模块的控制端口的控制。 3硬件设计 3.1.1芯片选择 本次设计采用AT89C51贴片芯片,AT89C51是一个低电压,高性能CMOS 8位单片机,通过用Keil软件编写程序,然后装到单片机里面去,然后让它对整个系统进 行信息的处理,如可以让它处理矩阵键盘传过来的信息,并根据编好的程序来确定哪个 按键按下,并处理相应按键对应的功能,然后把相应的信息反应到单片机的各个引脚, 来实现按键实现的现象,如:显示是否开启锁,报警等。AT89C51 提供以下标准功能:4k字节Flash闪速存储器128字节内部RAM,32 个I/O 口线两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振 荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节 电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系 统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直 到下一个硬件复位。 AT89C51的引脚图如图2所示。 图2 AT89C51 3.1.2 单片机最小系统设计 单片机最小系统就是指能使单片机工作的最少的器件构成的系统。因 为单片机已经包含了数据存储器和程序存储器,所以只要在其外部加上时钟电路和复位 电路就可以构成单片机最小系统。 单片机工作需要晶振给CPU提供频率,时钟电路就是给单片机提供晶振频率的电路。图3 是时钟电路的PROTEUS仿真图。 图3 时钟电路 单片机允许的振荡晶体可在1.2~24MHz之间选择,一般为11.0592MHz,电容C2,C3的 取值对振荡频率输出的稳定性、大小及振荡电路起振速度有一定的影响,可在20~100p F之间选择,典型值位30pF (2)计算机每次开始工作,CPU和系统中的其他部件都必须要有一个确定 的初值,即复位状态。图4是单片机复位电路仿真图。 图4 复位电路 单片机RST引脚是高电平有效。单片机在上电瞬间C1充电,RST引脚端出现正脉冲,只 要RST断保持两个机械周期(大约10ms)以上的高电平,单片机就能复位。在单片机工作 后,如果还想再次复位,只需按下开关,单片机就能重新变成复位状态。当晶体振荡频 率为12MHz时,RC的典型值为C=10μF,R=8.2KΩ。 3.1.3 矩阵键盘设计 一组键或者一个键盘,需要通过接口电路和CPU相连接,CPU可以采用查 询接口或者中断的方式了解有没有键被按下,并检查是哪个键被按下。无论是查询方式 还是中断方式都要用到单片机的I/O口。由于单片机I/O口较少的原因,当系统中需要用 到较多按键时,为了能够更合理更有效地利用单片机的I/O口,一般采用矩阵键盘的方式 来实现多按键的功能。 图5是4x3矩阵键盘在PROTEUS中的电路原理仿真图。 图5 4x3矩阵键盘 矩阵键盘又叫做行列式键盘。行列式键盘的硬件结构比较简单,由行输出口和列输出 口构成行列式键盘,按键设置在行、
1 引言 1.1 设计目的 随着电子技术的发展,各类电子产品应运而生,电子密码锁就是其中之一。 电子密码锁就是通过键盘输入一组密码完成开锁过程。研究这种锁的初衷,就是 为提高锁的安全性。 目前,国自行研制开发的电子锁,应用还不广泛。国的不少企业也引进 了世界上先进的技术,发展前景非常可观。希望通过不断的努力,使电子密码锁 在我国也能得到广泛应用。 1.2 设计要求 本次课程设计要求使我们能够掌握并且实际运用课本知识。 通过利用所学的 电子技术知识正确分析并设计电路 , 将适当电路运用到实际电路中 , 将课本知识转 化为实际能力。 1.3 设计方法 (1)系能够从键盘中输入密码,并相应地在显示器上显示, *?;能够判断密码是 否正确,正确则开锁,错误则输出相应信息。 (2)密码由程序直接设定,不可用户自己设定。 (3)具有自动报警功能。密码不正确,相应红灯亮,蜂鸣器发出报警声来提示。 (4)具有手动复位功能。 2 设计方案及原理 2.1 系统总体设计 根据以上分析,本次电子密码锁设计的主要重点是以下几个部分: 4x3 矩阵 键盘设计、 LCD 信息显示和密码的比较和处理。当然,除了这几个部分外还 有报警等功能模块。其中矩阵键盘用于输入数字密码和进行各种功能的实现。由 用户通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自 己保存的密码进行对比,从而判断密码是否正确,然后控制引脚的高低电平传到 开锁电路或者报警电路是报警。系统整体框图如图 1 所示。 2.2 本设计硬件资源分配 P3.0~P3.7用于 LCD 液晶显示作用。 P1.6、P1.7用于蜂鸣器和报警灯的控制。 P1.4用于开锁电路的控制。 P2.0~P2.7用于键盘电路的控制。 P1.0~P1.2用于LCD显示模块的控制端口的控制。 3 硬件设计 3.1.1 芯片选择 本次设计采用 AT89C51 贴片芯片, AT89C51是一个低电压,高性能 CMOS 8 位单片机,通过用 Keil 软件编写程序,然后装到单片机里面去,然后让它对整个 系统进行信息的处理,如可以让它处理矩阵键盘传过来的信息,并根据编好的程 序来确定哪个按键按下,并处理相应按键对应的功能,然后把相应的信息反应到 单片机的各个引脚,来实现按键实现的现象,如:显示是否开启锁,报警等。 AT89C51 提供以下标准功能: 4k 字节 Flash 闪速存储器 128 字节部 RAM,32 个 I/O 口线两个 16 位定时 /计数器,一个 5 向量两级中断结构,一个全双工串行 通信口,片振荡器及时钟电路。同时, AT89C51 可降至 0Hz 的静态逻辑操作, 并支持两种软件可选的节电工作模式。空闲方式停止 CPU 的工作,但允许 RAM, 定时/计数器,串行通信口及中断系统继续工作。掉电方式保存 RAM 中的容, 但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。 AT89C51 的引脚图如图 2 所示。 3.1.2 单片机最小系统设计 单片机最小系统就是指能使单片机工作的最少的器件构成的系统。因 为单片机已经包含了数据存储器和程序存储器,所以只要在其外部加上时钟电路 和复位电路就可以构成单片机最小系统。 (1)单片机工作需要晶振给 CPU提供频率,时钟电路就是给单片机提供晶振频 率 的 电 路 。 图 3 是 时 钟 电 路 的 PROTEUS 仿 真 图 。 单片机允许的振荡晶体可在 1.2~24MHz之间选择,一般为 11.0592MHz,电容 C2,C3的取值对振荡频率输出的稳定性、 大小及振荡电路起振速度有一定的影响, 可在20~100pF之间选择,典型值位 30pF (2)计算机每次开始工作, CPU和系统中的其他部件都必须要有一个确定 的初值,即复位状态。图 4是单片机复位电路仿真图。 单片机 RST引脚是高电平有效。 单片机在上电瞬间 C1充电,RST引脚端出现正 脉冲,只要 RST断保持两个机械周期(大约 10ms)以上的高电平,单片机就能复 位。在单片机工作后,如果还想再次复位,只需按下开关,单片机就能重新变成 复位状态。当晶体振荡频率为 12MHz时,RC的典型值为 C=10μF,R=8.2KΩ。 3.1.3 矩阵键盘设计 一组键或者一个键盘,需要通过接口电路和 CPU相连接, CPU可以采用查 询接口或者中断的方式了解有没有键被按下,并检查是哪个键被按下。无论是查 询方式还是中断方式都要用到单片机的 I/O口。由于单片机 I/O口较少的原因, 当系 统中需要用到较多按键时,为了能够更合理更有效地利用单片机的 I/O口,一般采 用矩阵键盘的方式来实现多按键的功能。 图 5 是 4x3 矩 阵 键 盘 在 PROTEUS 中 的 电 路 原 理 仿 真 图 。 矩阵
基于单片机的密码锁设计 1 引言 1.1设计目的 随着电子技术的发展,各类电子产品应运而生,电子密码锁就是其中之一。电子密码 锁就是通过键盘输入一组密码完成开锁过程。研究这种锁的初衷,就是为提高锁的安全 性。 目前,国内自行研制开发的电子锁,应用还不广泛。国内的不少企业也引进了世界上 先进的技术,发展前景非常可观。希望通过不断的努力,使电子密码锁在我国也能得到 广泛应用。 1.2设计要求 本次课程设计要求使我们能够掌握并且实际运用课本知识。 通过利用所学的电子技术知识正确分析并设计电路,将适当电路运用到实际电路中,将课 本知识转化为实际能力。 1.3设计方法 系能够从键盘中输入密码,并相应地在显示器上显示 * ;能够判断密码是否正确,正确 则开锁,错误则输出相应信息。 (2)密码由程序直接设定,不可用户自己设定。 (3)具有自动报警功能。密码不正确,相应红灯亮,蜂鸣器发出报警声来提示。 (4)具有手动复位功能。 2设计方案及原理 2.1系统总体设计 根据以上分析,本次电子密码锁设计的主要重点是以下几个部分:4x3矩阵 键盘设计、LCD信息显示和密码的比较和处理。当然,除了这几个部分外还有报警等 功能模块。其中矩阵键盘用于输入数字密码和进行各种功能的实现。由用户通过连接单 片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行对比 ,从而判断密码是否正确,然后控制引脚的高低电平传到开锁电路或者报警电路是报警 。系统整体框图如图1所示。 图1 系统整体框图 2.2本设计硬件资源分配 P3.0~P3.7用于LCD液晶显示作用。 P1.6、P1.7用于蜂鸣器和报警灯的控制。 P1.4用于开锁电路的控制。 P2.0~P2.7用于键盘电路的控制。 P1.0~P1.2用于LCD显示模块的控制端口的控制。 3硬件设计 3.1.1芯片选择 本次设计采用AT89C51贴片芯片,AT89C51是一个低电压,高性能CMOS 8位单片机,通过用Keil软件编写程序,然后装到单片机里面去,然后让它对整个系统进 行信息的处理,如可以让它处理矩阵键盘传过来的信息,并根据编好的程序来确定哪个 按键按下,并处理相应按键对应的功能,然后把相应的信息反应到单片机的各个引脚, 来实现按键实现的现象,如:显示是否开启锁,报警等。AT89C51 提供以下标准功能:4k字节Flash闪速存储器128字节内部RAM,32 个I/O 口线两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振 荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节 电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系 统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直 到下一个硬件复位。 AT89C51的引脚图如图2所示。 图2 AT89C51 3.1.2 单片机最小系统设计 单片机最小系统就是指能使单片机工作的最少的器件构成的系统。因 为单片机已经包含了数据存储器和程序存储器,所以只要在其外部加上时钟电路和复位 电路就可以构成单片机最小系统。 单片机工作需要晶振给CPU提供频率,时钟电路就是给单片机提供晶振频率的电路。图3 是时钟电路的PROTEUS仿真图。 图3 时钟电路 单片机允许的振荡晶体可在1.2~24MHz之间选择,一般为11.0592MHz,电容C2,C3的 取值对振荡频率输出的稳定性、大小及振荡电路起振速度有一定的影响,可在20~100p F之间选择,典型值位30pF (2)计算机每次开始工作,CPU和系统中的其他部件都必须要有一个确定 的初值,即复位状态。图4是单片机复位电路仿真图。 图4 复位电路 单片机RST引脚是高电平有效。单片机在上电瞬间C1充电,RST引脚端出现正脉冲,只 要RST断保持两个机械周期(大约10ms)以上的高电平,单片机就能复位。在单片机工作 后,如果还想再次复位,只需按下开关,单片机就能重新变成复位状态。当晶体振荡频 率为12MHz时,RC的典型值为C=10μF,R=8.2KΩ。 3.1.3 矩阵键盘设计 一组键或者一个键盘,需要通过接口电路和CPU相连接,CPU可以采用查 询接口或者中断的方式了解有没有键被按下,并检查是哪个键被按下。无论是查询方式 还是中断方式都要用到单片机的I/O口。由于单片机I/O口较少的原因,当系统中需要用 到较多按键时,为了能够更合理更有效地利用单片机的I/O口,一般采用矩阵键盘的方式 来实现多按键的功能。 图5是4x3矩阵键盘在PROTEUS中的电路原理仿真图。 图5 4x3矩阵键盘 矩阵键盘又叫做行列式键盘。行列式键盘的硬件结构比较简单,由行输出口和列输出 口构成行列式键盘,按键设置在行、
1 引言 设计目的 随着电子技术的发展,各类电子产品应运而生,电子密码锁就是其中之一。 电子密码锁就是通过键盘输入一组密码完成开锁过程。研究这种锁的初衷,就是 为提高锁的安全性。 目前,国内自行研制开发的电子锁,应用还不广泛。国内的不少企业也引进 了世界上先进的技术,发展前景非常可观。希望通过不断的努力,使电子密码锁 在我国也能得到广泛应用。? 设计要求 本次课程设计要求使我们能够掌握并且实际运用课本知识。 通过利用所学的 电子技术知识正确分析并设计电路 , 将适当电路运用到实际电路中 , 将课本知识转 化为实际能力。? 设计方法 (1)系能够从键盘中输入密码,并相应地在显示器上显示, *?;能够判断密码是 否正确,正确则开锁,错误则输出相应信息。 (2)密码由程序直接设定,不可用户自己设定。 (3)具有自动报警功能。密码不正确,相应红灯亮,蜂鸣器发出报警声来提示。 (4)具有手动复位功能。 2 设计方案及原理 系统总体设计 根据以上分析,本次电子密码锁设计的主要重点是以下几个部分: 4x3 矩阵 键盘设计、 LCD 信息显示和密码的比较和处理。当然,除了这几个部分外还 有报警等功能模块。其中矩阵键盘用于输入数字密码和进行各种功能的实现。由 用户通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自 己保存的密码进行对比,从而判断密码是否正确,然后控制引脚的高低电平传到 开锁电路或者报警电路是报警。系统整体框图如图 1 所示。 本设计硬件资源分配 ~用于 LCD 液晶显示作用。 、用于蜂鸣器和报警灯的控制。 用于开锁电路的控制。 ~用于键盘电路的控制。 ~用于LCD显示模块的控制端口的控制。 3 硬件设计 芯片选择 本次设计采用 AT89C51 贴片芯片, AT89C51是一个低电压,高性能 CMOS 8 位单片机,通过用 Keil 软件编写程序,然后装到单片机里面去,然后让它对整个 系统进行信息的处理,如可以让它处理矩阵键盘传过来的信息,并根据编好的程 序来确定哪个按键按下,并处理相应按键对应的功能,然后把相应的信息反应到 单片机的各个引脚,来实现按键实现的现象,如:显示是否开启锁,报警等。 AT89C51 提供以下标准功能: 4k 字节 Flash 闪速存储器 128 字节内部 RAM,32 个 I/O 口线两个 16 位定时 /计数器,一个 5 向量两级中断结构,一个全双工串行 通信口,片内振荡器及时钟电路。同时, AT89C51 可降至 0Hz 的静态逻辑操作, 并支持两种软件可选的节电工作模式。空闲方式停止 CPU 的工作,但允许 RAM, 定时/计数器,串行通信口及中断系统继续工作。掉电方式保存 RAM 中的内容, 但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。 AT89C51 的引脚图如图 2 所示。 单片机最小系统设计 单片机最小系统就是指能使单片机工作的最少的器件构成的系统。因 为单片机已经包含了数据存储器和程序存储器,所以只要在其外部加上时钟电路 和复位电路就可以构成单片机最小系统。 (1)单片机工作需要晶振给 CPU提供频率,时钟电路就是给单片机提供晶振频 率 的 电 路 。 图 3 是 时 钟 电 路 的 PROTEUS 仿 真 图 。 单片机允许的振荡晶体可在 ~24MHz之间选择,一般为 ,电容 C2,C3的取值对振荡频率输出的稳定性、 大小及振荡电路起振速度有一定的影响, 可在20~100pF之间选择,典型值位 30pF? (2)计算机每次开始工作, CPU和系统中的其他部件都必须要有一个确定 的初值,即复位状态。图 4是单片机复位电路仿真图。 单片机 RST引脚是高电平有效。 单片机在上电瞬间 C1充电,RST引脚端出现正 脉冲,只要 RST断保持两个机械周期(大约 10ms)以上的高电平,单片机就能复 位。在单片机工作后,如果还想再次复位,只需按下开关,单片机就能重新变成 复位状态。当晶体振荡频率为 12MHz时,RC的典型值为 C=10μF,R=Ω。 矩阵键盘设计 一组键或者一个键盘,需要通过接口电路和 CPU相连接, CPU可以采用查 询接口或者中断的方式了解有没有键被按下,并检查是哪个键被按下。无论是查 询方式还是中断方式都要用到单片机的 I/O口。由于单片机 I/O口较少的原因, 当系 统中需要用到较多按键时,为了能够更合理更有效地利用单片机的 I/O口,一般采 用矩阵键盘的方式来实现多按键的功能。 图 5 是 4x3 矩 阵 键 盘 在 PROTEUS 中 的 电 路 原 理 仿 真 图 。 矩阵键盘又叫做行列式键盘。行列式键盘的硬件结构比较简单,由行输出口 和列输出口构成行列式键盘,按键设置在行、列交点上。只有当键被按下时相应 的行和列才能相连。如此,只要检

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值