收藏 分享(赏)

MCS-51单片机实验指导书.doc

上传人:涵涵文库 文档编号:3508566 上传时间:2018-11-09 格式:DOC 页数:39 大小:1.50MB
下载 相关 举报
MCS-51单片机实验指导书.doc_第1页
第1页 / 共39页
MCS-51单片机实验指导书.doc_第2页
第2页 / 共39页
MCS-51单片机实验指导书.doc_第3页
第3页 / 共39页
MCS-51单片机实验指导书.doc_第4页
第4页 / 共39页
MCS-51单片机实验指导书.doc_第5页
第5页 / 共39页
点击查看更多>>
资源描述

1、MCS-51 单片机实验指导书目录1. 实验板使用说明 .21.1 单片机实验板简介 .21.2 实验板电路原理图 .21.3 USB 转串口驱动的安装 41.4 下载软件的使用 .52. 单片机实验 .6实验 1 红黄绿灯控制 6实验 2 键盘 LED 数码管显示 7实验 3 定时器中断实验 10实验 4 计数器实验 12实验 5 AD 转换实验 18实验 6 PC 机与单片机串口通信实验 .20实验 7 温度测量实验 22实验 8 数模转换实验 25实验 9 IIC 和 EEPROM 存储实验 .27实验 10 频率测量实验 341.实验板使用说明1.1 单片机实验板简介单片机实验板是西华

2、大学机械工程与自动化学院在长期教学实践中设计的,非常适合单片机教学的一种实验装置。它有以下特点:不需要其他附件,即可以在任何一台有 USB 接口的 PC 机或笔记本电脑上使用;价格便宜,解决了许多院校经费不足的问题;可以开设 LED,LCD,键盘,蜂鸣器,AD 转换,DA 转换,温度测量,光电计数,压频转换,IIC 总线,PC 与下位机串口通信,RS485 通信等各种实验,满足教学需要。图 1.1 实验板各部分名称及功能实验板与 PC 机通过公对公 USB 线连接,实验板上 USB 接口给实验板提供电源的同时,且可以通过 USB 转串口芯片给实验板下载程序和与 PC 机进行串口通信。本实验板采

3、用的是宏晶公司的 STC89C52RC 单片机,可以通过串口烧录程序,无需仿真器。1.2 实验板电路原理图实验板电路图如图 1.2 所示。为了满足多种实验的需求和入门编程的便捷,单片机的引脚许多复用,但没有使用锁存器来扩展 IO 口。实验板上引出了 DA 输出,P0 口,P1 口,P2 口, P3 口,电源扩展口,485 通信口,方便外接实验。为了满足单片机的冷启动(下载程序时先断电再通电)要求,电源按钮采用自锁开关。无论在 PC 机还是笔记本电脑上都有USB 接口,所以实验板直接由 USB 接口供电,实验板上 CH340G 将 USB 转换为串口为单片机下载程序。12345678JBELD9

4、0RKxPA/VXST.INWCuFG_reqabcdfgpUMOHQY与+-#o=(in)* zk图 1.2 实验板电路原理图1.3 USB 转串口驱动的安装安装步骤如下:(1 ) 双击如图 1.3 所示的可执行文件图 1.3 驱动安装图标(2 ) 双击后会弹出如图 1.4 所示的对话框,所有值保持默认值,鼠标单击 INSTALL 按钮,此时对话框会变成如图 1.5 所示,INSTALL 和 UNINSTALL 变为灰色。这时我们需要等待一段时间,等两个按钮变成和图 4 一样(即 INSTALL 和 UNINSTALL 不为灰色) ,驱动安装完毕。图 1.4 驱动安装窗口图 1.5 驱动正在

5、安装窗口(3 ) 在我的电脑图标上单击右键,选择管理,在弹出的对话框中单击设备管理器,展开端口即可以看到实验板对应的串口号,如图 1.6 所示。图 1.6 驱动正确安装1.4 下载软件的使用在 windows 下运行 STC_ISP.EXE,界面和操作步骤如图 1.7 所示图 1.7 ISP 界面2.单片机实验实验 1 红黄绿灯控制1.实验目的(1) 学习 Keil C51 集成编译软件的使用和调试程序方法。(2) 学习将用户程序下载到应用系统的方法。(3) 掌握 STC89C52 单片机的 I/O 端口的控制和使用方法。2.实验内容(1)编写程序要求:利用单片机的 P1.0, P1.1, P

6、1.2 控制 3 个 LED 灯,模仿控制交通灯(红灯亮 4 秒,黄灯亮 2 秒, ,黄灯和绿灯同时亮 1 秒,绿灯亮 4 秒,如此循环) 。3.实验电路见图 1.24.实验参考程序(1)程序流程图(2)C 语言参考程序#include“reg52.h“#define uchar unsigned char#define uint unsigned int/*定义红黄绿灯对应的单片机引脚*/sbit Green_LED = P10;sbit Yellow_LED = P11;红灯亮延时 4S黄灯亮延时 2S黄、绿灯亮延时 1S延时 4S绿灯亮sbit Red_LED = P12;/*毫秒延时函

7、数*/void delay_ms(uint num)uchar i;while(num-)for(i = 0 ; i #include“LCD1602.h“#define uchar unsigned char#define uint unsigned intuint CountNum = 0;/*计数器初始化*/void Timer0_Init()TMOD |= 0x05;ET0 = 0;TR0 = 1;TH0 = 0X00;TL0 = 0X00;/*主函数*/void main()LCD1602_init();LCD1602_string(1,1,“ Num Count Test“);LC

8、D1602_string(2,1,“ Num:“);Timer0_Init();while(1)CountNum = (TH0 999)CountNum = 0;TH0 = 0;TL0 = 0;Display_3num(2,6,CountNum);#ifndef _1602_H#define _1602_H#include#define uchar unsigned char#define uint unsigned intsbit E=P24; /1602 使能引脚sbit RS=P36; /1602 数据 /命令选择引脚void LCD1602_init(void);void LCD160

9、2_char(uchar hang,uchar lie,char sign);void LCD1602_string(uchar hang,uchar lie,uchar *p);void Display_3num(uchar X,uchar Y,int num);void Display_2num_dot(uchar X,uchar Y,int num);void Display_3num_dot(uchar X,uchar Y,int num);#endif#include “LCD1602.h“/* 名称 : delay()* 功能 : 延时, 延时时间大概为 140US。* 输入 :

10、无* 输出 : 无*/void delay_1602()int j;/ for(i=0; i#include“LCD1602.h“#include“ADC0832.h“#define uchar unsigned char#define uint unsigned intuchar Voltage = 0;/*主函数*/void main()LCD1602_init();LCD1602_string(1,1,“ ADC0832 Test“);LCD1602_string(2,1,“ Voltsge: V“);while(1)Voltage = adc0832(1);Display_2num_d

11、ot(2,10,Voltage*50/255);#include#include#define uchar unsigned char#define unit unsigned intsbit ADCS =P15;sbit ADDI =P32;sbit ADDO =P17;sbit ADCLK=P16;uchar adc0832(uchar channel)uchar i=0;uchar dat=0;if(channel=0)channel=2;if(channel=1)channel=3;ADDI=0;ADCS=1;ADCLK=0;ADDI=1;ADCS=0;ADCLK=1;ADCLK=0;

12、ADCLK=1;ADDI=channelADCLK=0;ADCLK=1;ADDI=(channel1)ADCLK=0;ADDI=1;dat=0;for(i=0;i#include “ADC0832.H“#define uchar unsigned char#define uint unsigned intuchar Voltage = 0;/*串口初始化函数*/void Usart_Init(void)/串口初始化TMOD = 0x21;/设置定时器工作为 8 位自动重装模式TH1 = 0xFD;/设置波特率为 9600TL1 = 0xFD;/TR1 = 1;/开定时器 1SM0 = 0;/S

13、M1 = 1;/设置串口工作为 8 位异步收发REN = 1;/允许接收ES = 1;/打开串行中断EA = 1;/打开总中断/*串口发送一个字节函数*/void Send(uchar dat)SBUF = dat;while(!TI);TI = 0;/*主函数*/void main()Usart_Init();while(1)Voltage = adc0832(1);/*串口接收中断函数*/void Usart_INt() interrupt 4RI = 0;if(SBUF = 0xaa)Send(Voltage);5.实验步骤(1)根据实验原理图编写程序,用“Keil uVision4”编

14、译软件进行编译,如未通过,则修改程序,直至通过。(2)用 STC-ISP.EXE 软件将所编写程序生成的“HEX”文件下载到实验板 STC89C52 芯片中(3)运行程序,6.实验报告要求(1)画出本实验相关的原理图。(2)写出调试成功的程序。(3)写出对本次实验的建议和感想。实验 7 温度测量实验1.实验目的掌握单总线温度传感器 DS18B20 的使用方法和编程。2.实验内容读取 DS18B20 温度传感器的温度显示到 LCD1602 液晶显示屏上。3.实验电路见图 1.24.实验参考程序(1)C 语言参考程序#include #include “DS18B20.H“#include “lc

15、d1602.H“#define uchar unsigned char#define uint unsigned intuint Temperval = 0;/*主函数*/void main()LCD1602_init();LCD1602_string(1,1,“Temprature Test“);LCD1602_string(2,1,“Temprature:“);while(1)Temperval = Read_18b20();Display_3num_dot(2,12,Temperval);#ifndef _18B20_H_#define _18B20_H_#define uint uns

16、igned int#define uchar unsigned char/uint Read_18b20(void);/uint Read_18b20();/#endif#include #include #include“DS18B20.h“#define uint unsigned int#define uchar unsigned charsbit DQ=P37;bit flag;/=延时时间为(6*n+8)us=void delay_6n8us(uchar n)while(n-)_nop_();void delay_1ms()uchar n;n=221;while(n-)_nop_()

17、;/=18B20 初始化函数=void init_1820()DQ=1; /DQ 复位_nop_(); DQ=0; /单片机将 DQ 拉到低电平delay_6n8us(80); /拉低 518usDQ=1;delay_6n8us(12); /等待 80usif(DQ=0)flag=1; /18B20 存在elseflag=0; /18B20 不存在DQ=1;delay_6n8us(6);/=写一个字节=void write_byte(uchar dat)uchar i;for(i=8;i0;i-)DQ=0;_nop_();DQ=datdelay_6n8us(6); /延时 44usDQ=1;d

18、at=1; /取下一位delay_6n8us(6);/=读取一个字节 =uchar read_byte(void)uchar i,dat;for(i=8;i0;i-)DQ=0;dat=1;DQ=1;if(DQ)dat|=0x80;delay_6n8us(6); /延时 44usreturn(dat);/=读取温度函数 =uint get_temp() uchar temp0,temp1;uint temp;if(flag) init_1820(); /复位 18B20write_byte(0xcc); /跳过 ROM 匹配write_byte(0x44); /发出温度转换命令delay_1ms

19、();init_1820(); /复位 18B20write_byte(0xcc); /跳过 ROM 匹配write_byte(0xbe); /发出读温度命令temp0=read_byte();temp1=read_byte();temp=temp1;temp#include“TLC5615.h“#include“ADC0832.h“#define uchar unsigned char#define uint unsigned intuchar Voltage = 0;/*主函数*/void main()while(1)Voltage = adc0832(1);DA_TLC5615(Volt

20、age#include “TLC5615.h“#include “intrins.h“sbit DA_DIN = P10;sbit DA_SCK = P11;sbit DA_CS = P12;void DA_TLC5615(uint val)uchar i;val = 6;DA_SCK = 0;DA_CS = 1;DA_CS = 0;for(i=0;i12;i+)if(valelseDA_DIN = 0;DA_SCK = 1;val = val1;DA_SCK = 0;DA_CS = 1;DA_SCK = 0;for(i=0;i12;i+);5.实验步骤(1)根据实验原理图编写程序,用“Kei

21、l uVision4”编译软件进行编译,如未通过,则修改程序,直至通过。(2)用 STC-ISP.EXE 软件将所编写程序生成的“HEX”文件下载到实验板 STC89C52 芯片中(3)运行程序,旋转比较电压调节旋钮,观察 DA 灯的亮度是否随着旋钮的旋转产生明暗变化。如果不符合要求,修改程序,按照步骤(1)开始重新做实验,直至成功。6.思考题(1)如何设计程序让 DA 灯变成呼吸灯?7.实验报告要求(1)画出本实验相关的原理图。(2)绘出参考程序的详细流程图,写出调试成功的程序。(3)回答思考题。实验 9 IIC 和 EEPROM 存储实验1.实验目的掌握 MSC-51 单片机的模拟 IIC 总线的编程方法,学会使用 EEPROM 存储器。2.实验内容编写程序读取按键值,当第一个按键按下的时候计数值减 1,第四个按键按下的收计数值加 1。用 1602 显示当前计数值,并将记录的数值存入 AT24C02 中,下次开机的时候读取存储的次数显示到 LCD1602 上。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 实用文档 > 往来文书

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报