[BASCOM-AVR例程]8 LED 管跑马灯实验 - 单片机应用 - 博趣

  无线电   专题策划 行业动态 测试测量 单片机 精彩制作 精品套件 基础入门 试阅与下载 往期目录 官方淘宝店 制汇节
当前位置:博趣 -> 无线电 -> 单片机应用

TOP

[BASCOM-AVR例程]8 LED 管跑马灯实验
发表日期:2012-03-02 09:09:32 来源:麦克鼠单片机学习网 作者: 【 】 浏览:8452次 评论:0
实验目的
巩固 AVR 单片机 I/O 口的输入 / 输出控制技巧。学习 Basic 程序语句中的变量定义语句 DIM , 以及循环控制语句 FOR 。。。 NEXT ,和字节循环语句 Rotate 。
关键词:跑马灯程序;流水灯程序
难度等级:入门
 
硬件搭建
用两根4位跳线将 ATmega48 的端口 PB7 - PB0 分别与3号实验板上排针 7 - 0 搭接,实验板上排针 C 为公共端, 如果实验板上的数码管为共阳形式,则接高电平,如果是共阴形式的实验板,该引脚应接低电平。
程序代码
源程序下载8LED.bas
'----------------------------------------------------------------------------------------------------
$regfile = "m48def.dat"
$crystal = 8000000
Config Portb = Output
Dim I As Byte
Portb = 1

Wait 1
Do
For I = 1 To 7
Rotate Portb , Left
Wait 1
Next
For I = 1 To 7
Rotate Portb , Right
Wait 1
Next
Loop
End
' 指定目标单片机为 ATmega48
' 指定系统时钟8兆
' 配置端口 B 输出
' 定义计数变量
' 端口 B 初始化,第 0 位置 1 其他置 0 ,这是共阴的设置,
' 如果是共阳则相反即可
' 为了加电时显示正确,加入延时
' 主循环开始
' 向左移动 7 次,第 0 位的 1 就移动到了第 7 位
' 端口 B 中的数据都向左移动一位
' 延时 1 秒
' 向左移动返回
' 向右移动 7 次,第 7 位的 1 移回到第 0 位
' 端口 B 中的数据都向右移动一位
' 延时 1 秒
' 向右移动返回
' 主循环返回
' 程序结束

程序讲解
  1. 变量定义语句DIM
    在 Basic 中, DIM 语句用来定义变量的类型。
    语法: DIM var AS type
    其中 var 为变量名可以是任何合法字符或数字组成,如 A , b1 , I 或是数组,例如 ar(10) 等。 Type 是变量类型,有 Bit (位) , Byte (字节) , Word (字) , Integer (整数) , Long (长整型) , Single ( 32 位有符号数) , Double ( 64 位有符号数) 和 String (字符串)等。
  2. 循环控制语句FOR 。。。 NEXT
    我们在第一讲学习了DO 。。。 LOOP循环语句,FOR 。。。NEXT 是另一种构成循环结构的语句。
    语法: FOR var = 开始值 TO 结束值 [ STEP 步进值 ]
    变量 var 的值从 开始值 开始自增直至达到或超过 结束值 ,自增的幅度由 步进值 确定。一般情况下 结束值 大于 开始值 ,此时 步进值 为正值。如果 结束值 小于 开始值 ,则 步进值 为负值。
    例:
    Dim A As Byte
    For A = 1 To 10 Step 2
       Print "This is A " ; A
    Next A
    End
    将此例程粘贴到开发平台,编译后在仿真器(请参阅 BASCOM 仿真器的使用 )中运行,看看运行结果。试着改变 步进值 开始值 结束值 ,观察运行结果。
  3. 字节循环语句Rotate
    语法: ROTATE var , LEFT/RIGHT[ , 移位数 ]
    变量 var 是一个字节变量,也可以是一个端口。参数 LEFT/RIGHT 表示向左或向右移动。 移位数 表示一次移动几位。该语句将变量 var 中的 8 位数据循环移动,以向左移动为例,第 7 位的数据移至第 6 位,第 0 位的数据移到第 7 位。如果 移位数 等于 1 ,移动 8 次后,数据又回到原始状态。向右移动则相反。
    例如:变量 A 的初始值是 10000001 ,向左移动一位,结果是 00000011 。
    将程序编译通过后在仿真器(请参阅 BASCOM 仿真器的使用 )中单步运行观察变量A 中 1 的移动过程。
    注:仿真程序时请在程序的前部加入关键字$SIM,该关键字让编译器将延时语句waitwaitms等都编译成空语句,以加快仿真过程。
程序功能
该程序在 DO 。。。 LOOP 无限循环中包含了两个 FOR 循环程序块。每个 FOR 循环块都只循环 7 次。每循环一次,字节循环语句 Rotate 将端口 B 中的 8 位(作为一个字节看待)两进制数向左或向右移动 1 次,并等待一秒钟。
程序初始化时已将端口B的0位置成高电平(如果试验板为共阴接法,否则相反,其他位都置高,第0位置低)。程序运行后,8个LED二极管循环向左然后向右被逐一点亮。
观看演示>>

用AVR单片机控制8个LED发光二极管跑马灯实验的 C 程序

为了满足单片机爱好者的不同需要,对这个例程除了BASCOM-AVR的BASIC程序外,我们也准备了同样功能的 C 程序,感兴趣的朋友可以浏览。


用AVR单片机控制8个LED发光二极管跑马灯实验的汇编程序

为了满足单片机爱好者的不同需要,对这个例程除了BASCOM-AVR的BASIC程序外,我们也准备了同样功能的汇编程序,感兴趣的朋友可以浏览。


思考题

试着改变初始化端口B的8位两进制数的组合,或改变延时时间,观察程序变化。

 > 相关内容:

 
Tags:BASCOM-AVR 例程 LED 管跑 马灯 实验 责任编辑:博趣
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇没有了 下一篇[BASCOM-AVR例程]双色二极管实验

赞助商链接

最新文章

热门文章

推荐文章