流水灯、蜂鸣器、独立按键
一、实验目的
1、学习实验系统的基本操作,了解在实验系统中进行程序设计、仿真和调试的操作方法
和步骤;
2、了解单片机的基本输入、输出功能;
3、熟悉Proteus的基本仿真功能;
二、实验原理
1、LED流水灯的原理即为单个控制LED的亮灭、亮灭,让单个LED灯先亮然后很快灭掉,并在很短的时间里使下一个LED重复这一过程。这样让一排LED灯依次亮灭后即形成流水灯的效果。
2、在本次实验中把蜂鸣器用扬声器替代,通过控制扬声器工作时间来控制扬声器的发音频率。
3、按键是机械装置,在其闭合的时候会产生震荡,这会让软件产生误判。为了消除这种影响,就需要对按键进行软件消抖。消抖原理为两次判断,只要相隔一段时间的两次判断皆为按键已按下,那么这次的判断结果就是可信的,所以用到延时函数。
三、实验步骤
;
1、硬件仿真。先分析实验所需的硬件条件,然后在Proteus上连接好硬件电路,注意连接好必要的电阻等。
2、软件编写。在Keil或其它的单片机编程软件上用C语言编写出构思好的软件。
3、将程序编译为HEX文件,然后烧录到仿真单片机中,进行仿真。
四、实验结果及分析
1、LED流水灯的硬件仿真电路图:
实验中加入了循环处理,所以该流水灯可以顺着亮一遍再逆着亮一遍,如此反复。并且改变流水灯亮灭的时间间隔还可以得到各种不同的效果。
2、蜂鸣器驱动的硬件仿真电路图:
这里用扬声器代替蜂鸣器。以单片机产生的一方波脉冲作为扬声器的电信号输入,用不同频率的方波信号产生不同音调的声音。
3、;
4、独立按键延时去抖的硬件仿真电路图:
用一个按键控制LED灯的亮灭,在软件中对按键进行消抖。
五、体会
这一次的单片机实验让我感到自己对Proteus的运用还欠缺许多,基本可以说是一窍不通。所以,这次实验以后还要花大量的时间在Proteus的学习上,希望可以从中学习到很多的
东西。还有在编程方面,很多的编程思想都还不成熟,想到的方法都有很多欠缺的地方,和书上所给的例子差距还很大。所以,应该更多的接触编程。现阶段,应多看例题。
六、附件
1、LED流水灯程序
#include <>
void main ()
{ int a;
…
unsigned long int i;
P1 = 0x00;
while (1)
{
for(a=0;a<=8;a++)
{