单片机课程设计报告

发布 2022-10-06 07:52:28 阅读 4834

一、 设计项目。

多模式彩灯控制器。

电路逻辑图如下:

二、设计要求。

1、上电后电源指示灯亮,p1口led灯不亮。

2、p2.0,p2.1,p2.2连接的按键button1、button2、button3控制led点亮的模式。

3、button1按下后8个led灯全部闪烁。

4、按下复位键后所有的p1口灯全部熄灭,再按button2键,8个led灯左流水点亮即p1.0→p1.7依次逐个点亮(循环左流水)

5、再按下复位键后恢复初是状态,再按button3键,8个led灯右流水点亮即p1.7→p1.0依次逐个点亮(循环右流水)

6、以上要求仅仅是基本框架,设计时可以自由发挥。

三、程序设计。

1、程序分析。

当button1按未下时p2.0为高电平,当button1按下后p2.0为低电平。

因此读引脚就可以知道是否按键被按下,用位寻址功能,分别读p2引脚电平,若某个引脚电平为0,则执行相应的电灯程序。

2、按键消抖。

由于按键为机械开关,在使用时难免会有抖动,由此会产生电平毛刺(如下图)会导致led出现毫无次序的闪烁。所有在读p2.0引脚为低电平时,应延时一段时间(大约20ms)左右,再读p2.

0引脚,若p2.0引脚仍然低电平,则表示该引脚的确是被按下了,可以执行相应的电灯程序,若应延后p2.0引脚为高电平,则表示该引脚没有被按下了,只是偶尔抖动,不必点亮led灯。

3、彩灯程序设计。

1)延时子程序1:

void delay1()

uchar i,j;

for(i=250;i>0;i--)

for(j=200;j>0;j--)

2)延时子程序2(消抖延时):

void delay2()

uchar i,j;

for(i=50;i>0;i--)

for(j=50;j>0;j--)

3)彩灯子程序1(从中间到两边):

void caideng 1()

uchar i;

uchar deng [8]=;

while(1)

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

p1=deng[i];

delay1();

4)彩灯子程序2(左流水):

void caideng 2()

uchar i;

uchar temp=0x00;

p1=temp;

while(1)

p1=0x01;

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

p1=_crol_(p1,1);

delay1();

5)彩灯子程序3(右流水):

void caideng 3()

uchar i;

uchar temp=0x00;

p1=temp;

while(1)

p1=0x01;

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

p1=_cror_(p1,1);

delay1();

6)彩灯子程序4(闪烁):

void caideng 4()

uchar i;

uchar deng [2]=;

while(1)

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

p1=deng[i];

delay1();

4、总程序。

#include<>

#include<>

#define uchar unsigned char

sbit rd_0=p2^0;//定义p3.0为输入控制端。

sbit rd_1=p2^1;//定义p3.1为输入控制端。

sbit rd_2=p2^2;//定义p3.2为输入控制端。

sbit rd_3=p2^3;//定义p3.3为输入控制端。

延时子程序1

void delay1()

uchar i,j;

for(i=250;i>0;i--)

for(j=200;j>0;j--)

延时子程序2

void delay2()

uchar i,j;

for(i=50;i>0;i--)

for(j=50;j>0;j--)

p1从中间到两边全部点亮。

void caideng1()

uchar i;

uchar deng [8]=;

while(1)

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

p1=deng[i];

delay1();

p1从左到右循环移动点亮。

void caideng2()

uchar i;

uchar temp=0x00;

p1=temp;

while(1)

p1=0x01;

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

p1=_crol_(p1,1);

delay1();

p1从右到左循环移动点亮。

void caideng 3()

uchar i;

uchar temp=0x00;

p1=temp;

while(1)

p1=0x01;

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

p1=_cror_(p1,1);

delay1();

p1闪烁。void caideng 4()

uchar i;

uchar deng [2]=;

while(1)

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

p1=deng[i];

delay1();

主程序。void main()

while(1)

if(rd_0==0)

delay2();

if(rd_0==0)

caideng 1();

elseif(rd_1==0)

delay2();

if(rd_1==0)

caideng 2();

elseif(rd_2==0)

delay2();

if(rd_2==0)

caideng 3();

elseif(rd_3==0)

delay2();

if(rd_3==0)

caideng 4();

四、焊接组装。

按照设计的电路图正确安装元器件,就可以,当然重要的还是焊接工艺的体现,。其他的也没有什么了。

五、心得体会。

在此次的单片机课程设计过程中,更进一步地熟悉了at89c51芯片的结构及掌握了芯片的工作原理和其具体的使用方法。

在连接p1、p2、p3、p4口的接法中,要求熟悉芯片的结构以及芯片各引脚的功能,那么在电路出错时便能准确地找出错误所在并及时纠正了。

在设计电路中,往往是先**后连接实物图,但有时候**和电路连接并不是完全一致的,例如**的连接示意图中,往往没有接高电平的40脚以及接低电平的20脚等等因此在实际的电路连接中往往容易遗漏。因此**图和电路连接图还是有一定区别的。但这并不是主要的问题,问题的重点在,编程序的过程,虽然本次的程序没有什么难度,但也是本人第一次编写单片机程序,这和上学期学习的c程序还是有所不同的。

在设计电路的连接图**错的主要原因都是接线和芯片的接触不良以及接线的错误所引起的。

总的来说,通过这次的设计实验更进一步地增强了实验的动手能力。

单片机课程设计报告

单片机系统课程设计报告。专业 电气技术。学生姓名 朱海李威张杰。学号。指导教师 陈高燕。完成日期 2014 年 7 月 5 日。目录。1 设计任务和性能指标 1 1.1设计任务 1 2 设计方案 1 2.1方案论证 2 2.2总体设计框图 2 3 系统硬件设计 4 3.1红外线解码电路设计 4 3....

单片机课程设计报告

韶关学院。课程设计说明书 设计题目 基于单片机控制的智能交通灯设计。课程名称 微机原理与应用实训。学生姓名 学号。院系 物理与机电工程学院汽车系。专业班级 12机械制造及其自动化 5班。指导教师姓名及职称 谢杰讲师。陈锦儒助理实验师。起止时间 2015 年 3 月 2015 年 5 月。课程设计评分...

单片机课程设计报告

南京工程学院。课程设计说明书 题目实时钟芯片pcf8563的应用 课程名称单片机原理及应用a 院 系 部 中心 通信工程学院。专业电子信息工程 传感网 班级。学生姓名。学号。设计地点信息楼 c 210 指导教师。设计起止时间 2013年12月23日至 2013年12月27日。一 摘要1 二 课程设计...