单片微型计算机原理及应用 实验报告
学院名称 专业名称 学生姓名
学生学号 任课教师
实验报告成绩
教务处 制 2015年 1 月 13 日
1. 单片机实验平台简介
实验采用风标电子微控制器仿真实验实训箱,包含丰富的硬件资源与接口电路、多种处理器模块。系统采用“核心板+底板”双层结构,通过更换不同型号核心板,可学习不同系列的单片机及CPLD等。此实验系统针对快速掌握运用单片机和CPLD而开发的,含大量的硬件资源,能不同程度地满足现代电子技术实验的要求。同时,本系统丰富的功能单元,能够做出超出大纲要求的的综合实验。
2.Keil uVision 4软件简介
Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,在功能上、结构性、可读性、可维护性上有明显的优势。提供了包括C编译器、宏汇编、连接器、库管理和一个强大的仿真调试器。使用C语言编程,Keil几乎就是必选,其方便易用、强大的软件仿真调试工具令人事半功倍。
实验一
I/O开关量输入实验
[实验目的]
熟悉单片机的最小系统,了解单片机I/O的结构;掌握按键键值的读入和处理;学习简单程序的编写。
[实验内容]
MCU-AT89S52 P10 P11 P00~P07 8位独立按键 K1 K2 8位独立LED 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
#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); //循环右移一位 }
else if((key_v & 0x02) == 0) { LED = _crol_(LED, 1); //循环左移一位 } }
/***********延时函数*****************************************************/ void delayms(uchar ms) // 延时子程序 { uchar i; while(ms--) { for(i = 0; i < 120; i++); } }
[实验现象及结果]
上电时, 点亮P00的LE,当按下K1时, LED向右移一位,按下K2时, LED向左移一位.
实验二 I/O驱动实验
[实验目的]
了解I/O口的电气特性和驱动能力。掌握程序编写的方法。了解LED电路中加入限
流电阻的原因。
[实验内容]
MCU-AT89S52 P00~ P07 8位独立LED D1~ D8 [实验要求]
利用单片机及8个发光二极管等器件,构成一个流水灯单片机系统。
[实验步骤]
1、打开Uv4 IDE环境,选择菜单Project的下拉菜单Open Project选项, 加载后缀名为uvproj的工程文件。