单片机原理及其应用实验报告.doc
《单片机原理及其应用实验报告.doc》由会员分享,可在线阅读,更多相关《单片机原理及其应用实验报告.doc(51页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、北航单片机原理及其应用 实验报告班级:110323姓名:赵敏杰学号:11031064同组者:郑硕学号:110311052实验一实验一 单片机开发环境以及单片机开发环境以及 I/OI/O 使用实验使用实验一实验目的一实验目的 1熟悉 MCS-51 系列单片机开发软件的使用 2掌握单片机 I/O 口的使用 3学习延时子程序的编写和使用二实验内容二实验内容 1 1验证性实验验证性实验 (1 1)实验内容:)实验内容: I/O 口做输出口,I/O 口接一个 LED 发光二极管,使其闪烁。 有关说明: 根据 LED 的单向导通性,可以用单片机的 P1.0(也可以是其他 I/O 口)作为 LED 的控制端
2、。当 P1.0 输出为低电平时,LED 灭,反 之,LED 亮。 本实验系统晶振为 11.0592MHz,则一个机器周期为 12/11.0592us=1.085us, 为方便编写延时函数,认为一个机器周期为 1us。 硬件连接: 用导线将试验箱中的 P1.0 与 L1 相连。程序: C C 语言程序语言程序 #include /89S52 寄存器定义头文件 /*-延时子程序(有参函数),t=n*10ms-*/ void delay(unsigned char n) unsigned char i,j,k; for(i=0;i /89S52 寄存器定义头文件 void main() while(
3、1) P0=0xff; /对端口写“1“,作为高阻抗输入端用 if(P0_0) /判断 P0.0 是否为高电平 P1_0=0; else /如果 P0.0 不是高电平,则执行后面的语句 P1_0=1; 汇编语言参考程序 ORG 00H LJMP MAIN ORG 30H MAIN:JB P0.0,DEL ;识别按键是否闭合 SETB P1.0 LJMP MAIN DEL:CLR P1.0 LJMP MAIN END实验现象:实验现象: 可以看到 LED1 的状态和开关 1 的状态一致。52.2.设计性实验设计性实验 实验内容: 模拟舞台灯光控制实验 具体要求: P0.0 和 P0.1 口连接两
4、路拨动开关,P1 口连接 8 路 LED。不 同的开光状态控制 LED 进行流水灯、闪烁等,从而达到模拟舞台炫 耀灯光控制的目的。 当 P0.1 和 P0.0 的状态为 00 时,8 路 LED 从右至左流水点 亮,具体循环顺序为:L1L2L3L4L5L6L7L8L1,如 此重复循环; 当 P0.1 和 P0.0 的状态为 01 时,8 路 LED 从左至右流水点亮, 具体循环顺序为: L8L7L6L5L4L3L2L1L8,如此重复循环; 当 P0.1 和 P0.0 的状态为 10 时,8 路 LED 交替闪烁,具体循 环顺序为:L1、L3、L5、L7L2、L4、 L6、L8 L1、L3、L5
5、、L7,如此重复循环下去; 当 P0.0 和 P0.1 的状态为 11 时,8 路 LED 一起闪烁,具体循 环顺序为:全灭全亮全灭,如此重复下去。 硬件连接:用导线将实验箱中的 P0.0 与开关 K1 相连,P0.1 与开关 K2 相连,P1.0P1.7 分别与 LED 发光二极管 L1L8 相连。程序: C C 语言程序语言程序 #include /89S52 寄存器定义头文件void delay(unsigned char n) unsigned char i,j,k; for(i=0;i1; if(P0_1!=0|P0_0!=1)break; if(P0_1=1 for(i=1;iun
6、signed char STATE;unsigned char s0;/*-延时子程序(有参函数) ,t=n*10ms-*/void delay(unsigned char n) unsigned char i,j,k;for(i=0;iint time;void main() TMOD=0x01; /定时器 0 工作方式 1TH0=64614/256; /计算初值TL0=64614%256;EA=1; /CPU 开中断ET0=1; /开定时器中断 0TR0=1; /开启定时器 0 并开始工作while(1); /等待中断/*-定时器 0 中断服务函数-*/void time0() inter
7、rupt 1 time+; /每 1ms,time 加 1if(time=500) /time 加满 500 次后,0.5s 时间到 time=0; /time 清零,重新计数P1+;TH0=64614/256; /重新装载定时器初值TL0=64614%256;15汇编语言参考程序汇编语言参考程序ORG 0000HJMP START ;在首地址处放置跳转指令;以免主程序占用中断入口地址ORG 000BH ;定时器 0 程序入口地址JMP ET0PORG 0030HSTART:MOV TMOD,#01H ;定时器 0,工作方式 1MOV TH0,#4CH ;定时器装载初值,50ms 中断一次MO
8、V TL0,#00H ;这里需要注意,前面的 c 程序定时时间为;1ms,这里汇编定时时间为 50ms,因为汇编;数据长度只支持到 8 位,如果定时时间为 1ms,;500ms 需要中断 500 次,汇编无法支持,所以;定时时间改为 50msSETB EA ;CPU 开中断SETB ET0 ;开定时器中断SETB TR0 ;定时器开始工作MOV A,#0AHCALL LOOPLOOP: CJNE A,#00H,LOOP ;A 不等于零,跳转 LOOPINC B ;B 加 116MOV P1,BMOV A,#0AHJMP LOOP ;/*-定时器 0 中断程序-*/ET0P:DEC A ;A 减
9、 1MOV TH0,#4CHMOV TL0,#00HRETIEND实验现象:实验现象:可以看到用 P1 口所接的 8 路 LED 表示的二进制数每隔 0.5s 加 1。2.2.设计性实验设计性实验实验内容:模拟救护车优先的交通灯控制实验具体要求:具体要求为用两组不同颜色的 LED 分别模仿两个路口的“红灯”、 “绿灯” 、 “黄灯” 。平时两组交通灯按规律点亮,具体规律为:南北路口:绿灯(5s)黄灯(2s)红灯(5s)黄灯(2s)绿灯(5s)17东西路口:红灯(5s)黄灯(2s)绿灯(5s)黄灯(2s)红灯(5s)当救护车来时(用负脉冲触发外部中断表示救护车到来) ,两个路口马上都变成红灯让救
10、护车优先通过,红灯保持 3s,待救护车通过以后,两个路口的交通灯恢复正常的工作状态。实验中的交通灯点亮的时间需要用定时器精确定时,不能使用延时函数。硬件连接:INT0 与负脉冲相连,LED 与单片机的连接没有固定要求,下图只是提供一种参考接法。程序:# includeunsigned char STATE;unsigned char s0;18/*-延时子程序(有参函数) ,t=n*10ms-*/void delay(unsigned char n) unsigned char i,j,k;for(i=0;iint time,i;unsigned char STATE;unsigned cha
11、r m;void delay(unsigned char n)unsigned char i,j,k;for(i=0;i=5000 TH0=64614/256; /重新装载定时器初值TL0=64614%256;void int0() interrupt 0 P1=0x24;ET1=1;TR1=1;TH1=64614/256; /重新装载定时器初值TL1=64614%256;while(m#define uchar unsigned char /变量类型定义uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, /七段码 0-70x7f
12、,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00;/七段码 8-f,最后一码 0x00 作用为熄灭数码管uchar segment6 ; /段选uchar byte6 ; /位选uchar play6=0,0,0,0,0,0 ; /要显示的数字uchar k;uchar d;27void Display_Init(); /数码管显示初始化void Uart_Init(); /串口初始化void Display(); /数码管显示函数/*-数码管显示初始化-*/void Display_Init() /初始化,通过定时器,按固定频率扫描数码管TMOD = TMOD
13、|0x01; /定时器 0,工作方式 1TH0 = 0xfc; /计算初值,定时时间为 1msTL0 = 0x66;EA = 1; /CPU 开中断ET0 = 1; /开定时器中断 0TR0 = 1; /开启定时器 0 并开始工作5/*-串口初始化-*/void Uart_Init()TMOD = TMOD|0x20; /定时器 1,工作方式 2TH1 = 0xfd; /波特率为 9600TL1 = 0xfd;SCON = 0x50; /设置定时器工作方式28PCON = 0;EA = 1; /CPU 开中断ES = 1; /允许串口中断TR1 = 1; /定时器 1 开始工作/*-扫描数码管
14、数据显示函数-*/void Display()uchar n=0 ;uchar m=0x01;for(n=0;n0x0f)segmentn=0x10; /显示的数据大于 0x0f,则该位熄灭elsesegmentn=playn;byten=m;m = m#define uchar unsigned char /变量类型定义uchar d ;uchar SENT ;void Int0_Init();void Uart_Init(); /串口初始化void Int0_Init()EA=1; /CPU 开中断EX0=1; /开外部中断 0IT0=1; /边沿触发方式32/*-串口初始化-*/void
15、 Uart_Init()TMOD = 0x20; /定时器 1,工作方式 2TH1 = 0xfd; /波特率为 9600TL1 = 0xfd;SCON = 0x50; /设置定时器工作方式PCON = 0;TR1 = 1; /定时器 1 开始工作/*-主函数-*/void main (void)Int0_Init() ;Uart_Init() ;while(1)if(SENT=1)SBUF=(d/100+0x30);while(TI=0) ;33TI=0;SBUF=(d%100/10+0x30);while(TI=0) ;TI=0;8SBUF=(d%10+0x30);while(TI=0) ;
16、TI=0;SBUF= ;while(TI=0) ;TI=0;EX0=1; /重新开外部中断SENT=0;/*-定时器 0 中断服务函数-*/void Int0() interrupt 0d+;if(d=0xff) d=0;SENT=1;34EX0=0; /关外部中断,防止按键抖动引起干扰实验现象:每按一下脉冲按钮,串口调试助手接收到的计数值增 1。2.2.设计性实验设计性实验实验内容:模拟上位机控制云台实验具体要求:监控行业通信协议应用最广的协议就是美国 PELCO-P、PELCO-D 协议, PELCO 主控与前端解码器是通过 RS422RS485 通信格式传输,PELCO 协议内容包括云台
17、控制命令,摄像机控制命令,辅助控制命令,预置位设置和调用命令。现在我们通过用 RS232 通信格式传输命令,模拟控制云台,云台控制协议选用 PELCO-D 协议。PELCO-D 协议数据格式: 1 位起始位、 8 位数据、 1 位停止位,无效验位。波特率:2400B/S命令格式如下:1. 该协议中所有数值都为十六进制数2. 同步字节始终为 FFH3. 地址码为云台的逻辑地址号,地址范围: 00H FFH4. 指令码表示不同的动作355. 数据码 1 、 2 分别表示水平、垂直方向速度( 00-3FH ) ,FFH 表示“ turbo ” 速度6. 校验码 =(字节 2 + 字节 3 + 字节
18、4 + 字节 5 + 字节 6 )/100H本次实验的具体要求为根据云台控制的 PELCO-D 通讯协议,上位机通过串口调试软件以 PELCO-D 的格式向下发送指令,发送指令应以十六进制格式发送。由于是模拟云台控制,所以只需要模拟其中几条常用的命令,命令具体如下:云台向上运动:0xff,0x01,0x00,0x08,0x00,0xff,0x08,云台向下运动:0xff,0x01,0x00,0x10,0x00,0xff,0x10,云台向左运动:0xff,0x01,0x00,0x04,0xff,0x00,0x04,云台向右运动:0xff,0x01,0x00,0x02,0xff,0x00,0x02
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 原理 及其 应用 实验 报告
限制150内