文档详情

最新单片机实验报告.doc

发布:2018-08-14约1.13万字共23页下载文档
文本预览下载声明
单 片 机 实 验 报 告 姓名: 钟林春 班级: 0801205 学号: 2012212963 任课教师: 张开碧 上课地点: S411 实验一 流水灯实验 一、实验目的及要求 1、闪烁的LED; 2、从左到右的流水灯; 3、8只LED左右来回点亮; 4、LED模拟交通灯。 要求1:LED按设定的时间间隔闪烁 要求2:接在P0口的8个LED从左到右循环依次点亮,产生走马灯效果 要求3:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果; 二、实验原理 电路图1、 电路图2、 三、源程序 要求1: #includereg51.h #define uchar unsigned char #define uint unsigned int sbit LED=P1^0; //延时 void DelayMS(uint x) { uchar i; while(x--) { for(i=0;i120;i++); } } //主程序 void main() { while(1) { LED=~LED; DelayMS(150); } } 要求2: #include reg51.h #include intrins.h //包含程序中的_cror_(P0,y) #define uchar unsigned char #define uint unsigned int uchar led; void delay(unsigned int i) { uint j; uchar k; for(j=i;j0;j--) for(k=125;k0;k--); } void main() { led=0x7f;//只亮第一个 delay(1000); while(1) { P0=led; delay(500); led=_cror_(led,1); //P0逐步右移一位。 } } 要求3: #include reg51.h #include intrins.h //包含程序中的_crol_(P0,y) #define uchar unsigned char #define uint unsigned int sbit led=P0^0; uchar i; void delay(unsigned int i) { uint j; uchar k; for(j=i;j0;j--) for(k=125;k0;k--); } void main() { P0=0xfe; delay(1000); while(1) { for(i=0;i8;i++) {P0=led; delay(500); led=_crol_(led,1); //P0逐步左移一位。 } for(i=0;i8;i++) {P0=led; delay(500); led=_cror_(led,1); //P0逐步右移一位 } } } 实验二 独立键盘实验 一、实验目的 1、K1-K4 按键状态显示; 2、K1-K4 控制LED移位; 3、单只数码管循环显示0~9; 4、K1-K4 控制数码管移位显示。 要求1:K1、K2按下时LED点亮,松开时熄灭,K3、K4按下并释放时LED点亮, 再次按下并释放时熄灭; 要求2: 按下K1时,P0口LED上移一位; 按下K2时,P0口LED下移一位; 按下K3时,P2口LED上移一位; 按下K4时,P2口LED下移一位; 要求3:主程序中的循环语句反复将0~9的段码送至P0口,使数字0~9循环显示; 要求4:按下K1时加1计数并增加显示位, 按下K2时减1计数并减少显示位, 按下K3时清零 二、实验原理 电路图1、 电路图2、 电路图3、 电路图4、 三、源程序 要求1: #includereg51.h #define uchar unsigned char #define uint unsigned int sbit LED1=P0^0; sbit LED2=P0^1; sbit LED3=P0^2;
显示全部
相似文档