微机原理与单片机接口技术

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

微机原理与单片机接口技术

实验报告

专业班级:自动化12-08班

姓名:牛远征

学号:311208000516

指导教师:杨俊起

实验一流水灯实验一、实验目的

(1)简单I/O引脚的输出

(2)掌握软件延时编程方法

(3)简单按键输入捕获判断

二、实验实现的功能

(1)开机是点亮12发光二极管,闪烁三下

(2)按照顺时针循环依次点亮发光二极管

(3)通过按键将发光二极管的显示改为顺逆时针方式三、系统硬件设计

四、系统软件设计

******************************主程序******************************** #include

#include

#include

sbit Led1=P3^2;

sbit Led2=P3^3;

sbit Led3=P3^4;

sbit Led4=P3^5;

//函数说明

void shun(); //led顺时针亮

void ni(); //led逆时针亮

void shanshuo(); //闪烁

//主函数

void main (void)

{

for(i=0;i<=2;i++)

{

shanshuo();

Delay(1000);

}

while(1)

{

keyboard();

if(ptr==0) shun();

else if(ptr==1)

ni();

else if(ptr==2)

shun();

}

}

void ni()

{

P2=0xff;

Led4=0;

Delay(500);

Led4=1;

Led3=0;

Delay(500);

Led3=1;

Led2=0;

Delay(500);

Led2=1;

Led1=0;

Delay(500);

Led1=1;

P2=0xfe;

Led1=1;Led2=1;Led3=1;Led4=1;

for(i=0;i<8;i++)

{

P2=_cror_(P2,1); //P2 的值向右循环移动

Delay(500);

}

}

void shun()

{

P2=0xfe;

Delay(500);

Led1=1;Led2=1;Led3=1;Led4=1;

for(i=0;i<7;i++)

{

P2=_crol_(P2,1); // P2 的值向左循环移动Delay(500);

}

P2=0xff;

Led1=0;

Delay(500);

Led1=1;

Led2=0;

Delay(500);Led2=1;

Led3=0;

Delay(500);Led3=1;

Led4=0;

Delay(500);

}

void shanshuo()

{

P2=0x00;

Led1=0;Led2=0;Led3=0;Led4=0;

Delay(1000);

P2=0xff;

Led1=1;Led2=1;Led3=1;Led4=1;

Delay(1000);

}

******************************子程序******************************** #ifndef _key_H_

#define _key_H_

unsigned char i;

unsigned int ptr=0;

sbit H1=P3^6;

sbit H2=P3^7;

sbit L1=P0^5;

sbit L2=P0^6;

sbit L3=P0^7;

bit KEY1,KEY2,KEY3,KEY4,KEY5,KEY6;

void Delay(unsigned int t)

{

unsigned int x,y;

for(x=t;x>0;x--)

for(y=110;y>0;y--);

}

void keyboard(void)

{

L1=0;L2=1;L3=1;

if(H1==0) Delay(30); //延时消抖

if(H1==0){while(H1==0); {KEY1=1;ptr=1;}}

else KEY1=0;

if(H2==0) Delay(30);

if(H2==0){while(H2==0);{ KEY4=1;ptr=4;}}

else KEY4=0;

L1=1;L2=0;L3=1;

if(H1==0) Delay(30);

if(H1==0){while(H1==0);{ KEY2=1;ptr=2;}}

else KEY2=0;

if(H2==0) Delay(30);

if(H2==0){while(H2==0);{KEY5=1;ptr=5;}}

else KEY5=0;

L1=1;L2=1;L3=0;

if(H1==0) Delay(30);

if(H1==0){while(H1==0);{KEY3=1;ptr=3;}}

else KEY3=0;

if(H2==0) Delay(30);

if(H2==0){KEY6=1;ptr=6;}

else KEY6=0;

}

#endif

五、实验过程中遇到的问题及解决方法

1、遇到的问题就是如何扫描按键。

解决这个问题的方法是利用软件扫描按键1和2,初始化ptr=0,按键1按下后返回1,按键2按下后返回2,没有按键按下则返回0。

指导老师签字:

日期:

相关文档
最新文档