单片机实验一zf

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

昆明理工大学信息工程与自动化学院学生实验报告

( 2012 —2013 学年 第 2 学期 )

课程名称:嵌入式 开课实验室: 2015 年 4月 日 年级、专业、班 学号

姓名

成绩

实验项目名称 单片机输入输出端口控制实验

指导教师 江虹

该同学是否了解实验原理: A.了解□ B.基本了解□ C.不了解□ 该同学的实验能力: A.强 □ B.中等 □ C.差 □ 该同学的实验是否达到要求: A.达到□ B.基本达到□ C.未达到□ 实验报告是否规范: A.规范□ B.基本规范□ C.不规范□ 实验过程是否详细记录: A.详细□

B.一般 □

C.没有 □

教师签名:

年 月 日 一、实验目的及内容

1、熟悉μ Vision 的使用方法及工程项目开发过程;

2、掌握C51程序设计方法。

3、掌握89C51单片机I/O 的控制方法。 二、所用仪器、材料(设备名称、型号、规格等或使用软件)

51单片机 Keil uVision4编程软件

三、实验方法、步骤(或:程序代码或操作过程)

1、实验板电路原理如图3所示。

用P1口作为输出口,接8位用作逻辑电平显示的发光二极管。

做单一灯的左移/右移,8个发光二极管分别接在单片机的P1.0~P1.7端口上,输出“0”时,发光二极管亮,开始时按P1.0->P1.1->…->P1.7的顺序依次点亮LED,再按

P1.7->P1.6->…->P1.0的顺序依次点亮LED,重复循环。

(1)、按实验要求在μ Vision中创建项目,编辑、调试、编译程序。

(2)、将编译生成的目标码文件(后缀为.Hex)下载到实验板上。

(3)、观察实验运行结果并记录。

2、思考

设计程序使发光二极管间隔300ms先奇数亮再偶数亮,循环3次;一个发光二极管亮上下循环3次;两个分别从两边向中间流动3次;再从中间向两边流动3次;8个全部闪烁3次;关闭全部发光二极管,停止。。

四、实验过程原始记录( 测试数据、图表、计算等)

1、实现8个发光二极管循环点亮

(1)实验源代码:

#include

#define uChar8 unsigned char

#define uInt16 unsigned int

uChar8 code S[] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};

uChar8 code V[] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

void delayms()

{

uInt16 m,n;

for(m=0;m<300;m++)

for(n=0;n<=500;n++)

;

}

void main(void)

{

uInt16 i;

while(1)

{

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

{

P1 = V[i];

delayms();

}

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

{

P1 = S[i];

delayms();

}

}

}

(2)在模拟软件上进行测试

2、思考

(1)实验源代码:

#include

#include

#define uChar8 unsigned char

#define uInt16 unsigned int

uChar8 code S[] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};

uChar8 code V[] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

void ys()

{

uInt16 n,m;

for(n=0;n<300;n++)

for(m=0;m<120;m++)

;

}

void start()

{

P1 = 0x00;

ys();

}

void jo()

{

uInt16 i;

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

{

P1 = 0x55;

ys();

P1 = 0xaa;

ys();

}

}

void dl()

{

uInt16 i,a;

for(a=1;a<=3;a++)

{

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

{

P1 = V[i];

ys();

}

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

{

P1 = S[i];

ys();

}

}

}

void lsz()

{

uInt16 i;

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

{

P1 = 0x3c;

ys();

P1 = 0x99;

ys();

P1 = 0xc3;

ys();

}

}

void lsw()

{

uInt16 i;

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

{

P1 = 0xc3;

ys();

P1 = 0x99;

ys();

P1 = 0x3c;

ys();

}

}

void ss()

{

相关文档
最新文档