单 片 机 验 收 报 告
姓名:学号:班级:学院:
实验一 流水灯实验
一、 实验目的
1) 简单 I/O 引脚的输出 2) 掌握软件延时编程方法 3) 简单按键输入捕获判断
二、 实验实现的功能
1) 开机是点亮 12 发光二极管,闪烁三下 2) 按照顺时针循环依次点亮发光二极管
3) 通过按键将发光二极管的显示改为顺逆时针方式
三、 系统硬件设计
四、 系统软件设计
/*
*******程序名:流水灯实验***********
*******程序功能:按键控制流水灯的顺逆旋转****** *******完成时间: 2015年12月29号下午*** *******完成人 :电科1303班 何海坤 */
/****头文件,注:如果没有添加stc10.h文件到keil安装路径里,则需要添加,否则请将头文件改成reg51.h*****/
#include
/****宏定义****/
#define uchar unsigned char #define uint unsigned int /***定义按键端口***/ sbit key = P3^6; sbit keyl = P0^5;
/****led控制数组******/ uchar table[] =
{0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xfb,0xf7,0xef,0xdf};
//当引脚电平为时,引脚对应的led亮
/******子函数定义*******/
void delay1ms(); //延时函数1ms时间 void delaynms(uint); //延时函数自定义毫秒数 void delay(); //定义延时函数100ms时间
void led_init(); //初始化led全体同时亮灭三次
/**主函数**/ void main() { uchar m = 0; uchar k = 0; keyl = 0 ; led_init(); //led初始化为全体led同时闪灭三次 while(1) { if(!key) { delaynms(5); if(!key) { m++; if(m == 2) { m = 0; } while(!key); } } if(m == 0) { k++; if(k == 13)k=1; } else k--; if(k == 0)k = 12; switch(k-1) { case 0 : P2 = table[0]; P3 = 0xff; delay(); break; case 1 : P2 = table[1];
相关推荐: