******大学毕业设计(论文)
74LS164的管脚排列如图3-11。
1234567ABQ0Q1Q2Q3GND74LS164VCCQ7Q6Q5Q4MRCP141312111098 图3-11 74LS164的管脚排列
显示电路的连接:
显示电路连接图如图3-12所示。
910x812345678 DS1abcdefgdpDPYafegdbcdpDS212345678abcdefgdpDPYafegdbcdpDS312345678abcdefgdpDPYafegdbcdp+5V1234567ABQ0Q1Q2Q3GND74LS164VCCQ7Q6Q5Q4MRCP1413121110981234567891011121314151617181920P1.0P1.1P1.2P1.3P1.4P1.5(MOSI)P1.6(MISO)P1.7(SCK)RSTP3.0(RXD)P3.1(TXD)P3.2(INT0)P3.3(INT1)P3.4(T0)P3.5(T1)P3.6(WR)P3.7(RD)XTAL2XTAL1GNDAT89S51 VCCP0.0(AD0)P0.1(AD1)P0.2(AD2)P0.3(AD3)P0.4(AD4)P0.5(AD5)P0.6(AD6)P0.7(AD7)EA/VPPALE/PROGPSENP2.7(A15)P2.6(A14)P2.5(A13)P2.4(A12)P2.3(A11)P2.2(A10)P2.1(A9)P2.0(A8)4039383736353433 323130292827262524232221 图3-12 显示电路连接图
显示电路由三个共阴级的数码管和一个74LS164组成。三个数码管分别组成显示电路的十位、个位、小数点位,比如可以显示10.5V。由于三个数码管至少需要21根I/O线,为节约资源,采用串行输入并行输出的74LS164进行驱动输出。单片机的两个并行口P1.4和P1.5分别作为74LS164的信号输入口和时钟控制信号。P1.0、P1.1、P1.2分别接十位、个位、小数位的片选端。Q0~Q7(第3~6和10~13
16
******大学毕业设计(论文)
引脚)并行输出端分别接在LED显示器的a-dp各段对应的引脚上。LED的8个段选端通过电阻和74LS164的并行输出口即8根选线相连接。
采用动态扫描驱动方式[14]。显示数据以串行方式从AT89S51的P1.4口输出送往移位寄存器74LS164的A、B端,然后将变成的并行数据从输出端Q0~Q7输出,选中LED相应的段。位选码由AT89S51的P1.0~P1.2口输出低电平,以对数码管LED1~LED3进行位选控制,这样,3个数码管便轮流显示。由于人眼的残留效应,这3个数码管看上去几乎是同时显示。
17
******大学毕业设计(论文)
第4章 系统软件设计
4.1 程序运行原理
软件要实现的功能是:键盘对单片机输入数据,单片机对获得的数据进行处理,送到8位数模转换器(DAC0832),再送到数码管显示,实现数字量对电压的控制。
本程序的设计思路是:当电源打开的时候,单片机进行复位,寄存器清零,DAC0832清零,再转换成BCD码送到数码显示部分,电源应该显示零。这时候程序循环检测是否有按键信号,如果KEY1按下,电压值加0.1V,把它送到DAC0832并且显示。如果KEY2按下,电压值减0.1V,把它送到DAC0832并且显示。如果KEY3按下,电压值加1V,把它送到DAC0832并且显示。如果KEY4按下,电压值减1V,把它送到DAC0832并且显示。该系统的软件编程采用MCS-51系列单片机汇编语言完成。
本程序的运行原理是:设计中CPU的工作任务是单一的,程序的工作过程是当系统上电复位后,默认输出0伏电压,然后扫描KEY1,KEY2,KEY3,KEY4键,当KEY1,KEY2,KEY3,KEY4有键按下时,程序跳转至相应的按键处理程序,经按键程序处理后,再调用显示子程序。完成显示与输出操作后,继续扫描此四个按键。
程序设计需要考虑的主要问题有两个方面。一方面要找出数字量与输出电压的关系,这是程序设计的依据;另一方面要建立显示值与输出电压值的对应关系,这是程序设计是否成功的标志。因为在本系统中,显示的输出电压值不是直接从输出电路中通过检测得到的,因此显示与输出并不存在直接联系。为了使显示值与实际输出值相一致,在程序编写时,必须人为地将两者建立某种关系。采用的方法是:在程序存储器中建立WORDTAB表格,存放数码显示器0-9字符所对应的数据[15]。编写拆分送显存子程序BIN_BCD,把要显示的数据按位拆分,送入不同的显存单元。分别存放在内存RAM中32H单元,31H单元和30H单元。这三个单元分别存放数码显示器十位的字符,个位的字符和小数位的字符。这样就能使显示值与输出值保持一一对应的关系,即显示器能准确地显示出电源输出电压值的大小,达到电路设计的目的。由于理论计算与实际情况还存在着一定的差异,为了使显示值更加接近实际输出值,本电路在装配时需要对输出电压进行校正。方法是:将输出电压调至15V(显示器显示值)选用精确度较高的数字万用表对实际输出电压值进行校正,通过调整可调电阻使实际输出电压达到15V;然后
18
******大学毕业设计(论文)
再将输出电压调至0V (均为显示器显示值),同样用数字表进行校正。如此反复校正几次,就能使显示器的显示值和实际的输出值一致,达到较好的效果。具体程序见附录。
4.2 程序流程
4.2.1 延时子程序流程
开始R4赋初值空操作R4←R4-1NR4=0否?Y
图4-1 延时子程序流程图
结束返回4.2.2 拆分送显存子程序流程
开始十位数送32H个位数送31H小数位送30H结束返回 图4-2 拆分送显存子程序流程图
19