利用51单片机进行霓虹灯广告牌设计的教学探索

2016-04-10 09:43*刘
当代化工研究 2016年11期
关键词:汇编语言霓虹灯数组

*刘 奕

(安徽省汽车工业学校 安徽 231131)

利用51单片机进行霓虹灯广告牌设计的教学探索

*刘 奕

(安徽省汽车工业学校 安徽 231131)

随着人们对物质生活的智能化要求越来越高,单片机作为智能化的核心,将会日益成为我国未来的一个要发展的方向。本文通过在YL-236试验台上利用C语言,模拟设计霓虹灯广告牌的项目,阐述了用十六进制编码LED灯的状态,用定时器实现定时功能,呈现出霓虹灯光按照次序循环闪烁的功能的简单智能控制。同时也让学生们对学习单片机初步的认识,并且产生强烈的兴趣。

AT89C51 单片机;C语言;二进制;十六进制;一维数组;延时中断

前言

在单片机教学过程中,为了让学生做到“愿意学、学得会、用得上”,利用单片机试验台YL-236台上的功能模块,采用项目教学,以“够用为度”,从单片机的实际应用出发,将传统单片机系统原理进行整合,是我们一线老师必须要面对和思考的问题。本文就以LED小灯模块为例,模拟霓虹灯循环闪烁功能。

AT89C51是由ATMEL公司推出的一种小型单片机,95年出现在中国市场。其主要特点为采用Flash存贮器技术,降低了制造本,其软件、硬件与MCS-51完全兼容,可以很快被广大用户接受,其程序的电可擦写特性,使得开发与测试方便又易于实现。本设计主要介绍由AT89C51单片机来实现霓虹灯循环闪烁系统。

1.C语言简介

汇编语言曾是单片机软件开发工程师进行软件开发的唯一选择,但汇编语言程序的可读性和可移植性较差,采用汇编语言编写单片机应用程序的时间周期较长,且调试和排错比较困难。为了提高单片机应用系统的开发效率,使用户从繁琐的汇编语言中解脱出来,世界上诸多软件公司都致力于51单片机高级语言编译器的开发研究。

与汇编语言相比,C语言在功能性、结构性、可读性和可维护性上有明显的优势,易学易用,因此出现了专门用于51系列单片机编程的 C 语言——C51。目前最先进的功能最强大的C51编译器是Keil C51。

2.霓虹灯光控制要求

要求:(1)霓虹灯的驱动。要求用LED来模拟霓虹灯工作。

(2)流水速度:每0.5秒变一次状态(共8秒钟循环)。

3.二进制、十六进制

(1)YL-236试验台的LED显示模块是共阳的。

共阳极公共端接阳极,发光二极管的阳极(正极)都联在一起, 低电平有效(灯亮),在单片机里只有两个数0和1,低电平用0表示,高电平用1表示,则灯亮对应代码为0。

(2)在弄清楚二进制与十六进制的转换之前,先要明白十六位数的表示方式,具体如下:0—0,1—1,2—2,3—3,4—4,5—5,6—6,7—7,8—8,9—9,10—A,11—B,12—C,13—D,14—E,15—F。

(3)二进制数仅由0和1组成,二进制数的低位到高位分别表示1,2,4,8,16,32……,即2的(n-1)次方即可。对于四位二进制数,从高到低分别是8,4,2,1。二进制转16进制,只需将2进制数从右向左每四位一组合,每一个组合以一个十六进制数表示。例

1111=8+4+2+1=15=F

1110=8+4+2=14=E

1101=8+4+1=13=D

……

0011=2+1=3

0001=1=1

(4)用十六进制来表示8个LED灯的状态(0x是十六进制的符号)

序号 二进制 十六进制 序号 二进制 十六进制1 0111 0111 0x77 9 1110 1110 0xee 2 0011 0011 0x33 10 1100 1100 0xcc 3 0001 0001 0x11 11 1000 1000 0x88 4 0000 0000 0x00 12 0000 0000 0x00 5 1000 1000 0x88 13 0001 0001 0x11 6 1100 1100 0xcc 14 0011 0011 0x33 7 1110 1110 0xee 15 0111 0111 0x77 8 1111 1111 0xff 16 1111 1111 0xff

(5)将16种状态写在一个一维数组里,在程序里只要调用tab[]这个数组就可以用来表示小灯的状态。

unsigned char code tab[16]={ 0x77,0x33,0x11,0x11,0 x00,0x88,0xcc,0xee,0xff,0xee,0xcc,0x88,0x00,0x11,0x33, 0x77,0xff};将16种状态写在一个一维数组里,在程序里只要调用tab[]这个数组就可以用来表示小灯的状态。

unsigned char code tab[16]={ 0x77,0x33,0x11,0x11,0 x00,0x88,0xcc,0xee,0xff,0xee,0xcc,0x88,0x00,0x11,0x33, 0x77,0xff};

4.延时中断

(1)首先利用定时器计算出定时开始的初值。

①首先明确三种方式的计数范围:

方式0是13位的定时/计数器,记满值为213=8192

方式1是16位的定时/计数器,计满为216=65536

方式2是8位的定时/计数器,计满为28=256

②以方式1来举例说明(12M晶振):

如果想定时0.5S,但是计数方式1的计数最大计数65536us即65ms,为了方便计数,选取50ms,计数10次就能实现0.5S计数。这里讨论对计数器赋初值。计数器定时50ms,那么给定时器的初值应该是65536-50000=15536。(定时器从15536一直计数到65536,共计50000次记数,也即是50ms。)将初值15536,化为16进制为3CB0H,所以对计数器赋值:TL0=B0H;TH0=3CH。即得到初值。

(2)用单片机定时器实现的程序如下:

5.结语

基于51单片机的霓虹灯系统的设计,价格低廉,结构简单,还有系统稳定性好。熟练的应用十六进制表示LED的状态和定时器中断控制功能,利用一维数组的将小灯的16种状态与中断联系起来,简化了程序的书写,也使程序简洁明了。

[1]陈巧莉,冯于户.基于AT89C51 单片机的定时器控制音乐门铃的仿真与实现[A].价值工程,1006-4311(2011)20-0146-03.

[2]陶孝海.51单片机C语言编程技巧[J],计算机时代,2009年第6期.

[3]宋国富主编.《单片机技能与实训》,电子工业出版社.

[4]雷林均主编.《单片机控制装置安装与调试上册》,电子工业出版社.

[5]雷林均主编.《单片机控制装置安装与调试下册》,电子工业出版社.

刘奕(1987~),女,安徽省汽车工业学校,研究方向:电工电子技术。

(责任编辑 高镇峰)

Teaching Exploration of the Neon Light Billboards Design by Using the 51 Microcontroller

Liu Yi

(Automobile technical school of Anhui Province, Anhui, 231131)

Along with people's increasingly higher intelligence require for material life, the microcontroller, as the core of intelligence, will increasingly become one important developing direction for China’s future. In this paper, by utilizing the C language on the YL-236 test bed, it simulates the program of designing the neon light billboards, expounds the state of using the hexadecima code to code the LED lights and uses the timer to realize the timing function, finally presents the simple and intelligent control of neon light’s cycle flashing function in order. At the same time, it also can let the students take preliminary understanding of the learning microcontroller and stimulate students’ strong interest.

AT89C51 microcontroller;C language;binary system;hexadecimal;one-dimensional array;time-delay interruption

T

A

猜你喜欢
汇编语言霓虹灯数组
夜钓
JAVA稀疏矩阵算法
高等学校计算机专业课程教学改革实践——以汇编语言与接口技术课程为例
JAVA玩转数学之二维数组排序
霓虹梦
汇编语言与C语言的混合程序设计技术研究
基于PLC的霓虹灯控制系统
提高《汇编语言程序设计》教学效率的思考与实践
Excel数组公式在林业多条件求和中的应用
寻找勾股数组的历程