1 / 20
文档名称:

单片机实验报告.doc

格式:doc   大小:167KB   页数:20页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

单片机实验报告.doc

上传人:花开花落 2018/3/8 文件大小:167 KB

下载得到文件列表

单片机实验报告.doc

相关文档

文档介绍

文档介绍:单片微型计算机原理及应用实验报告
学院名称
专业名称
学生姓名
学生学号
任课教师
实验报告成绩
教务处制
2015年 1 月 13 日
1. 单片机实验平台简介
实验采用风标电子微控制器仿真实验实训箱,包含丰富的硬件资源与接口电路、多种处理器模块。系统采用“核心板+底板”双层结构,通过更换不同型号核心板,可学****不同系列的单片机及CPLD等。此实验系统针对快速掌握运用单片机和CPLD而开发的,含大量的硬件资源,能不同程度地满足现代电子技术实验的要求。同时,本系统丰富的功能单元,能够做出超出大纲要求的的综合实验。
uVision 4软件简介
Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,在功能上、结构性、可读性、可维护性上有明显的优势。提供了包括C编译器、宏汇编、连接器、库管理和一个强大的仿真调试器。使用C语言编程,Keil几乎就是必选,其方便易用、强大的软件仿真调试工具令人事半功倍。
实验一
I/O开关量输入实验
[实验目的]
熟悉单片机的最小系统,了解单片机I/O的结构;掌握按键键值的读入和处理;学****简单程序的编写。
[实验内容]
MCU-AT89S52
8位独立按键
8位独立LED
P10
K1
P11
K2
P00~P07
D1~D8
[实验要求]
1、利用单片机,按键和发光二极管,构成一个LED灯控制电路;
2、上电时, 点亮LED, 按下K1时, LED向左移一位,按下K2时, LED向右移一位。
[实验步骤]
1、打开Uv4 IDE环境,选择菜单Project的下拉菜单Open Project选项, 加载后缀名为uvproj的工程文件。
2、选择菜单Project的下拉菜单Options for Target选项。在弹出的窗口中,选择output选项,在Creat HEX File的勾选项中,勾选。这样才能生成HEX文件。
3、选择菜单Project的下拉菜单Build target选项,如无错误或特别警告,编译链接完成后就会产生相应工程的HEX文件了。
[程序及注释]
#include <>
#include <>
#define uchar unsigned char //数据类型宏定义
#define uint unsigned int
/**********单片机IO口引脚定义********************************************/
#define LED P0
sbit K1 = P1^0;
sbit K2 = P1^1;
/**********函数定义******************************************************/
uchar scan_key();
void proc_key(uchar key_v);
void delayms(uchar ms);
/**********主函数********************************************************/
void main(void)
{
uchar key_s,key_v;
key_v = 0x03; //初始化IO口
LED = 0xfe;
while(1)
{
key_s = scan_key();
if(key_s != key_v) //判断按键是否按下
{
delayms(10); //延时消抖
key_s = scan_key();
if(key_s != key_v)
{
key_v = key_s;
proc_key(key_v);
}
}
}
}
/**********键盘扫描函数**************************************************/
uchar scan_key()
{
uchar key_s;
key_s = 0x00;
key_s |= K2;
key_s <<= 1;
key_s |= K1;
return key_s; //返回按键号
}
/**********键盘处理函数**************************************************/
void proc_key(uchar key_v)
{
if((key_v & 0x01) == 0)
{
LED = _cror_(LED,1); //循环右移一