单片机设计的外部中断按键显示

点击链接获取Keil源码与Project Backups仿真图:

https://download.csdn.net/download/qq_64505944/87454392?spm=1001.2014.3001.5503

源码获取

摘 要

单片机在自主运行时一般是在执行一个死循环程序,在没有外界干预(输入信号)时它基本处于一个封闭状态。比如一个电子时钟,它会按时、分、秒的规律自主运行并通过输出设备(如液晶显示屏)把时间显示出来。在不需要对它进行调校时它不需要外部干预,自主封闭地运行。如果这个时钟足够准确而又不掉电的话,它可能一直处于这种封闭运行状态。但事情往往不会如此简单,在时钟刚刚上电或时钟需要重新校准.甚至时钟被带到不同时区的时候,就需要重新对时钟进行调校,这时就要求时钟必须具有调校功能。因此单片机系统往往又不会是一个单纯的封闭系统.它有些时候恰恰需要外部的干预,这也就是外部中断产生的根本原因。

在没有干预的情况下,单片机的程序在封闭状态下自主运行,如果在某一时刻需要响应一个外部事件(比如有按键按下),这时就会用到外部中断。具体来讲,外部中断就是在单片机的一个引脚上,由于外部因素导致了一个电平的变化(比如由高变低),而通过捕获这个变化,单片机内部自主运行的程序就会被暂时打断,转而去执行相应的中断处理程序,执行完后又回到原来中断的地方继续执行原来的程序。这个引脚上的电平变化,就申请了一个外部中断事件,而这个能申请外部中断的引脚就是外部中断的触发引脚。

这次实验将会模拟出外部中断的仿真和过程

关键词:单片机;外部中断;AT89C51;汇编语言; 程序设计

目录

题 目 外部中断按键显示设计与仿真 1

摘 要 I

1.绪 论 2

1.1研究背景 2

1.2课题研究意义 2

2.系统设计方案及分析 3

2.1设计的具体要求 3

1.本设计为外部中断仿真器。 3

2.2总体设计方案分析 3

3.理论基础 4

3.1主控芯片AT89C51 4

3.2主要特性 4

3.3 keil软件的使用 5

3.4 proteus的使用 5

4.系统硬件设计 6

4.1设计原理 6

4.2电路总体构成 6

4.3显示部分 6

5.系统软件设计 7

5.1程序设计流程图 7

5.2仿真结果 9

总 结 9

心 得 11

参考文献 12

1.绪 论

1.1研究背景

在计算机的发展史上,运算和控制一直是计算机功能实施的两条主线。运算功能主要体现在巨型机、大型机、服务器和个人电脑上,承担高速、海量技术数据的处理和分析,一般以计算能力(即运算速度)为重要标志。而控制功能则主要体现在单片机中,主要与控制对象耦合,能与控制对象互动和实时控制。单片机以低成本、小体积、高可靠、功能强等优点脱颖而出,极大地丰富了该项研究领域新的内涵。自从美国英特尔公司出品了4位的逻辑控制器4004以后,各大半导体公司纷纷投入对单片机的研发,各类单片机如雨后春笋般相继出现,其功能不断改善,以适应不同的应用领域。

1.2课题研究意义

中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运通过学习,本次设计主要介绍用单片机内部的寄存器实现外部中断的方法,本设计由单片机 AT89C51芯片和 LED 数码管为核心,辅以必要的电路,构成了一个单片机外部中断模型。 相信它会越来越深入地浸透到人们的生活中,并且将在一定程度上影响人们对生活的理解和诠释。用单片机制作电子产品也会越来越多,也是众多领域实施编程开发不可缺少的一部分,这将必然成为一种趋势。

2.系统设计方案及分析

2.1设计的具体要求

1.本设计为外部中断仿真器。

2.在数码晶体管上在电路接通时LED显示器开始亮,电路未接通时无效。

3. 设置两个按键“K1”“K2”,在摁下K1时显示器会直接显示2,在摁下K2时,显示器会直接显示8。

2.2总体设计方案分析

用一种是用以AT89C51为核心的单片机控制方案。

电子计时器主要由 AT89C51 、显示模块、控制模块,三大大部分组成 . 其中控制模块主要对数值显示和调整进行操作 , 并且显示到 15即E时 时 , 自动清零; 显示模块主要用来显示当前计数值。 A89C51 是整个设计的核心 , 主要用来产生外部中断 , 传输数据和控制各个部件工作 。

图2.1 单片机控制计时器原理图

3.理论基础

3.1主控芯片AT89C51

AT89C51是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4kbytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。它集Flash程序存储器,既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片芯片中,ATMEL公司的功能强大,低价位AT89C51单片机可提供许多高性价比的应用场合,可灵活应用于各种控制领域[15]。

3.2主要特性

AT89C51芯片的引脚图如图3.1所示:

图3.1 AT89C51芯片引脚

其中主要应用到的引脚口介绍:

(1)P0口的第一功能是作为一般I/O口使用,第二功能是在CPU访问外部存储器时,分时提供低8位地址和8位双向数据。

(2)P1口是8位准双向I/O口,51子系列中P1只能用作一般I/O口,52子系列中P1.0和P1.1引脚还具有第二功能。

(3)P2口是8位准双向I/O口,第二功能是在CPU访问外部存储器时,作为高8位地址总线,输出高8位地址。

(4)P3口是8位准双向I/O口,其第一功能是用作一般I/O口,第二功能是作为中断信号和外部数据存储器的读写控制信号。

(5)RST,复位信号高电平有效。

(6)ALE:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。

(7)PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。当访问外部数据存储器,高有两次有效的PSEN信号。

(8)XTAL1:振荡器反相放大器及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端[13]。

3.3 keil软件的使用

KeilC51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境将这些部分组合在一起[4]。

3.4 proteus的使用

Proteus软件是英国Lab Center Electronics公司出版的EDA工具软件,它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前比较好的仿真单片机及外围器件的工具,可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:*.HEX可以在PROTEUS的原理图中看到模拟的实物运行状态和过程[10]。

4.系统硬件设计

4.1设计原理

电子计时器主要由 AT89C51 、显示模块、控制模块三大部分组成。由循环程序产生的一秒计时,16S为一次循环,由0到15(十六进制显示为E)。

4.2电路总体构成

在确定了选用什么型号的单片机后,就要确定在外围电路、显示部分,根据实际情况显示部分选择数码晶体管。其原理图如图4.2所示:

4.2 计时器原理图

4.3显示部分

本设计的显示部分由数码晶体管来完成。当电路接通时,显示器才处于开启状态。同理当电路未接通时显示器才处于关闭状态。否则显示器将一直处于初始状态,通过LED灯,可以清楚的看见计时器的状态。其显示部分如图4.4所示:

图4.4 显示电路原理图

5.系统软件设计

5.1程序设计流程图

本设计主要是作用C语言来开发的51单片机项目程序,本设计采用Keil编译器进行编程,用proteus仿真软件来进行仿真,因为它可以支持一系列的51单片机。

#include<reg51.h>
char code yang[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x8e};
void delay{unsigned char x}{
            unsigned char n,m,r;
            for(n=0;n<x;n++)
                    for(m=0;m<255;m++)
                    for(r=0;r<255;r++);
                    }
void wbzd0() interrupt 0{
                        static char h=0;
                        char c=5;
                        h++;
                        if(h==16)h=0;
                        P2=yang[2];
                        while(c--)delay(5);
                        }
void wbzd1() interrupt 2{
                        static char b=0;
                        char d=5;
                        b++;
                        if(b==16)b=0;
                        P2=yang[7];
                        while(d--)delay(5);;
                        }
void main(){
                            unsigned char i=0;
                            EA=1;
                            EX0=1;
                            EX1=1;
                            IT0=1;
                            IT1=1;
                            PX0=1;PX1=1;
                            P2=yang[i];
                            while(1){
                            P2=yang[i];
                            delay(1);
                            i++;
                            if(i==16)i=0;
                            }
                }

5.2仿真结果

硬件支持的环境下,用proteus设计好的电路,Keil编好的程序编译成芯片可识别的C51文件,写进proteus程序图芯片内进行仿真测试,当开始仿真时,首先按下仿真按钮,然后单片机自动识码,如果识别不符,则仿真失败。只有当识别正确,单片机才能控制显示屏正确计数。

正常显示

按下K1

按下K2

总 结

本系统总体设计简单,性能稳定,为以后单片机编程进行各种功能扩展, 通过本次论文设计,使我加深了对单片机的认识,并且熟悉了单片机系统的设计流程,收获丰硕。功能上基本达标.硬件设施基本合乎要求,软件设计可以配合硬件实现其功能,也是我懂得了制作后怎么样调试和对故障的检验及预防有了更进一步的提高。

单片机可以为我们生活中的许多事提供作用,做为新时代的我们,更应该提高自身能力,适应新时代的发展。知识来自实践,多从生活中探寻所需要的。

从这次的论文设计中,我真正的体会到,知识的重要性,特别是要理论联系实际,把我们所学的理论知识运用到实际生活当中,要用知识改变一切。

心 得

这次的课程设计很好的锻炼了我独立完成整个工程的能力。我收获到的不仅是代码的编写、调试能力的提升,还有自信心的提升。

在代码的编写方面,我体会到了模块化、添加注释的重要性,其实这些都不会花费很多时间,但如果不去做的话就会给后续的调试带去很大的麻烦。而代码的调试也是很有讲究的,在我看来,编写仿真文件、看仿真波形是粗调,可以大致验证代码的正确性;验证通过后再将代码烧录到板子上细调,如果直接烧到板子上调理论上也可以,不过若代码错误较多,是不方便定位错误的。

在自信心方面,这次的课程设计对我的自信心是一次很大的提升。刚看到这道题目的时候,我是没有什么思路的。但经过细细分析,将问题逐渐分解,编写子模块的代码,组合代码等一系列过程后,我不但基本上完成了整个电子密码锁程序的编写,而且很有成就感,对于解决类似工程问题的信心增加了。

参考文献

[1] 黄俊杰. 基于AVR单片机的串行接口智能转换器. 微计算机信息. 2004期刊

[2] 李东生. Protel99 SE电路设计技术入门与应用. 第一版. 北京:电子工业出版社. 2002李广弟.

[3]单片机基础. 北京:北京航空航天大学出版社, 2001. 7:63-65

[4]王一然.浅析MCS-51单片机I/O口的扩展-《光盘技术》2009年第06期

[5] 徐惠民, 安德宁. 单片微型计算机原理接口及应用. (第二版) 北京:北京邮电大学出版社. 2000:23-38

[6] 康华光,陈大钦,张林. 电子技术基础模拟部分.(第五版) 高等教育出版社.

[7] 电子世界. 2005年9月刊. 国内邮发代号:2-892

[8] 潘永雄. 新编单片机原理与应用. 西安:西安电子科技大学出版社. 2003

[9] 唐俊翟. 单片机原理与应用. 北京:冶金工业出版社, 2003. 8

[10] 余发山. 单片机原理及应用技术. 徐州:中国矿业大学出版社, 2003.

[11] 马家辰, 孙玉德, 张颖等. MCS-51单片机原理及接口技术.哈尔滨:哈尔滨工业大学出版社, 1997:178-179

[12] 丁明亮, 唐前辉. 51单片机应用设计与仿真-基于Keil C和Proteus . 北京: 北京航空航 天大学出版社, 2009

[13] 周润景,张丽娜. 基于PROTEUS的电路及单片机系统设计及仿真. 北京:北京航空航天大 学出版社,2006. 5:3-19

[14] 金素华, 张尉. 单片机调试方法的讨论. 电子世界, 2004, 25(4):34-65

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柒月玖.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值