单片机课程设计文档

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1单片机课程设计题目:简易流水灯系别:信息技术学院专业:计算机科学与技术班级:专升本1班学号:111112003111112006姓名:朱旭鹤于晶晶指导老师:陈向奎2目录摘要:..........................................................................................3第一章绪论................................................................................41、流水灯的设计背景..........................................................4第二章系统设计.......................................................................41、系统设计要求..................................................................42、流水灯设计的工作流程图..............................................5第三章系统主要工作原理.....................................................61.时钟设计部分.....................................................................62.复位设计部分.....................................................................73.开关部分.............................................................................74.工作电路部分.....................................................................8第四章软件程序流程图...........................................................91.单片机详细C51程序代码................................................92.元器件说明.....................................................................133.仿真电路图.....................................................................14第五章工作总结和愿望.........................................................15参考文献:................................................................................16致谢............................................................................................173摘要:51单片机是各单片机中最为典型和最有代表性的一种。这次设计是通过对它的学习、应用,以AT89c51芯片为核心,辅以必要的电路,设计了一个简易的流水灯,它由4.5V直流电源供电,按照不同的要求,通过按钮控制点亮多个Led灯,并在顺序和频率上做出相应的改变,从而达到学习、设计、开发软、硬件的目的。关键词:单片机at89c51简易流水灯4第一章绪论1、流水灯的设计背景当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。虽然功能简单,但是由于其操作简单得到了广泛的应用。第二章系统设计1、系统设计要求本设计要求采用AT89C51单片机,实现8只LED灯从上到下点亮、从下到上、从中间到两边、从两边到中间的“流水”效果。使用两个按钮控制,其中一个控制流水灯亮的方式,另一个控制流水灯亮的频率。当按下开关k0时,单片机产生有效信号从P2端口输出到led灯。Led灯根据相应的信号,灯亮的顺序发生相应变化。当按下开关k3时,单片机产生有效信号从P2端口输出到led灯。Led灯根据相应的信号,灯亮的频率发生相应变化。52、流水灯设计的工作流程图图1总体设计框图该系统的设计在总体上分为以下几个部分:1单片机控制部分;2按键控制部分;3led灯输出部分。具体设计步骤如下:(1)按以上要求制定设计方案,并绘制出系统工作框图,绘制程序流程图;(2)按要求设计单片机的外围电路,给出电路原理图;(3)单片机仿真器等元器件正确可靠地连接;(4)利用仿真器进行程序设计与调试;按钮晶振电路单片机AT89C51灯亮6第三章系统主要工作原理1.时钟设计部分C122pC222pX1CRYSTAL单片机必须在时钟的驱动下才能工作.在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。电路中两个电容C1,C2的作用有两个:一是帮助振荡器起振;二是对振荡器的频率进行微调。C1、C2、晶振提供时钟信号。72.复位设计部分C347u滤波电容提供复位,一端与接口9相连,另一端与接口31相连。电阻的作用是用于上电复位的,VCC以上电,由于电容两端电压不能突变,所以RST上为高电平,然后电容放电,RST就为低电平了3.开关部分K3K0按键输入的防抖设计按键的触点在闭合和断开时均会产生抖动,这是触点的逻辑电平是不稳定的,如不妥善处理,将会引起按键命令的错误执行或重复执8行。现在一般采用软件延时的方法来避开抖动阶段。防抖使用了nop指令,Nop指令为单周期指令,有晶振频率决定。K0控制灯亮的顺序当余数等于0时,为原始状态。当余数等于1时,灯亮顺序从上到下。当余数等于2时,灯亮顺序从下到上。当余数等于3时,灯亮顺序从中间到两边。当余数等于4时,灯亮顺序从两边到中间。K3控制灯亮的频率时间初值设为250us,开关每按下时间减少50us,当减小到0时,再设置为300us。4.工作电路部分1)工作电路就是根据总的电路的指令,来反应工作情况。本电路的流水灯电路具体的如下:D1LED-GREEND2LED-GREEND3LED-GREEND4LED-GREEND5LED-GREEND6LED-GREEND7LED-GREEND8LED-GREEN92)根据各个模块的功能及他们的信号传输,连接电路如下:XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51K3K0D1LED-GREEND2LED-GREEND3LED-GREEND4LED-GREEND5LED-GREEND6LED-GREEND7LED-GREEND8LED-GREENC347uR110kC122pC222pX1CRYSTAL第四章软件程序流程图1.单片机详细C51程序代码#includereg51.h//此文件中定义了51的一些特殊功能寄存器#includeintrins.hsbitK0=P0^0;//闪烁方式把K0定义为P0^0口sbitK3=P0^3;//闪烁频率把K3定义为P0^3口unsignedintkey_num();//计算按键按下子程序“unsignedint为无符号整型voiddelayms(unsignedcharms)//延时子程序ms决定延时时间的长短,ms值越大,延时时间越长{unsignedchari;while(ms--){for(i=0;i120;i++);//延时程序,当执行时,每个周期i从零增加到120,所用的时间乘以ms的值,就是要延时的时间}10}voidmain(){unsignedcharLED;//定义无符号字符型LEDunsignedintkey_m;//定义无符号整型”key_munsignedinta=250;//给符号a赋初值250P2=0x00;//启动把P2口设为低电平while(1)//while循环{if(key_m==0)//当key_m等于0时,执行if语句.key-m用来存储key_num()这个子程序返回的值{P2=0x00;//P2口的输出控制灯的亮灭,单片机上电时P2口都是高电平输出,这句话就是把P2口改成低电平0X00代表八位数,0000.0000分别对应P2口的八个输出口}key_m=key_num();//key_num子程序的返回值赋给key_m.if(K3==1)//K3按钮控制闪烁频率,K3按下一次,a时间间隔减少50{a=a-50;while(K3);}if(key_m==1)//当key_m等于1时,执行if语句{LED=0x01;//0x几几代表十六进制数,把它变成二进制就是00000001分别对应P2的八个输出口后面LED的值还是给了P20x01把它变成二进制就是00000001,说明P2口的第一个灯亮如果是Ox02,000000010,对应P2口的第二个灯亮while(1){P2=LED;//赋初值delayms(a);//延时LED=LED1|0x01;//循环左移1位,点亮下一个LED为左移位比如LED为0x01,00000001,左移一位后,变成00000010然后00000001和00000010或运算,变成00000011分别对应各个位或if(P2==0xff){P2=0x00;delayms(a);LED=0x01;}//循环完重新赋值key_m=key_num();//子程序返回值if(key_m==2)break;//计算按键按下中断循环if(key_m==3)break;if(key_m==0)break;11if(key_m==4)break;if(K3==1){a=a-50;while(K3);}if(a==0)a=300;//频率达到最快时复位}}if(key_m==2){LED=0x80;while(1){P2=LED;delayms(a);LED=LED1|0x80;//循环右移1位,点亮下一个LED为右移位if(P2==0xff){P2=0x00;delayms(a);LED=0x80;}//key_m=key_num();if(key_m==1)break;if(key_m==3)break;if(key_m==0)break;if(key_m==4)break;if(K3==1){a=a-50;while(K3);}if(a==0)a=300;}}if(key_m==3)//中间往两边移动{unsignedinttemp1,temp2;temp1=0x10;//赋初值temp2=0x08;while(1){P2=temp1|temp2;

1 / 17
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功