版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、/* 普中科技-* 实 验 名 : LED闪烁的简单试验* 实验说明 : 得到8盏LED交替亮灭的实验效果* 连接方式 : 见连接图* 注 意 : */-包含你要使用的头文件-/#include <reg51.h> /此文件中定义了51的一些特殊功能寄存器/-声明全局函数-/void Delay10ms(unsigned int c); /延时10ms/* 函 数 名 : main* 函数功能 : 主函数* 输 入 : 无* 输 出 : 无*/void main() while(1)/-数字前面加0x表示该数是十六进制的数,0x00就是十六进制的00-/-P2口一共有8个IO口,即
2、从P2.0到P2.7,而0x00二进制就是0000 0000-/-效果就是P2.0到P2.7都是0,即低电平。而如果你想给P2.1口赋高电平时-/-二进制就是0000 0001,就是十六进制0x01.-/P0 = 0x00; /置P0口为低电平Delay10ms(500); /调用延时程序,修改括号里面的值可以调整延时时间P0 = 0xff; /置P0口为高电平Delay10ms(50); / 调用延时程序/* 函 数 名 : Delay10ms* 函数功能 : 延时函数,延时10ms* 输 入 : 无* 输 出 : 无*/void Delay10ms(unsigned int c) /误差
3、0us unsigned char a, b;/-c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了-/ for (;c>0;c-)for (b=38;b>0;b-)for (a=130;a>0;a-); /* 普中科技-* 实 验 名 : LED二进制加法显示实验* 实验说明 : LED灯做二进制加1显示* 连接方式 : 见接线图* 注 意 : */#include <reg52.h>/-声明全局函数-/void Delay10ms(unsigned int c); /延时10ms/* 函 数 名 : main* 函数功能 : 主函数* 输 入
4、 : 无* 输 出 : 无*/void main() unsigned char Num = 0x00; while (1) P0 = Num; Delay10ms(50); /延时函数 Num+; /* 函 数 名 : Delay10ms* 函数功能 : 延时函数,延时10ms* 输 入 : 无* 输 出 : 无*/void Delay10ms(unsigned int c) /误差 0us unsigned char a, b;/-c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了-/ for (;c>0;c-)for (b=38;b>0;b-)for (a=
5、130;a>0;a-); /* * 普中科技-* 实 验 名 : 流水灯实验* 实验说明 : 延时实现LED流水灯效果P2口八个灯作跑马灯。采用了寄存器存中间数* 连接方式 : 见接线图* 注 意 : */-包含你要使用的头文件#include <reg52.h> /此文件中定义了51的一些特殊功能寄存器#include <intrins.h>/-声明全局函数-/void Delay10ms(unsigned int c); /延时10ms /* 函 数 名 : main* 函数功能 : 主函数* 输 入 : 无* 输 出 : 无*/main()unsigned
6、char LED;LED = 0xfe; /0xfe = 1111 1110 while (1) P0 = LED; Delay10ms(50); LED = LED << 1; /循环右移1位,点亮下一个LED "<<"为左移位 if (P0 = 0x00)/当它全灭的时候,重新赋值 LED = 0xfe; / 0xfe = 1111 1110 /* 函 数 名 : Delay10ms* 函数功能 : 延时函数,延时10ms* 输 入 : 无* 输 出 : 无*/void Delay10ms(unsigned int c) /误差 0us unsi
7、gned char a, b;/-c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了-/ for (;c>0;c-)for (b=38;b>0;b-)for (a=130;a>0;a-); /* * 普中科技-* 实 验 名 : LED二进制加法显示实验* 实验说明 : LED灯做右移跑马灯* 连接方式 : 见接线图* 注 意 : */-包含你要使用的头文件#include <reg51.h>#include <intrins.h>/-声明全局函数-/void Delay10ms(unsigned int c); /延时10ms/*
8、函 数 名 : main* 函数功能 : 主函数* 输 入 : 无* 输 出 : 无*/void main(void)unsigned char LED;LED = 0xFE;while(1)P0 = LED;Delay10ms(50);LED = _crol_(LED,1); /循环右移1位,点亮下一个LED 此函数于库函数/* 函 数 名 : Delay10ms* 函数功能 : 延时函数,延时10ms* 输 入 : 无* 输 出 : 无*/void Delay10ms(unsigned int c) /误差 0us unsigned char a, b;/-c已经在传递过来的时候已经赋值了
9、,所以在for语句第一句就不用赋值了-/ for (;c>0;c-)for (b=38;b>0;b-)for (a=130;a>0;a-); /* * 普中科技-* 实 验 名 : 跑马灯实验* 实验说明 : LED灯做跑马灯左右移动* 连接方式 : 见接线图* 注 意 : */-包含你要使用的头文件#include <reg52.h>/-声明全局函数-/void Delay10ms(unsigned int c); /延时10ms/-声明一个全局变量-/unsigned char LED;/* 函 数 名 : main* 函数功能 : 主函数* 输 入 : 无*
10、 输 出 : 无*/void main() unsigned char i; /-首先赋值LED-/LED = 0xFE;while (1) /-LED往左闪烁-/ for (i = 0 ;i < 7 ; i+) /-将LED 的值赋给P2口-/P0 = LED;Delay10ms(50); /延时一下,为了让灯有持续点亮的时间LED = LED << 1; / 将LED里面的值左移一位,然后重新赋给LEDLED = LED | 0x01; / 移位后,前面的位为高电平/-LED向右显示-/for (i = 0 ;i < 7 ; i+)P0 = LED;Delay10m
11、s(50);LED = LED >> 1; / 右移LED = LED | 0x80; / 移位后,后面的位为高电平 /* 函 数 名 : Delay10ms* 函数功能 : 延时函数,延时10ms* 输 入 : 无* 输 出 : 无*/void Delay10ms(unsigned int c) /误差 0us unsigned char a, b;/-c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了-/ for (;c>0;c-)for (b=38;b>0;b-)for (a=130;a>0;a-); /* * 普中科技-* 实 验 名 :
12、 独立按键控制LED实验* 实验说明 : 每个按键控制一个LED* 连接方式 : 见接线图* 注 意 : */-包含你要使用的头文件-/#include <reg51.h> /此文件中定义了51的一些特殊功能寄存器#include <intrins.h>/-定义要使用的IO口-/#define GPIO_KEY P1 /独立键盘用P1口#define GPIO_LED P0 /led使用P0口/-声明全局函数-/void Delay10ms(unsigned int c); /延时10msunsigned char Key_Scan();/* 函 数 名 : main*
13、 函数功能 : 主函数* 输 入 : 无* 输 出 : 无*/void main(void)unsigned char ledValue, keyNum;ledValue = 0x01;while (1)keyNum = Key_Scan(); /扫描键盘switch (keyNum)case(0xFE) : /返回按键K1的数据ledValue = 0x01;break;case(0xFD) : /返回按键K2的数据ledValue = 0x02;break;case(0xFB) : /返回按键K3的数据ledValue = 0x04;break;case(0xF7) : /返回按键K4的数
14、据ledValue = 0x08;break;case(0xEF) : /返回按键K5的数据ledValue = 0x10;break;case(0xDF) : /返回按键K6的数据ledValue = 0x20;break;case(0xBF) : /返回按键K7的数据ledValue = 0x40;break;case(0x7F) : /返回按键K8的数据ledValue = 0x80;break;default:break;GPIO_LED = ledValue;/点亮LED灯/* 函 数 名 : Key_Scan()* 函数功能 : 扫描键盘* 输 入 : 无* 输 出 : 读取到的键
15、值*/unsigned char Key_Scan()unsigned char keyValue = 0 , i; /保存键值/-检测按键1-/if (GPIO_KEY != 0xFF)/检测按键K1是否按下Delay10ms(1);/消除抖动if (GPIO_KEY != 0xFF)/再次检测按键是否按下keyValue = GPIO_KEY;i = 0;while (i<50) && (GPIO_KEY != 0xFF) /检测按键是否松开Delay10ms(1);i+;return keyValue; /将读取到键值的值返回/* 函 数 名 : Delay10ms
16、* 函数功能 : 延时函数,延时10ms* 输 入 : 无* 输 出 : 无*/void Delay10ms(unsigned int c) /误差 0us unsigned char a, b;/-c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了-/ for (;c>0;c-)for (b=38;b>0;b-)for (a=130;a>0;a-); /* * 普中科技-* 实 验 名 : LED显示键值实验* 实验说明 : 8个LED显示读取的8个按键的值* 连接方式 : 见接线图* 注 意 : */-包含你要使用的头文件-/#include <r
17、eg51.h> /此文件中定义了51的一些特殊功能寄存器#include <intrins.h>/-定义要使用的IO口-/#define GPIO_KEY P1 /独立键盘用P1口#define GPIO_LED P0 /led使用P0口/-定义全局函数-/void Delay10ms(unsigned int c); /延时10msunsigned char Key_Scan();/* 函 数 名 : main* 函数功能 : 主函数* 输 入 : 无* 输 出 : 无*/void main(void)unsigned char ledValue, keyNum;ledVa
18、lue = 0x00;while (1)keyNum = Key_Scan(); /扫描键盘if (keyNum != 0) /有按键按下ledValue = keyNum;GPIO_LED = ledValue;/点亮LED灯/* 函 数 名 : Key_Scan()* 函数功能 : 扫描键盘* 输 入 : 无* 输 出 : 读取到的键值*/unsigned char Key_Scan()unsigned char keyValue = 0 , i; /保存键值/-检测按键1-/if (GPIO_KEY != 0xFF)/检测按键K1是否按下Delay10ms(1);/消除抖动if (GPI
19、O_KEY != 0xFF)/再次检测按键是否按下keyValue = GPIO_KEY;i = 0;while (i<50) && (GPIO_KEY != 0xFF) /检测按键是否松开Delay10ms(1);i+;return keyValue; /将读取到键值的值返回/* 函 数 名 : Delay10ms* 函数功能 : 延时函数,延时10ms* 输 入 : 无* 输 出 : 无*/void Delay10ms(unsigned int c) /误差 0us unsigned char a, b;/-c已经在传递过来的时候已经赋值了,所以在for语句第一句就不
20、用赋值了-/ for (;c>0;c-)for (b=38;b>0;b-)for (a=130;a>0;a-); /* * 普中科技-* 实 验 名 : 按键选择LED花样显示实验* 实验说明 : 每个按键控制选择一种LED显示效果* 连接方式 : 见接线图* 注 意 : */-包含你要使用的头文件-/#include <reg51.h> /此文件中定义了51的一些特殊功能寄存器#include <intrins.h>/-定义要使用的IO口-/#define GPIO_KEY P1 /独立键盘用P1口#define GPIO_LED P0 /led使用
21、P0口/-定义全局函数-/void Delay10ms(unsigned int c); /延时10msunsigned char Key_Scan();void LED1();void LED2();void LED3();void LED4();void LED5();void LED6();void LED7();void LED8();/* 函 数 名 : main* 函数功能 : 主函数* 输 入 : 无* 输 出 : 无*/void main(void)unsigned char keyNum;while (1)keyNum = Key_Scan(); /扫描键盘switch (k
22、eyNum)case(0xFE) : /返回按键K1的数据LED1();break;case(0xFD) : /返回按键K2的数据LED2();break;case(0xFB) : /返回按键K3的数据LED3();break;case(0xF7) : /返回按键K4的数据LED4();break;case(0xEF) : /返回按键K5的数据LED5();break;case(0xDF) : /返回按键K6的数据LED6();break;case(0xBF) : /返回按键K7的数据LED7();break;case(0x7F) : /返回按键K8的数据LED8();break;defaul
23、t:break;/* 函 数 名 : Key_Scan()* 函数功能 : 扫描键盘* 输 入 : 无* 输 出 : 读取到的键值*/unsigned char Key_Scan()unsigned char keyValue = 0 , i; /保存键值/-检测按键1-/if (GPIO_KEY != 0xFF)/检测按键K1是否按下Delay10ms(1);/消除抖动if (GPIO_KEY != 0xFF)/再次检测按键是否按下keyValue = GPIO_KEY;i = 0;while (i<50) && (GPIO_KEY != 0xFF) /检测按键是否松开
24、Delay10ms(1);i+;return keyValue; /将读取到键值的值返回/* 函 数 名 : Delay10ms* 函数功能 : 延时函数,延时10ms* 输 入 : 无* 输 出 : 无*/void Delay10ms(unsigned int c) /误差 0us unsigned char a, b;/-c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了-/ for (;c>0;c-)for (b=38;b>0;b-)for (a=130;a>0;a-); /* 函 数 名 : LED1* 函数功能 : LED左移闪烁两次* 输 入 :
25、 无* 输 出 : 无*/void LED1()unsigned char i;GPIO_LED = 0x01;for (i=0; i<16; i+)GPIO_LED = _crol_(GPIO_LED, 1);Delay10ms(5);/* 函 数 名 : LED2* 函数功能 : LED右移闪烁两次* 输 入 : 无* 输 出 : 无*/void LED2()unsigned char i;GPIO_LED = 0x80;for (i=0; i<16; i+)GPIO_LED = _cror_(GPIO_LED, 1);Delay10ms(5);/* 函 数 名 : LED3*
26、 函数功能 : LED交替闪烁* 输 入 : 无* 输 出 : 无*/void LED3()GPIO_LED = 0xaa;Delay10ms(5);GPIO_LED = 0x55;Delay10ms(5);GPIO_LED = 0xaa;Delay10ms(5);GPIO_LED = 0x55;Delay10ms(5);/* 函 数 名 : LED4* 函数功能 : LED交替闪烁* 输 入 : 无* 输 出 : 无*/void LED4()GPIO_LED = 0x55;Delay10ms(5);GPIO_LED = 0xaa;Delay10ms(5);GPIO_LED = 0x55;Delay10ms(5);GPIO_LED = 0xaa;Delay10ms(5);/* 函 数 名 : LED5* 函数功能 : LED交替闪烁* 输 入 : 无* 输 出 : 无*/void LED5()GPIO_LED = 0xCC;Delay10ms(5);GPIO_LED = 0x33;Delay10ms(5);GPIO_LED = 0xCC;Delay10ms(5);GPIO_LED = 0x33;Delay10ms(5);/* 函 数 名 : LED6* 函数功能 : LED交替闪烁* 输 入 : 无* 输 出 : 无*/void LED6()GPIO_LE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年仓库货架安装合同协议
- 宣化科技职业学院《现代文学》2025-2026学年期末试卷
- 福建农业职业技术学院《导游业务》2025-2026学年期末试卷
- 长春师范高等专科学校《非政府公共组织管理》2025-2026学年期末试卷
- 长白山职业技术学院《护理教育学》2025-2026学年期末试卷
- 2026年广东省深圳市中考数学模拟试卷试题(含答案详解)
- 计量员职业规划书模板
- 奥乐齐供应商管理
- 2026年人教版小学一年级数学上册比多少比大小练习卷含答案
- 2026年人教版小学四年级数学上册亿以内数的读写卷含答案
- 2026年1级乐理考试试题及答案
- 2026年云南省玉溪市学业水平模拟考试九年级物理试题卷
- 口腔门诊院感工作制度
- 2026河北邢台学院高层次人才引进55人备考题库(含答案详解)
- 青岛2026事业单位联考-综合应用能力A类综合管理模拟卷(含答案)
- 2026年医学伦理学期末试题及参考答案详解【培优A卷】
- 6.3 简单的小数加、减法 课件2025-2026学年人教版数学三年级下册
- 2026黑龙江省水利投资集团有限公司建投集团系统内部招聘5人笔试参考题库及答案解析
- 【试卷】河北唐山市2026届高三年级一模考试语文试题
- 2026四川成都西岭城市投资建设集团有限公司招聘4人笔试备考题库及答案解析
- 《安全注射标准》WST856-2025解读
评论
0/150
提交评论