单片机实验报告

{ if(key==0) { delay(); if(key==0) { if(i!=10) { P2=tab[i]; i++;} else {i=0; P2=tab[i]; i++;}}}}} 四.结果分析

听了老师的讲解和对实验原理图的理解,此次实验进行很顺利。

实验四.中断实验

一. 设计题目

1、利用外部中断控制灯亮 2、利用外部中断控制数码管亮0-9

二. 实验原理:

当CPU 正在执行程序时,单片机外部或内部发生了某一件事情,请求CPU迅速去处理,

于是CPU暂时中止当前的工作,转到中断服务处理程序处理所发生的事件,处理完该事件后再回到原被中断的地方,继续做原来的工作,CPU处理事件的过程,称为CPU的中断服务。 在MCS-51单片机中,用户(设计者)用3个特殊功能寄存器对中断进行管理。

三. 软件设计:

1、程序流程图 2、源代码:

<1> //外部中断控制灯亮: #include sbit led=P2^1; void main() {

led=1;

IT0=0;//低电平有效 EA=1; //中断总开关

EX0=1; //外部中断INT0 ,P3^2

}

void deng() interrupt 0 //外部中断0 ,方式0 {

led=0; }

<2> //外部中断控制数码管亮0-9 #include

unsigned char code tab[10]={0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90}; //定义数码管是显示0~9 unsigned char i; unsigned int j; void main() { EA=1; //中断总开关打开 IT0=0; //定义中断是低电平有效 EX0=1; //允许中断IT0有效 P2=0xc0; //开始数码管显示0 while(1); }

void EX_INT0() interrupt 0 //选择方式0 { for(j=0;j<25000;j++); //消抖 if(i<9) //判断是否超过显示tab内定义的10个数 { i++ ; P2=tab[i]; //显示下一个数 for(j=0;j<25000;j++); //延时 }

else {i=0 ; //如果i大于9,定义i=0,使显示再次进入tab P2=0xc0; } }

四实验结果分析:

实验时由于没有设置消抖,数码管显示数字异常,通过添加一个延时程序,数字正常显示。

实验五 定时器实验

一. 设计题目

用定时器0工作方式1控制两个LED以不同周期闪烁,

说明:设计一个LED以200MS为周期闪烁,另一个LED以800MS为周期闪烁。设计定时

器0每50MS产生一次中断,由2个变量分别对这中断次数计数,其中一个变量计数

2次,即100MS,控制LE亮灭,另一个变量计数8次,即400MS,控制LED亮灭。

二. 实验原理

51单片机有两个定时/计数器,分别称为T0和T1,它们功能完全相同,可作为定时器或计数器使用。其核心是一个16位加1计数器,它们由两个8位寄存器组成,其中THX为高8位,TLX为低8位(X=0或1,0表示定时/计数器T0,1表示定时/计数器T1

>>展开全文<<
12@gma联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4