欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    单片机原理与系统课程设计报告书.docx

    • 资源ID:2348393       资源大小:116.63KB        全文页数:32页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    单片机原理与系统课程设计报告书.docx

    1、单片机原理与系统课程设计报告书1.1设计要求.21课程设计的目的和意义1.1设计要求 用六位数码实现数字时钟,显示时分秒。1.2设计目的灵活运用单片机的基础知识,依据课程设计容,能够完成从硬件电路图设计,到PCB制版,再到软件编程及系统调试实现系统功能,完成课程设计,加深对单片机基础知识的理解,并灵活运用,将各门知识综合应用。能够上网查询器件资料,培养对新知识新技术的独立的学习能力和应用能力。独立完成一个小的系统设计,从硬件设计到软件设计,增强分析问题、解决问题的能力,为日后的毕业设计及科研工作奠定良好的基础。1.3设计意义单片机课程设计过程中,我们通过查阅资料、硬件设计、程序设计、安装调试等

    2、环节,完成了一个涉及89S51单片机多种资源应用并具有综合功能的小系统目标板的设计与编程应用。使我们不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对电子电路、电子元器件、原理图绘制等方面的知识进一步加深认识,同时在软件编程、排错调试、焊接技术、相关软件及仪器设备的使用技能等方面得到较全面的锻炼和提高。使我们增进对单片机的感性认识,加深对单片机理论方面的理解。使我们了解和掌握单片机应用系统的软硬件设计过程、方法及实现,强化单片机应用电路的设计与分析能力。提高我们在单片机应用方面的实践技能和科学作风;培育学生综合运用理论知识解决问题的能力,实现理论结合实际,学以致用的原则。2系统方案设

    3、计及确定 本次课程设计,要求用单片机及6位LED数码管显示时、分、秒,以24时计时方式运行,能整点提醒(短蜂鸣,次数代表整点时间),使用按键开关可实现时、分调整,秒表(或闹钟)/时钟功能转换,以及实现省电(关闭显示)功能。1时钟功能 利用单片机片定时器(如T0)产生1s计时,自行设定时钟计数单元地址,包括秒单元、分单元、时单元,最大计数值为23时59分59秒。用6位LED数码管显示时、分、秒,以24时计时方式运行; 使用按键开关可实现时、分调整,可增加“熄灭符”用于时间调整时的闪烁功能; 能整点提醒(短蜂鸣,次数代表整点时间); 可通过按键使系统进入省电状态(数码管不亮,时钟不停)。2秒表功能

    4、 能通过按键实现秒表/时钟功能之间的转换; 利用单片机部定时器(如T1)实现秒表的计时,自行设定秒表计数单元地址,包括10ms单元、秒单元、分单元, 通过6位LED数码管显示,最大计数值为99分59.99秒。 可通过按键实现秒表的暂停、清零、启动。 3闹钟功能 能通过按键实现闹钟/时钟功能之间的转换; 可通过按键设定闹钟时间,在定时闹铃时精确到分,可通过6位LED数码管显示闹钟设定时间。 可通过按键实现闹铃有效、无效,以及在设定闹钟后取消闹时功能。在闹铃时,可通过按键开关使蜂鸣停止。4系统设计方案框图如下:图2-1系统设计方案框图3系统硬件设计3.1AT89S51最小系统设计单片机最小系统单片

    5、机,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统.对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路.下面给出一个51单片机的最小系统电路图:图3-1 51单片机最小系统原理图3.1.1时钟电路硬件设计时钟电路是计算机最核心的部分,它控制着计算机的工作。AT 89 S51单片机部有一个高增益反相放大器,用于构成振荡器。反相放大器的输入端为XTAL1,输出端为XTAL2,分别是单片机的19脚和18脚。在XTAL1和XTAL2两端跨接石英晶体及两个电容就可以构成稳定的自激振荡器。石英晶振起振后要能在XTAL2线上输出一个3V左右的正弦波,使片的OCS电路按石

    6、英晶振相同频率自激震荡。通常,OCS的输出时钟频率fosc为0.5MHZ16MHZ,典型值为12MHZ电容器C1和C2通常取30pF左右,对震荡频率有微调作用。调节它们可以达到微调震荡周期fosc的目的。时钟电路如下:图3-2 时钟电路电路图3.1.2复位电路硬件设计单片机的RST管脚为主机提供一个外部复位信号输入端口。复位信号是高电平有效,高电平有效的持续时间应为2个机器周期以上。单片机的复位方式有上电自动复位和手工复位两种。图4-2所示是51系列单片机常用的上电复位电路,只要Vcc上升时间不超过1ms,它们都能很好地工作。复位以后,单片机各部件恢复到初始状态。电阻电容器件的参考值:R1=2

    7、00,R2=1K,C3=22F。RET按键可以选择专门的复位按键,也可以选择轻触开关。复位电路如下图3-3 复位电路电路图3.2键盘电路硬件设计单片机中常见的键盘有独立式键盘和矩阵式键盘,独立式键盘适用于实现功能较少的场合、矩阵式键盘适用于功能复杂的场合。本次课程设计,采用独立式键盘即可。键盘电路如下:图3-4 键盘电路电路图上拉电阻保证按键释放时,输入检测线上有稳定的高电平。当某一按键按下时,对应的检测线就变成了低电平,与其他按键相连的检测线仍为高电平,只需读入I/O输入线的状态,判别哪一条I/O输入线为低电平,很容易识别哪个键被按下。键的闭合与否,输出电压上就是呈现高电平或低电平。高电平,

    8、表示键断开,低电平则表示键闭合,通过对电平的高低状态的检测,可确认按键按下以及按键释放与否。为了确保对一次按键动作只确认一次按键有效,必须消除抖动的影响,去抖有硬件去抖和软件去抖,本次设计采用软件去抖。3.3显示电路硬件设计 本次课程设计,采用LED数码管作为显示装置。 LED数码管有共阴极、共阳极两种结构,本次采用共阳极数码管。共阳极LED数码管的发光二极管的阳极连接在一起,公共阳极接正电压,当某个发光二极管的阴极接低电平时,发光二极管被点亮,相应的段被显示。8段共阳极LED段码如下:表3-1 8段共阳极LED段码表显示字符012345678段码C0HF9HA4HB0H99H92H82HF8

    9、H80H显示字符9ABCDEF全灭全亮段码90H88H83HC6HA1H86H8EHFFH00H LED数码管有静态显示和动态显示两种显示方式。静态显示方式,数码管亮度高、软件编程简单,但是需要占用大量的I/O口,一般在多位显示时不采用此种方法。动态显示方式,数码管亮度稍低、软件编程复杂,但是占用的I/O口少,在显示多位数字的时候适合采用此种方法。考虑到本次课程设计需要显示六位数字,故采用动态显示方式。 LED数码管段选、位选驱动电路均采用DM74LS244作为驱动芯片。3.4蜂鸣器电路硬件设计 蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电

    10、子玩具、汽车电子设备、机、定时器等电子产品中作发声器件。 蜂鸣器的工作原理是,接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。本次课程设计中,由于单片机的I/O口驱动能力不够让蜂鸣器发出声音,所以我们通过三极管放大驱动电流,从而可以让蜂鸣器发出声音。蜂鸣器电路如下: 图3-5 蜂鸣器电路电路图 4系统软件设计4.1系统主程序设计 程序中,采用按键1作为主功能切换键,按键2、按键3、按键4作为子功能控制键。 在主程序中,开始即进入定时器子程序,显示当前时间,并同时对按键1进行扫描。如果按键1第一次被按下,则进入调整时间

    11、子程序,并同时对按键2 、按键3、按键4进行扫描,此时按键2 、按键3、按键4分别作为调整时、分、秒按钮使用;如果按键1第二次被按下,则进入秒表子程序,并同时对按键2 、按键3、按键4进行扫描,按键2 、按键3、按键4分作为秒表启动、暂停、停止并清理按钮使用;如果按键1第三次被按下,则进入闹钟子程序,并同时对按键2 、按键3、按键4进行扫描,按键2 、按键3、按键4分作为闹钟的启动/关闭、调整时、调整分按钮使用;如果按键1第四次被按下,则进入节能子程序,此时将不对按键2 、按键3、按键4分进行扫描;如果按键1第五次被按下,则重新回到定时器子程序,如此循环。主程序流程图4.2定时器设计 在定时器

    12、子程序当中,采用定时器T0产生定时中断。定时器T0工作于方式2,初值为TH0=0x9C,TL0=0x9C,时钟电路采用12MHZ晶振,所以每0.1ms产生一次中断,再在中断中对时间进位进行判断处理,使之产生较为精准的定时。定时器子程序4.3秒表设计 在秒表子程序当中,采用定时器T1产生定时中断。定时器T1同意工作于方式2,初值为TH0=0x9C,TL0=0x9C,时钟电路采用12MHZ晶振,所以每0.1ms产生一次中断,再在中断中对时间进位进行判断处理,使之产生较为精准的定时。秒表子程序4.4闹钟设计 在闹钟子程序里,按键2被按下奇数次时,闹钟打开并在第一位数码管上显示标志位;按键2被按下偶数

    13、次时,闹钟关闭并熄灭第一位数码管上的标志位。按下按键3,则定时时间的小时位加一;按下按键4,则定时时间的分钟位加一。闹钟子程序4.5其他主要子程序设计 在时钟设置子程序中,按键2被按下,则当前时间的小时位加一;按键3被按下,则当前时间的分钟位加一;按键4被按下,则当前时间的秒位被清零。时钟设置子程序 当进入节能子程序时,数码管将全部被熄灭,此时按键2、按键3、按键4即使被按下也不采取任何操作。节能子程序 其他说明:当时间的小时位进一时,蜂鸣器将响起,响的“嘀”次数等于当前时间小时位的值。当当前时间等于闹钟定时时间时,蜂鸣器将不断响起“嘀”声,按下按键1后,“嘀”声停止。5系统调试 本次课程设计

    14、采用伟福仿真器进行程序的调试,下面介绍伟福仿真器的调试及使用。 进入WAVE软件后,第一步要进行仿真器设置,在仿真器选项卡中,仿真器为选择“E6000/S”,仿真头选择“POD-H8X5X”,CPU选择“89C51RX”; 在目标文件选项卡中,将所有选项前均打钩,;在通讯设置选项卡中,将“使用伟福软件模拟器”的“”勾掉,然后选择“COM1”口,点击“测试串行口”,测试成功后,就完成了所有的仿真器设置。第二步,开始创建项目工程,在C盘根目录下创建“Project”文件夹,双击打开,再创建“program . c”文件。注意,这里“Project”文件夹为工程项目所存放的文件夹,文件夹名必须是英文

    15、,汉字不能用。 “program . c”文件为程序源文件,若是用汇编语言,则相应的改为“program . asm”文件。这里文件夹名和原文件名可以是任意英文字符。点击菜单栏“文件(F)”“新建项目”找到刚才创建的源文件(以C语言源文件为例),点击“打开”,然后键入工程项目文件名字(以project为例,项目文件名可以任意),并点击“保存”保存。 双击左侧源文件“program . c”,此时即可开始编写程序了。(WAVE6000集成开发软件是基于C语言核的,仅支持“ /* */ ”注释方式,不支持“ / ”注释方式)。最后介绍程序的编译及执行,点击菜单栏“项目”“编译”,无语法错误,编译通

    16、过。点击菜单栏上“执行”“全速执行”,进行硬件仿真调试。按停止按钮则退出调试状态。 本次课程设计,我主要是参考了郭天祥老师的一些例子程序,从而逐步掌握了有关单片机数码管动态显示、按键的扫描及去抖、时钟定时赋值等一些容。然后根据老师的原理图,参照例子程序,利用C语言进行编程。程序调试过程中难免出现各种各样的问题,通过请教老师、网络查询、同学之间相互帮助,都逐一得到了解决。6总结 经过一段时间的课程设计,我们不仅对单片机的学习有了更多的认识和理解,而且又填补了很多以前的知识漏洞。本次课程设计,收获最多的当然是单片机方面,但是同时我们又一次学习了C语言、Protel制图等,熟悉掌握了WAVE6000

    17、的使用。 课程设计是培养我们综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对我们实际工作能力的具体训练和考察过程. 回顾起此次课程设计,至今我仍感慨颇多。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,唯有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正提高我们自己的实际动手能力和独立思考的能力。在设计的过程中,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的很多的不足,对以前所学过的知识理解得不够深刻,掌握得不够牢固,看到了自己基础知识还是不够扎实,实践经验还是比较缺乏,理论联系实际的能力还待急需提高。通过这

    18、次课程设计之后,一定把以前所学过的知识重新温故。在这个过程中,我真切的感到了,我又知道了很多,同时也掌握了很多以后在工作和生活中能真正用到的很多东西。但是我不会因此而骄傲,相反以后我将会更加虚心,因为我知道这只是个简单的开始,以后还有很多的路要走。参考文献【1】单片机原理与接口技术M胡汉才.清华大学【2】MCS-51系列单片机原理及应用M. 王瑾、杜波等.中国电力【3】新概念51单片机C语言教程M郭天祥.电子工业【4】跟我学用单片机M. 肖洪兵. 航空航天大学【5】单片机实验与实践教程M. 夏继强. 航空航天大学,【6】Protel DXP 电路设计技术M. 玉军. 冶金工业【7】单片机应用设

    19、计200 例.下(第一版)M. 洪润. 航空航天大学【8】C语言程序设计M.忠宝、董晓明. 大学附录附录一 程序清单/*头文件*/#include#define uint unsigned int#define uchar unsigned char/*定义按键*/sbit key1=P10;sbit key2=P11;sbit key3=P12;sbit key4=P13;/*定义蜂鸣器*/sbit bell=P17;/*定义数码管位控*/sbit LED1=P25;sbit LED2=P24;sbit LED3=P23;sbit LED4=P22;sbit LED5=P21;sbit LE

    20、D6=P20;/*定义变量*/uchar miao,fen,shi,shm,sec,min,nshi,nfen;uchar d1,d2,d3,d4,d5,d6,m1,m2,m3,m4,m5,m6,n1,n2,n3,n4;uint num,num1,num2,num3,ge,ss;/*共阴极段选码(0-9)*/uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/*延时函数*/void delay(uint x) uint i,j; for(i=80;i0;i-) for(j=x;j0;j-);/*时钟显示函数*/

    21、void display() d1=shi/10;/*高低位分离*/ d2=shi%10; d3=fen/10; d4=fen%10; d5=miao/10; d6=miao%10; LED1=1;/*时高位*/ P0=tabled1; delay(1); LED1=0; LED2=1;/*时低位*/ P0=tabled2; delay(1); LED2=0; LED2=1;/*时低位小数点显示*/ P0=0x80; delay(1); LED2=0; LED3=1;/*分高位*/ P0=tabled3; delay(1); LED3=0; LED4=1;/*分低位*/ P0=tabled4;

    22、 delay(1); LED4=0; LED4=1;/*分低位小数点显示*/ P0=0x80; delay(1); LED4=0; LED5=1;/*秒高位*/ P0=tabled5; delay(1); LED5=0; LED6=1;/*秒低位*/ P0=tabled6; delay(1); LED6=0;/*时钟调整函数*/void tiaozheng() if(key2=0)/*时+*/ delay(10); if(key2=0) while(!key2); shi+; delay(20); if(shi=24) shi=0; if(key3=0)/*分+*/ delay(10); if

    23、(key3=0) while(!key3); fen+; delay(20); if(fen=60) fen=0; if(key4=0)/*秒清零*/ delay(10); if(key4=0) miao=0; /*时钟调整数码管闪烁显示函数*/void display1() d1=shi/10; d2=shi%10; d3=fen/10; d4=fen%10; d5=miao/10; d6=miao%10; if(ss=1) LED1=1;/*时高位*/ P0=tabled1; delay(1); LED1=0; LED2=1;/*时低位*/ P0=tabled2; delay(1); LE

    24、D2=0; LED2=1;/*时低位小数点显示*/ P0=0x80; delay(1); LED2=0; LED3=1;/*分高位*/ P0=tabled3; delay(1); LED3=0; LED4=1;/*分低位*/ P0=tabled4; delay(1); LED4=0; LED4=1;/*分低位小数点显示*/ P0=0x80; delay(1); LED4=0; LED5=1;/*秒高位*/ P0=tabled5; delay(1); LED5=0; LED6=1;/*秒低位*/ P0=tabled6; delay(1); LED6=0; /*整点报时功能函数*/void bao

    25、shi() if(fen=59)&(miao=59)/*整点报时功能*/ uchar bs; bs=shi; bs+; while(bs0)/*报时次数等于小时数*/ bs-; bell=0; delay(100); bell=1; delay(100); /*秒表功能控制函数*/void miaobiao() if(key2=0)/*秒表开始计时*/ delay(10); if(key2=0) while(!key2); TR1=1; if(key3=0)/*秒表暂停*/ delay(10); if(key3=0) while(!key3); TR1=0; if(key4=0)/*秒表清零*

    26、/ delay(10); if(key4=0) while(!key4); TR1=0; shm=0; sec=0; min=0; /*秒表显示函数*/void display2() m1=min/10; m2=min%10; m3=sec/10; m4=sec%10; m5=shm/10; m6=shm%10; LED1=1;/*分高位*/ P0=tablem1; delay(1); LED1=0; LED2=1;/*分低位*/ P0=tablem2; delay(1); LED2=0; LED2=1;/*分低位小数点显示*/ P0=0x80; delay(1); LED2=0; LED3=

    27、1;/*秒高位*/ P0=tablem3; delay(1); LED3=0; LED4=1;/*秒低位*/ P0=tablem4; delay(1); LED4=0; LED4=1;/*秒低位小数点显示*/ P0=0x80; delay(1); LED4=0; LED5=1;/*10ms高位*/ P0=tablem5; delay(1); LED5=0; LED6=1;/*10ms低位*/ P0=tablem6; delay(1); LED6=0;/*闹钟设置功能函数*/void naozhong() if(key2=0)/*设置闹钟的开关*/ delay(10); if(key2=0) w

    28、hile(!key2); num2+; if(num2=3) num2=1;/*闹钟打开*/ if(key3=0)/*定点小时+*/ delay(10); if(key3=0) while(!key3); nshi+; if(nshi=24) nshi=0; if(key4=0)/*定点分钟+*/ delay(10); if(key4=0) while(!key4); nfen+; if(nfen=60) nfen=0; /*闹钟显示函数*/void display3() n1=nshi/10; n2=nshi%10; n3=nfen/10; n4=nfen%10; if(num2=1)/*第一位全显示表示闹钟打开*/ LED1=1; P0=0xff; delay(1); LED1=0; if(num2=2)/*第一位全灭表示闹钟关闭*/ LED1=1; P0=0x00; delay(1); LED1=0; LED3=1;/*小时高位*/ P0=tablen1; delay(1); LED3=0;


    注意事项

    本文(单片机原理与系统课程设计报告书.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开