4位拨动开关控制数码管显示系统设计.docx

上传人:b****6 文档编号:7946402 上传时间:2023-01-27 格式:DOCX 页数:18 大小:291.78KB
下载 相关 举报
4位拨动开关控制数码管显示系统设计.docx_第1页
第1页 / 共18页
4位拨动开关控制数码管显示系统设计.docx_第2页
第2页 / 共18页
4位拨动开关控制数码管显示系统设计.docx_第3页
第3页 / 共18页
4位拨动开关控制数码管显示系统设计.docx_第4页
第4页 / 共18页
4位拨动开关控制数码管显示系统设计.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

4位拨动开关控制数码管显示系统设计.docx

《4位拨动开关控制数码管显示系统设计.docx》由会员分享,可在线阅读,更多相关《4位拨动开关控制数码管显示系统设计.docx(18页珍藏版)》请在冰豆网上搜索。

4位拨动开关控制数码管显示系统设计.docx

4位拨动开关控制数码管显示系统设计

务书

设计题目

4位拨动开关控制数码管显示系统设计

学生姓名

设计要求:

1.电源电路具有电源开关及指示灯,有复位按键;

2.高4位开关屏蔽;

3.用4位拨码开关为输入,控制数码管显示器的输出;

4.实现功能:

通电复位后数码管全显即显“8”,数码管对应4位DIP开关的二进制输入显示十六进制全部字符即从“0”到“F”。

学生应完成的工作:

1.了解单片机系统的设计方法,设计步骤;

2.查找并收集相关资料书籍;

3.完成硬件原理图设计;

4.完成软件和流程图的设计;

5.对系统进行仿真;

6.焊接电路板,调试系统;

7.认真撰写课程设计报告。

8.孙晓界同学主要负责软件设计

参考文献阅读:

[1]张毅刚,彭喜元,彭宇.单片机原理及应用[M].北京:

高等教育出版社,2009.

[2]杜树春.单片机C语言和汇编语言混合编程实例详解[M].北京:

北京航空航天大学出版社,2006.

[3]童诗白,华成英.模拟电子技术基础(第四版)[M].北京:

高等教育出版社,2006.

[4]林志琦.基于Proteus的单片机可视化软硬件仿真[M].北京:

北京航空航天大学出版社,2006.

工作计划:

5月6日:

查阅相关资料,拟定方案;

5月7日:

进行方案论证,完善设计方案;

5月8日:

完成硬件设计;

5月9日:

设计程序流程图;

5月10日:

完成软件设计,并进行仿真和调试;

5月13日:

进行焊接;

5月14日:

烧写程序;

5月15日:

调试电路;

5月16日:

与辅导老师交流,写课程设计报告;

5月17日:

上交课程设计报告及实物。

任务下达日期:

2013年5月6日

任务完成日期:

2013年5月17日

指导教师(签名):

学生(签名):

4位拨动开关控制数码管显示系统设计

摘要:

用AT89S52单片机作为核心,利用晶振,共阳极数码管,7805,桥堆2w10等器件进行设计,由电源电路、复位电路、时钟电路、输入输出电路等设计一个控制电路。

利用汇编编写控制程序,程序使用查表法进行编写。

设计一个由4位拨动开关控制共阳极数码管的系统。

它以9V交流电源供电,用拨动开关作为输入,控制输出端数码管的输出。

使用Proteus软件进行仿真,系统能够实现如下功能:

通电复位后数码管全显即显“8”,数码管对应4位拨动开关的二进制输入显示十六进制全部字符即从“0”到“F”。

关键词:

4位拨动开关;单片机;共阳极数码管;复位

 

目录

1.设计背景1

1.1单片机设计价值1

1.2设计意义1

2.设计方案2

2.1方案一2

2.2方案二2

2.3方案三2

3.方案实施3

3.1原理图设计3

3.2软件设计7

3.3电路仿真8

3.4实物制作9

4.结果与结论11

4.1结果11

4.2结论11

5.收获与致谢13

6.参考文献14

7.附件15

7.1系统硬件电路图15

7.2元器件清单16

7.3软件程序17

7.4系统实物照片20

1.设计背景

1.1单片机设计价值

单片机具有人机对话功能,开关,键盘是实现人机对话的主要输入设备,也是最常用的设备,通过它能发出各种控制指令和数据到单片机。

而二极管,数码管,LED显示器是常用的输出设备,单片机接受一系列指令,执行一定功能后,可通过这些设备输出。

目前单片机渗透到我们生活的各个领域。

导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理等等。

1.2设计意义

为了更好的掌握单片机的硬件特性以及用汇编语言进行编程设计,我们运用目前所学的知识,来设计了一个单片机系统——用拨码开关控制数码管显示系统。

在理论学习的基础上,通过完成一个单片机系统设计与编程应用,能够增强我们理论联系实际的能力,进一步熟悉相关专业基础知识的综合应用,提高实际动手能力和设计能力。

对电路、电子器件等方面进一步加深认识,锻炼自己在编程、调试、焊接、万用表的使用等方面得到全面的锻炼和提高。

 

2.设计方案

2.1方案一

由4位DIP开关作为输入,共阳极数码管作为输出,以硬件代替软件进行译码,译码部分采用74LS247译码器。

本方案编程只需将输入信号原样输出即可,占用I/O端口少,但电路硬件增多,成本增高。

2.2方案二

本方案的译码部分由软件实现,由4位DIP开关作为输入,共阳极数码管作为输出,经软件译码,使用查表法编写,在数码管显示相应的数字。

由于译码部分采用了软件实现,省去了译码电路,成本降低,电路设计简单,但编程较复杂,而且占用I/O端口多。

2.3方案三

本方案的译码部分仍由软件实现,由4位DIP开关作为输入,共阳极数码管作为输出,软件译码按照译码器实现原理编写,在数码管显示相应的数字。

由于译码部分软件采用译码器原理编写,使得编程非常复杂,占用系统内存,不符合精简系统的思想。

综合考虑,确定采用方案二实现。

 

3.方案实施

3.1原理图设计

1、系统组成图

图3.1系统组成图

设计系统组成图如图3.1所示。

由AT89S52单片机、复位电路、时钟电路、输入输出电路等组成。

2、输入输出电路

用AT89S52芯片作为核心,AT89S52有4个双向的8位并行I/0口,分别记为P0、P1、P2和P3口。

本次设计中主要使用P1作为输入口,P0作为输出口,因此仅对P0、P1口作简要说明。

P0口:

P0口是一个8位漏极开路的双向I/O口。

作为输出口,每位能驱动8个TTL逻辑电平。

对P0端口写“1”时,引脚用作高阻抗输入。

当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。

在这种模式下,P0不具有内部上拉电阻。

在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。

程序校验时,需要外部上拉电阻。

P1口:

P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。

RST:

复位输入。

当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。

VCC:

电源。

GND:

接地。

P0.0~P0.6分别接数码管的a~f,P1.0~P1.3分别与拨码开关的4位相连。

同时P0口和P1口都要接上拉电阻。

P1口作为输入口接上拉电阻,是为了保证按键释放时,输入检测线上有稳定的高电平,当某一按键按下时,对应的检测线就变成了低电平,与其他按键相连的检测线仍为高电平,只需读入I/O输入线的状态,判别哪一条I/O输入线为低电平,就很容易识别出哪个键被按下。

P0口内部无上拉电阻,在外加上拉电阻,使P0口能够产生高电平。

但本设计采用共阳极数码管,只需低电平有效即可,因此无需上拉电阻。

但考虑到电路的适应性(对共阴极数码管同样适用),而外加上拉电阻。

电路如图3.2所示。

图3.2输入输出电路

3、电源电路

本系统需要稳定的5V直流电源供电,单向交流电经过电源变压器、整流电路、滤波电路和稳压电路转换成稳定的直流电压。

设计提供9V交流电,整流电路选用桥堆2W10单相桥式整流电路将交流电压变成脉动的直流电压,整流主要通过二极管的单向导电性来实现的。

整流电路的输出电压虽然是单一方向的,但是含有较大的交流成分。

因此,一般在整流后,还需要滤波电路将脉动的直流电压变为平滑的直流电压。

本设计采用电容滤波电路,在整流电路输出端并联1000uF的电解电容C5进行滤波。

经过滤波后得到的输出电压还会随电网电压波动、负载和温度的变化而变化,因此,在整流、滤波电路之后,还需要稳压电路,以维持输出电压的稳定。

本设计中采用稳压器7805进行稳压,C6用于防止电路产生自激振荡,取33pF,C4用于消除输出电压中的高频噪声,D2为电源指示灯,R2为限流电阻。

输出为5V直流电压,使单片机系统能够稳定工作。

电源电路如图3.3所示。

图3.3电源电路

4、复位电路

复位电路如图3.4所示。

图3.4复位电路

AT89S52的复位是由外部的复位电路实现的。

复位引脚RST通过一个施密特触发器与复位电路相连,施密特触发器用来抑制噪声,在每个机器周期的S5P2,施密特触发器的输出电平有复位电路采样一次,然后才能得到内部复位操作所需要的信号。

 

本设计采用按键电平复位电路。

通过RST端经电阻与电源Vcc接通来实现,具体电路如图4所示。

本设计的晶振选用11.0592MHZ,机器周期约为1us。

复位电路利用RC微分电路产生的正脉冲来实现。

电阻R和电容C的参数选取,应保证给复位引脚RST能够加上大于两个机器周期的高电平。

本设计中电容C3取10uF,R1取2K,即可保证单片机复位电路可靠运行。

5、时钟电路

AT89S52单片机各功能部件的运行都以时钟控制型号为基准,有条不紊、一拍一拍地工作。

时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性,分为内部时钟方式和外部时钟方式。

本设计中的时钟电路采用内部时钟方式。

AT89S52内部有一个用于构成振荡器的高增益反相放大器,它的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。

这两个引脚跨接石英晶体和微调电容,构成一个稳定的自激振荡器,图5是AT89S52内部时钟方式电路。

时钟电路由2个33pF的瓷片电容C1、C2和1个11.0592MHZ晶振组成,电容的大小会影响振荡器频率的高低、振荡器的稳定性和起振的快速性。

晶体振荡器的频率越高,系统的时钟频率越高,单片机的运行速度也就越快。

另外,在连接电路时,晶体与电容尽可能安装的与单片机芯片靠近,以减少寄生电容,更好地保证振荡器稳定、可靠地工作。

将此电路连接到AT89S52的第18、19引脚,两电容之间通过导线接地。

如图3.5所示。

图3.5时钟电路

6、共阳极数码管

常见的LED数码管为“8”字形的,共计8段。

每一个段对应一个发光二极管。

本设计采用共阳极数码管,如图3.6所示。

共阳极数码管里面的发光二极管阳极接在一起作为公共引脚,通常此公共阳极接正电压,当某个发光二极管的阴极接低电平时,发光二极管被点亮,相应的段被显示。

共阳极8段LED数码管显示字符从“0”到“F”的段码为:

0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH

图3.6共阳极数码管引脚图

3.2软件设计

根据要求:

程序先给数码管送数字“8”,然后等待四位拨码开关键按下,当DIP开关键按下时,从P1口读入电平信号,由查表法送段码代码到P0口使数码管显示相应的符号。

查表程序是一种常用的程序,查表就是根据自变量x,在表格中寻找y。

本程序采用“MOVCA,@A+DPTR”查表指令,使用该指令时不必计算偏移量,表格可以设在64KB程序存储器空间内的任何地方。

程序中在检测信号输入中加入了延时1ms的子程序,是为了用软件延时来消除按键抖动,基本思想是:

在检测到有按键按下时,该键所对应的行线为低电平,执行一段延时子程序后,确认该行线时否仍是低电平,如果仍是低电平,则确认该行确实有键按下。

当按键松开时,行线的低电平变为高电平,执行一段延时子程序后,检测该行线为高电平,说明按键确实已经松开。

程序流程图如图3.7所示。

图3.7程序流程图

3.3电路仿真

在各单元电路设计的基础上,用Proteus软件把各单元电路连接起来,画出符合软件要求的系统整体逻辑电路图。

系统整体电路设计完成后,对系统整体进行仿真,验证设计的正确性。

在各单元电路设计的基础上,按照总体电路图在仿真软件Proteus上一一选择元件并进行连接,然后启动开关观察。

将电路在Proteus上连接好后,为各个电阻和电容选取适当值,为各个开关设置好适当的键盘打开数值连接,然后打开Proteus的开关,判断电路是否正常。

通过仿真,我们的电路原理图无误,可以实现功能通电复位后数码管全显即显“8”,数码管对应4位DIP开关的二进制输入显示十六进制全部字符即从“0”到“F”。

因此,可以进行焊接。

仿真图如图3.8所示。

图3.8电路仿真图

在仿真中发现复位中的R1不能超过1K电阻,否则仿真复位失效,这是Proteus软件原因,在实际制作中R1使用2K电阻。

另外,本设计未在数码管后加上限流电路,容易导致数码管烧毁,但在仿真中并不会出现这种情况,这也是仿真的不足之处。

3.4实物制作

按照图3.1所示的原理图,对元器件进行布局,布局尽可能合理,跳线最少,板子尽可能小。

在安装上,我们要注意一些元件的正负极是否正确如发光二极管、极性电容。

然后将元件焊接在万能板上,焊接是要小心,谨慎,不要出现短路。

在焊接电路时,晶体与电容尽可能安装的与单片机芯片靠近,以减少寄生电容,更好地保证振荡器稳定、可靠地工作。

还有芯片容易被烧坏,等到焊接完成要调试时,再把AT89S52芯片安装上。

然后安装好所有的芯片和电路原件后,按照电路图逐一检查电路有没有漏焊的问题,特别是各模块电路的地线和电源线应接好。

接下来用万用表逐一检查有没有虚焊或线路断路或线路短路。

在线路没有问题的情况下连接电源调试,之后用万用表逐个模块进行检查。

 

4.结果与结论

4.1结果

焊接完成之后,将所编的汇编程序复制进Keil软件中生成后缀为hex的文件,将此文件烧写进AT89S52芯片,接通9V交流电源,电源指示灯亮,数码管显示全显即数字“8”,数码管对应4位DIP开关的二进制输入显示十六进制全部字符即从“0”到“F”。

4位DIP开关按二进制输入(“0”代表断开,“1”代表闭合):

当DIP四位开关依次为“0000”,数码管显示字符“0”;

当DIP四位开关依次为“0001”,数码管显示字符“1”;

当DIP四位开关依次为“0010”,数码管显示字符“2”;

当DIP四位开关依次为“0011”,数码管显示字符“3”;

当DIP四位开关依次为“0100”,数码管显示字符“4”;

当DIP四位开关依次为“0101”,数码管显示字符“5”;

当DIP四位开关依次为“0110”,数码管显示字符“6”;

当DIP四位开关依次为“0111”,数码管显示字符“7”;

当DIP四位开关依次为“1000”,数码管显示字符“8”;

当DIP四位开关依次为“1001”,数码管显示字符“9”;

当DIP四位开关依次为“1010”,数码管显示字符“A”;

当DIP四位开关依次为“1011”,数码管显示字符“b”;

当DIP四位开关依次为“1100”,数码管显示字符“C”;

当DIP四位开关依次为“1101”,数码管显示字符“d”;

当DIP四位开关依次为“1110”,数码管显示字符“E”;

当DIP四位开关依次为“1111”,数码管显示字符“F”;

按动复位键,数码管能够恢复到全显即数字“8”。

4.2结论

由系统设计的技术参数和要求,4位拨码开关控制数码管显示,设计出本系统的原理图和程序,本系统所包含四种电路,分别为电源电路、复位电路、时钟电路、输入输出电路。

共阳极数码管的段码产生原理,复位电路电阻R和电容C的选取计算方法,电源电路中的滤波、稳压等都有了更深刻的认识。

并且了解到仿真实验并不能够真正的代替实际,仿真即使能够运行还是有可能存在错误的,如仿真中的复位电阻的阻值在仿真中出现错误。

本系统的电源电路并不是非常安全的,当电源断电时,电容C4将从稳压器的输出端向稳压器放电,易使稳压器损坏。

因此可在稳压器的输入端和输出端之间跨接一个二极管。

设计的输出采用了AT89S52芯片的P0口,需要接上拉电阻,使电路的元件,线路增多。

因此,我们可以把输出换为P2或P3口,去掉输出端的上拉电阻,简化硬件电路连接。

我主要负责软件设计方面,软件设计采用查表法寻找段代码,使数码管显示相应符号。

在软件设计时考虑到按键可能抖动,因此程序中在检测信号输入中加入了延时1ms的子程序,用软件延时来消除按键抖动。

基本思想是:

在检测到有按键按下时,该键所对应的行线为低电平,执行一段延时子程序后,确认该行线是否仍是低电平,如果仍是低电平,则确认该行确实有键按下。

当按键松开时,行线的低电平变为高电平,执行一段延时子程序后,检测该行线为高电平,说明按键确实已经松开。

这样,按键抖动的问题用软件得到了解决,使系统的稳定性得到了提升。

 

6.参考文献

[1]张毅刚,彭喜元,彭宇.单片机原理及应用[M].北京:

高等教育出版社,2009.

[2]杜树春.单片机C语言和汇编语言混合编程实例详解[M].北京:

北京航空航天大学出版社,2006.

[3]童诗白,华成英.模拟电子技术基础(第四版)[M].北京:

高等教育出版社,2006.

[4]林志琦.基于Proteus的单片机可视化软硬件仿真[M].北京:

北京航空航天大学出版社,2006.

[5]何立民.单片机应用技术选编[M].北京:

北京航空航天大学出版社,1993.

[6]施隆照.数码管显示驱动和键盘扫描控制器CH51及其应用[J].国外电子元器件,2004.

[7]胡汉才.单片机原理及其接口技术[M].北京:

清华大学出版社,1996.

[8]杜尚丰.CAN总线测控技术及其应用[M].北京:

电子工业出版社,2007.

[9]谢嘉奎.电子线路.北京:

高等教育出版社[M].2004.

[10]臧春华.电子线路设计与应用[M].北京:

高等教育出版社,2005.

[11]王守中,聂元铭.51单片机开发与典型事例[M].北京:

人民邮电出版社,2009.

[12]陈粤初.单片机应用系统技术与实践[M].北京:

北京航空航天大学出版社,1991.

 

7.附件

7.1系统硬件电路图

图7.1系统硬件电路图

 

7.2元器件清单

元器件清单如表7.1所示。

表7.1元器件清单

元器件名称

型号规格

数量

单片机

AT89S52

1

晶振

11.0592MHZ

1

发光二级管

1

共阳极数码管

1

桥堆

2W10

1

底座

AT89S52

1

电解电容

33pf

4

极性电容

10uf

1

极性电容

1000uf

1

拨动开关

1

普通摁键

2

电阻

2k

1

电阻

1k

13

7805

1

 

7.3软件程序

A_BITEQU20H

YIEQU21H

EREQU22H

SIEQU23H

BAEQU24H

P1_BUFEQU25H

ORG00H

LJMPPOWER_ON

ORG30H

POWER_ON:

;上电程序从此处开始进行

MOVA_BIT,#00H;初始化寄存器

MOVP0,#0FFH;读端口前初始化端口

MOVP1,#0FFH

MOVP2,#0FFH

MOVP3,#0FFH

MOVA,P1;读一下P1端口,保存当前端口状态

MOVP1_BUF,A

LCALLDELAY;调延时

PPT:

MOVA,P1;再读端口状态

CJNEA,P1_BUF,START

MOVP0,#00H;没变化,显示8

LJMPPPT;跳回重新检测

START:

LCALLDISP;调显示子函数

MOVYI,#0;清每个开关按下代表的值寄存器

MOVER,#0

MOVSI,#0

MOVBA,#0

MOVA_BIT,#00H;清开关值和寄存器

MOVA,P1;读P0口

ANLA,#0FH;屏蔽高4位(pa7-pa4)

LCALLDELAY;调延时,按键消抖

JBP1.0,START1;P1.0口没合上,跳转判断P1.1口

MOVYI,#1;P1.0口开关合上,键值赋1

START1:

JBP1.1,START2;P1.1口没合上,跳转判断P1.2口

MOVER,#2;P1.1口开关合上,键值赋2

START2:

JBP1.2,START3;P1.2口没合上,跳转判断P1.3口

MOVSI,#4;P1.2口开关合上,键值赋4

START3:

JBP1.3,START4;P1.3口没合上,跳转键值累加

MOVBA,#8;P1.3口开关合上,键值赋8

START4:

CLRC;键值累加

MOVA,YI

ADDA,ER

ADDA,SI

ADDA,BA

MOVA_BIT,A

LJMPSTART;返回主循环

DISP:

MOVDPTR,#NUMTAB;指定查表起始地址

MOVA,A_BIT;取和个位数

MOVCA,@A+DPTR;查个位数的7段代码

MOVP0,A;送出个位的7段代码到P1口

RET

DELAY:

;1ms延时子程序

MOVR4,#250

D1:

NOP

NOP

DJNZR4,D1

RET

NUMTAB:

;对应数码管显示段码

DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H

DB80H,90H,88H,83H,0C6H,0A1H,86H,8EH

END

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1