课程设计(论文)-单片机基本功能的设计与实现_第1页
课程设计(论文)-单片机基本功能的设计与实现_第2页
课程设计(论文)-单片机基本功能的设计与实现_第3页
课程设计(论文)-单片机基本功能的设计与实现_第4页
课程设计(论文)-单片机基本功能的设计与实现_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGEPAGE1

课程设计(论文)设计(论文)题目单片机基本功能的设计与实现姓名:学号:学院:专业:年级:指导教师:2012年05月23日目录摘要 2前言 3一.80c52单片机简介 4二、 开发板各个模块 51、复位电路 52、流水灯 63、蜂鸣器 74、数码管显示电路 75、DY18b64LCD显示 96、ds1302时钟电路 107、USB供电线路 118、独立按键 12三、程序调试与编译 13四、程序设计(举例) 141、跑马灯 142、音乐播放(世上只有妈妈好) 153、独立按键控制数码管显示 18结语 20摘要本设计以STC89C52单片机为控制系统,实现上电复位,手动复位,晶振,流水灯,蜂鸣器,四位八段数字动态显示,独立按键显示。外加5V电源,DS1302时钟,126*84显示屏等。在单片机最小系统中可以继续扩展,实现电机控制,声音控制,灯光控制,温度控制,频率控制等。是实现单片机控制的基本模型。关键词STC89C52最小系统控制程序设计ABSTRACTThedesignforthecontrolofsingle-chipSTC89C52system,power-onreset,manualreset,oscillationtransistors,speakers,foureightthenumberofdynamicdisplay,independentkey.5Vexternalpowersupply,DS1302clock,126*84LCDandsoon.Inthesmallestsingle-chipsystemcancontinuetoexpand,therealizationofmotorcontrol,soundcontrol,lightingcontrol,temperaturecontrol,frequencycontrol.Istoachievesingle-chipmicrocomputertocontrolthebasicmodel.KEYWORDSSTC89C52Singlechipminimizesystemcontrolprogramdesign前言MCS-51系列单片机目前在国内广泛应用于各个行业,而且学习资料齐全,是单片机学习的首选。本学习版采用STC89C52芯片的I/O口设计显示/键盘电路,而且设有扩展接口作为通讯和中断接接口,扩展性强。通过此电路的学习,可熟悉51系列单片机结构特点,掌握软件设计的基本思路和基本方法,为进行更复杂的系统设计打下坚实的基础,单片机课程设计给我很好的向导。以下是我所设计的单片机板,如下:图1-1-1单片机正面图图1-1-2单片机背面图一.80c52单片机简介所选用为STC89C52单片机,STC89C52具体介绍如下:①主电源引脚(2根)VCC(Pin40):电源输入,接+5V电源GND(Pin20):接地线②外接晶振引脚(2根)XTAL1(Pin19):片内振荡电路的输入端XTAL2(Pin20):片内振荡电路的输出端③控制引脚(4根)RST/VPP(Pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。ALE/PROG(Pin30):地址锁存允许信号PSEN(Pin29):外部存储器读选通信号图1-2-189C52单片机管脚图EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。图1-2-189C52单片机管脚图④可编程输入/输出引脚(32根)STC89C52单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。PO口(Pin39~Pin32):8位双向I/O口线,名称为P0.0~P0.7P1口(Pin1~Pin8):8位准双向I/O口线,名称为P1.0~P1.7P2口(Pin21~Pin28):8位准双向I/O口线,名称为P2.0~P2.7P3口(Pin10~Pin17):8位准双向I/O口线,名称为P3.0~P3.7图1-2-2单片机主控单元开发板各个模块1、复位电路按钮复位需要人为在复位输入端RST上加入高电平。一般采用的办法是在RST端和正电源Vcc之间接一个按钮。当人为按下按钮时,则Vcc的+5V电平就会直接加到RST端。手动按钮复位的电路如所示。由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求。原理图如下所示:图2-1-1复位电路这里我们采用了最简单的方式按键复位电路2、流水灯这里采用了共阳极接法,通过单片机控制p1八个口的电平,高电平时不亮,低电平时led导通发光。采用移位的方式实现流水灯的功能。利用的控制程序在程序设计章节从给出。原理图以及实物图如下所示:图2-2-1流水灯控制电路介绍图2-2-2实际流水灯3、蜂鸣器蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它,单片机IO引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路.图2-3-1程序中改变单片机P2.5引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音调的声音.另外,改变P2.5输出电平的高低电平占空比,则可以控制蜂鸣器的声音大小.实际蜂鸣器参见图2-4-2.4、数码管显示电路LED数码管是将8个发光二极管封装而成的,每段为一发光二极管,其字形结构如图(a)所示.选择不同字段发光,可显示出不同的字形,例如,当a、b、c、d、e、f、g字段亮时,显示出字符“8”;当a、f、g、c、d字段亮时,显示出字符“5”.图(b)所示为单个LED数码管的引脚排列图,图中com引脚是单个LED数码管的公共端。共阳极数码管——>内部8个LED的阳极连接在一起作为公共引出端; 只有在公共端接高电平时,该数码管才会亮.共阴极数码管——>内部8个LED的阴极连接在一起作为公共引出端; 只有在公共端接低电平时,该数码管才会亮.图2-4-1数码管电路图这里采用的是共阳极接法,通过单片机控制p0口的高低电平实现数码管的通断。下为数码管及蜂鸣器的实物图:图2-4-2数码管及蜂鸣器实物5、DY18b64LCD显示带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8×4行16×16点阵的汉字.也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。图2-5-1DY18b64LCD显示电路图2-5-2显示屏插槽6、ds1302时钟电路80c52的时钟电路如图所示,由振荡器及定时元件、时钟发生器、地址锁存允许信号ALE等几部分组成。振荡器的工作频率在1.2~12MHZ间,一般用晶振做定时控制元件.这里采用12MHZ的晶振作为振荡器。图2-6-1时钟电路电路图图2-6-2时钟电路实物7、USB供电线路USB口的1脚为+5V,4脚为GND,在你设计版时可以直接引用这个电源为单片机供电,如板上需要3.3V则再加个1117模块稳压输出3.3V。在我的使用中,我发现:1、不要知路及反接2、电流不要超过500mA,一般我们会在USB进来的+5V上串一个500mA的自恢复保险图2-7-1USB供电电路图2-7-2供电电路实物图8、独立按键在单片机应用系统中,除了复位按键有专门的复位电路及专一的复位功能外,其它按键都是以开关状态来设置控制功能或输入数据.当所设置的功能键或数字键按下时,计算机应用系统应完成该按键所设定的功能,键信息输入是与软件结构密切相关的过程.对于一组键或一个键盘,总有一个接口电路与CPU相连.CPU可以采用查询或中断方式了解有无将键输入并检查是哪一个键按下,将该键号送入累加器ACC,然后通过跳转指令转入执行该键的功能程序,执行完后再返回主程序。本设计是利用按键控制数码管的变化。图2-8-1独立按键设计图2-8-2独立按键实物三、程序调试与编译打开Keiluvision2程序,新建一个工程,点确定按钮,取名为.uv2格式的文件,再新建个文件,取名为.asm格式的文件,再把自己已经写好的程序复制在该文件里。右击target文件,调节参数(要生成.hex的文件,为以后烧程序做准备),单击target文件,后右击soursegroup1文件,添加已取名.asm文件,点调试快捷键,找出程序的错误并根据错误进行相应的修改,在此过程中每次修改后都要保存再进行编译,直到程序无错误。最后程序完成,会生成.hex的文件。把已焊接好的电路板接在电脑上,把芯片按好在该板上,打开at89s51烧程序,添加已编译好的.hex文件,击电擦除后,再进行烧程序,看看焊板上的LED灯和数字管的现象是否和自己的思路以及实验要求的一致,如果不一致或者程序有错误或者达不到实验要求,要认真分析实验程序和求教于老师或者同学,直到最后程序成功达到预期目的。四、程序设计(举例)1、跑马灯#include<reg52.h>voiddelay(unsignedinti);//声明延时函数charLED;main(){unsignedchari;while(1){ LED=0xfe; for(i=0;i<8;i++) { P1=LED; delay(500); LED=LED<<1; //左移 LED=LED|0x01; //移位后,后面的位为高电平 if(LED==0x7f) break; //提前退出FOR循环 } for(i=0;i<8;i++) { P1=LED; delay(500); LED=LED>>1; //右移 LED=LED|0x80; //移位后,后面的位为高电平 }}}/*******延时函数*************/voiddelay(unsignedinti){unsignedcharj;for(i;i>0;i--)for(j=255;j>0;j--);}2、音乐播放(世上只有妈妈好)#include<reg52.h>//包含头文件,一般情况不需要改动?//头文件包含特殊功能寄存器的定义/*硬件端口定义*/sbitSPK=P2^5;//定义音乐输出端口unsignedcharTimer0_H,Timer0_L,Time;//世上只有妈妈好数据表codeunsignedcharMUSIC[]={6,2,3,5,2,1,3,2,2,5,2,2,1,3,2,6,2,1,5,2,1,6,2,4,3,2,2,5,2,1,6,2,1, 5,2,2, 3,2,2, 1,2,1,6,1,1,5,2,1,3,2,1, 2,2,4, 2,2,3, 3,2,1,5,2,2,5,2,1,6,2,1,3,2,2, 2,2,2,1,2,4, 5,2,3, 3,2,1,2,2,1,1,2,1,6,1,1, 1,2,1, 5,1,6, 0,0,0};//音阶频率表高八位codeunsignedcharFREQH[]={0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC,//1,2,3,4,5,6,7,8,i0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,};//音阶频率表低八位codeunsignedcharFREQL[]={0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F,//1,2,3,4,5,6,7,8,i0xEE,0x44,0x6B,0xB4,0xF4,0x2D,0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,};/*uS延时函数,含有输入参数unsignedchart,无返回值unsignedchar是定义无符号字符变量,其值的范围是0~255这里使用晶振12M,精确延时请使用汇编,大致延时长度如下T=tx2+5uS*/voidDelayUs2x(unsignedchart){while(--t);}/*mS延时函数,含有输入参数unsignedchart,无返回值unsignedchar是定义无符号字符变量,其值的范围是0~255这里使用晶振12M,精确延时请使用汇编*/voidDelayMs(unsignedchart){while(t--){//大致延时1mSDelayUs2x(245); DelayUs2x(245);}}/*节拍延时函数各调1/4节拍时间:调4/4125ms调2/4250ms调3/4187ms*/voiddelay(unsignedchart){unsignedchari; for(i=0;i<t;i++) DelayMs(250);TR0=0;}/*定时器0中断*/voidTIM0_ISR()interrupt1{TR0=0;SPK=!SPK;TH0=Timer0_H;TL0=Timer0_L;TR0=1;}/*歌曲处理函数*/voidSong(){TH0=Timer0_H;//赋值定时器时间,决定频率TL0=Timer0_L;TR0=1;//打开定时器delay(Time);//延时所需要的节拍}/*主函数*/voidmain(void){unsignedchark,i;TMOD|=0x01;//置定时器0工作方式1EA=1;//打开全局中断ET0=1;//打开定时0中断while(1){i=0;while(i<100) {//音乐数组长度,唱完从头再来k=MUSIC[i]+7*MUSIC[i+1]-1;//去音符振荡频率所需数据Timer0_H=FREQH[k];Timer0_L=FREQL[k];Time=MUSIC[i+2];//节拍时长i=i+3;Song();}}}3、独立按键控制数码管显示#include<reg52.h>#defineucharunsignedcharsbitP2_0=P2^0;sbitP2_1=P2^1;sbitP2_2=P2^2;sbitP2_3=P2^3;sbitP3_2=P3^2;sbitP3_3=P3^3;sbitP3_4=P3^4;sbitP3_5=P3^5;sbitP3_6=P3^6;sbitP3_7=P3^7;ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数码管段码ucharDisp_Num=0;voiddelay(uchari){ucharj,k;for(j=i;j>0;j--)for(k=125;k>0;k--);}voiddisplay(uchari){P2_0=0;P2_1=1;P2_2=1;P2_3=1;P0=table[0];delay(2);P2_0=1;P2_1=0;P2_2=1;P2_3=1;P0=table[0];delay(2);P2_0=1;P2_1=1;P2_2=0;P2_3=1;P0=table[0];delay(2);P2_0=1;P2_1=1;P2_2=1;P2_3=0;P0=table[i];delay(2);}/*演示主程序*/voidmain(void){unsignedinta; P3_2=1;P3_3=1;P3_4=1;P3_5=1;P3_6=1;P3_7=1;//设置为输入while(1){

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论