资源描述
目录
第1章 硬件电路设计 2
1.1 电路原理 2
1.2 数码管显示方案 2
1.3 键盘输入方案 2
1.4 电源 2
1.5 时钟 3
1.6 晶振电路 3
1.7 复位电路 3
1.8 LED灯电路 3
第2章 软件设计 4
2.1 系统流程图 4
2.2 程序设计 4
第3章 仿真原理图 8
3.1 仿真原理图 8
3.2 pcb图 9
3.3 Pcb3D输出实物图 9
参照文献: 10
第1章 硬件电路设计
1.1 电路原理
本硬件核心是STC12C5A60S2单片机,咱们选用AT89C51。因无需扩展外部RAM。系统采用8位共阳极数码管,用来显示循环点亮效果。单片机时不必外扩存储器因而,本流水灯事实上就是一种带有八个发光二极管单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要软件构成单个单片机。
系统采用4个按键控制,4个按键分别控制4种不同流水灯速度。
系统在P0.0到P0.8上接了8个发光二极管,在按一下调速按键时,蜂鸣器鸣叫一声,P0.0二极管亮,此时从P0.0到P0.8二极管依次点亮,数码管显示其调速按键序号。
1.2 数码管显示方案
普通数码管显示有两种方式:动态显示和静态显示。
静态显示长处是程序简朴、显示亮度有保证、单片机CPU开销小,节约CPU工作时间。但占用I/O口线多,每一种LED都要占用一种I/O口,硬件开销大,电路复杂。需要几种LED就必要占用几种并行I/O口,比较合用于LED数量较少场合。固然当LED数量较多时候,可以使用单片机串行口通过移位寄存器方式加以解决,但程序编写比较复杂。
LED动态显示硬件连接简朴,但动态显示扫描方式需要占用CPU较多时间,在单片机没有太多实时测试任务状况下可以采用。
本系统需要采用1位LED数码管来显示按键序号,故本系统选取静态显示方案。
1.3 键盘输入方案
单片机键盘构造可以采用独立式按键和矩阵式键盘两种。独立式按键指直接用I/O口线构成单个按键电路。可在系统中键较少时使用。在按键比较多时候可采用矩阵式键盘。本系统要设立4个键,这4个按键分别调节流水灯速度,已达到调速目。
1.4 电源
VCC-芯片电源,接+5V。VSS - 接地端。用万用表测试单片机引脚电流普通为0v或者5v,这是原则TTL电平,但有时候在单片机程序正在工作时候测试成果并不是这个值而是介于0v-5v之间,其实这之是万用表反映没这样快而已,在某一种瞬间单片机引脚电流还是保持在0v或者5v。
1.5 时钟
XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。
1.6 晶振电路
对于一种高可靠性系统设计,晶体选取非常重要,特别设计带有睡眠唤醒(往往用低电压以求低功耗)系统。这是由于低供电电压使提供应晶体勉励功率减少,导致晶体起振很慢或主线就不能起振。这一现象在上电复位时并不特别明显,因素时上电时电路有足够扰动,很容易建立振荡。在睡眠唤醒时,电路扰动要比上电时小得多,起振变得很不容易。在振荡回路中,晶体既不能过勉励(容易振到高次谐波上)也不能欠勉励(不容易起振)。晶体选取至少必要考虑:谐振频点,负载电容,勉励功率,温度特性,长期稳定性。
1.7 复位电路
复位是单片机初始化操作。单片机启运运营时,都需要先复位,其作用是使CPU和系统中其她部件处在一种拟定初始状态,并从这个状态开始工作。因而,复位是一种很重要操作方式。但单片机自身是不能自动进行复位,必要配合相应外部电路才干实现
1.8 LED灯电路
LED(Light-Emitting-Diode中文意思为发光二极管)是一种可以将电能转化为可见光半导体,它变化了白炽灯钨丝发光与节能灯三基色粉发光原理,而采用电场发光。据分析,LED特点非常明显,寿命长、光效高、无辐射与低功耗。LED光谱几乎所有集中于可见光频段,其发光效率可达80~90%。将LED与普通白炽灯、螺旋节能灯及T5三基色荧光灯进行对比,成果显示:普通白炽灯光效为12lm/W,寿命不大于小时,螺旋节能灯光效为60lm/W,寿命不大于8000小时,T5荧光灯则为96lm/W,寿命大概为10000小时,而直径为5毫米白光LED为20~28lm/W,寿命可不不大于100000小时。有人还预测,将来LED寿命上限将无穷大。
发光二极管串联一种510欧姆电阻后接在5V电压上。LED灯电路接在单片机P1口上。LED灯阳极接电源,阴极接单片机I/O口,低电平驱动,只要在单片机相应引脚给出低电平,LED就会发亮。
第2章 软件设计
2.1 系统流程图
图2-1 程序流程图
2.2 程序设计
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char //数据类型宏定义
#define uint unsigned int
#define out P0
#define out3 P3
/*********************引脚定义********************/
sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
sbit key4=P1^3;
sbit sounder=P2^0;
sbitdula=P2^7;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
voiddelayms(unit);
/*********************主函数**********************/
void main(void)
{
uchari,temp;
if(key1==0)
{
sounder=0;
delayms(1000);
sounder=1;
while(key2==1&&key3==1&&key4==1)
{
temp=0xfe;
for(i=0;i<8&&(key2==1&&key3==1&&key4==1);i++)
{
out=temp; //初始化P0口
delayms(1000);//延时
temp=_crol_(temp,1);//循环左移1位,点亮下一种LED
dula=1;
out3=table[1];
}
}
}
if(key2==0)
{
sounder=0;
delayms(1000);
sounder=1;
while(key1==1&&key3==1&&key4==1)
{
temp=0xfe;
for(i=0;i<8&&(key1==1&&key3==1&&key4==1);i++)
{
out=temp; //初始化P0口
delayms(700);//延时
temp=_crol_(temp,1);//循环左移1位,点亮下一种LED
dula=1;
out3=table[2];
}
}
}
if(key3==0)
{
sounder=0;
delayms(1000);
sounder=1;
while(key1==1&&key2==1&&key4==1)
{
temp=0xfe;
for(i=0;i<8&&(key1==1&&key2==1&&key4==1);i++)
{
out=temp; //初始化P0口
delayms(400);//延时
temp=_crol_(temp,1);//循环左移1位,点亮下一种LED
dula=1;
out3=table[3];
}
}
}
if(key4==0)
{
sounder=0;
delayms(1000);
sounder=1;
while(key1==1&&key2==1&&key3==1)
{
temp=0xfe;
for(i=0;i<8&&(key1==1&&key2==1&&key3==1);i++)
{
out=temp; //初始化P0口
delayms(100);//延时
temp=_crol_(temp,1);//循环左移1位,点亮下一种LED
dula=1;
out3=table[4];
}
}
}
}
/*********************延时函数********************/
voiddelayms(uint j)
{
uchari;
for(;j>0;j--)
{
i=250;
while(--i);
i=249;
while(--i);
}
}
第3章 仿真原理图
3.1 仿真原理图
仿真原理图如图3-1:
图3-1 仿真原理图
3.2 pcb图
Pcb连线图如图3-2:
图3-2 Pcb连线图
3.3 Pcb3D输出实物图
Pcb3D输出实物图如图3-3:
图3-3 Pcb3D输出实物图
参照文献:
[1] 胡汉才.单片机原理与接口技术[M].北京:清华大学出版社,1995.6.
[2] 楼然苗等.51系列单片机设计实例[M].北京:北京航空航天出版社,.
[3] 何立民. 单片机高档教程[M].北京:北京航空航天大学出版社,.
[4] 赵晓安. MCS-51单片机原理及应用[M]. 天津:天津大学出版社,.3.
[5] 肖洪兵 跟我学用单片机[M]. 北京:北京航空航天大学出版社,.8.
[6] 于凤明.单片机原理及接口技术[M].北京:中华人民共和国轻工业出版社.1998
学号
天津城建大学
单片机原理及应用A
设计阐明书
LED灯循环显示速度按键控制
设计
起止日期:6月29日至7月10日
学生姓名
班级
成绩
指引教师(签字)
控制与机械工程学院
7月10日
展开阅读全文