利率显示屏设计Word文件下载.docx
《利率显示屏设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《利率显示屏设计Word文件下载.docx(14页珍藏版)》请在冰点文库上搜索。
![利率显示屏设计Word文件下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/11/936aea58-eccb-4516-94da-6c89a24f80ec/936aea58-eccb-4516-94da-6c89a24f80ec1.gif)
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
字型码
1
BFH
86H
2
DBH
3
CFH
4
E6H
5
EDH
6
FDH
7
87H
8
FFH
9
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键盘示意图
活期
半年
一年
两年
确定
复位
附录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
SETBEA;
开中断
RETI;
返回主程序
MAIN:
MOVSP,#30H
CLRIT0;
设定中断工作方式
允许总中断
SETBEX0;
允许外部中断0
MOVSCON,#00H;
设定串行口工作方式
MOVP1,#0FH
MOVP2,#0F0H
HERE:
SJMPHERE;
等待中断
SUB:
;
扫描按下按键
SETBP1.7
SETBP1.6
SETBP1.5
SETBP1.4
K1:
LCALLL1
JCK2
ADDA,#00H
LJMPDL0
K2:
JCK3
ADDA,#04H
K3:
JCK4
ADDA,#08H
K4:
CLRP1.7
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
DL3:
CJNEA,#0CH,DL4
SETBP2.3
DL4:
CJNEA,#0DH,DL5
SETBP2.2
DL5:
CJNEA,#0EH,DL6
SETBP2.1
DL6:
SETBP2.0
DH0:
数字键功能赋予
CLRT1
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVSBUF,A
DH1:
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
L3:
MOVC,P1.2
JCL4
MOVA,#02H
L4:
MOVC,P1.3
JCL5
MOVA,#03H
L5:
DELAY:
50ms延时
MOVTMOD,#10H
MOVTH1,#3CH
MOVTL1,#0B0H
SETBTR1
S1:
JBCTF1,REP
LJMPS1
REP:
SJMP$
END