实验装置及软件等
实验装置: 《STC试验箱》
实验资料 1. 《STC15系列单片机器件手册》
2. 《STC实验箱4-原理图》
-
《STC实验箱4-使用说明书》
-
《嵌入式系统技术实验指导书》
实验软件: 1. stc-isp-15xx-v6.86F.rar (程序下载工具)
2. c51setup (C51安装程序) 3. 程序函数库 ( .c 及.h文件)
学生自备: 1. 笔记本电脑一台,操作系统为Windows XP/Win7/Win8/Win10
实验准备:必须在参与实验之前,首先在笔记本电脑上安装c51setup和stc-isp-5xx-v6.86F软件,以供实验使用。
在实验过程中,首先必须先看懂模板程序,并在此基础上适当修改后再次实验,反复多次,以达到熟悉和掌握单片机嵌入式应用的编程技巧和方法。
软件安装
一.C51setup安装
鼠标双击 C51Settp,安装软件开始执行,弹出画面
点击 Next 下一步。
选择同意,点击Next,下一步。
请选择安装目录,缺省安装至C盘根目录,选择好后,点击Next,下一步。
在First Name和E-mail处输入你的名字和邮箱号,此处可以任意输入,不影响使用。然后点击Next,下一步。
等待安装完成后,点击Finish即完成安装。
安装完成后的C51开发器,最大编译程序不得超过2K容量,如果程序超过2K,请购买Keil C51正版软件。
二.stc-isp-15xx-v6.86F安装
将stc-isp-15xx-v6.86F.rar 拷贝至你需要安装的磁盘,然后解压即可,然后进入到解压好的目录,发送stc-isp-15xx-v6.86F文件快捷方式到桌面。
驱动程序安装:进入解压目录,选择USB to UART Driver子目录,再选择CH340_CH341子目录,双击ch341ser,弹出如下画面
点击安装,即可完成驱动程序的安装。安装完成后直接关闭即可。
添加STC单片机头文件及调试库
双击桌面stc-isp-15xx-v6.86F快捷方式,打开文件,进入画面
选择Keil仿真设置,再点击“添加型号和头文件到Keil中” ,弹出对话框
选择好keil 安装目录后,点击“确定” ,等到完成即可。
现在可以编程实验了。具体工程建立等相关信号请参见《STC实验箱4-使用说明书》和本实验指导书即可。
新建Keil项目
首先打开 Keil 软件,并打开“Project”菜单中的“New uVersion Project …”项
在下面的对话框中输入新建的项目名称,然后保存
首先选择项目所在目录,如果目录不存在,可以右击鼠标,新建文件夹来设置,之后,在文件名处输入项目名称,点击保存。
再选择CPU系列,此处选择STC MCU Database,点击“OK” 。
将STC展开,找到所需CPU类型,这里选择STC15W4K32S4,因为我们开发板上CPU为次型号,不得选择其他。
点击“OK” ,弹出新对话框。
此次对话框提示是否需要拷贝STARTUP.A51文件到项目中,一般情况下是必须拷贝的,我们这里由于已经将其拷贝至模板程序的src目录了,这里就不需要了,点击“否” ,完成项目的建立。
项目建立到此,就需要添加C源文件代码程序了。如果源文件代码不存在,需要编程,请点击菜单“File”—“New”来建立新的C源文件代码。
在编辑框里编写自己的C代码程序,如图示。
编程完成后,点击菜单“File”—“Save As”来保存我们编写的C代码。可以直接将C程序文件保存在项目目录中,也可与保存在其他目录中。选择好目录,输入文件名称,点击“保存” ,一个C代码文件就建好了。如此完成其他C代码文件建立。
添加已存在文件到项目中
在左边的Project框中,鼠标右击Target 1—Source Group 1,弹出菜单
选择 Add Existing Files to Group ‘Source Group 1’…
在上面查找范围选择文件所在目录,不限于当前项目目录,可以是任何目录,之后在文件列表框中选择文件,再点击“Add”即添加源文件到项目中了。一次可以选择多个文件,一同添加。
编译前的设置
前面介绍了项目的建立过程,现在要介绍一下编译前的一些设置。
为了方便,我们打开一个“跑马灯”实例程序。
这里我们可以看到,项目中包含几个.c C程序文件和一个STARTUP.A51启动文件。
现在开始设置,选则菜单Project下Options for Target Target 1’ …,
设置Output选项,如图示。输出文件目录可以通过左上Select Folder Objects…选择。
在设置Listing选项,如图示。此选项是将编译时将生成中间文件.lst存放在什么目录。目录可以通过左上的Select Folder for Listings…选择。
添加头文件所在目录,选择C51选项,点击Include Paths 后的…按钮
在次可以添加头文件所在目录,可以添加多项。添加结束后点击“OK” ,完成.h头文件路径的添加。
至此。我们可以编译程序了,选择菜单Project下Rebuiild all target files,开始编译程序,编译结果显示在屏幕下部的Build Output区。
如果有错误,在Build Output 会给出错误提示,请在修改错误后重新编译,直至没有错误为止。生成的.Hex文件将在之前选择的目录中,这是我们需要下载到目标板的执行文件的十六进制格式文件。
下载用户程序到目标板
双击桌面stc-isp-15xx-v6.86F快捷方式,打开文件,进入画面
第一步 选择单片机型号,此处选择IAP15W4K58S4。
第二步 选择串口号,可以通过点击“扫描” ,查到所有端口,再选择所需端口。
第三步 点击“打开程序文件”
通过选择文件选择.hex文件
文件选择好后,点击右下的“打开” 。
第四步 设置硬件选项
注意,必须端子使用内部IRC时钟和22.1184MHz,其他选项如上图示。因为程序安装22.1184MHz编写,选择其他频率将导致定时器定时不准和UART通讯不能正常通讯。
第五步 连接好编程USB电缆,点击左下“下载/编程” ,开始等待CPU复位,然后,轻按开发板上“SW19”主控芯片电源开关,之后进入编程,编程状态将在右下的信息区显示。如果出错,请予以纠正,直至编程成功为止。
整个编程过程即告结束。
库文件简介
为便于同学们实验,我们将一些基本的操作编写为库文件提供给大家,同学们只需要编写主程序,在主程序中加入相应函数库和头文件,即可完成实验。
请参见模板程序inc目录
C库文件和H文件:
-
Timer.c Timer.h
-
Display.c Display.h
-
KeyScan.c KeyScan.h
-
Uart0.c Uart0.h
-
Adc.c Adc.h
-
KeyAdc.c KeyAdc.h
H 文件介绍
-
Timer.h
extern bit TimerMsFlag;
// 供主程序作毫秒定时用标志
extern WORD pdata TimerMsWait;
// 供主程序作毫秒延时用变量
void Timer0Init( void );
// 启动定时器0 毫秒中断
-
Display.h
#define SIGN 0x10
// 负号
#define SPACE 0x11
// 空
void SendDataToDispBuf( BYTE dat, BYTE idx );
// 发送数据至显示缓冲区
// dat 0x00–0x0f, 0x10, 0x11
// idx 0x00–0x07
void SetPoint( BYTE idx );
// 设置小数点显示位置
// idx 0x00–0x07
void ClearPoint( void );
// 清除小数点位置
void DsipRefresh( void );
// 显示定时刷新,主程序每毫秒调用一次
-
KeyScan.h
BYTE GetKeyFromBuf( void );
// 获取键盘输入
// 有输入返回 0x00–0x0f
// 无输入返回 0xff
void KeyScan( void );
// 键盘扫描,主程序每毫秒调用一次
-
Uart0.h
#define BAUD_1200 0
#define BAUD_2400 1
#define BAUD_4800 2
#define BAUD_9600 3
#define BAUD_19200 4
#define BAUD_38400 5
#define BAUD_57600 6
#define BAUD_115200 7
// 波特率宏定义
void Uart0Init( BYTE baud );
// 设置Uart0波特率为baud, 8位数据, 无校验
// 使用Timer2作波特率发生器
BYTE GetCharFormUart0Buf( void );
// 从Uart0接收缓冲区获取字符
// 有输入字符返回 0x00–0xfe
// 无输入字符返回 0xff
BYTE PutCharToUart0Buf( BYTE cc );
// 发送一个字符到Uart0发送缓冲区
// 发送成功返回 0x01
// 发送失败返回 0x00
-
Adc.h
#define ADC_REF25V 2
#define ADC_NTC 3
#define ADC_KEY 4
// ADC通道号定义,与硬件有关,不得修改
void AdcInit( void );
// P1.2–P1.4作为模拟输入
BYTE AdcByteRead( BYTE ch );
// 从给定通道读取8位转换值
WORD AdcWordRead( BYTE ch );
// 从给定通道读取10位转换值
-
KeyAdc.h
BYTE GetKeyFromBuf( void );
// 获取键盘输入
// 有输入返回 0x00–0x0f
// 无输入返回 0xff
void KeyAdc( void );
// 键盘扫描,主程序每毫秒调用一次
实验一 跑马灯
一、实验目的
-
熟悉单片机定时器的使用方法;
-
熟悉单片机IO端口使用方法;
-
熟悉单片机数码管显示的控制方法;
-
熟悉Keil C51 编程环境和在次环境下的编程方法;
二、实验的主要内容
1、利用已有的Timer.c 和 Display.c 程序库,编写相应主程序。
2、完成一个“跑马灯”显示功能的实验,每秒中将显示数据左移或右移一位。
三、实验设备和工具
-
STC实验箱一台
-
自备笔记本电脑一台
-
笔记本电脑安装Keil C51开发软件。
-
相应库函数。
四、实验程序
模板程序下“跑马灯”项目。
五、实验报告要求
1. 实验结果总结。
2. 自己修改程序的实验结果对比。
3. 对STC15W系列定时器模式的理解。
4. 对STC15W系列IO端口模式的理解。
- 对STC15W系列定时器中断模式的理解。
实验二 扫描键盘
一、实验目的
-
熟悉单片机定时器的使用方法;
-
熟悉单片机IO端口使用方法;
-
熟悉单片机数码管显示的控制方法;
-
了解键盘扫描输入方法
-
熟悉Keil C51 编程环境和在次环境下的编程方法;
二、实验的主要内容
1、利用已有的Timer.c 、Display.c 和KeyScan.c程序库,编写相应主程序。
2、完成一个“扫描键盘”显示功能的实验,每输入一个字符,将显示数据左移,并将新的输入放到最后一位显示。
三、实验设备和工具
-
STC实验箱一台
-
自备笔记本电脑一台
-
笔记本电脑安装Keil C51开发软件。
-
相应库函数。
四、实验程序
模板程序下“扫描键盘”项目。
五、实验报告要求
1. 实验结果总结。
2. 自己修改程序的实验结果对比。
3. 对STC15W系列定时器模式的理解。
4. 对STC15W系列IO端口模式的理解。
- 对STC15W系列定时器中断模式的理解。
实验三 ADC转换
一、实验目的
-
熟悉单片机定时器的使用方法;
-
熟悉单片机IO端口使用方法;
-
熟悉单片机数码管显示的控制方法;
-
了解模拟数字转换原理与方法
-
熟悉Keil C51 编程环境和在次环境下的编程方法;
二、实验的主要内容
1.利用已有的Timer.c 、Display.c 和Adc.c程序库,编写相应主程序。
2.完成一个“ADC转换”显示功能的实验,并将转换结果在数码管上显示。
三、实验设备和工具
-
STC实验箱一台
-
自备笔记本电脑一台
-
笔记本电脑安装Keil C51开发软件。
-
相应库函数。
四、实验程序
模板程序下“ADC转换”项目。
五、实验报告要求
1. 实验结果总结。
2. 自己修改程序的实验结果对比。
- 对STC15W系列ADC工作模式的理解。
实验四 ADC键盘
一、实验目的
-
熟悉单片机定时器的使用方法;
-
熟悉单片机IO端口使用方法;
-
熟悉单片机数码管显示的控制方法;
-
了解模拟数字转换原理与方法
-
熟悉Keil C51 编程环境和在次环境下的编程方法;
二、实验的主要内容
1.利用已有的Timer.c 、Display.c 、Adc.c和KeyAdc.c程序库,编写相应主程序。
2.完成一个“ADC键盘”显示功能的实验,每输入一个字符,将显示数据左移,并将新的输入放到最后一位显示。
三、实验设备和工具
-
STC实验箱一台
-
自备笔记本电脑一台
-
笔记本电脑安装Keil C51开发软件。
-
相应库函数。
四、实验程序
模板程序下“ADC键盘”项目。
五、实验报告要求
1. 实验结果总结。
2. 自己修改程序的实验结果对比。
- 对STC15W系列ADC工作模式的理解。
实验五 串口通讯
一、实验目的
-
熟悉单片机定时器的使用方法;
-
熟悉单片机IO端口使用方法;
-
熟悉单片机数码管显示的控制方法;
-
了解单片机串行通讯的原理与方法
-
熟悉Keil C51 编程环境和在次环境下的编程方法;
二、实验的主要内容
1.利用已有的Timer.c 、Display.c 和Uart0.c程序库,编写相应主程序。
2.完成一个“串口通讯”显示功能的实验,每接收一个字符并将其返回,同时计数加1,并在数码管上显示计数。
三、实验设备和工具
-
STC实验箱一台
-
自备笔记本电脑一台
-
笔记本电脑安装Keil C51开发软件。
-
相应库函数。
-
终端仿真程序
四、实验程序
模板程序下“串口通讯”项目。
五、实验报告要求
-
实验结果总结。
2. 自己修改程序的实验结果对比。
-
对STC15W系列UART串口通讯工作模式的理解。