MOV SI,#4 ;P1.2口开关合上,键值赋4 START3:
JB P1.3,START4 ;P1.3口没合上,跳转键值累加 MOV BA,#8 ;P1.3口开关合上,键值赋8 START4:
CLR C ;键值累加 MOV ADD ADD ADDC MOV JNC MOV LJMP START5:
MOV LJMP DISP:
MOV MOV MOVC MOV RET
DELAY: NOP
MOV D1: MOV DJNZ DJNZ RET
A,YI A,ER A,SI A,BA A_BIT,A
START5 ;没进位,跳转 B_BIT,#1 ;有进位,和高位赋1 START ;返回主循环 B_BIT,#0 ;和高位赋0 START ;返回主循环 DPTR,#NUMTAB ;指定查表起始地址 A,A_BIT ;取和个位数
A,@A+DPTR ;查个位数的7段代码 P0,A ;送出个位的7段代码到P1口 ;1ms延时子程序 R4,#2 R5,#248 R5,$ R4,D1 8
NUMTAB: ;对应数据代码
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH END
4.实物制作
按照附件2所示的原理图,根据连线优美简单的原则进行电路设计,然后进行电路的焊接。由于本设计中元器件比较多,线路较为复杂,焊接是要小心,谨慎,不要出现短路。在焊接电路时,晶体与电容尽可能安装的与单片机芯片靠近,以减少寄生电容,更好地保证振荡器稳定、可靠地工作。还有芯片容易被烧坏,等到焊接完成要调试时,再把AT89S52芯片安装上。焊接后的实物如图4-1所示。
图4-1 焊接实物图
5.结果与结论
把上述源程序在Medwin软件中进行编译后,把生成的16进制文件烧写到AT89S52单片机中,然后接上12V的电源进行调试。调试结果如下所示。
上电后默认为“8”,调整4位DIP开关按二进制输入:
9
当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”。
当DIP开关为“0111”,数码管显示“7”的实物照片如4-2所示。
图4-2 数码管显示“7”时的实物照片
10
该系统所实现的功能与要求一致,接上电源后,电源指示灯亮,数码管显示“8”,拨动DIP开关后,数码管显示“0”~“F”,按下复位键后,数码管仍显示“8”。
7.收获与致谢
这次单片机课程设计真可谓是一波三折,刚开始确定电路方案时,由于我们的理论知识有所欠缺,确定的方案,电路设计较复杂,硬件较多,成本较高,后来在我们指导老师—范秋凤范老师的指导下,我们又确定了方案二,成本降低,电路设计也较为简单。在这里,我要对我们组的指导老师—范秋凤范老师表示衷心的感谢,我们这次设计的完成与她的悉心指导是分不开的,谢谢。
在后来焊接的电路时,我主要负责的是电源模块的焊接,由于我的疏忽大意,把2W10桥堆要接在变压器上的两个管脚接在了电源电路中,把要接电路中的两个管脚留作了接12V电源的线,这给我们后面调试造成一些困扰。整个电路的线路不算复杂,所以焊接也还算顺利。由于我们没有变压器,所以我们在下面调试时,采用了3节1.5V的干电池接到了单片机VCC和GND两端,电路供电后,拨动拨码开关,数码管不显示,第一次调试以失败告终。
第一次调试失败后,我们组成员就分工合作,来找出问题所在。我主要负责检查电路,由于我们焊接电路时为了追求美观,有些线路的焊接是从元器件底部拉的线,所以检修电路也比较麻烦,仔细对照原理图,确认焊接无误,我们组的其他成员也确认程序编写也无误后,我又把程序烧到单片机中,进行第二次调试,这次调试比上次稍好些,我们的数码管d和e这两段始终不亮,这就使我们要显示的结果只有1,4,7这三个数是正确的。准确的说,第二次调试又以失败告终。不过,这次调试让我们知道了具体问题出在了什么电路模块。我们用万用表测量数码管各个管脚与单片机连接的线路是否是通路,经测试发现所有线路都是通路。我们组一致认为是数码管坏了,为了验证我们的观点是正确的,我们特意在单片机P0.3口和数码管d脚之间接了一个发光二级管,接通电源后,发现二极管亮了,证明我们的观点是正确的。最终,由于没有多余的数码管,我们设计的系统显示的结果不够完整。
总之,通过两周的课程设计,我受益匪浅。首先,本次课程设计不仅加深了我对直流稳压电源电路的理解,而且也使我对单片机有了更深认识。同时在具体的制作过程中,我发现书本上的知识与实际应用存在着不小的差距,书本上的知识很多都是理性化后的
11
结论,忽略了很多实际的因素。我们不得不考虑这方面的问题,我们无法根据书上的理论轻易得到预想的结果。通过这次实践,使我深刻认识到理论联系实际的重要性。
7.参考文献
[1] 张毅刚,彭喜元,彭宇.单片机原理及应用[M].北京:高等教育出版社,2003.12 [2] 何立民.单片机应用技术选编[M].北京:北京航空航天大学出版社,1993.1 [3] 胡汉才.单片机原理及其接口技术[M].北京:清华大学出版社,1996
[4] 施隆照.数码管显示驱动和键盘扫描控制器CH451及其应用[J].国外电子元器件,2004.12(1)
12