[笔记]赣南师范学院 AT89C51单片机广告灯设计L_钟吉森
单片机课程设计评分标准
单片机课程设计的评分标准分为两大部分:作品分和设计报告分,各占总成绩的50%。它们的评分标准如下:
1、设计成果为单片机应用系统
1)作品分(50分)
?电路正确,能完成设计要求提出的基本功能(15分)
?电路板焊接工艺
,焊点均匀,布局合理(10分)
?设计合理、工作稳定(10分)
?设计难度(10分)
?创新性(5分)
2)设计报告(50分)
?有合理的方案设计和论证、电路参数的计算或功能分析、总原理图和清单(15分)
?有详细的设计和调试过程(15分)
?系统测试合理,对性能指标测试数据完整、正确;进行数据处理规范,进行了误差计算和误差分析(5分)
?对课程设计进行了总结,有体会,并能提出设计的改进、建设性意见(5分)
?报告语气通顺,结构清晰,格式规范(10分)。
2、设计成果为Protues仿真文件
1)作品分(50分)
?电路原理正确,能完成设计要求提出的基本功能(15分)
?电路接线及标注完整清晰,布局合理(10分)
?设计合理、工作稳定(10分)
?设计难度(10分)
?创新性(5分)
2)设计报告(50分)
?有合理的方案设计和论证、电路参数的计算或功能分析、总原理图和清单(15分)
?有详细的设计和调试过程(15分)
?系统测试合理,对性能指标测试数据完整、正确;进行数据处理规范,进行了误差计算和误差分析(5分)
?对课程设计进行了总结,有体会,并能提出设计的改进、建设性意见(5分)
?报告语气通顺,结构清晰,格式规范(10分)。
赣南师范学院 2014 — 2015 学年第_1_学期课程论文
行政班级: 电信1201 学号:120802054 姓名: 钟吉森
课程论文题目: 基于51单片机的广告灯设计及仿真
设计要求:
(1)设计一个花样彩灯。
(2)彩灯至少有7种工作模式。
(3)当按下按键后,模式可以复位。
教师评语:
教师签字:
年 月 日 选课班级: 电信1201 任课教师: 李秋生 成绩:
单片机与接口技术课程设计
题目:基于51单片机的广告灯设计及仿真
班级: 电信1201
姓名: 钟吉森
学号: 1020802054
2014/12/27
目 录
1,系统设计 ............................................. 1
2.1 设计任务与要求 ................................... 1
2.2 方案的选择与论证 ................................. 1 2,系统硬件设计 ......................................... 1
1 控制器模块 ......................................... 2
2 按键模块 ........................................... 4
4 LED显示模块 ....................................... 4 3,软件设计与仿真 ...................................... 53
1,主程序设计 ........................................ 5
3,仿真结果 .......................................... 7
4,系统调试 .......................................... 8
5,误差分析 .......................................... 8 结束语 .................................................. 8
1 系统设计
1.1 设计任务与要求
1.1.1 设计任务
(1)设计一个基于单片机的花样彩灯;
(2)在设计过程中,选择1,2个单元电路使用仿真软件(例如Proteus等)进行仿真调试;
(3)用计算机绘制所有的电路图。
1.1.2 设计要求
(1)设计一个花样彩灯。
(2)彩灯至少有7种工作模式。
(3)当按下按键后,模式可以复位。
1.2 方案的选择与论证
1.2.1 总体设计方案
方案一:采用各类数字电路来组成键盘控制系统,进行信号处理,如选用CPLD等可编程逻辑器件。本方案电路复杂,灵活性不高,效率低,不利于系统的扩展,对信号处理比较困难。
方案二:过单片机控制二极管的闪烁,通过中断来改变模式同时串行输出数码管。P0,P1口接16个二极管,P3口接扩展板的数码显示接口。
该方案简单,易于设计和控制。
2 系统硬件设计
按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。AT-89C51单片机是美国ATMEL公司生产的低电压、高性能CMOS 8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.25,5.50V的电压工作范围和0,24MHz工作频率,使用AT-89C51单片机时无须外扩存储器。因此,本彩灯控制系统实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。其具体硬件组成如图1所示。
图1彩灯硬件原理图
从图1中可以看出,如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反,如果要让接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1,P1.7口的其他7个LED的点亮和熄灭的方法同LED1。因此,要实现彩灯功能,我们只要将发光二极管LED1,LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做彩灯了。在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“彩灯”效果了。
2.1 控制器模块
本系统控制器芯片采用AT89C51单片机,其管脚图如图3所示。
D8-D6:数据输入线。
RESET:复位端口。
T0,T1:计数器端口外部计数脉冲输入线。
XTAL1,XTAL2:时钟电路。
VCC:供电电压。
GND:接地。
图3 89C51功能说明图
AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存
51指令集和输出管脚相兼容。由于将多功能8储器制造技术制造,与工业标准的MCS-
位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
AT89C51具有以下特性:与MCS-51 兼容,4K字节可编程闪烁存储器,寿命:1000写/擦循环,数据保留时间:10年,全静态工作:0Hz-24MHz,三级程序存储器锁定,128×8位内部RAM,32可编程I/O线,两个16位定时器/计数器,5个中断源,可编程串行通道,低功耗的闲置和掉电模式、片内振荡器和时钟电路。
2.2 按键模块
采用如下所示电路来实现控制花样彩灯的复位,按下开关,单片机复位,花样彩灯按模式一闪烁。
图
2.4 LED显示模块
LED显示电路由单片机89C51的P0口,P1口和P2口与发光二极管相连,低电平二极管发光。LED显示电路如图2所示。
图2.LED显示电路
2.5硬件元件清单
系统元器件清单见
2。
表2 系统元器件清单
器件 数量 器件 数量
AT89C51 1 晶振器 1
LED 8 排阻(4.7k) 8
电容(30pF) 2 电阻(200) 1
电容(10uF) 1 开关 1
3,软件设计与仿真
本系统程序包括主程序、键盘扫描子程序、发送键码子程序、发送数据子程序、接收命令子程序等。主程序用于系统初始化,子程序调度等。键盘扫描子程序用于扫描键盘状态,将被按键的位置号存入缓冲器中。发送键码子程序用于将缓冲区键的接通码或断开码发送给单片机接口。发送数据子程序用于将数据发给单片机接口。接收命令子程序用于接收单片机接口发来的键盘命令。
3.1主程序设计
程序
图:
中断程序:
主程序:
3.2 仿真软件简介
Proteus是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:
(1)实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试
器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。
(2)支持主流单片机系统的仿真。目前支持的单片机类型有:ARM7(LPC21xx)、 8051/52系列、AVR系列、PIC10/12/16/18系列、HC11系列以及多种外围芯片。
(3)提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2、MPLAB等软件。
(4)具有强大的原理图绘制功能。
总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。
Proteus7.5是目前最好的模拟单片机外围器件的工具,可以仿真51系列、AVR、PIC等常用的MCU及其外围电路(如LCD、RAM、ROM、键盘、马达、LED、AD/DA、部分SPI器件、部分IIC器件等)。
软件编译采用KEIL C51软件,Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。
Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。
4.3 仿真结果
先按复位键,系统初始化,然后8个LED开始按照要求闪烁,分别按下列模块点亮:
模块1:循环单向闪烁,只有一个灯亮
模块2:循环单向闪烁,只有两个灯亮
模块3:循环往复闪烁,只有一个灯亮
模块4:全亮全灭
模块5:顺次点亮或者熄灭, 多个灯亮
模块6:顺次点亮或者熄灭,多个灯亮,一次点亮两个
模块7:双端对称往返闪烁
3.4 系统调试
在调试过程中主要是对程序的修改,特别是延时子程序。开始延时较短时,当按下开关时,LED开始闪烁。如果延时较长则LED闪烁更慢。通过修改程序,将延时调到适中,系统正常工作。
4.5 误差分析
设定预设值后,
模式一的数据,每次送出的数据是不同,具体的数据如下表1所示
P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 说明
L8 L7 L6 L5 L4 L3 L2 L1
1 1 1 1 1 1 1 0 L1亮
1 1 1 1 1 1 0 1 L2亮
1 1 1 1 1 0 1 1 L3亮
1 1 1 1 0 1 1 1 L4亮
1 1 1 0 1 1 1 1 L5亮
1 1 0 1 1 1 1 1 L6亮
1 0 1 1 1 1 1 1 L7亮
0 1 1 1 1 1 1 1 L8亮
后面几种模式的实验结果基本和理论值一样,没什么误差。
结束语
该设计是以AT-89C51单片机为主控芯片,与发光二极管、晶振电路、复位电路和电源电路组成,通过程序控制彩灯流水花样。本文所给程序实现的功能比较简单,旨在抛砖引玉,可以在此基础上扩展成更复杂的彩灯控制,比如键盘控制流水花样、控制流水灯显示数字或图案等等。
通过花样彩灯的制作,给我最大的体会是对一个程序整体的把握和控制,只有将子程序有效的结合起来,才能完成设计的目的。另外,在程序的调试过程中,我也遇到了很多意想不到的困难,在老师的帮助和自己的不懈努力下,我对伟福这款仿真软件有了更深的认识,将困难一一克服,使程序编译成功,仿真实现。 附录:程序清单
#include
#define uint unsigned int
void delay(uint);
main()
{
uint fre=0x04;
uint fre1,fre2;
uint comp1=0xfe,comp2=0x80;
while(1)
{
/*---------------------------------------------------------------------
模块一:循环单向闪烁,只有一个灯亮执行3次,转入下一种闪烁-------------------------------------------------------------------------*/
P1=0xfe;
while(1!=fre--)
{
fre1=0x08;
while(1!=fre1--)
{
delay(30000);
P1<<=1;
P1|=0x01;
if(P1==0x7f)
{
delay(30000);
P1=0xfe;
}
}
}
/*-------------------------------------------------------------
模块2:循环单向闪烁,只有两个灯亮 3次,转入下一种闪烁执行
-------------------------------------------------------------*/
P1=0xfc;
while(3!=fre++)
{
fre2=0x04;
while(1!=fre2--)
{
delay(30000);
P1<<=2;
P1|=0x03;
if(P1==0x3f)
{
delay(30000);
P1=0xfc;
}
}
}
/*-------------------------------------------------------------
模块3:循环往复闪烁,只有一个灯亮 执行3次,转入下一种闪烁
-------------------------------------------------------------*/
P1=0xfe;
fre1=0x04;
while(1!=fre1--)
{
while(P1!=0x7f)
{
delay(30000);
P1<<=1;
P1|=0x01;
}
while(P1!=0xfe)
{
delay(30000);
P1>>=1;
P1|=0x80;
}
}
/*-------------------------------------------------------------
模块4:全亮全灭执行3次,转入下一模块
-------------------------------------------------------------*/
while(3!=fre1++)
{
delay(30000);
P1=0x00;
delay(30000);
P1=0xff;
}
/*-------------------------------------------------------------
模块5:顺次点亮或者熄灭, 多个灯亮,执行3次,转入下一模块
-------------------------------------------------------------*/
while(1!=fre1--)
{
P1=0xfe;
while(P1!=0x00)
{
delay(30000);
P1<<=1;
}
delay(30000);
P1=0x80;
while(P1!=0xff)
{
delay(30000);
P1>>=1;
P1|=0x80;
}
}
/*-------------------------------------------------------------
模块6:顺次点亮或者熄灭,多个灯亮,
一次点亮两个,执行3次,转入下一模块
-------------------------------------------------------------*/
while(3!=fre1++)
{
P1=0xfc;
while(P1!=0x00)
{
delay(30000);
P1<<=2;
}
delay(30000);
P1=0xc0;
while(P1!=0xff)
{
delay(30000);
P1>>=2;
P1|=0xc0;
}
delay(30000);
}
/*-------------------------------------------------------------
模块7:双端对称往返闪烁
执行3次,进行下一轮循环
-------------------------------------------------------------*/
P1=0x7e;
delay(30000);
while(1!=fre1--)
{
fre2=0x00;
while(6!=fre2++)
{
P1=0xff;
comp1<<=1;
comp1|=0x01;
comp2>>=1;
P1&=comp1;
P1^=comp2;
delay(3000000);
if(P1==0xe7)
{
comp1<<=1;
comp1|=0x01;
comp2>>=1;
}
if(comp2==0x01)
{
comp1=0xfe;
comp2=0x80;
}
}
}
}
}
void delay(uint cnt)
{
while(cnt--);
}
参考文献
[1]王幸之 钟爱琴. AT89系列单片机原理与接口技术[M].北京:北京航空航天大学出版社,2004.
[2]谭浩强.C程序设计(第二版)[M].北京:清华大学出版社,1999. [3]赵亮.单片机C语音编程与实例[M].北京:人民邮出版社,2004. [4]房小翠、王金凤.单片机实用系统设计技术[M].北京:国防工业出版社,1999. [5]康华光.电子技术基础数字部分(第四版)[M].北京:高等教育出版社,1998. [6]张毅刚.单片机原理及应用[M].北京:高等教育出版社,2003. [7]李广第,朱月秀,王秀山.单片机基础[M].北京:北京航空航天大学出版社,2001. [8]杨振江.A/D、D/A转换器接口技术与实用电路[M].西安:西安电子科技大学出版社.
[9]梅笙,李玮.基于AT89C52控制的数控直流电流源的设计[J].电子测试,2007(2):19-23.
[10]张鑫.单片机原理及应用[M].电子工业出版社,2005. [11]Matthew R, Robin T. Microprocessor controlled power supply[J].
Electronic World Wireless World, 1994,95 (1639) : 524,527.[12]Kuo B C. Automatic control system[M]. 3th ed. New Jersy Prentice Hall,
1975.