电子设计及电子工艺实验报告Word格式.docx
《电子设计及电子工艺实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《电子设计及电子工艺实验报告Word格式.docx(18页珍藏版)》请在冰点文库上搜索。
单片机控制电路、数码管显示电路、显示驱动电路以及矩阵键盘电路。
Ø
单片机控制模块
单片机控制模块就是一保证单片机能正常运行的最小系统,其中包括复位电路(如图2所示)其工作原理为:
上电瞬间由于电容上无储能,其断电压近似为零,单片机RST脚获得高电平,随着电容CB1的充电,RST脚上的高点片逐渐下降,当RST脚上的电压小于某一数值后,单片机就脱离复位电路状态,进入正常工作模式。
另外最小系统还包括时钟电路(如图3所示),时钟电路由一石英晶体和两个陶瓷电容组成,工作原理是单片机的XTAL1与XTAL2脚跨接石英晶体与两个微调电容C1、C2形成反馈回路,构成一稳定自激振荡器,为单片机工作提供振荡脉冲。
所需元件:
STC89C52单片机1块
10uf电解电容1个10K电阻1个
22uf瓷片电容C2个12M晶振1个
图2图3
数码管显示电路
显示电路采用了7段数码管,其内部构成如图4所示
图4
数码管的工作原理和控制如同二极管,正向电压使二极管导通并发光。
从图4可知,7只细长的二极管a,b,c,d,e,f,g组成了“8”字的形状,每只二极管称为“显示段”,控制不同的显示段的点亮和熄灭,便显示出不同的字符形状。
在本电路中数码管的a,b,c,d,e,f,g,dp脚分别接在单片机P0口的各个脚上(如图5所示),另外因为数码管段位接在P0口上,所以必须接上拉电阻。
注意在图5中用的4为一体的数码而实验中
图5
提供的是单个一体的,所以在焊接时我们的将个段位并联到一起,组合成一体。
所需元件:
共阳数码管4个330欧姆电阻8个
显示驱动电路
在这个系统中数码管选的是共阳极数码管,按照数码管的显示原理只要给公共段接到单片机的IO口上,给他一个高电平而相应的段位给低电平就能点亮数码管,但由于单片机的驱动电流有限,虽然能点亮数码管,但是数码管不够亮,所以我们想一方案解决这个问题,在单片机和数码管之间增加一三极管,它的的接法如图6所示,其中的三极管我们选
图6
的是9015,它是以小功率的PNP管,在这里它不仅有电流放大作用而且它还有开关的功能,由图可知三极管发射级接电源VCC,当IO口送出一电平时三极管就饱和导通,相当于开关开启,故与其对应的三极管公共端得到一高电平,对应的数码管被选中,显示出字符。
4.7k电阻4个三极管90154个
51欧姆电阻4个。
矩阵键盘电路
矩阵键盘是由12个轻触按键组成,电路如图7所示,电中的按键有四个脚其中有常闭常开两组,所以在使用时我们的先用万用表测量一下那个两个脚是常开那两个脚是常闭,测量时将万用表测量档打到二极管档,将两只表笔分别放到两个脚上,没有按下键是,若听到“嘟”的声音则这两个脚是常闭,反之常开。
常开才是我们所要的。
由图可知按键是一个3x4的矩阵键盘,它的每行每列都连在一起,其中它的行分别与P2.0、P2.1、P2.2、P2.3相连,而列分别与
图7
P1.5、P1.6、P1.7相连。
故对于常闭脚,我们在焊接电路时有可能会利用到,这样能减少焊接工作量。
其工作原理是接行线的单片机脚输出低电平,在接列线的单片机脚检测电平,判断哪个按键按下。
轻触按键12个
4、软件实验
(1)实验—
P0口实验
编程实现一个数码管的8段在P0口一次点亮,且实现循环左移8次,再循环右移8次,如此不断循环。
程序清单:
ORG0000H;
程序存放起始地址为ROM的0000H
MAIN:
MOVP2,#0F0H;
P2口低四位送低电平选中数码管
MOVR2,#8;
左循环次数8送R2寄存器
MOVA,#0FEH;
从P0.0开始点亮数码管段位
LOOP:
MOVP0,A;
送显示到P0口
LCALLDELAY;
调用延时程序
RLA;
循环左移
DJNZR2,LOOP;
左循环是否结束判断
右循环次数8送R2寄存器
LOOP1:
MOVP0,A;
RRA;
循环右移
DJNZR2,LOOP1;
右循环是否结束判断
AJMPMAIN;
左右循环结束从新开始
DELAY:
MOVR5,#20;
延时0.2S子程序
DELAY1:
MOVR6,#20
DELAY2:
MOVR7,#248
DJNZR7,$
DJNZR6,DELAY1
DJNZR5,DELAY2
RET
END
(2)实验二
独立按键实验
编程实现每按一次按键,数值加一,且让与P0口连接的数码管的4个段位显示对应的二进制数。
ORG0000H;
MOVP2,#0FE;
P2口第一位送低电平选中第一数码管
MOVR1,#00H;
初始化R1为0,表示从0开始计数
MOVA,R1;
R1内容送到A
CPLA;
取反指令
送出P0口由数码管段位显示
REL:
JNBP1.5,REL;
判断按键是否按下
LCALLDELAY10MS;
延时消抖
JNBP1.5,REL;
INCR1;
键按下R1的值加一
将R1的值送至A
取反A中的值
MOVP0,A;
将A中的内容送至P0口显示
JNBP1.5,$;
等待按键释放
SJMPREL;
继续扫描按键
DELAY10MS:
MOVR6,#20;
延时10ms子程序
MOVR7,#248
END
(3)实验三
7段LED数码管实验
P0口接LED显示器的字型输入端,P2口低四位接为选端,P1.7接按键。
编程实现当按键按下时,显示“1234”,松开时显示“HELP”。
程序清单:
START:
CLRP2.2;
清零P2.2
JBP1.7,DIR1;
若按键按下则跳转到DIR1
MOVDPTR,#TABLE1;
”12345”表格首地址送数据指针
SJMPDIR;
跳转到DIR1处
DIR1:
MOVDPTR,#TABLE2;
”HELP”表格首地址送数据指针
DIR:
MOVR0,#00H;
清零R0
MOVR1,#0FEH;
位选码从左到右显示
NEXT:
MOVA,R0;
表格中的第一个数据的偏移地址送A
MOVCA,@A+DPTR;
查表
查表得数据送至P0
MOVA,R1;
位选码送A
MOVP2,A;
选中显示数码管
LCALLDAY;
INCR0;
表格中下一个数据的偏移地址
RLA;
位选循环左移一次
MOVR1,A;
位选送至R1中暂存
CJNER1,#0EFH,NEXT;
若4位显示一遍后跳转到NEXT
SJMPSTART;
4位未显示完跳到START
DAY:
MOVR6,#4;
延时2ms子程序
D1:
DJNZR7,$
DJNZR6,D1
RET
TABLE1:
DB0F9H,0A4H,0B0H,99H;
“1234”
TABLE2:
DB89H,86H,0C7H,8CH;
“HELP”
END;
程序结束
(4)实验四
8051内部定时器实验
编程实现51单片机定时/计数器T0产生2s的定时,每当2s定时到来时,更换数码管段位的闪烁,每个段位闪烁的频率为5Hz。
TCOUNT2SEQU30H;
2s循环次数存放单元赋值30H
TCNT02SEQU31H;
0.2s循环次数存放单元赋值30H
IDEQU32H;
当前显示LED的ID赋值32H
指令存放首地址为ROM的0000H
LJMPMAIN;
跳到MAIN
ORG000BH;
定时器T0中断入口地址
LJMPINT_T0;
跳转INT_TO中断入口地址
MOVP2,#0F0H;
选中四个数码管
MOVTCOUNT2S,#00H;
清零
MOVTCNT02S,#00H;
MOVID,#00H;
MOVTMOD,#01H;
选择TO工作模式1
MOVTH0,#(65536-50000)/256;
50ms初值高8位送到TH0
MOVTL0,#(65536-50000)MOD256;
50ms初值低8位送到TL0
SETBTR0;
启动T0
SETBET0;
开启TO中断
SETBEA;
开启总中断
SJMP$;
原地等待
INT_T0:
MOVTH0,#(65536-50000)/256;
50ms定时初值重装
MOVTL0,#(65536-50000)MOD256
INCTCOUNT2S;
TCOUNT2S加一
MOVA,TCOUNT2S;
TCOUNT2S送至A
CJNEA,#40,NEXT;
若不到2S则跳转到NEXT
MOVTCOUNT2S,#00H;
TCOUNT2S清零
INCID;
ID指向另一个LED
MOVA,ID;
ID单元内容送到A
CJNEA,#04H,NEXT;
ID单元不为4则跳转到NEXT
ID单元内容清零
INCTCNT02S;
TCNT02S内容加一
MOVA,TCNT02S;
TCNTO2S内容送到A
CJNEA,#4,DONE;
若不到0.2ms则跳转都DONE
MOVTCNT02S,#00H;
若到0.2ms则清tcnt02s
MOVA,ID:
ID单元内容送到A
CJNEA,#00H,STD1;
若ID单元不为0则跳到STD1
CPLP0.0;
取反P0.0
SJMPDONE;
跳转到DONE
STD1:
CJNEA,#01H,STD2;
若ID单元不为1则跳到STD2
CPLP0.1;
取反P0.1
STD2:
CJNEA,#02H,STD3;
若ID单元不为1则跳到STD3
CPLP0.2;
取反P0.2
SJMPDONE;
STD3:
CJNEA,#03H,DONE;
CPLP0.3;
取反P0.3
DONE:
RETI;
中断返回
END程序结束
(5)实验五
3X4矩阵式键盘实验
在系统中,P2的低四位与P1口的高三位分别接到矩阵键盘的行与列,P0口接数码管字型的输入断。
编程实现每按下一个按键,在数码管上显示每个按键对应的序号。
KEYBUFEQU30H;
键值存放单元
程序存储起始地址
MOVKEYBUF,#2;
键值存放单元初值
WAIT:
;
从第0行开始扫描
MOVP2,#0FFH;
P0口送0小FF
CLRP2.0;
MOVA,P1;
读P1口的值
ANLA,#0F0H;
清零低四位
XRLA,#0F0H;
取反高四位
JZNOKEY1;
第0行无按键按下跳转到NOKEY1
LCALLDELAY10MS;
按键按下延时消抖
第0行无按键按下扫描第一行
有按键按下则开始计算键值
P1口值低四位清零
CJNEA,#0EH,NK1;
不是第0列跳到NK1
MOVKEYBUF,#0;
是第0列将0送到KEYBUF
LJMPDK1;
跳转到DK1
NK1:
CJNEA,#0DH,NK2;
不是第1列跳到NK2
MOVKEYBUF,#1;
是第1列将1送到KEYBUF
NK2:
CJNEA,#0BH,NK3;
不是第2列跳到NK3
MOVKEYBUF,#2;
是第2列将2送到KEYBUF
NK3:
NOP;
空指令
DK1:
MOVA,KEYBUF;
将KEYBUF的值送至A
MOVDPTR,#TABLE;
表的首地址送到数据指针
MOVCA,@A+DPTR;
查表得对应的数值
送显示
DK1A:
P1口数据送A
XRLA,#0F0H;
JNZDK1A;
NOKEY1;
P0口送FF
CLRP2.1;
从第1行开始扫描
JZNOKEY2;
本无按键按下跳转到NOKEY2
ANLA,#0FH;
清零高四位
XRLA,#0FH;
取反低四位
本无按键按下扫描下一行
P1口值高四位清零
CJNEA,#0EH,NK4;
不是第0列跳到NK4
MOVKEYBUF,#3;
是第0列将3送到KEYBUF
LJMPDK2;
NK4:
CJNEA,#0DH,NK5;
不是第1列跳到NK5
MOVKEYBUF,#4;
是第1列将4送到KEYBUF
跳转到DK2
NK5:
CJNEA,#0BH,NK6;
不是第2列跳到NK6
是第2列将7送到KEYBUF
NK6:
DK2:
DK2A:
JNZDK2A;
NOKEY2:
CLRP2.2;
从第2行开始扫描
JZNOKEY3;
本无按键按下跳转到NOKEY3
CJNEA,#0EH,NK5;
不是第0列跳到NK5
LJMPDK3;
跳转到DK3
CJNEA,#0DH,NK6;
不是第1列跳到NK6
CJNEA,#0BH,NK7;
不是第2列跳到NK7
NK7:
DK3:
DK3A:
P2口数据送A
JNZDK3A;
NOKEY3:
CLRP2.3;
从第3行开始扫描
JZNOKEY4;
CJNEA,#0EH,NK8;
不是第0列跳到NK8
LJMPDK4;
NK8:
CJNEA,#0DH,NK9;
不是第1列跳到NK9
NK9:
CJNEA,#0BH,NK10;
不是第2列跳到NK11
NK11:
DK4:
DK4A:
JNZDK4A;
NOKEY4:
LJMPWAIT
MOVR6,#10
TABLE:
DB0C0H,0F9H,0A4H,0B0H,99H,92H
DB82H,0F8H,80H,90H,88H,83H,0C6H
DB0A1H,86H,8EH,0FFH,0CH,89H,7FH,0BFH
END
四、心得体会
通过这几天的学习,使我们对电子工艺的理论有了初步的系统了解,我们了解到了焊普通元件与电路的技巧、以及单片机系统的工作原理。
这些知识不仅在课堂上有效,对以后的学习有很大的指导意义,在日常生活中更是有着现实意义,也对自己的动手能力是个很大的锻炼。
实践出真知,所有发明创造无一不是在实践中得到检验的。
没有足够的动手能力,就奢淡在未来的科研尤其是实验研究中有所成就。
在实验中锻炼了自己的动手技巧,提高了自己的解决问题的能力。
比如这次焊制电路板时元件的布局、线路走线都存在着很大的技巧,若这两个地方没设计好,都会给电路的焊机造成很大的麻烦。
通过这次实训,我对自己的能力和我们这个专业有了正确的认识,在以后的操作中,我们要吸取这一次的教训,不在犯类似的错误,在今后的学习中更要努力提高自己的能力,、不断完善自己做一个出色的人。
五、参考文献
【1】王质朴,吕云朋.MCS-51单片机原理接口及应用【M】.北京:
北京理工大学出版社,2009.
【2】康光华.电子技术基础模拟部分(第五版)
【M】.北京:
高等教育出版社
【3】康光华.电子技术基础数字部分(第五版)
高等教
育出版社
六、附录
系统电路图的PCB图如下: