第一篇:单片机课程设计选题
选题一 简易电子琴
基本功能:设计电子琴按键,使得按不同的按键能够发出1,2,3,4,5,6,7等音符 选题二 电子音乐盒
基本功能:设置0-7号按键控制播放不同的音乐
选题三 8×8点阵式LED显示系统
基本功能:能够显示点阵汉字
选题四 电子计算器
基本功能:能够进行加减乘除运算,并显示运算结果
选题五 数字温度计
基本功能:能够实时显示环境温度
选题六 LCD液晶显示系统
基本功能:能够显示英文字符
选题七 电子秒表
基本功能:能够实现秒表计时,并显示计时值,能够清零,重新计时
选题八 电子万年历
基本功能:能够输入初始年月日,并能够显示当前日期
选题九 智能交通灯
基本功能:模拟十字交通路口的红绿黄三种灯的闪亮情况,控制交通
选题十 电子密码锁
基本功能:能够预设3位初始密码,当输入密码与预设密码一致时自动开锁,否则报警 选题十一 摇摇棒
基本功能:当摇摇棒摇动时,能够显示不同变换效果图
提示:可以选用振动开关
选题十二 多功能数字电子钟
基本功能:能够预置初始时间,并能够实时显示当前时间
每组选题人数不超过5人。
论文写作分以下几个部分
一、选题的意义
二、主要功能
三、设计方案
四、硬件电路
五、软件设计
六、总结
自制封面:包含课程设计题目、学号、姓名、班级等内容
第二篇:单片机课程设计选题
单片机原理与接口技术课程设计题目
以下题目任选其一,1-2人一组,自由组合,组内各人必须有明确的分工,原则上同一组最多一个同学得优。
可使用任何单片机或ARM,1-4要求自己设计全部硬件和焊接电路板,5-10题可用现成的单片机开发板,5-6题亦可用proteus仿真。自拟题的根据题目难度由指导老师决定能否用现成的单片机开发板。
一、PC机看门狗(每班最多6人选此题,难度系数:低)
功能:当PC机死机时能自动使其重新启动。
硬件:可使用串口或USB与PC机通讯。
软件:PC机上软件编程可选用任何一种面向对象开发软件,如VC,Delphi等。
实现原理:PC机正常时,每隔一段时间通过串口向单片机发送一些固定的数据,单片机如果收到此数据,说明PC机正常,如果超时未收到,则控制PC机重新启动。
二、电子琴设计(每班最多6人选此题,难度系数:中)
按下1-7,实验箱上的蜂鸣器发出对应的音调(中音),当同时按下L和1-7时是,蜂鸣器发出低音,同时按下H和1-7时,蜂鸣器发高音。只要按键没松开,蜂鸣器一直发声,直到
扩展功能:在彩屏LCD上显示电子屏琴图片,用触摸屏控制发音,就像真正弹电子琴一样。
三、自行车测速仪(难度系数:中偏高)
基本功能:能实时显示自行车的行驶速度
附加功能:实时时钟,行驶里程累计
要求具备一定的实用价值,即要考虑如下问题(也是答辩时的考察和评分指标):
1、体积要做到尽量小
2、为了省电,要使用低电压工作的单片机,比如使用2.0-3.3V工作电压的单片机
3、供电采用可充电的聚合物锂电池(普通手机电池),一次充电后的使用时间最少1
2小时
4、最好能直接用单车轮子的旋转为电池充电(选做)。
四、计算器设计
5、使用4×4行列式键盘和1602液晶(其他液晶亦可)或数码管,实现普通十进制计
算器的功能,键盘符号定义如下:
6、“C”表示退格,即删除键,按一次删除键删掉显示的最后一个数字。
7、如果是用LCD,LCD的第一行显示运算式,第二行显示运算结果。比如要计算机
12+34,在键盘上按下相应键后,LCD的第一行显示“12+34”,按下“=”号后,LCD的第二行显示“=46”。
8、如果用数码管,至少用6位的数码管,按“=”前显示输入的数字和运算符,按“=”
后显示运算结果。
9、其他功能参考普通计算器。
10、基本功能:四则运算、退格功能,按“=”号后再按数字时自动清除之前的输入和
计算结果,重新开始下一次新的计算过程。
11、扩展功能:负数、小数运算。复合运算。连续运算。2进制、8进制运算。触摸功
能:直接在LCD上显示一个计算器,用触摸屏操作。
12、必须考虑不正常输入的情况,答辩时会测试是否能处理各种不正常输入。
五、PC机控制的计算器设计(每班最多6人选此题,难度:中偏高)计算器要实现的功能同第四题。与第四题不同的是:
1、计算器的输入不使用单片机板上的键盘,而是用PC机的键盘输入,PC机将铵键通过串口发给单片机,并在单片机的LCD上显示。
2、在LCD上开光标显示并闪烁,可将光标退回去修改输入的计算式,通过PC机的左右箭头键将光标移到要修改的位置,再按下数字或操作符号可替换光标所在位置的字符。
3、按退格键删除光标前面一个位置的字符,按del键删除光标所在位置的字符。
3、任何时候按“=”键开始计算结果,按了“=”之后还可以将光标退回到计算式上修改计算式。再按“=”则重新计算新的结果。
此题可用现成的单片机开发板,亦可用proteus仿真。
六、单片机用普通IO口实现串口通信(每班最多6人选此题,难度系数:中)
在理解单片机异步串口通信的基础上,不使用单片机的串口模块,用普通的IO口实现与PC机的串口通信的功能,要求实现的基本参数:波特率1200、数据位8位、无奇偶校验、停止位1位。
其他功能:有关参数能方便地修改。
此题主要锻炼编程能力,所以可以用Proteus仿真或现成的单片机开发板做。
七、基于三轴加速度传感器的新型鼠标(难度系数:高)
利用三轴加速度传感器实现鼠标的四个方向的移动光标的功能。有两种方案可以选择:一种是设计一种USB接口连接电脑,只要按USB鼠标的协议收发数据,则PC机上不需另外做驱动;第二种方案是用串口连接电脑,但PC机上需要设计驱动程序,可以采用API函数的控制鼠标移动,可参考下面网址或百度搜索相关资料。
注:此题可用现成的单片机开发板,另加上自己的三轴加速度传感器来做,即传感器模块的硬件需要自己设计,单片机部分可用现成的开发板。
八、智能学习型红外遥控器(难度系数:中偏高)
可学习其他遥控器的按键功能,替换原遥控器各按键的遥控功能。
功能参考淘宝上产品:
注:此题可用现成的单片机开发板,如果开发板上没有红外的收和发模块,则需另加上红外的收发模块。
对物联网感兴趣的同学,可做这个题目,以后再加上zigbee模块就成为物联网家居里面的一个应用。
九、Zigbee无线台灯设计
利用CC2530单片机无线收发数据,实现对台灯的控制。
CC2530单片机模块由Webee提供,单片机板上有1个按键,按1次开台灯,快速按2次则关台灯。控制台灯需要另加继电器,这些控制电路需要自己设计。
对物联网家居感兴趣的同学,可做这个题目。CC2530就是一个增强型的51单片机,学习起来并不复杂。
十、电梯模型(难度系数:高)
设计一个五层楼的电梯模型,每层楼的电梯口2个指示灯(指明电梯运行方向是上或下),2个按键(上、下);电梯厢内7个灯及7个按键(1-5目标楼层选择各一个,开关门各一个)。可用现成的单片机开发板,其他模块自做。
十一、自拟题
鼓励大家自拟题目,但需指导老师的同意。欢迎大家选择智能家居和物联网有关的题目。
选题必须在课程设计开始的第二天中午前确定好,班长统计好各人的题目后,将汇总表发到邮箱:23647837@qq.com
格式:
答疑方式及时间:QQ答疑(全天候)、现场答疑(先预约)
答辩时间:初定第10周四下午和周五全天,答辩时必须带上打印好的课程设计报告。题目难度大的可以推迟答辩,具体时间再商定。
答疑及答辩地点:工一407
注意事项:每个组答辩完后硬件暂时保留在实验室,待全部同学答辩完后再发还给大家,所以要求在自己的硬件上贴上标签,标签上写明组内各成员的班级、学号和姓名,注意标签贴牢一些,不要轻易就掉了。
课程设计报告:详细记录课程设计过程中碰到的难点和问题、问题的解决过程及解决方法,心得体会。上交的打印稿不需附程序源码,但需有程序框图及软件的操作说明。报告要有操作界面的截图,特别是自已做的硬件,要有整体的照片。
班长收集全班同学的程序源码及课程设计报告电子文档压缩打包上交。
答辩注意事项:除了书本上已有的例子,绝不允许抄袭其他同学的程序,先做好的同学先答辩,答辩时如果发现某段程序与已答辩的同学雷同,则答辩不能通过。
允许参考,但不允许抄袭,参考是指先看懂别人的程序,然后自己编程,而不是照抄(复制)别人的某段程序,也不是在别人的程序基础做修改,所有的代码一定要自己写。
第三篇:单片机课程设计
设计题目: 单片机课程设计
学生姓名:
学
院: 电气与信息工程学院
班
级: 电子111班 指导教师:
日 期: 2014年9月20日
一、课程设计目的:
了解电子元器件的功能与原理,掌握单片机的结构和原理,学会使用单片机应用开发技术的相关软件如 keill、STC_ISP_V394等,能够使用c语言的语言编程简单的功能。
二、设计的思想:
利用所提供的单片机和开发板的原理图用keill软件编程程序以实现一些功能。然后用STC_ISP_V394.exe软件将编译完全正确的程序生成的hxe文件下载到开发板上,再调试编译的程序能否实现其所设计的功能。
1、对蜂鸣器的了解:
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,它由振荡器、电磁线圈、磁铁、振动膜片及外壳组成,接通电源后,振荡器产生的音频信号由电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性的振动发声。
2、设计:
我们所使用的开发板实物图如图一,单片机对右上角蜂鸣器的控制是加入三极管接入vcc,单片机的第22引脚和负极上,以此来控制蜂鸣器工作。单片机我们选择STC89C52RC+1602液晶来实现对蜂鸣器的控制及显示所需要的信息。
图一 调试说明:
首先用Keil软件创建一个工程,将程序源代码输入并编译生成单片可执行的.hex文件。其次,打开单片机实践板的电源,接好串口线,用STC-ISP烧录软件,将.hex文件烧录入单片机中。程序下载完毕后,单片机会自动执行程序功能。最后,观察程序功能的执行情况,看是否达到了设计要求。
如果单片机实践板硬件电路的执行结果与设计结果一致,则说明设计过程及流程没有问题,完全符合设计要求。否则,先检查单片机实践板的硬件电路是否完好,是否有断点、漏焊、虚焊以及元器件是否完好等情况,排除故障重新连接后重新进行调试。如果仍然无法正
常实现,则说明程序编写有误,需要认真检查程序流程,然后经过反复的修改与调试排除故障,实现设计要求的各项功能。编译和烧写该程序到单片机:
(1)用Keil编译上面的代码,并设置产生16进制代码文件*.hex.(2)用专用下载线,连接好实验板和电脑串口(DB9)(2)运行hex文件烧写软件STC_ISP_V394.exe
选单片机的型号,并打开编译产生好的hex文件
点击下载,给开发板上电。
3、实现的功能:使用单片机将歌曲《八月桂花》的调子通过蜂鸣器播放出来,用1602液晶将想要表达的信息有步骤地显示在液晶显示屏上,并且调子与显示内容可以任意通过修改的程序烧录到单片机内,实现设计产品的使用性与灵活性。
三、实验程序:
/************************************************************************
[主题] C51音乐程序《八月桂花》
[功能]
通过单片机演奏音乐,显示一些内容
/**********************************************************************/
#include
#include
//本例采用89C52, 晶振为11.0592MHZ
//关于如何编制音乐代码, 其实十分简单,各位可以看以下代码.//频率常数即音乐术语中的音调,而节拍常数即音乐术语中的多少拍;
//所以拿出谱子, 试探编吧!
unsigned char i=0;sbit Beep = P2^7;
unsigned char p,m;
//m为频率常数变量
unsigned char n=0;//n为节拍常数变量
unsigned char code music_tab[] ={
0x18, 0x30, 0x1C , 0x10, //格式为: 频率常数, 节拍常数, 频率常数, 节拍常数,0x20, 0x40, 0x1C , 0x10,0x18, 0x10, 0x20 , 0x10,0x1C, 0x10, 0x18 , 0x40,0x1C, 0x20, 0x20 , 0x20,0x1C, 0x20, 0x18 , 0x20,0x20, 0x80, 0xFF , 0x20,0x30, 0x1C, 0x10 , 0x18,0x20, 0x15, 0x20 , 0x1C,0x20, 0x20, 0x20 , 0x26,0x40, 0x20, 0x20 , 0x2B,0x20, 0x26, 0x20 , 0x20,0x20, 0x30, 0x80 , 0xFF,0x20, 0x20, 0x1C , 0x10,0x18, 0x10, 0x20 , 0x20,0x26, 0x20, 0x2B , 0x20,0x30, 0x20, 0x2B , 0x40,0x20, 0x20, 0x1C , 0x10,0x18, 0x10, 0x20 , 0x20,0x26, 0x20, 0x2B , 0x20,0x30, 0x20, 0x2B , 0x40,0x20, 0x30, 0x1C , 0x10,0x18, 0x20, 0x15 , 0x20,0x1C, 0x20, 0x20 , 0x20,0x26, 0x40, 0x20 , 0x20,0x2B, 0x20, 0x26 , 0x20,0x20, 0x20, 0x30 , 0x80,0x20, 0x30, 0x1C , 0x10,0x20, 0x10, 0x1C , 0x10,0x20, 0x20, 0x26 , 0x20,0x2B, 0x20, 0x30 , 0x20,0x2B, 0x40, 0x20 , 0x15,0x1F, 0x05, 0x20 , 0x10,0x1C, 0x10, 0x20 , 0x20,0x26, 0x20, 0x2B , 0x20,0x30, 0x20, 0x2B , 0x40,0x20, 0x30, 0x1C , 0x10,0x18, 0x20, 0x15 , 0x20,0x1C, 0x20, 0x20 , 0x20,0x26, 0x40, 0x20 , 0x20,0x2B, 0x20, 0x26 , 0x20,0x20, 0x20, 0x30 , 0x30,0x20, 0x30, 0x1C , 0x10,0x18, 0x40, 0x1C , 0x20,0x20, 0x20, 0x26 , 0x40,0x13, 0x60, 0x18 , 0x20,0x15, 0x40, 0x13 , 0x40,0x18, 0x80, 0x00
};
void int0()interrupt 1
//采用中断0 控制节拍
{ TH0=0xd8;
TL0=0xef;
n--;
}
void delay(unsigned char m)
//控制频率延时
{
unsigned i=3*m;
while(--i);
}
void delayms(unsigned char a)//豪秒延时子程序
{
while(--a);
//采用while(--a)不要采用while(a--);各位可编译一下看看汇编结果就知道了!
}
typedef unsigned char BYTE;typedef bit BOOL;
sbit LCD_RS = P2^0;
sbit LCD_RW = P2^1;sbit LCD_EP = P2^2;
BYTE code dis1[] = {“
WLCOME TO
”};BYTE code dis2[] = {“
DanPianJi ”};BYTE code dis3[] = {“
111iZnaiD
”};BYTE code dis4[] = {“
eiXeiX ”};
delays(int ms){
// 延时子程序 int i;while(ms--){
for(i = 0;i< 250;i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
} } }
BOOL lcd_bz(){
// 测试LCD忙碌状态 BOOL result;LCD_RS = 0;LCD_RW = 1;LCD_EP = 1;_nop_();_nop_();_nop_();_nop_();result =(BOOL)(P0 & 0x80);LCD_EP = 0;return result;}
lcd_wcmd(BYTE cmd){
while(lcd_bz());LCD_RS = 0;LCD_RW = 0;LCD_EP = 0;_nop_();_nop_();P0 = cmd;_nop_();_nop_();_nop_();_nop_();LCD_EP = 1;_nop_();_nop_();_nop_();_nop_();LCD_EP = 0;
}
lcd_pos(BYTE pos){
lcd_wcmd(pos | 0x80);
// 写入指令数据到LCD //设定显示位置
}
lcd_wdat(BYTE dat)
{
//写入字符显示数据到LCD while(lcd_bz());LCD_RS = 1;LCD_RW = 0;LCD_EP = 0;P0 = dat;_nop_();_nop_();_nop_();_nop_();LCD_EP = 1;_nop_();_nop_();_nop_();_nop_();LCD_EP = 0;}
lcd_init(){
lcd_wcmd(0x38);
delays(1);lcd_wcmd(0x0c);
delays(1);lcd_wcmd(0x06);
delays(1);lcd_wcmd(0x01);
delays(1);}
void main()
{
BYTE j;
lcd_init();
delays(10);
//LCD初始化设定
//16*2显示,5*7点阵,8位数据//显示开,关光标 //移动光标 //清除LCD的显示内容
// 初始化LCD
lcd_wcmd(0x06);
//向右移动光标
lcd_pos(0);
//设置显示位置为第一行的第1个字符
j = 0;
while(dis1[ j ]!= ' ')
{
//显示字符“Welcome TO”
lcd_wdat(dis1[ j ]);
j++;
delays(30);
//控制两字之间显示速度
}
lcd_pos(0x40);
j = 0;
while(dis2[ j ]!= ' ')
{
lcd_wdat(dis2[ j ]);
j++;
delays(30);
}
delays(800);
lcd_wcmd(0x01);
delays(1);
lcd_wcmd(0x04);
lcd_pos(15);
j = 0;
while(dis3[ j ]!= ' ')
{
lcd_wdat(dis3[ j ]);
j++;
delays(30);
}
lcd_pos(0x4F);
j= 0;
while(dis4[ j ]!= ' ')
{
lcd_wdat(dis4[ j ]);
j++;
delays(30);
}
delays(800);
//设置显示位置为第二行第1个字符 //显示字符“ DanPianJi ”
//控制两字之间显示速度
//控制停留时间
//清除LCD的显示内容
//向左移动光标
//设置显示位置为第一行的第16个字符
//显示字符“DianZi111”
//控制两字之间显示速度
//设置显示位置为第二行的第16个字符//显示字符“ XieXie ”
//控制两字之间显示速度
//控制停留时间
TMOD&=0x0f;
TMOD|=0x01;
TH0=0xd8;TL0=0xef;
IE=0x82;
play:
while(1)
{
a: p=music_tab[i];
if(p==0x00)
{ i=0, delayms(1000);goto play;}
//如果碰到结束符,延时1秒,回到开始再来一遍
else if(p==0xff){ i=i+1;delayms(100),TR0=0;goto a;} //若碰到休止符,延时100ms,继续取下一音符
else
{m=music_tab[i++], n=music_tab[i++];} //取频率常数 和 节拍常数
TR0=1;
//开定时器1
while(n!=0)Beep=~Beep,delay(m);
//等待节拍完成, 通过P1口输出音频(可多声道哦!)
TR0=0;
//关定时器1
}
}
四、电路图的protue仿真
五、单片机课程设计心得体会:
这个学期的单片机课已经早早的上完了,但是理论纯属理论,没有与实践的结合总让我们学的不踏实,感觉没有达到学以致用的效果。所庆幸的是在课程介绍考试完之后,老师给我们安排了这次单片机课程设计,给了我们学以致用的做好的实践
关于这次课程设计,我们花费了比较多的心思,既是对课程理论内容的一次复习和巩固,还让我们丰富了更多与该专业相关的其他知识,比如软件应用等,在摸索中学习,在摸索中成长,在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获,在真正设计之前我们做了相当丰富的准备,首先巩固一下课程理论,再一遍熟悉课程知识的构架,然后结合加以理论分析、总结,有了一个清晰的思路和一个完整的的软件流程图之后才着手设计。在设计程序时,我们不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;养成注释程序的好习惯是非常必要的,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也能为资料的保存和交流提供了方便;我觉得在设计课程过程中遇到问题是很正常,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的课程设计又出错了。
除了对此次设计的准备工作之外,我们还学到了很多平时难得的东西,首先是团队协作,在这次设计当中,难免和同学产生观点和意见的分歧,以及分工明细、时间安排等不合理,通过这次设计,我们体会到了团结合作的重要性及力量之强大,还有让我们处理事情更加有条理,思路更加清晰明了了,发现、提出、分析、解决问题和实践能力的提高都将受益于我在以后的学习、工作和生活中。
除了对此次设计的准备工作之外,我们还学到了很多平时难得的东西,首先是团队协作,在这次设计当中,难免和同学产生观点和意见的分歧,以及分工明细、时间安排等不合理,通过这次设计,我们体会到了团结合作的重要性及力量之强大,还有让我们处理事情更加有条理,思路更加清晰明了了,发现、提出、分析、解决问题和实践能力的提高都将受益于我在以后的学习、工作和生活中。
第四篇:单片机课程设计
基于单片机的火灾智能报警控制系统的设计
前言
在各种灾害中,火灾是最经常、最普通地威胁公众安全和社会发展的灾害之一。人类能够对火进行利用和控制,是文明进步的一个重要标志。火,给人类带文明进步、光明和温暖。但是,失去控制的火,就给人类造成灾害。据统计,我国 70 年代火灾年平均损失不到 2.5 亿元,80 年代火灾年平均损失不到
3.2 亿元。进入 90 年代,特别是 1993 年以来,火灾造成的直接财产损失上升到年均十几亿元,年均死亡 2000 多人。2010年上海静安区高层住宅着火,导致58人死亡,70余人受伤。2014年1月云南香格里拉大火,烧毁房屋100多栋,直接经济损失1亿多元人民币。火灾事件经常发生,防止火灾事故关系到人民群众的生命财产安全和社会和谐稳定。现在各种电子产品的普及,再加上人们防火意识的不强,这些都给火灾的发生带来了巨大的安全隐患。
对于火灾最关键的问题在于预防,目前防火报警系统趋于智能化、自动化,灵敏程度也越来越高。在这种背景下,基于单片机的火灾智能报警控制系统能突显出其巨大的优越性。目前,国内大多数偏重于商场、宾馆、高级写字楼、大型仓库等大型火灾报警系统的研发和设计。本系统侧重于小型火灾智能报警系统的设计,可在火灾发生初期检测到并且报警,还能够实时显示温度和烟雾浓度。
第五篇:单片机课程设计
单片机课程设计
课题: 简易电子琴设计
学
院:
电气与信息工程学院 专
业:
电子信息工程 姓
名:
李琳琳 学
号:
093411106
指导老师:
田巍
河南城建学院
2014年
01 月
01 日