合肥学院单片机实验报告.docx
- 文档编号:4173441
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:23
- 大小:344.97KB
合肥学院单片机实验报告.docx
《合肥学院单片机实验报告.docx》由会员分享,可在线阅读,更多相关《合肥学院单片机实验报告.docx(23页珍藏版)》请在冰豆网上搜索。
合肥学院单片机实验报告
HefeiUniversity
单片机应用技术
实验报告
课程名称:
单片机应用技术
任课教师:
储忠
班级:
09级自动化
(1)班
姓名学号:
姓名学号:
日期:
2012年5月1日
实验一、构建单片机最小系统版和实验环境熟悉
1.1、单片机最小系统的组成原理图
图1单片机最小系统图
1.2、最小系统版的组成:
时钟电路,复位电路,电源电路。
1.3、单片机最小系统及工作原理
单片机最小系统主要由晶振电路和复位电路组成的,晶振电路是由晶振和瓷片电容构成的,我们是的晶振是11.0592Mhz,为52单片机提供时钟源。
复位电路是由按钮、电解电容和电阻组成的,为单片机提供复位功能,就此就构成了最小系统板。
AT89S52单片机是基于51内核的单片机,是在51单片机应有的功能上基础拓展的单片机,是属于MCS—51系列单片机中的高端单片机,它有运算器包括算术逻辑运算单元ALU、累加器ACC、寄存器B、暂存器TMP、程序状态字寄存器PSW、十进制调整电路等。
它能实现数据的算术逻辑运算、位变量处理和数据传送操作。
(1)控制器
单片机有控制器,它包括定时控制逻辑(时钟电路、复位电路),指令寄存器,指令译码器程序计数器PC,堆栈指针SP,数据指针寄存器DPTR以及信息传送控制部件等。
(2)时钟电路
单片机有时钟电路,在单片机芯片的内部有一个高增益反相放大器,输入端为XTAL1,输出端为XTAL2,一般在XTAL1与XTAL2之间接石英晶体振荡器和微调电容,从而构成一个稳定的自激振荡器,就是单片机的内部时钟电路,时钟电路产生的振荡脉冲经过二分频以后,才成为单片机的时钟信号。
电容C1和C2为微调电容,可起频率稳定、微调作用,我取用30pf电容。
晶振的频率范围是1.2MHz~12MHz,我取11.0592MHz。
(3)复位电路
单片机的复位电路需要外接,对于使用12MHZ的晶振的单片机,复位信号持续时间应超过4μs才能完成复位操作。
产生复位信号的电路有上电自动复位电路和按键手动复位电路两种方式。
我通过外部复位电路的电容充电来实现的单片机复位的,即人为的复位操作。
复位后内部暂存器的状态如下:
PC
0000H
TCON
00H
ACC
00H
TL0
00H
PSW
00H
TH0
00H
SP
07H
TL1
00H
DPTR
0000H
TH1
00H
P0~P3
FFH
SCON
00H
IP
××000000B
SBUF
不定
IE
0×000000B
PCON
0×××0000B
TMOD
00H
表1复位后状态表
(4)指令寄存器和指令译码器
指令寄存器中存放指令代码,CPU执行指令时,由程序存储器中读取的指令代码送入指令存储器,经译码器后由定时与控制电路发出相应的控制信号,完成指令所指定的操作。
(5)程序计数器PC
PC是一个16位计数器,其内容为单片机将要执行的指令机器码所在存储单元的地址。
PC具有自动加1的功能,从而实现程序的顺序执行。
由于PC不可寻址的,因此用户无法对它直接进行读写操作,但可以通过转移、调用、返回等指令改变其内容,以实现程序的转移。
PC的寻址范围为64KB,即地址空间为0000~0FFFFH。
(6)堆栈指针SP
SP为8位寄存器,用于指示栈顶单元地址。
所谓堆栈是一种数据结构,它只允许在其一端进行数据删除和数据插入操作的线性表。
数据写入堆栈叫入栈(PUSH),数据读出堆栈叫出栈(POP)。
堆栈的最大特点是“后进先出”的数据操作原则。
MCS-51系统复位后,SP初始化为07H。
(7)数据指针DPTR
数据指针DPTR为16位寄存器,它是MCS—51中唯一的一个16位寄存器。
编程时,既可按16位寄存器使用,也可作为两个8位寄存器分开使用。
DPH为DPTR的高八位寄存器,DPL为DPTR的低八位寄存器。
DPTR通常在访问外部数据存储器时作为地址指针使用,寻址范围为64KB。
1.4、测试程序:
实验代码见附录一
1.5、实验总结
单片机系统电路的基本模块有:
复位电路,晶振电路,电源接口,下载接口等主要模块。
在单片机最小系统的构建中,EA脚拉高是非常必要的,它可以影响单片机的正常工作。
在检测单片机是否正常工作,可以通过检测晶振两端的信号的波形形状。
在单片机正常工作条件下,其信号为正弦波。
经过一周的时间基本完成单片机最小系统板的焊接部分和单片机的工作原理,以及对单片机外围电路的焊接,知道了硬件部分的重要性,单片机最小系统板的焊接最主要是晶振部分和下载接口的焊接,它为单片机提供了做工作的频率,同时也为单片机提供下载程序的接口,是单片机的非常重要的外围电路。
实验二、跑马灯实验及74LS138译码
2.1、程序流程图及端口分配表:
开始
给A口赋值
0FFH
间接赋给
P1口
延时0.2S
带进位右移后赋给P1口
延时0.2S
带进位右移8次后带进位左移
延时0.2S
带进位左移7次
图5流水灯流程图
2.2、74LS138控制流水灯软件仿真图如下:
图6流水灯仿真图
2.3、74LS138控制流水灯实验程序:
实验代码见附录一
2.4、实验总结:
本次实验利用两种控制方式实现了流水灯功能。
单片机端口主要是利用基本的数据传输指令实现了流水灯功能,其中加入了一些花样的灯光显示功能;74LS138控制流水灯实验主要是利用138的片选,根据输入不同的A、B、C选中不同的输出端口,进而驱动LED显示。
进行本次实验需要知道基本的数据传输指令以及74LS138的真值表,知道这些完成本次实验还是比较简单的。
实验三、8255控制交通灯实验
3.1、实验原理
交通灯的变化规律是:
先假定一个十字路口为东南西北走向交通灯的初始状态为状态1,东西方向绿灯通车,南北方向红灯。
经过过一段时间(3S)转换状态2,东西方向黄灯闪亮,延时2S,南北方向仍然红灯。
再转换到状态3,东西方向红灯通车,南北方向绿灯。
过一段时间(3S)转换到状态4,南北方向黄灯闪亮,延时2S,东西方向仍然红灯。
最后循环至南北红灯,东西绿灯。
实验原理参考图:
图138255控制交通灯原理图
3.2、软件流程图
开始
初始化,全为红灯亮
延时
东西绿灯亮,南北红灯亮
延时
东西黄灯闪,南北红灯亮
延时
图158255控制交通灯原理图
3.3、实验源程序代码
见附录一
3.4、实验总结
通过本次交通灯实验,学会了使用8255芯片的初始化和编程方法。
同时认识到通过8255实现了I/O口的扩展。
本实验使用的是8255的方式0。
利用8255完成交通灯的四中状态切换。
第一种状态是东西方向是绿灯,南北方向是红灯。
第二种状态是东西方向是黄灯并且闪烁,南北方向是红灯。
第三种状态是东西方向是红灯,南北方向是绿灯。
第四种状态是东西方向是红灯,南北方向是黄灯,最后变到第一种状态。
在实现具体的硬件时,采用8255控制十二个LED,三个一组,分成四组来模拟实际交通灯。
其中的对面两组状态变化是相同一致的。
在完成仿真后在硬件电路中调试时,发现了一个问题。
显示的状态不对。
经过检查电路后发现电路的连线错了。
重新调试后,发现状态对了,交通灯正常了。
通过问题的解决,我对程序和电路有了更深的认识和理解。
实验四、8253方波实验
4.1、实验流程图如下:
开始
定时器初始化
产生10K方波
50分频
初始化通道1
200分频
1Hz
初始化通道0
图9方波主程序流程图
4.2、软件仿真图如下:
图10方波仿真图
4.3、实验程序
见附录一
4.4、实验总结:
本次实验实现了单片机P1.0口出来的1ms方波,经8253A的1000次分频(计数器1进行100次分频,计数器0进行10次分频)后,产生周期为1ms的方波,驱动蜂鸣器报警的功能。
实验主要利用单片机内部的定时计数及8253A的分频功能。
实验比较理想,相对上一个实验简单一点。
实验五继电器控制/光偶控制实验
5.1、实验原理图:
电磁继电器的工作原理和特性:
电磁式继电器一般由铁芯、线圈、衔铁、触点簧片等组成的。
只要在线圈两
端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。
当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点与原来的静触点(常闭触点)吸合。
这样吸合、释放,从而达到了在电路中的导通、切断的目的。
对于继电器的“常开、常闭”触点,可以这样来区分:
继电器线圈未通电时处于断开状态的静触点,称为“常开触点”;处于接通状态的静触点称为“常闭触点”。
当P13口出现高电平时,三极管导通继电器的线圈中通过电流,产生磁力把衔铁从常闭端吸到常开端口,小灯亮。
5.2、软件流程图
开始及初始化
延时去抖
按键按下?
把P1.3口取反赋给P1.3
结束
Y
N
5.3、实验调试:
将硬件电路焊制完成后,连接好电路,仔细检查无错误后,把继电器的程序下载进单片机中,按了按键发现小灯可以正常的亮与灭,说明自己写的程序没有用错误,可以正常的控制继电器。
5.4、实验代码
见附录一
5.5、实验总结
通过本此实验让我对继电器有了初步的认识,明白了继电器是干什么的,它是用在哪个地方的,知道了如何用单片机来控制的它。
通过这次单片机的实训让我对单片机有了一些认识,发现到了单片机的强大功能,用它来控制其他的器件比自己搭建电路省事的多了,通过了这次的学习也让我认识到了C语言的强大,不是以前想的那样学C语言是没有用的。
虽然自己完成的了这次的实验但要是学好单片机还有很长的路要走呢。
注:
最终实现电路图实物见附录二
附录一:
实验代码
由于本次实验电路实行了一体化,故程序代码一起烧录与C51单片机中以便于实现控制,其整体代码如下:
ORG0000H
AJMPSTART
ORG0003H
LJMPINTT0
ORG000BH
LJMPT0INT
ORG001BH
LJMPT1INT
ORG0400H
START:
CLRP2.0;使所有模块不工作
CLRP2.1
SETBP2.2;8255复位
NOP
NOP
CLRP2.2
CLRP2.3
SETBP3.0;8253绿灯灭
SETBIT0;下降沿中断
SETBEX0;开中断0
SETBEA
;---------------------------------------------------------------
/*SETBP2.7
MOVP0,#0F0H
CLRP2.7
MOVP0,#00H*/
;---------------------------------------------------------------
MOVR4,#00H
MAIN:
CJNER4,#01H,PROC_1
LCALLLED
PROC_1:
CJNER4,#02H,PROC_2
LCALLLS138
PROC_2:
CJNER4,#03H,PROC_3
LCALLIC_8255A
CLRET0
PROC_3:
CJNER4,#04H,PROC_4
LCALLIC_8253
CLRET1
PROC_4:
CJNER4,#05H,MAIN
LCALLJIDIAN
AJMPMAIN
DELAY:
;误差0us
MOVR7,#01H
DL1:
MOVR6,#8EH
DL0:
MOVR5,#02H
DJNZR5,$
DJNZR6,DL0
DJNZR7,DL1
RET
INTT0:
LCALLDELAYJ
MOVA,P3
ANLA,#04H
CJNEA,#00H,END_INT1
CLRP2.0
CLRP2.1
SETBP2.2;8255复位
CLRP2.2
CLRP2.3
SETBP3.0;8253绿灯灭
INCR4
CJNER4,#06H,END_INT1;实验项目计数,到达第5个实验时清零
MOVR4,#00H
END_INT1:
RETI
;功能:
使用P1口控制8个LED流水灯
;端口:
P1.0~P1.7\P2.0\P2.1
LED:
SETBP2.0;模块1工作
CLRP2.1
SETBP2.2;8255复位
CLRP2.2
CLRP2.3
MOVA,#0FFH
MOVP1,A
MOVDPTR,#TAB
MOVR0,#00H
LED_1:
MOVA,R0
MOVCA,@A+DPTR
MOVP1,A
CJNER4,#01H,LED_2;按键按下后立即跳出
LCALLDELAY1
CJNER4,#01H,LED_2;按键按下后立即跳出
MOVR5,#10
INCR0
CJNER0,#29,LED_1
MOVR0,#00H
AJMPLED_1
LED_2:
RET
;查表
TAB:
DB0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH
DB7FH,0BFH,0DFH,0EFH,0F7H,0FBH,0FDH
DB7EH,0BDH,0DBH,0E7H,0DBH,0BDH
DB3CH,99H,0C3H,99H,3CH
DB0AAH,55H,0AAH,99H
;闪烁延时函数
;0.5S
DELAY1:
MOVR5,#17H
D1:
MOVR6,#98H
D2:
MOVR7,#46H
DJNZR7,$
CJNER4,#01H,DELAY11;按键按下后立即跳出
DJNZR6,D2
CJNER4,#01H,DELAY11;按键按下后立即跳出
DJNZR5,D1
DELAY11:
RET
;功能:
使用74LS138控制8个LED流水灯,循环点亮,瞬间只有一个灯亮
;端口:
P1.0~P1.2\P2.0\P2.1
LS138:
CLRP2.0;模块2工作
SETBP2.1
SETBP2.2;8255复位
CLRP2.2
CLRP2.3
MOVA,#0
LS138_1:
MOVP1,A
CJNER4,#02H,LS138_3;按键按下后立即跳出
LCALLDELAY2
CJNER4,#02H,LS138_3;按键按下后立即跳出
INCA
CJNEA,#8,LS138_1
LS138_2:
DECA
MOVP1,A
CJNER4,#02H,LS138_3;按键按下后立即跳出
MOVR5,#13
LCALLDELAY2
CJNER4,#02H,LS138_3;按键按下后立即跳出
CJNEA,#0,LS138_2
AJMPLS138_1
LS138_3:
RET
;闪烁延时函数
;0.5S
DELAY2:
MOVR5,#17H
D3:
MOVR6,#98H
D4:
MOVR7,#46H
DJNZR7,$
CJNER4,#02H,DELAY22;按键按下后立即跳出
DJNZR6,D4
CJNER4,#02H,DELAY22;按键按下后立即跳出
DJNZR5,D3
DELAY22:
RET
;8255PA、PB、PC及控制字端口地址
;ADD_8255PAEQU02H0000A1A082538255
;ADD_8255PBEQU06H01
;ADD_8255PCEQU0AH
;ADD_8255CONEQU0EH
;-------------------------A------------------------
;|GREENYELLOWREDWHITE|
;|PA4PA5PA6PA7|
;|WHITEPA3PB7GREEN|
;|REDPA2PB6YELLOW|
;BYELLOWPA1PB5REDB
;|GREENPA0PB4WHITE|
;|WHITEREDYELLOWGREEN|
;|PB0PB1PB2PB3|
;-------------------------A------------------------
;A绿B红PA:
11101011EBH|PB:
11010111D7H
;A绿B红+黄灯PA:
11001001C9H|PB:
1001001193H
;A红B绿PA:
10111110BEH|PB:
011111017DH
;A红B绿+黄灯PA:
100111009CH|PB:
0011100139H
;功能:
使用定时器0,控制黄、绿、红三色灯
IC_8255A:
MOVP1,#0FFH;使P1口输出高电平,防止P1口扰乱后面的操作
SETBP2.0;使第一组灯有效
CLRP2.1;使译码器无效
CLRP2.2
CLRP2.3
CJNER4,#03H,IC_8255A_2;按键按下后立即跳出
MOVR0,#0EH;8255A控制字端口
MOVA,#80H;8255A的PA口为方式0、输出,PB口方式0、输出
LCALLWRITE
CJNER4,#03H,IC_8255A_2;按键按下后立即跳出
MOVTH0,#3CH;送计数初值
MOVTL0,#0AFH
MOVTMOD,#01H;16位计数方式
SETBTR0;启动TR0
SETBEA;启动EA
CJNER4,#03H,IC_8255A_2;按键按下后立即跳出
;控制系统启动后,A道的绿灯亮,B道的红灯亮
MOVR0,#02H;8255A端口
MOVA,#0EBH
LCALLWRITE
MOVR0,#06H;8255B端口
MOVA,#0D7H
LCALLWRITE
MOVA,#00H;作为1S计数器
MOVR3,#00H;作为交通灯状态变化计数器
MOVR5,#00H;黄灯状态计数器
MOVR1,#00H;判断是否为黄灯状态,=1:
A绿B红+黄灯=2:
;A红B绿+黄灯
SETBET0
IC_8255A_1:
CJNER4,#03H,IC_8255A_2;按键按下后立即跳出
AJMPIC_8255A_1
IC_8255A_2:
RET
T0INT:
INCA
INCR5
MOVR6,A;暂存A的值
;判断黄灯状态
;CJNER5,#10,JUDGE_YELLOW
CJNER1,#01,YELLOW_STATUS_1
;=1:
A绿B红+黄灯改为A绿B红
MOVR0,#02H;8255A端口
MOVA,#0EBH
LCALLWRITE
MOVR0,#06H;8255B端口
MOVA,#0D7H
LCALLWRITE
MOVR1,#03
YELLOW_STATUS_1:
CJNER1,#03,YELLOW_STATUS_2
;=3:
A绿B红改为A绿B红+黄灯
MOVR0,#02H;8255A端口
MOVA,#0C9H
LCALLWRITE
MOVR0,#06H;8255B端口
MOVA,#93H
LCALLWRITE
MOVR1,#01
YELLOW_STATUS_2:
CJNER1,#02,YELLOW_STATUS_3
;=2:
A红B绿+黄灯改为A红B绿
MOVR0,#02H;8255A端口
MOVA,#0BEH
LCALLWRITE
MOVR0,#06H;8255B端口
MOVA,#7DH
LCALLWRITE
MOVR1,#04
YELLOW_STATUS_3:
CJNER1,#04,JUDGE_YELLOW
;=4:
A红B绿改为A红B绿+黄灯
MOVR0,#02H;8255A端口
MOVA,#9CH
LCALLWRITE
MOVR0,#06H;8255B端口
MOVA,#39H
LCALLWRITE
MOVR1,#02
MOVR5,#00H
JUDGE_YELLOW:
MOVA,R6
;---------------------状态判断结束-----------------------------------------
CJNEA,#20,END_T0
MOVA,#00H;秒数重新计算
INCR3
CJNER4,#03H,END_T1;按键按下后立即跳出
CJNER3,#25,STATUS_1
;当延时25秒后,A、B道的黄灯同时变亮
MOVR0,#02H;8255A端口
MOVA,#0C9H
LCALLWRITE
MOVR0,#06H;8255B端口
MOVA,#93H
LCALLWRITE
MOVR1,#01
STATUS_1:
CJNER4,#03H,END_T1;按键按下后立即跳出
CJNER3,#30,STATUS_2
;当延时30秒后,A道转为红灯,B道转为绿灯,且延时25秒
MOVR0,#02H;8255A端口
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 合肥 学院 单片机 实验 报告