- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(賀龙辉)多路花样彩灯电子综合设计报告
电子综合设计报告
设计题目: 多路彩灯控制电路的设计与实现
专业班级: 电信08103
学生姓名:贺龙辉 胡小弢 吴德民
学生学号: 200811020326
200811020314
200811020312
指导教师: 彭建英
设计时间: 2011-05-23至2011-06-12
一、设计题方案论证
1) 设计要求:
a.彩灯的路数为16;
b.彩灯的显示花样至少为5种;
c.在基础速度模式上可以进行加速和减速;
2) 总体方案论证
方案一:采用EDA的功能模块及语言设计。主要分为两个模块:一是彩灯显示模块的时序控制模块;彩灯的显示及模式控制模块。设计的核心是分频器的使用,通过计数器的分频,将控制器的外接频率分为我们预设的预定值。然后通过产生的不同频率依次控制不同显示花样。
此种方案在设计中不易设置频率,容易导致频率过大或过小,并且语言设计比较繁杂。
方案二:基于单片机AT89C51芯片,通过芯片的输出的电平高低控制相应的二极管的亮或灭,采用查询独立键盘状态的方法,使16路彩灯工作于不同的变幻方式、不同的变幻速度。其中,P1^1接按键1,控制花样模式;P1^2接按键2,控制彩灯的加速;P1^3接按键3,控制彩灯减速。P1,P2口接上拉电阻作为普通输出口与彩灯相连显示输出效果。
AT89C51单片机具有丰富的内部资源:4kB闪存,128BRAM,32根I/O接口线,2个16位的定时/计数器和0~24Mhz的工作频率等。使用AT89C51单片机时无须外部拓展,并且该方案易于设计和控制。
二、各单元电路设计与分电路图绘制并分析工作原理
1)彩灯显示模块
二极管分别接到对应的P输出口,当输出口为低电平时对应的灯管亮。
2)模式控制模块
按键一用于控制彩灯的显示花样,按下一次显示下一种模式。当处于最后一种模式时,再一次的按下会回到初始状态。按键二和三分别控制加速和减速,加速有2档,减速3档。
三、总电路图绘制及工作过程说明,电路仿真与分析;
1)总电路图
2) 工作过程
P0口与p1口作为输出口,从而显示彩灯。2口接一数码管,作为所选择的模式方式的显示。3口作为控制口,有三个按键,按下1键可改变彩灯的花样,总共有10种花样;按下2键或3键可实现加速和减速。
3)电路仿真
4)C语言源程序:
#includereg52.h
#includeintrins.h
#define uint unsigned int
#define uchar unsigned char
Unchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,};
ucharnMode,speed,count_move,timer_count,timer_temp,flag_three,flag_six,flag_seven; //数码管显示
sbit k1=P3^0;
sbit k2=P3^1;
sbit k3=P3^2; //按键位定义
bit flag_direct,flag_nine;
uchar flag_eight,temp_nine1,temp_nine2;
uint temp_eight;
void delay(uchar i)
{
uchar j,k;
for(j=i;j0;j--)
for(k=50;k0;k--)
;
} //延时函数
void init()
{
P0=0XFF;
P1=0XFF;
nMode=0;
speed=150;
flag_direct=0;
count_move=0;
timer_count=60;
flag_eight=1;
timer_temp=0;
flag_three=1;
flag_six=1;
flag_seven=1;
temp_eight=0xfffe;
te
文档评论(0)