单片机实验报告.docx
- 文档编号:18077062
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:21
- 大小:86.46KB
单片机实验报告.docx
《单片机实验报告.docx》由会员分享,可在线阅读,更多相关《单片机实验报告.docx(21页珍藏版)》请在冰点文库上搜索。
单片机实验报告
单
片
机
实
验
报
告
班级:
09050541
学号:
0905054116
姓名:
王昆鹏
实验1P1口实验
一、实验目的:
1.学习P1口的使用方法。
2.学习延时子程序的编写和使用。
二、实验设备:
CPU挂箱、8051CPU模块
三、实验内容:
1.P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。
四、实验原理:
P1口为准双向口,P1口的每一位都能独立地定义为输入位或输出位。
作为输入位时,必须向锁存器相应位写入“1”,该位才能作为输入。
软件延时,如果用c编程时,通过使用keil的软件模拟,调试观察子函数(delay)延时时间。
(具体延时可以自行设定)
使用汇编语言的软件延时,可以计算其指令的周期数,大概估算其软件延时。
五、实验原理图:
P1口输出、输入实验
六、实验步骤:
执行程序:
P1.0~P1.7接发光二极管L1~L8。
七、程序框图:
循环点亮发光二极管(具体延时可以自行设定)
八、程序代码
NAMET1_1
ORG0000H
LJMPSTART
ORG0030H
START:
MOVA,#0FEH//将11111110赋给A
LOOP:
RLA//A循环左移
MOVP1,A//把A赋给端口P1
LCALLDELAY//延时0.16s
JMPLOOP//循环
;延时函数
DELAY:
MOVR1,#200
DEL1:
MOVR2,#200
DEL2:
DJNZR2,DEL2
DJNZR1,DEL1
RET
END
实验2中断口实验
一、实验目的:
1.学习外部中断技术的基本使用方法。
2.学习中断处理程序的编程方法。
二、实验设备:
CPU挂箱、8051CPU模块
三、实验内容:
通过设定两个中断使能和触发方式,并编写相应的中断服务子函数,改变led灯的变化情况。
当按下KEYBOARD的按键时8个led都灭,当把k1向上拉再复位后,4个led亮,4个灭。
四、实验原理:
参考《单片机原理及接口技术》第三版,北京航空航天大学出版社。
五、实验步骤:
P1.0~P1.7接发光二极管L1~L8。
将单片机上的INT0和KEYBOARD的P-相连接。
将单片机上的INT1和k1相连接,默认初始化时k1向下拉(远离led的一端)。
六、实验说明:
在编写相应的中断程序中,中断名字必须为IN0,IN1否则要对应的中断服务程序入口写,例如中断0的中断服务程序入口为0200h。
1.硬件安装说明
P1.0~P1.7接发光二极管L1~L8
将单片机上的INT0和KEYBOARD的P-相连接
将单片机上的INT1和k1相连接,默认初始化时k1向下拉(远离led的一端)
2.调试方法
初次使用时按下debug按钮后按下run,从新烧写时先按下复位,然后再按debug最后按run
3,功能说明
当按下KEYBOARD的按键时8个led都灭,当把k1向上拉再复位后,4个led亮,4个灭。
七、程序代码
NAMET3
FLAG0BIT30H
FLAG1BIT39H
org0000H
LJMPSTART
org00003h
AjmpIN0
org0013h
AjmpIN1
ORG0030H
START:
SETBIT0
SETBEX0
SETBEX1
CLRIT1
SETBEA;中断0工作
MOVP1,#000H;
clrFLAG0
CLRFLAG1
loop:
jnbFLAG0,loop1
MOVP1,#0FFH
loop1:
JNBFLAG1,loop2
movP1,#0F0H
loop2:
jmploop
IN0:
setbFLAG0
clrFLAG1
RETI
IN1:
setbFLAG1
clrFLAG0
RETI
END
实验38279显示接口实验
一、实验目的:
1.掌握在8051系统中扩展8279键盘显示接口的方法。
2.掌握8279的工作原理和编程方法。
3.进一步掌握中断处理程序的编程方法。
二、实验设备:
CPU挂箱、8051CPU模块
三、实验原理:
三、实验原理:
本试验采用动态显示。
动态显示就是一位一位地轮流点亮显示器的各个位(扫描)。
本程序主要是由8279控制的led显示。
利用8279可实现对键盘/显示器的自动扫描,以减轻CPU的负担,且具有显示稳定、程序简单、不会出现误动作等特点。
本实验利用8279实现显示扫描自动化。
8279操作命令字较多,根据需要来灵活使用,通过本实验可初步熟悉其使用方法
四、实验电路:
五、实验步骤:
本试验不必接线
六、程序代码
NUMEQU30H
NAMET15;
org0000h
LJMPSTART0
org0030h
START0:
MOVDPTR,#0CFE9H;
MOVA,#0D1H;
MOVX@DPTR,A;;8279清除命令
WAIT:
MOVXA,@DPTR
JBACC.7,WAIT;等待
MOVNUM,#00H
START:
MOVR1,NUM
DISP:
MOVA,R1;从R1中取转换结果
SWAPA;分离高四位和低四位
ANLA,#0FH;并依次存放在50H到51H中
MOV50H,A
MOVA,R1
ANLA,#0FH
MOV51H,A
LOOP:
MOVDPTR,#0CFE9H
MOVA,#90H
MOVX@DPTR,A;写显示RAM命令字
MOVR0,#50H;存放转换结果地址初值送R0
MOVR1,#02H
DL0:
MOVA,@R0
ACALLTABLE;转换为显码
MOVDPTR,#0CFE8H;8279数据口地址
MOVX@DPTR,A;送显码输出
INCR0
DJNZR1,DL0
SJMPDEL1
DEL1:
MOVR6,#255;延时一段时间使显示更稳定
DEL2:
MOVR5,#255
DEL3:
DJNZR5,DEL3
DJNZR6,DEL2
MOVA,NUM
cjneA,#0ffh,AA
MOVNUM,#00H
JMPSTART
AA:
INCNUM;
LJMPSTART;循环
TABLE:
INCA
MOVCA,@A+PC
MOVDPTR,#TABNUM
MOVCA,@A+DPTR
RET
TABNUM:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H,00H
END
实验4定时器实验
———循环彩灯实验
一、实验目的:
1.学习8051内部计数器的使用和编程方法。
2.进一步掌握中断处理程序的编写方法。
二、实验设备:
CPU挂箱、8051CPU模块
三、实验原理:
1.定时常数的确定
定时器/计数器的输入脉冲周期与机器周期一样,为振荡频率的1/12。
本实验中时钟频率为6.0MHZ,现要采用中断方法来实现0.5秒延时,要在定时器1中设置一个时间常数,使其每隔0.1秒产生一次中断,CPU响应中断后将R0中计数值减一,令R0=05H,即可实现0.5秒延时。
时间常数可按下述方法确定:
机器周期=12÷晶振频率=12/(6×10⁶)=2us
设计数初值为X,则(216-X)×(2us=2×
s)=0.1s,可求得X=15535
化为十六进制则X=3CAFH,故初始值为TH1=3CH,TL1=AFH
2.初始化程序
包括定时器初始化和中断系统初始化,主要是对IP、IE、TCON、TMOD的相应位进行
正确的设置,并将时间常数送入定时器中。
由于只有定时器中断,IP便不必设置。
3.设计中断服务程序
中断服务程序除了要完成计数减一工作外,还要将时间常数重新送入定时器中,为下一次中断做准备,同时控制发光二极管按要求顺序燃灭。
四、实验题目
由8051内部定时器0按方式1工作,即作为16位定时器使用,每隔相应的秒钟T1溢出中断一次。
P1口的P1.0~P1.7分别接发光二极管的L1~L8。
要求编写程序模拟一循环彩灯。
彩灯变化花样可自行设计,
本程序中的彩灯循环:
第一种循环模式,从左到右将彩灯一一点亮;第二种循环模式,从右到左将彩灯一一点亮。
五、实验电路:
六、实验步骤:
P1.0~P1.7分别接发光二极管L1~L8即可。
七、实验说明
1.硬件安装说明
P1.0~P1.7接发光二极管L1~L8。
2.调试方法
初次使用时按下debug按钮后按下run,重新烧写时先按下复位,然后再按debug最后按run
3.功能说明
彩灯循环:
第一种循环模式,从左到右将彩灯一一点亮;第二种循环模式,从右到左将彩灯一一点亮。
八、程序代码
namet3
FLAGBIT90H;设置标志位
org0000h;程序入口
ajmpmain
org000bh
ajmpLCM;定时器中断入口
org0030H
main:
movTMOD,#01H;定时器0工作方式1
SETBTR0;软件运行定时器0
SETBET0;定时器0中断使能
CLRFLAG;标志位清零
MOVTH0,#000H
MOVTL0,#85H;定时0.130806s
MOVP1,#00H;p1口亮灯
MOVR0,#00H;r0寄存器用来计数
setbEA;总开关使能
LOOP:
jmpLOOP;等待定时器0中断
LCM:
MOVTH0,#000H;赋给初始值
MOVTL0,#85H
JBFLAG,AA;如果FLAG=0顺序执行,否则跳转
MOVDPTR,#TEMP_TAB1;读取TEMP_TAB1的首地址
MOVA,R0
MOVCA,@A+DPTR
MOVP1,A;把TEMP_TAB1取回的数值赋给p1口
INCR0;r0偏移位加一
CJNER0,#08H,BB;8次循环结束,r0清零,标志位置1
MOVR0,#000H
SETBFLAG
JMPBB
AA:
MOVDPTR,#TEMP_TAB2
MOVA,R0
MOVCA,@A+DPTR
MOVP1,A
INCR0
CJNER0,#08H,BB
MOVR0,#000H
clrFLAG
BB:
RETI
TEMP_TAB1:
DB0FEH,0FCH,0F8H,0F0H,0E0H,0C0H,80H,00H
TEMP_TAB2:
DB7fH,3fH,1fH,0fH,07H,03H,01H,00H
END
实验5D/A转换实验
一、实验目的:
1.了解D/A转换的基本原理。
1.了解D/A转换芯片0832的性能及编程方法。
2.了解单片机系统中扩展D/A转换的基本方法。
二、实验设备:
CPU挂箱、8051CPU模块
三、实验内容:
利用DAC0832,编制程序产生锯齿波、三角波、正弦波。
三种波形轮流显示。
四、实验原理:
D/A转换是把数字量转换成模拟量的变换,从D/A输出的是模拟电压信号。
产生锯齿波和三角波只需由A存放的数字量的增减来控制;要产生正弦波,较简单的手段是造一张正弦数字量表。
取值范围为一个周期,采样点越多,精度就越高。
本实验中,输入寄存器占偶地址端口,DAC寄存器占较高的奇地址端口。
两个寄存器均对数据独立进行锁存。
因而要把一个数据通过0832输出,要经两次锁存。
典型程序段如下:
MOVDPTR,#PORT
MOVA,#DATA
MOVX@DPTR,A
INCDPTR
MOVX@DPTR,A
其中第二次I/O写是一个虚拟写过程,其目的只是产生一个WR信号。
启动D/A。
五、实验电路:
六、实验步骤:
1、DAC0832的片选CS0832接CS0,输出端OUT接示万用表。
2、将短路端子DS的1、2短路(初试化已默认)
实验6D/A转换实验
一、实验目的:
1.了解D/A转换的基本原理。
3.了解D/A转换芯片0832的性能及编程方法。
4.了解单片机系统中扩展D/A转换的基本方法。
二、实验设备:
CPU挂箱、8051CPU模块
三、实验内容:
利用DAC0832,改变开关读数改变DA的显示数值。
四、实验原理:
本实验中,输入寄存器占偶地址端口,DAC寄存器占较高的奇地址端口。
两个寄存器均对数据独立进行锁存。
因而要把一个数据通过0832输出,要经两次锁存。
典型程序段如下:
MOVDPTR,#PORT
MOVA,#DATA
MOVX@DPTR,A
INCDPTR
MOVX@DPTR,A
其中第二次I/O写是一个虚拟写过程,其目的只是产生一个WR信号。
启动D/A。
五、实验电路:
实验7A/D转换实验
一、实验目的:
1.掌握A/D转换与单片机的接口方法。
2.了解A/D芯片ADC0809转换性能及编程方法。
3.通过实验了解单片机如何进行数据采集。
二、实验设备:
CPU挂箱、8051CPU模块
三、实验内容:
利用实验台上的ADC0809做A/D转换器,实验箱上的电位器提供模拟电压信号输入,编制程序,将模拟量转换成数字量,用数码管显示模拟量转换的结果。
四、实验原理:
A/D转换器大致有三类:
一是双积分A/D转换器,优点是精度高,抗干扰性好,价格便宜,但速度慢;二是逐次逼近法A/D转换器,精度、速度、价格适中;三是并行A/D转换器,速度快,价格也昂贵。
实验用的ADC0809属第二类,是八位A/D转换器。
每采集一次需100us。
ADC0809START端为A/D转换启动信号,ALE端为通道选择地址的锁存信号。
实验电路中将其相连,以便同时锁存通道地址并开始A/D采样转换,故启动A/D转换只需如下两条指令:
MOVDPTR,#PORT
MOVX@DPTR,A
A中为何内容并不重要,这是一次虚拟写。
在中断方式下,A/D转换结束后会自动产生EOC信号,将其与8031CPU板上的INT0相连接。
在中断处理程序中,使用如下指令即可读取A/D转换的结果:
MOVDPTR,#PORT
MOVXA,@DPTR
五、实验电路:
六、实验步骤:
1.0809的片选信号CS0809接CS0。
2.电位器的输出信号AN0接0809的ADIN0。
3.EOC接CPU板的p1.0
七、程序代码
NAMET15;0809实验
PORTEQU0CFA0H;ad0809的选择信号
org0000h
LJMPSTART0
org0030h
START0:
MOVDPTR,#0CFE9H;
MOVA,#0D1H
MOVX@DPTR,A;;8279清除命令
WAIT:
MOVXA,@DPTR
JBACC.7,WAIT;等待
START:
MOVDPTR,#PORT;启动通道0
MOVX@DPTR,A
MOVR0,#0EeH
LOOP1:
DJNZR0,LOOP1;等待转换完成
loop2:
jNbP1.0,loop2;检查转换完成
MOVXA,@DPTR
MOVR1,A
DISP:
MOVA,R1;从R1中取转换结果
SWAPA;分离高四位和低四位
ANLA,#0FH;并依次存放在50H到51H中
MOV50H,A
MOVA,R1
ANLA,#0FH
MOV51H,A
LOOP:
MOVDPTR,#0CFE9H
MOVA,#90H
MOVX@DPTR,A;写显示RAM命令字
MOVR0,#50H;存放转换结果地址初值送R0
MOVR1,#02H
MOVDPTR,#0CFE8H;8279数据口地址
DL0:
MOVA,@R0
ACALLTABLE;转换为显码
MOVX@DPTR,A;送显码输出
INCR0
DJNZR1,DL0
SJMPDEL1
DEL1:
MOVR6,#255;延时一段时间使显示更稳定
DEL2:
MOVR5,#255
DEL3:
DJNZR5,DEL3
DJNZR6,DEL2
LJMPSTART;循环
TABLE:
INCA
MOVCA,@A+PC
RET
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H,00H
END
实验8LCD显示实验
一、实验目的:
学习液晶显示的编程方法,了解液晶显示模块的工作原理。
掌握液晶显示模块与单片机的接口方法。
二、所需设备
CPU挂箱、8051CPU模块
三、实验内容
编程实现在液晶显示屏上显示中文汉字“中北大学信息通信学院自动控制专业”。
四、实验原理说明
五、实验步骤
1、实验连线
8255的PA0~PA7接DB0~DB7,PC7接BUSY,PC0接REQ,CS8255接CS0。
六、程序框图
实验9LCD显示实验
一、实验目的:
学习液晶显示的编程方法,了解液晶显示模块的工作原理。
掌握液晶显示模块与单片机的接口方法。
二、所需设备
CPU挂箱、8051CPU模块
三、实验内容
编程实现在液晶显示屏上显示中文汉字“中北大学”,有两种形式一种为16的点整,一种为24的点整。
四、实验原理说明
五、实验步骤
1、实验连线
8255的PA0~PA7接DB0~DB7,PC7接BUSY,PC0接REQ,CS8255接CS0。
六、程序框图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 实验 报告