课程设计模板.docx
- 文档编号:5203010
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:16
- 大小:789.11KB
课程设计模板.docx
《课程设计模板.docx》由会员分享,可在线阅读,更多相关《课程设计模板.docx(16页珍藏版)》请在冰豆网上搜索。
课程设计模板
应用物理学专业实验课程设计
题目
学生姓名
学号
学院
专业班级
指导教师
完成日期
太原理工大学
应用物理学专业实验课程设计任务书
课程设计题目:
基于单片机的16LED摇摇棒的设计
设计目的:
针对物理学专业实验课程要求,对学生进行实用型电子线路设计、安装、调试等各环节的综合性训练,培养学生运用课程中所学的理论与实践紧密结合,独立地解决实际问题的能力.
设计任务和要求:
1.基于AT89S52单片机设计一款LED显式棒(又称摇摇棒);
2.该摇摇棒能够显示字母、汉字及简单的图案等;
3.掌握点阵屏的显示原理,并将其运用到摇摇棒的显示中去;
4.学会使用AltiumDesigner设计印制电路板;
设计内容:
1.画出摇摇棒的原理图;
2.画出软件程序流程图;
3.焊接电路板,调试程序,并对不合理之处加以改正;
4.递交课程设计报告(打印稿),程序应有适当注释。
推荐的主要参考文献:
1.张俊谟.单片机中级教程.北京航空航天大学出版社,2006.10
2.赵建领.单片机开发宝典。
电子工业出版社,2007。
4
3.谭浩强。
C程序设计。
清华大学出版社,2009.7
4.电子线路基础轻松入门。
人民邮电出版社,2010。
6
5.杜洋。
制作SHOOK16摇摇棒.无线电杂志,2010。
1
学生应交出的设计文件:
1.课程设计说明书
2.摇摇棒的电路原理图
工作计划及进度:
2012年
12月25日—12月27日:
查阅资料;
……
……
……
专业班级
要求设计工作的起止日期
指导老师签字:
日期
教研室主任审查签字:
日期
系主任批准签字:
日期
应用物理学专业实验课程设计说明书
基于单片机的16LED摇摇棒的设计
第一章概述
LED显示棒,又称摇摇棒,是一种利用视觉暂留效应制作的“高科技”玩具。
可以用“静如处子,动如脱兔”来形容它,即当静止时,它只是几个LED发光二极管(后简称LED),而一旦按照一定的频率去摇晃它,它就会随着位置的变化而变化(亮或灭),最终显示一幅图片或字符串.
……
本设计要求制作LED显示棒。
通过摇晃时形成的亮灯区域能分辨出“蓝色”两个字.
第二章设计方案
2。
1设计目的
本次设计制作的是一个显示棒,基本要求就是要小巧、轻便,所以要将单片机的系统板简化设计.通过本次设计,加强学生对MCS-51单片机的深刻理解,提高学生的设计能力和动手能力。
2.2设计要求
设计一个16只高亮度LED发光二极管构成的摇摇棒,通过单片机编程配合手的左右摇晃就可呈现一幅完整的画面,可以显示字符、图片.
2.3设计思路
本系统要求设计一个LED显示棒且需要有按键进行内容切换,它主要是由中央控制部分,LED驱动部分,LED显示部分以及电源部分组成.
单片机将提取的字模进行存储,当接收到按键输入的指令时单片机就将相应的字模代码通过I/O口输出,使LED灯点亮,利用视觉暂留原理最终使图案完整的显示在摆动的显示屏中。
1。
LED灯的选择:
高亮LED发光二极管。
高亮LED比普通LED的显示效果要好很多.
2.外部中断信号产生方式:
通过外部中断可以控制数据开始传输的时刻.选择好外部中断来源是本次制作的难点及重点。
使用水银开关。
通过摇晃使得水银开关的水银珠与触点接触和断开,利用这种接触产生的电平变化来触发中断,结合软件控制显示,制作简单,使用方便。
3.16只LED发光管作为画面每一列的显示,左右摇晃起到了扫描的作用人眼的视觉暂留现象使得看到的是一幅完整的画面。
与LED点阵的显示有几分相仿。
第三章硬件设计
3.1水银开关
水银开关,又称倾侧开关,是电路开关的一种,以一接着电极的小巧容器储存着一小滴水银,容器中多数为真空或注入惰性气体。
3。
1.1水银开关的原理:
因为重力的关系,水银水珠会随容器中较低的地方流去,如果同时接触到两个电极的话,开关便会将电路闭合,开启开关。
注意:
水银对人体及环境均有毒害,因此使用水银开关时,请务必小心谨慎,以免破出;在不再使用时,也应该妥善处理。
3。
2摇摇棒原理图
图2摇摇棒原理图
上图包含两个主要部分:
单片机最小系统和LED显示部分。
3。
2.1单片机最小系统:
本装置采用了AT89S52单片机,它支持直接通过串口线下载程序,对于本设计而言,显示文字需经常改变,AT89S52方便许多,因此选择AT89S52作为本设计所用的单片机。
振荡电路采用12MHz晶振,每个机器周期为1μs.
ISP选择为六脚ISP下载口,由于摇摇棒为长条形外观,使用六脚ISP下载口可以更节省空间。
3.2。
2LED显示系统:
本装置采用了16个3MM高亮LED,
其额定工作电压在3V左右,因此可串联
一个可承受较大电流的二极管1N4007来进行分压,为设计方便,二极管采用共阳接法。
16个LED分别接在P0和P2口上。
图5LED显示模块
首先,我们根据LED点阵屏的显示原理:
点阵屏的显示分为行扫描与列扫描两种,列扫描是将我们的字模数组通过点阵屏的行驱动进行输入,然后通过列对每一行进行扫描,当列为低(高)电平、行为高(低)电平时则表示该点为图案的一部分,将其读出、显示。
它的顺序可以总结为:
行不断的送数据,每送完设置的信息后列进行读取,然后行再次送数据,列再次读取……依次循环下去,一幅完整的图案就显示在了显示屏上。
而本次设计的LED显示棒数据传输原理与LED点阵屏相似。
可以把LED显示棒看成是LED点阵屏中的一列。
为了使显示的图案清晰,我们使用了16个LED管将它们排成一列,整个屏在静止时也就相当于16行×1列。
数据传输时我们同样使用行送数据、列扫描.在摆动过程中,应用视觉暂留原理,我们点亮的列不会很快的消失,而是随着摆动的方向继续向前移动,只要移动的速度高于视觉暂留的最短时间显示内容就不会熄灭,至此,一幅图案也就可以这样被“摆动"出来了。
3。
2。
3水银开关的作用:
棒在摇动时,只能在朝某一方向摇动时显示,否则会出现镜像字或镜像画面,所以通过接一只水银开关来控制,使摇摇棒从左向右摇动时将内容显示出来。
整套系统以AT89S52单片机作为核心控制系统,使用16只LED灯作为显示屏,其中16只直接与单片机I/O口相连.当水银开关触发中断T1时,单片机向16只LED传送数据,依据人体的视觉暂留原理,随着显示棒的摆动前进,输出数据的列也不会立刻消失而是随着摆动逐渐显示在了形成的扇形区域。
3.3硬件制作
由于制作PCB板的成本太高,我使用了长条形的洞洞板,手工焊接,跳线连接。
因此做工比较粗糙。
原先使用的是直径5mm的红色LED,感觉太大了些,远看效果很好但近看
时字不够连贯。
后改为3mm
的高亮LED,效果好了很多.
水银开关里的水银珠很活跃,导致在接通时容易产生抖动,所以将水银开关斜向上放置(尖朝斜上方45°角),靠水银珠自身重力的作用减少抖动:
IC座里面隐藏元件,既美观又能保护元件,还可以节省空间:
第四章软件设计
4.1软件设计思路
在摇动LED棒的时候单片机必须单程传送数据否则显示的图形会产生重影,影响视觉效果。
因此当系统开始工作后通过惯性开关的位置来使单片机实现单程传送数据给LED。
如果水银开关位于右边,则进入外部中断1并将一变量置1,。
在变量为1期间让单片机以一定的频率将数据传送给LED。
如果水银开关位于左边,则进入外部中断0并将变量置0,.在这期间单片机不会传送数据给LED。
在送数据时,数据送完后应延时一段时间来使摇动时显示的每个字不会太拥挤。
之后再立刻熄灭LED并开始重新判断水银开关的位置。
4.2主程序流程图
通过软件设计思路分析,得到该系统的主程序流程图如下:
系统开始运行,内部进行初始化后,等待外部中断.当摇动到指定位置时,由水银开关出触发外部中断,再经过一段时间延时后开始显示。
显示完成返回主程序,等待下一个摇动周期的到来.
4。
3汉字取模软件
汉字取模软件采用晓奇工作室提供的液晶汉字取模软件,设置方便,简单实用。
参数设定为:
输出格式:
从上到下从左到右C语言编程
取模方式:
纵向8点下高位
字库选择:
粗宋16点阵
4。
4程序编写
本程序由keil软件编写,程序如下:
/**********************************************************
程序名称:
LED摇摇棒显示64*16像素
编写:
某某某
时间:
2012/01/11
**********************************************************/
#include〈reg52。
h>
#defineKEYP3^0//定义画面切换按键
unsignedcharKY;
unsignedcharpic=0,num=0;//pic为按键次数;
/*****汉字模数*****/
unsignedcharcodenewyear[]=
{
//新
0x00,0x00,0x44,0x22,0x4C,0x1A,0x7C,0x4E,
0xD7,0xFF,0xE6,0x7F,0x7C,0x0E,0x5C,0x9A,
0x44,0x60,0xFE,0x3F,0xFC,0x1F,0x46,0x00,
0xC2,0xFF,0xC3,0xFF,0x62,0x00,0x40,0x00,
//年
0x00,0x00,0x20,0x04,0x10,0x04,0x18,0x04,
0xEC,0x07,0xCF,0x07,0x4A,0x04,0x48,0x04,
0xF8,0xFF,0xF8,0xFF,0x48,0x04,0x48,0x04,
0x68,0x04,0x4C,0x04,0x08,0x06,0x00,0x04,
//快
0x00,0x00,0xC0,0x00,0x60,0x00,0xFF,0xFF,
0xFE,0x7F,0x30,0x80,0x60,0x41,0x08,0x71,
0x08,0x3D,0xFF,0x0F,0xFE,0x07,0x08,0x0D,
0xF8,0x39,0xFC,0x71,0x08,0xE1,0x00,0x41,
//乐
0x00,0x00,0x00,0x40,0x80,0x20,0x80,0x30,
0xFE,0x1C,0xFC,0x0E,0x84,0x24,0x84,0x40,
0xFE,0xFF,0xF6,0x7F,0x82,0x00,0x83,0x02,
0xC2,0x0C,0x80,0x18,0x00,0x70,0x00,0x20
};
unsignedcharcodeschool[]=
{
//太
0x00,0x00,0x00,0x80,0x20,0x40,0x20,0x60,
0x20,0x30,0x20,0x1C,0x20,0x0F,0xFF,0x1B,
0xFE,0x70,0xA0,0x23,0x20,0x0E,0x20,0x38,
0x20,0x70,0x30,0x60,0x20,0xC0,0x00,0x40,
//原
0x00,0x00,0x00,0x80,0x00,0x70,0xFF,0x3F,
0xFE,0x4F,0x02,0x20,0xFA,0x33,0xF2,0x5D,
0x5A,0x49,0x5E,0xFF,0x56,0x7F,0x52,0x05,
0xF2,0x0B,0xFA,0x19,0x13,0x70,0x02,0x20,
//理
0x00,0x00,0x44,0x10,0x44,0x30,0xFC,0x1F,
0xFC,0x1F,0x46,0x08,0x44,0x48,0xFF,0x45,
0xFE,0x44,0x92,0x44,0xFE,0x7F,0xFE,0x7F,
0x92,0x44,0xFE,0x45,0xFF,0x64,0x02,0x40,
//工
0x00,0x00,0x00,0x40,0x04,0x40,0x04,0x40,
0x04,0x40,0x04,0x40,0x04,0x40,0xFC,0x7F,
0xFC,0x7F,0x04,0x40,0x04,0x40,0x04,0x40,
0x06,0x40,0x04,0x60,0x00,0x40,0x00,0x00
};
/*****n(us)延时子程序*****/
voiddelay_us(unsignedintn)
{
while(n—-);
}
/*****显示子程序*****/
voiddisplay1(void)
{
unsignedchari;
delay_us(5000);//延时时间不定,试着调整使得显示内容居中即可
for(i=0;i<64;i++)
{
P0=~name[i*2];
P2=~name[i*2+1];
delay_us(1000);
}
}
voiddisplay2(void)
{
unsignedchari;
delay_us(5000);//延时时间不定,试着调整使得显示内容居中即可
for(i=0;i<64;i++)
{
P0=~newyear[i*2];
P2=~newyear[i*2+1];
delay_us(1000);
}
}
voiddisplay3(void)
{
unsignedchari;
delay_us(5000);//延时时间不定,试着调整使得显示内容居中即可
for(i=0;i〈64;i++)
{
P0=~school[i*2];
P2=~school[i*2+1];
delay_us(1000);
}
}
/*****中断服务程序*****/
voidintersvr0(void)interrupt0using1
{
KY=~KY;//每个摇动来回水银开关会在摆幅两端分别产生下降沿中断,只提取其中一次(从左向右摇才显示)
if(KY==0)
{
switch(pic)//选择画面
{
case0:
{
display1();
break;
}
case1:
{
display2();
break;
}
case2:
{
display3();
break;
}
default:
{
display1();
}
}
}
}
/*****中断初始化*****/
voidinit_int0()
{
IT0=1;//中断为负跳变出发方式
EX0=1;//外部中断0允许
}
/*****主函数*****/
voidmain(void)
{
init_int0();
EA=1;//开中断,下降沿中断
KY=0;
while
(1)//主程序中只检测按键
{
if(KEY==0)//画面切换键按下
{
delay_us(10000);//按键消抖
if(KEY==0);
while(!
KEY);
pic++;
}
if(pic>2)pic=0;
}
}
/*****END*****/
第五章总结
……
……
参考文献
1.张俊谟.单片机中级教程。
北京航空航天大学出版社,2006。
10
2.赵建领.单片机开发宝典。
电子工业出版社,2007.4
3.谭浩强。
C程序设计。
清华大学出版社,2009。
7
4.电子线路基础轻松入门。
人民邮电出版社,2010。
6
5.杜洋。
制作SHOOK16摇摇棒。
无线电杂志,2010.1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 模板