利率显示屏设计.docx
《利率显示屏设计.docx》由会员分享,可在线阅读,更多相关《利率显示屏设计.docx(23页珍藏版)》请在冰豆网上搜索。
利率显示屏设计
单片机系统
课程设计
成绩评定表
1概述4
1.1研究背景4
1.2设计思想及基本功能4
2总体方案设计4
2.1方案选取4
2.2系统框图5
2.3总体方案设计6
3硬件电路设计6
3.1电源电路6
3.2晶振电路7
3.3复位电路8
3.4键盘电路9
3.5显示电路10
3.6电路分析14
4系统软件设计14
4.1主程序软件设计14
4.2键盘程序设计15
4.3按键功能程序16
4.4中断程序17
5系统调试19
6实验总结21
参考文献22
附录1系统原理图23
附录2键盘示意图24
附录3系统程序25
1概述
1.1研究背景
随着科技的发展,人们对物质文明和精神文明需求的不断增长,银行管理水平和形象要求也在不断提高。
计算机不断更新和银行利率、汇率的不断变化,以前那种靠手工写牌的时代己不适应现代的需要,各类银行迫切要求采用电子显示屏来显,为此我们设计了利用LED数码管显示,并可以进行数据修改的利率显示屏。
1.2设计思路及基本功能
运用数码管显示代替人工手写,并能进行修改,能给银行管理带来很大的方便,在设计时尽量简化电路,用最简单的电路来实现其功能。
其基本功能是能通过数码管显示银行利率,可以进行利率显示的修改。
2设计总方案
2.1方案选取
单片机在各种电子产品中的应用已经越来越广泛,很多的电子产品利用单片机所取得的便利得到了人们的好评,针对单片机的利率显示控制系统的要求,实现的方案有:
(1)用LED矩阵显示;
(2)用数码管显示;
(3)用彩屏显示。
但是成本较高,所以不采用此方案。
下面是LED矩阵显示与数码管显示的效果。
图2-1LED显示的利率显示屏
图2-2数码管显示的利率显示屏
在本次设计中,选取第二种方案,此方案成本低,操作简单。
2.2系统框图
方案二的系统框图为:
图2-3系统框图
2.3总体设计方案
利率显示屏在显示的同时也需要人为控制,银行利率会不断变化,显示屏也需要随利率变化而变化,这就需要对显示屏的控制。
图2-4显示屏控制结构图
3硬件电路设计
3.1电源电路
单片机正常工作电压为5V,因此设计的电源电路主要是提供单片机工作电压。
图3.1是为单片机提供电压的电源电路。
在这个电路中采用了三端集成稳压器LM7805,可以输出5V的直流电压以供给单片机。
图3-1电源电路
3.2晶振电路
电路中的晶振即石英晶体震荡器。
由于石英晶体震荡器具有非常好的频率稳定性和抗外界干扰的能力,所以,石英晶体震荡器是用来产生基准频率的。
通过基准频率来控制电路中的频率的准确性。
同时,它还可以产生振荡电流,向单片机发出时钟信号。
片内电路与片外器件就构成一个时钟产生电路,CPU的所有操作均在时钟脉冲同步下进行。
片内振荡器的振荡频率非常接近晶振频率,一般多在1.2MHz~24MHz之间选取。
C1、C2是反馈电容,其值在20pF~100pF之间选取,典型值为30pF。
本电路选用的电容为30pF,晶振频率为12MHz。
振荡周期=
;
机器周期
指令周期=
。
XTAL1接外部晶体的一个引脚,XTAL2接外晶体的另一端。
在单片机内部,接至上述振荡器的反相放大器的输出端。
采用外部振荡器时,对HMOS单片机,该引脚接外部振。
在石英晶体的两个管脚加交变电场时,它将会产生一定频率的机械变形,而这种机械振动又会产生交变电场,上述物理现象称为压电效应。
一般情况下,无论是机械振动的振幅,还是交变电场的振幅都非常小。
但是,当交变电场的频率为某一特定值时,振幅骤然增大,产生共振,称之为压电振荡。
这一特定频率就是石英晶体的固有频率,也称谐振频率。
石英晶振起振后要能在XTAL2线上输出一个3V左右的正弦波,以便使MCS-51片内的OSC电路按石英晶振相同频率自激振荡。
通常,OSC的输出时钟频率fOSC为0.5MHz-16MHz,典型值为12MHz或者11.0592MHz。
电容C1和C2可以帮助起振,典型值为30pF,调节它们可以达到微调fOSC的目的。
图3-2时钟电路
3.3复位电路
复位电路的主要功能是使单片机进行初始化,在初始化的过程中需要在复位引脚上加大于2个机器周期的高电平。
复位后的单片机地址初始化为0000H,然后继续从0000H单元开始执行程序。
在复位电路中提供复位信号,等到系统电源稳定后,再撤销复位信号。
图3-3复位电路
3.4键盘电路
在本设计中,键盘主要用于输入显示数据和修改显示数据,还有需要修改的项,是人为控制该系统的主要部件。
在本次设计中,采用的键盘是4*4矩阵键盘,为了提高CPU的工作效率,采用了中断扫描工作方式。
即只有在键盘有键按下时,发出中断请求,CPU响应中断请求后哦,转入中断服务程序,进行键盘扫描,识别键码,中断扫描工作方式的一种简易键盘电路图如下:
图3-4键盘电路图
用P1口高4位与低4为构成行线与列线,将P1.4-P1.7作为键输出线,P1.0-P1.3为扫描输入线。
扫描方式:
给P1口赋初值,让P1.0-P1.3为1,P1.4-P1.7为0,无键按下时,P1.0-P1.3的与门输出为1,当有键按下时,P1高4位有线接入低4位,使得低4位其中一位为0,导致与门输出为0,开启中断,进入中断扫描程序,扫描时,先让P1.4为0,其余3位为1,扫描低4位,逐位检查看是否为0,为0赋键值,没有为0的跳到下一行,让p1.5为0,其余3位为1,在进行扫描,没有0再跳下一行,最终会检测出按下键的键值。
键盘具有16个键,其中有0-9十个个数字键,一个确定修改键,一个复位键,4个需要修改项的键。
3.5显示电路
显示电路主要用于给出的利率数据,在本次设计中采用LED数码管进行显示是因为LED数码管具有以下几个优点:
(1)能在低电压、小电流条件下驱动发光,能与CMOS、ITL电路兼容。
(2)发光响应时间极短(<0.1μs),高频特性好,单色性好,亮度高。
(3)体积小,重量轻,抗冲击性能好。
数码管有共阴极与共阳极数码管,在这里采用共阴极数码管。
图3-5LED数码管
在电路中,将数码管的a、b、c、d、e、f、g端分别与74hc164的D0-D6端连接,因为采用的共阴极数码管,所以当有1输入时,对应的二极管就会发光,编写好需要的数据代码后输入就能得到需要显示的数据了。
表1LED字型码
字形
dp
g
f
e
d
c
b
a
字型码
0
1
0
1
1
1
1
1
1
BFH
1
1
0
0
0
0
1
1
0
86H
2
1
1
0
1
1
0
1
1
DBH
3
1
1
0
0
1
1
1
1
CFH
4
1
1
1
0
0
1
1
0
E6H
5
1
1
1
0
1
1
0
1
EDH
6
1
1
1
1
1
1
0
1
FDH
7
1
0
0
0
0
1
1
1
87H
8
1
1
1
1
1
1
1
1
FFH
9
1
1
1
0
1
1
1
1
EFH
本次用到16个数码管,每组4个,分为4组,每组由4个74hc164串接起来。
每个164接一个数码管每组4个164采用公共cp端、公共复位端,可以对每组进行统一复位和给予时钟信号。
图3-674HC164
164引脚功能
图3-7引脚功能
74HCT164是8位边沿触发式移位寄存器,串行输入数据,然后并行输出。
数据通过两个输入端(DSA或DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。
两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空。
时钟(CP)每次由低变高时,数据右移一位,输入到Q0,Q0是两个数据输入端(DSA和DSB)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。
主复位(MR)输入端上的一个低电平将使其它所有输入端都无效,同时非同步地清除寄存器,强制所有的输出为低电平。
用164与数码管连接的显示电路如下图:
图3-8显示电路
3.6电路分析
在系统电路中,主要是键盘电路和显示电路,键盘电路是由单片机P1口接出,由高4位与低4位组合,并接到外部中断口P3.2,在前面的键盘电路已经分析了。
在显示电路中,可以显示4组数据,每组由4个数码管显示,分别与4个164连接,第一个164的数据输入端由串行接口P3.0接入,第二个的数据输入点与第一个的Q7端相接,第三个也与第二个Q7端相接,第四个也如此,就可以实现输入的数据一位一位的往后移动。
每组164的CP端是串行口P3.1和P2口低四位的其中一位相与后输入。
串行口在方式0工作时,P3.0输出数据,P3.1输出对应脉冲,在与P2口的一位相与后就可以控制脉冲的输入了,当相与位为0时,将脉冲关断,相与位为1时,开启脉冲,就可以对该组进行数据输入了,否则在没有脉冲的情况下,数据是无法输入的。
每组164的复位端与P2的高4位其中一位相接,当该位输入低电平时,就可以使该组复位。
所以可以得到P2口高四位用来控制每组数码管的复位,低四位用来开启与关断数据输入。
由于银行利率通常是百分数,都保留了两位小数,所以在接线时,每组数码管的第一个第二个第四个的dp端都没有接,所以他们的小数点都不会亮,只有第三个的dp端与Q7相接了,所以只有第三个数码管的dp再有数据给他的时候会一直发光。
在整体的看上去就可以让输入的数为有两位小数的形式了。
4系统软件设计
在设计中,系统软件包括,主程序、键盘扫描程序、中断程序、显示程序、延时子程序等程序组成,每个部分都是不可或缺的。
系统程序在附录中查看。
4.1主程序软件部分
主程序需要对单片机进行初始化、设置串行口功能、中断工作方式、对某些引脚赋予初值,并且需要无限循环下去等待中断。
图4-1主程序流程图
4.2键盘程序设计
本次设计采用的是中断工作方式,只要有键按下时,就会发出中断申请,相对于其他方式,不需要一直不断地扫描看是非有键按下。
所以键盘程序包含在中断程序中。
图4-2键盘扫描程序流程图
程序只在有中断请求后执行。
4.3按键功能程序
在设计中设定的当键值小于10时为数值输入和显示。
下面给出的程序流程图为键值小于10时的流程图。
图4-3数字键程流程图
在数据输出到164后,还不一定可以显示出来,还需要功能键使输入的数据能够显示出来。
当键值不小于10时,键值为12-15,分别可以控制一组让其显示出数据,需要在开始输入数据之前按下,按下后会先清除原有的数据,之后输入数据就可以让输入的数据显示出来。
键值为10时为复位功能,按下将使全部数码管复位熄灭。
键值为11为确定修改键,按下后保持修改的数据,并且之后再按数据键将不影响显示的数据。
4.4中断程序
中断程序为此设计的主要程序,其中包含了键盘扫描程序、键功能赋予程序。
图4-4中断程序流程图
在中断程序开始时,需要关闭中断,以免中断还没有执行完时中断再次出现,然后进行保护现场。
接着跳到扫描程序、功能赋予程序,当前面的程序执行完后,恢复现场,还需要在调入延时程序。
如果没有延时程序,再一次按键按下后,由于每次中断执行的速度很快,所以按一次键会相当于按了很多次,所以需要调入延时程序,使中断后恢复的时间变久一点,能够达到按一次中断一次的效果。
调入延时程序后在开中断,然后返回主程序,等待下一次中断。
5系统调试
调试时,由于设计用到的164、数码管较多,在实验室不能调出来,说以采用proteus仿真调试。
在调试中,经过对线路与程序的反复修改,最终终于调试成功。
再输入数据时的效果图如下:
按下0
按下01
按下012
按下0123
图5-1输入效果图
总体仿真线路图:
图5-2仿真线路图
6实验总结
在这两个星期的设计中,通过对各种资料的查询,与同学们的相互请教,终于完成了利率显示屏的设计。
回想在设计时走了些弯路,在对键盘的设计上,还是应该把键盘的键按下后怎么变化理解清楚,然后在写程序时会比较容易写出来,资料也只能作为参考,不能生拉硬套。
不然理解不够透彻到后来写程序也可能会出错。
再设计硬件电路时也应该想着程序应该怎么写,再结合程序设计硬件电路,这样在设计中会取到事半功倍的效果。
在程序设计时,用汇编语言编写需要对单片机内部如何工作的原理理解清楚,以及对汇编语言的熟练。
在编写时,通过我对课本的反复翻阅,加深了对单片机的理解并且能够对汇编语言掌握更加熟练,这样的效果是比在课堂上学习的效果更加的好。
在我的设计中,虽然完成了,可以通过设计显示基本的利率信息,但是他的功能也不够完好。
还有很多地方可以更加完善,但是要想做到,需要我对自己的能力进行更多的提高。
在设计中,还用到了许多软件,并且学习到了它们的使用,这对于我也是个很大的收获,其中有protel、visio、proteus仿真、keil开发软件等,这些软件对于我们的专业都是非常有用的。
这些都为我以后能够更好的设计打下了稳固基础。
参考文献
[1]余永劝等.单片机应用系统的功率接口技术[M].北京:
:
北京航空航天大学出版社,1992.79-84
[2]张迎新等.单片微型计算机原理、应用及接口技术.北京:
国防工业出版社,1993.12
[3]王志慧,李树华.单片机控制实时时钟的设计与实现[J].内蒙古大学学报(自然科学版),1999,30(6):
:
766~768.
[4]杨家成.单片机原理与应用及C51程序设计.北京:
清华大学出版社,2007
附录1系统总原理图
附录2键盘示意图
活期
半年
一年
两年
确定
复位
9
8
7
6
5
4
3
2
1
0
附录3系统程序
ORG0000H;主程序入口
LJMPMAIN
ORG0003H;外部中断0入口
LJMPEXINT
EXINT:
CLREA;关中断
PUSHPSW;保护现场
PUSHACC
LJMPSUB
DISUB:
CLRP1.7;让P1高4位回到0
CLRP1.6
CLRP1.5
CLRP1.4
POPACC;恢复现场
POPPSW
LCALLDELAY;延时
LCALLDELAY
LCALLDELAY
LCALLDELAY
LCALLDELAY
LCALLDELAY
LCALLDELAY
LCALLDELAY
LCALLDELAY
LCALLDELAY
SETBEA;开中断
RETI;返回主程序
MAIN:
MOVSP,#30H
CLRIT0;设定中断工作方式
SETBEA;允许总中断
SETBEX0;允许外部中断0
MOVSCON,#00H;设定串行口工作方式
MOVP1,#0FH
MOVP2,#0F0H
HERE:
SJMPHERE;等待中断
SUB:
;扫描按下按键
SETBP1.7
SETBP1.6
SETBP1.5
SETBP1.4
K1:
CLRP1.4
LCALLL1
JCK2
ADDA,#00H
LJMPDL0
K2:
SETBP1.4
CLRP1.5
LCALLL1
JCK3
ADDA,#04H
LJMPDL0
K3:
SETBP1.5
CLRP1.6
LCALLL1
JCK4
ADDA,#08H
LJMPDL0
K4:
SETBP1.6
CLRP1.7
LCALLL1
ADDA,#0CH
DL0:
;给功能键赋予功能
CJNEA,#0AH,DL1
DL1:
JCDH0;数字键跳至DH0
CJNEA,#0AH,DL2
CLRP2.4
CLRP2.5
CLRP2.6
CLRP2.7
SETBP2.4
SETBP2.5
SETBP2.6
SETBP2.7
LJMPDISUB
DL2:
CJNEA,#0BH,DL3
CLRP2.0
CLRP2.1
CLRP2.2
CLRP2.3
LJMPDISUB
DL3:
CJNEA,#0CH,DL4
CLRP2.0
CLRP2.1
CLRP2.2
CLRP2.7
SETBP2.7
SETBP2.3
LJMPDISUB
DL4:
CJNEA,#0DH,DL5
CLRP2.0
CLRP2.1
CLRP2.6
CLRP2.3
SETBP2.6
SETBP2.2
LJMPDISUB
DL5:
CJNEA,#0EH,DL6
CLRP2.0
CLRP2.2
CLRP2.3
CLRP2.5
SETBP2.5
SETBP2.1
LJMPDISUB
DL6:
CLRP2.4
CLRP2.1
CLRP2.2
CLRP2.3
SETBP2.4
SETBP2.0
LJMPDISUB
DH0:
;数字键功能赋予
CLRT1
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVSBUF,A
CLRT1
DH1:
LJMPDISUB
TAB:
DB0BFH,86H,0DBH,0CFH,0E6H
DB0EDH,0FDH,87H,0FFH,0EFH
L1:
;列扫描
MOVC,P1.0
JCL2
MOVA,#00H
RET
L2:
MOVC,P1.1
JCL3
MOVA,#01H
RET
L3:
MOVC,P1.2
JCL4
MOVA,#02H
RET
L4:
MOVC,P1.3
JCL5
MOVA,#03H
RET
L5:
RET
DELAY:
;50ms延时
MOVTMOD,#10H
MOVTH1,#3CH
MOVTL1,#0B0H
SETBTR1
S1:
JBCTF1,REP
LJMPS1
REP:
RET
SJMP$
END