********************************************************************void delay (ul6 i)while(i--) ;1/*********************************************************************函数名: main*函数功能:主函数********************************************************************voidmainO(u8 i;led=0xfe:delay(50000)://大约延时450mswhile(1)(/*for(i=0;i<8;i++)tP2=~(0x01<<i)://将1右移i位,然后将结果取反赋值到P2口delay(50000);//大约延时450ms1*///将led左移一位for(i=0:i<7:i++)t4-
—4— ********************************************************************/ void delay(u16 i) { while(i-); } /******************************************************************** * 函 数 名 : main * 函数功能 : 主函数 ********************************************************************/ void main() { u8 i; led=0xfe; delay(50000); //大约延时 450ms while(1) { /* for(i=0;i<8;i++) { P2=~(0x01<<i); //将 1 右移 i 位,然后将结果取反赋值到 P2 口 delay(50000); //大约延时 450ms } */ for(i=0;i<7;i++) //将 led 左移一位 {
led= crol(led,1):delay(50000)://大约延时450ms1)//将led右移一位for(i=0;i<7;i++)tled=_cror_(led,1):delay(50000)://大约延时450ms111五、实验思考题1、尝试不用_crol_函数和_cror_(函数实现循环移位?2、试着改变发光管的移动速度?-5-
—5— led=_crol_(led,1); delay(50000); //大约延时 450ms } for(i=0;i<7;i++) //将 led 右移一位 { led=_cror_(led,1); delay(50000); //大约延时 450ms } } } 五、实验思考题 1、尝试不用_crol_()函数和_cror_()函数实现循环移位? 2、试着改变发光管的移动速度?
实验三独立按键实验一、实验目的(1)学习单片机输入输出的控制方法(2)掌握按键和LED的控制;(3)掌握键盘的延时去抖概念和编程实现;二、实验电路KIK4RXDTXDP32/CS1P33/CS2图2:独立按键接口电路结合图2的独立按键接口和图1的LED接口,实现利用一个按键控制一个LED灯点亮和熄灭的方法。三、实验内容(1)查看实验箱硬件连线图,确定LED、按键和单片机引脚的连接:(2)编写c51程序,实现利用按键控制相应LED灯的亮灭:四、参考程序/*********************************************************************独立按键实验*实现现象:下载程序后按下K1按键可以对D1小灯状态取反。-6-
—6— 实验三 独立按键实验 一、实验目的 (1)学习单片机输入输出的控制方法; (2)掌握按键和LED的控制; (3)掌握键盘的延时去抖概念和编程实现; 二、实验电路 图 2:独立按键接口电路 结合图 2 的独立按键接口和图 1 的 LED 接口,实现利用一个按键控制一个 LED 灯点亮和 熄灭的方法。 三、实验内容 (1)查看实验箱硬件连线图,确定 LED、按键和单片机引脚的连接; (2)编写 c51 程序,实现利用按键控制相应 LED 灯的亮灭; 四、参考程序 /******************************************************************** * 独立按键实验 * 实现现象:下载程序后按下 K1 按键可以对 D1 小灯状态取反
********************************************************************#include"reg52.h"//此文件中定义了单片机的一些特殊功能寄存器typedef unsigned int ul6://对数据类型进行声明定义typedef unsigned char u8;sbitkl=P31://定义P31口是klsbit led=P2°0://定义P20口是led/*********************************************************************函数名: delay*函数功能:延时函数,i=1时,大约延时10us********************************************************************void delay(ul6 i)while(i--);1/*********************************************************************函数名: keypros*函数功能:按键处理函数,判断按键K1是否按下********************************************************************voidkeypros(if (kl==0)//检测按键K1是否按下(delay(1000)://消除抖动一般大约10msif (kl==0)//再次判断按键是否按下t-7-
—7— ********************************************************************/ #include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器 typedef unsigned int u16; //对数据类型进行声明定义 typedef unsigned char u8; sbit k1=P3^1; //定义 P31 口是 k1 sbit led=P2^0; //定义 P20 口是 led /******************************************************************** * 函 数 名 : delay * 函数功能 : 延时函数,i=1 时,大约延时 10us ********************************************************************/ void delay(u16 i) { while(i-); } /******************************************************************** * 函 数 名 : keypros * 函数功能 : 按键处理函数,判断按键 K1 是否按下 ********************************************************************/ void keypros() { if(k1==0) //检测按键 K1 是否按下 { delay(1000); //消除抖动 一般大约 10ms if(k1==0) //再次判断按键是否按下 {