好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

论文单片机课程设计文档定稿.doc

15页
  • 卖家[上传人]:ss****gk
  • 文档编号:206879605
  • 上传时间:2021-11-02
  • 文档格式:DOC
  • 文档大小:184.50KB
  • / 15 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 单片机课程设计题目:简易流水灯系另U : 信息技术学院专业:计算机科学与技术班级:专升本1班学号:111112003 111112006姓名: 朱旭鹤 于晶晶指导老师:陈向奎目录摘要: 3第一章绪论 41、流水灯的设计背景 4第二章系统设计 41、 系统设计要求 42、 流水灯设计的工作流程图 5第三章 系统主要工作原理 61. 时钟设计部分 62 .复位设计部分 73 .开关部分 74 .工作电路部分 8第四章软件程序流程图 91 .单片机详细C51程序代码 92. 元器件说明 133. 仿真电路图 14第五章工作总结和愿望 15参考文献: 16致谢 17摘要:51单片机是各单片机中最为典型和最有代表性的一种这次设 计是通过对它的学习、应用,以AT89C51芯片为核心,辅以必要的 电路,设计了一个简易的流水灯,它由4.5V直流电源供电,按照不 同的要求,通过按钮控制点亮多个Led灯,并在顺序和频率上做出相 应的改变,从而达到学习、设计、开发软、硬件的目的关键词:单片机 at89c51 简易流水幻第一章绪论1、流水灯的设计背景当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动 化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统, 正以前所未见的速度被单片机智能控制系统所取代。

      单片机具有体积小、功能强、成本低、应用面广等优点,可以说, 智能控制与自动控制的核心就是单片机虽然功能简单,但是由于其 操作简单得到了广泛的应用第二章系统设计1、 系统设计要求本设计要求采用AT89C51单片机,实现8只LED灯从上到下点亮、 从下到上、从中间到两边、从两边到中间的“流水”效果使用两个 按钮控制,其中一个控制流水灯亮的方式,另一个控制流水灯亮的频 率当按下开关kO 口寸,单片机产生有效信号从P2端口输出到led灯 Led灯根据相应的信号,灯亮的顺序发生相应变化当按下开关k3时,单片机产生有效信号从P2端口输出到led灯 Led灯根据相应的信号,灯亮的频率发生相应变化2、 流水灯设计的工作流程晶振电路按钮单片机AT89C51灯亮 图1总体设计框图该系统的设计在总体上分为以下几个部分:1单片机控制部分;2按键控制部分;3 led灯输出部分具体设计步骤如下:(1) 按以上要求制定设计方案,并绘制出系统工作框图,绘制程后 C122p第C2振荡机内22p47uC3是对KO妾口 31相连电K3「两端电压不能突 J低电平了 按键输入的防抖设计按键的触点在闭合和断开时均会产生抖动,这是触点的逻辑电平 是不稳定的,如不妥善处理,将会引起按键命令的错误执行或重复执 行。

      现在一般采用软件延时的方法来避开抖动阶段防抖使用了 nop 指令,Nop指令为单周期指令,有晶振频率决定K0控制灯亮的顺序当余数等于时,为原始状态当余数等于1时,灯亮顺序从上到下当余数等于2时,灯亮顺序从下到上制坐工q nd- diC2TF 22pX1CRYSTAL□R1典► XTAL1POXJ/ADOP0.1/AD1P02/AD2XTAL2PQ3AD3P0.47AD4P0WAD5P0.6 心RSTP0.7/AD7P2.QA8P2.1/A9P22A10FSEnP23A11ALEP2.4XA12EAP2.5/A13P2.&A14P2.7/A15P14P3.0.RXDP1.1P3.1.TXDP12P3.2/1NT0P13P33WTTPI.4P34BP1P3.5/T1P任P3 知 WRPI.7P3.力 RDU1AT89C51LEOGREENLEOGREENLED-GREEN第四章 软件程序流程图1 ,单片机详细C51程序代码#include 〃此文件中定义了 51的一些特殊功能寄存摧#include sbit K0=P0A0; //闪烁方式 把K0定义为PC^O 口sbit K3=P0人3; 〃闪烁频率 把K3定义为PCFS 口 unsigned int key_num(); 〃计算按键按下了程序“unsigned int ”为无符号整型 void delayms(unsigned char ms)//延时子程序MmsH决定延时时间的长短,ms值越大,延时时间越长(unsigned chari;while(ms—)for(i = 0;i< 120; i++); 〃延时程序,当执行时,每个周期i从零增加到120, 所用的时■间乘以ms的值,就是要延时的时间void main()unsigned char LED;〃定义无符号字符型” LED”unsigned int key_m;〃定义无符号整型” key_m”unsigned int a=250;〃给符号”a”赋初值250P2=0x00;〃启动把P2 口设为低电平while(l)//while 循环if(key_m==0)〃当key_m等于0时,执行if语句.key・m用来存储key_num()这个子程序 返的值P2=0x00;//P2 口的输出控制灯的亮灭,单.片机上电时P2 口都是高电平输出,这句话就是把P2 口改成低电平0X00代表八位数,0000.0000分别对应P2 口的八个输出口key_ni=key_num(); 〃key_num 子程序的返同值赋给 key_ni.if(K3==l) 〃K3按钮控制闪烁频率,K3按下一次,a时间间隔减少50( a=a-50; while(K3); } if(key_m==l) 〃当key_m等于1时,执行if语句 {LED = 0x01; 〃0x几几代表十六进制数,把它变成二进制就是0000 0001分别对应P2的八个输出口后面LED的值还是给了 P2 0x01把它变成二进制就是0000 0001, 说明P2 口的第一个灯亮如果是0x02 , 0000 00010,对应P2 口的第二个灯亮 while(l) (P2 = LED; 〃赋初值delayms(a); 〃延时LED = LED 110x01; 〃循环左移1位,点亮下一•个LED ”vv”为左移位比如 LED 为 0x01, 0000 0001,左移一位后,变成 0000 0010 然后 0000 0001 和 0000 0010 或运 算,变成0000 0011分别对应各个位或if(P2 == Oxff) {P2=0x00;delayms(a);LED = 0x01; )〃循环完重新赋值key_m=key_num(); 〃子程序返 值if(key_m==2)break; 〃计算按键按下中断循环 if(key_m==3)break; if(key_ni==O)break; i H ke y_ni==4)b re ak; if(K3==l) ( a=a-50;while(K3);if(a==O) a=300;〃频率达到最快时复位if(key_m==2){LED = 0x80;while(l)(P2 = LED;delayms(a);LED = LED 110x80; 〃循环右移1位,点亮下一个LED ”>>”为右移位if(P2 == Oxff) {P2=0x00;delayms(a);LED = 0x80; } //key_m=key_num();if(key_m= l)break;if(key_ni==3)break;i f( key_ni==O)bre ak;if(key_ni==4)break;if(K3==l)(a=a-50;while(K3);}if(a==O) a=300;}}if(key_m==3) //中间往两边移动unsigned int tempi,temp2;〃赋初值temp 1=0x10;temp2=OxO8;while( 1)P2=templ Itemp2;delayms(a);temp 1 =temp 1 HOx 10;temp2=temp2 110x08;if(P2==0xff)//P2等于temp 1和temp2的或值〃调用延时子函数,a越大延时时间越长〃T为或符号,tempi左移一位或0x10// temp2右移一位或0x08〃如果P2=0xff,重新赋初值P2=0x00;delayms(a);temp 1=0x10;temp2=0x08;}key_m=key_num();if(key_m=O)break;if(key_m== l)break;if(key_m==2)break;if(key_m==4)break;if(K3==l)(a=a-50;while(K3);}if(a==O) a=300;if(key_m==4)〃两边往中间移动unsigned int tempi,temp2;tempi =0x80;temp2=0x01;while( 1)P2=templ Itemp2;delayms(a);temp l=templl 10x80;temp2=temp2 110x01;if(P2==0xff)(P2=0x00;delayms(a);temp 1=0x80;temp2=0x01;}key_m=key_num();if(key_m=0)break;if(key_m== 1 )break;if(key_m==2)break;if(key_m==3)break;if(K3==l)(a=a-50;while(K3);}if(a==0) a=300;unsigned int key_num()unsigned int key_a,key_b;if(KO==l)(_nop_();_nop_();_nop_();if(KO=l)(key_a++;key_b=key_a%5;while(KO==l);)}return key_b;}2元器件说明〃”_nop_”为延时命令,三个周期延时,防抖〃自加1//key_b等于key_a除以5的余数〃子程序返回值元件名称类型属性数量AT89C51U1单片机1个3WATT10KR1电阻10k1个AX47U16VC3滤波电容47U1个Avx0402np022pCl、C2电容22p2个CRYSTAL。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.