单片机系统设计方案_第1页
单片机系统设计方案_第2页
单片机系统设计方案_第3页
单片机系统设计方案_第4页
单片机系统设计方案_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机系统设计方案、使用KEIL的步骤23然后选择你茎保存的路径,输入工看文件的名字,比如保存到C&L目录里,工衽文件的名手为C51如下图出亦,然后点击保华,*耳汪|二4叵L力何喜、1013)这时会弹出一个对话框,要求你选择单片机的型号,你可以根据你使用的单兰机来选择jo.lrol口平立挂所有的1粒的单片机,我出单汪生以大家库的比较多的Atrel的89C&1来说明,加下即所示.选择S9c51之后,右边栏是对这个单片机的基本的说明,然后点击确定.02此时怖在编席密门里闪烁,这时可以键入用户的应用程序了.但笔者建议苜丸保存该空白的文件.色击菜单上的“FilL在下拉英单中选中ft2选项单击,屏思扉下

2、图所示,在“文件名栏右恻的编辑框中:键入欹使月的文件名,同时,必如犍入正崩的打展名注意,如果用C语言编写程序,则扩展名为L7:如果司汇编语音编写程序,则扩展名必须为.鹤皿).然后,单击保存内:03投后单击AddFileioGroupSourceGrouo【用帚加下图所行选中丁ct“,然后单击“Add”屏蒂疔下图所赤04也在上图中.单击“Projst”菜单.再在不拉早华中隼击“BuiltTa一选顼(或者使用快踵键F7O.余锋成功后,再生吉“PreJ=七案单,在下拉笫单中单击“七tart/AeDrhuj5ruon*熊韦申用t夬途承Ctrl+FS:f屏福古口,所TFbMHa2bh*曰r*iim,*b

3、i*.nd05tfr1/Kr*iU/rn*j.Ei隔试程序-在卜图中.单击,FlHuJ,茅手,在下柏寻单中单击“GL日访*fm,有仲用快捶键FB).然后再单击“Dtbus”菜单,在下拉菜单中单击StopRunning透项(或者使用快樵班Ew)再单击gVWe”苹单.再在下拉菜单中单击SerialWimdsn#1”逃Tffi,旗可0.声到程序诣行后的第年.芦造县如下留所示,06至此我们在加il31上做了一?完整工程的全第A怛这只是纯软件的开发过程,如何使用程序卜式楼有一看程序运叫结勘却10)单击Project单,用在下拉菜单中单击“OptionsfsrTargttt-Targtl在K图*r单击Ou

4、tput*单击SetuEE,选项.使程序维译后产生且EM代鹤,供下载醐(件使用*把程序下祷UATg9S51单片机中、单片机最小系统的设计2.1 程序代码#include#defineuintunsignedint#defineucharunsignedcharsbitP2_1=P2A1;voiddelay(uintz)(ucharx,y;for(x=0;xz;x+)for(y=0;y121;y+);/定义头文件定义P2_1为P2口的第1位,以便进行位操作。定义延时函数/使用两个嵌套的for语句来实现延时,先赋值x=0,判断一下xz,若为真则执行下一个for语句,赋值y=0,判断一下y121,若

5、为真则执行下一条,若无下一条则执行y+,直到y121为假,则在执行x+,在判断一下xvz,若为真则再执行一次y的for语句,为假则跳出循环,结束。voidmain()(P2_1=0;/定义主函数)/将P2-1口赋值为0,即给予P2_1一个低电平,在电路中led灯另一端接VCC高电平,给一低电平即将LED灯导通,使其亮。)2.2 Keil仿真2.3 Protues仿真*IFfm电中kN,$*地第fie-EduMmDe-fihOfC*fiuQI.如,*Te*tJjw-Sywei田中H华6鼻13|国一Qi::二.奉、W4,1电IBIE3tRirwCwii*e-反onr;3口国产日/为上至事至工fXW

6、1KIAL2RSTALEczF1.IP1VF12PUF1A1尸.JQHXDP31TKDP3.5ffTHt明枭而1FTKTOF35TtpjawRPW7ffi5D1LED-YELL三、流水灯循环点亮3.1 原理介绍在使用时VCC接电源电压.GND接地口PO,Pl,P2,P3可作为输入或输出端口,RST是更位输入接复位电路=XTAJL1和XTAL2接复位电路二这些可以在硬件设计部分体现出来43单片机的时钟电路单片帆内部有在一个振荡器,本设计采用内部时钟方式.以12MHZ石英晶体振荡器和两个3GPF的片电容绢成外部电容的大小对振荡频率有微小影响,可起调节作用.振荡器,如图所示.片内的高增益反向放大器通

7、过XTAIJ和XTAT2外接,作为反馈元件的外部晶体振荡器与电容组成的并睦谐振同路构成一个自激振荡器,向内部时钟电造提供振演时钟n如图;开始初始化II设置LED点亮位置结束3.2 程序代码#include#include#defineucharunsignedchar#defineuintunsignedint/加黑的都是定义头文件voidDelayMS(uintx)/延时uchari;while(x-)_for(i=0;i120;i+);/采用for循环来实现延时voidmain()/主程序uchari;P2=0x01;while(1)for(i=0;i7;i+)/i=0,判断i7,再执行P

8、2=_crol_(P2,1),之后再执行i+P2=_crol_(P2,1);/以位的形式将P2左循环移动1位DelayMS(150);for(i=0;i7;i+)/i=0,判断iV*Q1-13MOV艮后,率(HIGH(X.DATAEEW)+11-9EL.SE14SMOV146,tKIGM(XDATALEN)14再ENDIF147CLRA11EllIeTet,Ldritor人ConficjiratianV/iZsarc!F,I0*T,331nOutputBuLXdnaQer.UnKlncj,Pro0工mmBee:dlat-a-工0XlUSOl*x.data0code=91Wll!U01W喉.0w

9、xnxna白).3.4protues仿真-:-i-1二1:.-./.:三.-NFCMFCiLpc,l-kFC0102.I-FQ1NQ*口EM*城RIt3MjMmB泡FP3D*?XCrait?tjrggurrn=3121吗展标可;何RA用财wFZaREO国小的EAF73V3K&AH明了2聒pia2wcPTpsvmph“ffmpijpaaiwfiki.iFl4PIPlpT1Pl.3paawPIT,4网尚华:5腔磨MJ1二一_5二_E.-hwPL时FCF03四、心形灯闪烁4.1程序代码#include#defineuintunsignedint#defineucharunsignedcharucha

10、rcodetable0=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f/led从低位往高位移ucharcodetable1=0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe;/LED从高位往低位移ucharcodetable2=0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00;/led从1个亮到8个都点亮(低位往高位移)ucharcodetable3=0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00;/led从1个亮到8个都亮(高位往低位移)ucharcodetable4=

11、0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff;/led从8个全亮到一个不亮(从低位到高位)ucharcodetable5=0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff);/led从8个全亮到一个不亮(从高位到低位)ucharcodetable6=0xfe,0xfc,0xfa,0xf6,0xee,0xde,0xbe,0x7e;/从低位往高位移(最低位始终为0)ucharcodetable7=0x7f,0x3f,0x5f,0x6f,0x77,0x7b,0x7d,0x7e;/从高位往低位移(最高位始终为0)uch

12、ari,j;定义循环变量uinttt=70;/定义时间函数voiddelay(uinttime)/定义延时函数uintx,y;for(x=time;x0;x-)for(y=110;y0;y-);/使用两个嵌套的for语句来实现延时voiddisp0()for(i=0;i3;i+)/定义状态0所有led灯闪烁3次/for循环P0=0x00;P2=0x00;P3=0x00;P1=0x00;/led端使P0/P1/P2/P3为0即低电平,则led灯导通,led亮delay(300);P0=0xff;P2=0xff;P3=0xff;P1=0xff;/led端使P0/P1/P2/P3为0即高电平,则le

13、d灯截止,led灭delay(300);/整个状态实现了led灯的亮灭闪烁3次voiddisp1()/状态1LED逆时针转一圈for(i=0;i8;i+)P2=table1i;/table1=0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe低位移(P2.8为高位,结合图可知)灯一端接VCC另一灯一端接VCC另一LED从高位往delay(100);P2=0xff;/给P2高电平,P2截止,P2全灭for(i=0;i8;i+)P3=table1i;delay(100);/LED从高位往低位移(P3.8为高位,结合图可知))P3=0xff;/给P3高电平,P3截止,P3

14、全灭for(i=0;i8;i+)P1=table1i;/LED从高位往低位移(P3.8为高位,结合图可知)delay(100);)P1=0xff;/给P1高电平,P1截止,P1全灭for(i=0;i8;i+)P0=table0i;/table0=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7fLED从低位往高位移delay(100);)P0=0xff;/给P0高电平,P0截止,P0全灭)voiddisp2()/状态2LED顺时针转一圈for(i=0;i8;i+)P0=table1i;delay(100);)P0=0xff;for(i=0;i8;i+)P1=tabl

15、e0i;delay(100);)P1=0xff;for(i=0;i8;i+)P3=table0i;delay(100);)P3=0xff;for(i=0;i8;i+)(P2=table0i;delay(100);)P2=0xff;)1/4圈voiddisp3()/状态34个LED灯同时顺时、逆时针移动(for(i=0;i8;i+)(P0=table1i;/P0组LED从高位往低位移P1=table1i;/P1组LED从高位往低位移P2=table1i;/P2组LED从高位往低位移P3=table0i;/P3组LED从低位往高位移delay(100);)for(i=0;i8;i+)(P0=tab

16、le0i;/P0组LED从低位往高位移P1=table0i;/P1组LED从低位往高位移P2=table0i;/P2组LED从低位往高位移P3=table1i;/P3组LED从高位往低位移delay(100);)P3=0xff;P0=0xff;/P3,P0全组都灭)voiddisp4()/状态42个LED同时顺时针移动半圈(for(i=0;i8;i+)(P2=table1i;/P2组LED从高位往低位移P1=table1i;/P1组LED从高位往低位移delay(100);)P2=0xff;P1=0xff;for(i=0;i8;i+)(P3=table1i;/P3组LED从高位往低位移P0=t

17、able0i;/P0组LED从低位往高位移delay(100);P3=0xff;P0=0xff;/P3,P0全组都灭)voiddisp5()/状态52个LED同时逆时针移动半圈(for(i=0;i8;i+)(P0=table1i;/P0组LED从高位往低位移P3=table0i;/P3组LED从低位往高位移delay(100);)P0=0xff;P3=0xff;for(i=0;i8;i+)(P1=table0i;/P1组LED从低位往高位移P2=table0i;/P2组LED从低位往高位移delay(100);)P1=0xff;P2=0xff;/P1,P2全组都灭)voiddisp6()/状态

18、6LED自上而下逐渐点亮(一半点亮一半不亮)(for(i=0;i8;i+)(P0=table3i;/led从1个亮到8个都亮(高位往低位移)P2=table3i;delay(100);)P0=0xff;P2=0xff;for(i=0;i8;i+)(P1=table2i;/led从1个亮到8个都点亮(低位往高位移)P3=table3i;/led从1个亮到8个都点亮(高位往低位移)delay(100);)P1=0xff;P3=0xff;)voiddisp7()/状态7LED自下而上逐渐点亮(直到全部点亮)(for(i=0;i8;i+)(P1=table3i;/led从1个亮到8个都点亮(高位往低位

19、移)P3=table2i;/led从1个亮到8个都点亮(低位往高位移)delay(100);)for(i=0;i8;i+)P0=table2i;/led从1个亮到8个都点亮(低位往高位移)P2=table2i;/led从1个亮到8个都点亮(低位往高位移)delay(100);)voiddisp8()/状态8间隔8格的4个LED亮并逆时针旋转for(j=0;j2;j+)for(i=0;i8;i+)P0=table1i;/P0组LED从高位往低位移P2=table0i;/P2组LED从低位往高位移P1=table0i;P3=table0i;delay(100);)P0=0xff;P2=0xff;P

20、1=0xff;P3=0xff;for(i=0;i8;i+)P0=table1i;P2=table0i;P1=table0i;P3=table0i;delay(100);)P0=0xff;P2=0xff;P1=0xff;P3=0xff;voiddisp9()/状态9间断8格的led亮,再逆时针逐渐点亮(直到全部点凫)for(i=0;i8;i+)P0=table3i;P2=table2i;P1=table2i;/LED从1个亮到8个都点亮(高位往低位移)/LED从1个亮到8个都点亮(低位往高位移)P3=table2i;delay(100);)delay(500);)voiddisp10()/状态1

21、0从led全部亮到全不亮(间隔8格的4个led开始逆时针熄灭)for(i=0;i9;i+)/led从8个全亮到一个不亮(从高位到低位)/led从8个全亮到一个不亮(从低位到高位)11间隔8格的4个LED5并顺时针旋转P0=table5i;P2=table4i;P1=table4i;P3=table4i;delay(100);)delay(300);)voiddisp11()/状态for(j=0;j2;j+)for(i=0;i8;i+)P0=table0i;P2=table1i;P1=table1i;P3=table1i;delay(100);)P0=0xff;P2=0xff;P1=0xff;P

22、3=0xff;for(i=0;i8;i+)P0=table0i;P2=table1i;P1=table1i;P3=table1i;delay(100);)P0=0xff;P2=0xff;P1=0xff;P3=0xff;voiddisp12()(for(i=0;i8;i+)(P0=table2i;P2=table3i;P1=table3i;P3=table3i;delay(100);delay(1000);voiddisp13()(for(i=0;i9;i+)(P0=table4i;P2=table5i;P1=table5i;P3=table5i;delay(100);delay(300);vo

23、iddisp14()(for(i=0;i8;i+)(P0=table2i;P1=table2i;P2=table2i;P3=table3i;delay(100);voiddisp15()(for(i=0;i9;i+)(P0=table5i;P1=table5i;P2=table5i;P3=table4i;delay(100);)delay(300);)voiddisp16()(for(i=0;i5;i+)(P0=0xaa;P1=0xaa;P2=0xaa;P3=0xaa;delay(100);P0=P0;P1=P1;P2=P2;P3=P3;delay(100);)for(i=0;i5;i+)(P

24、0=0xaa;P1=0xaa;P2=0xaa;P3=0xaa;delay(200);P0=P0;P1=P1;P2=P2;P3=P3;delay(200);)for(i=0;i5;i+)(P0=0xaa;P1=0xaa;P2=0xaa;P3=0xaa;delay(300);P0=P0;P1=P1;P2=P2;P3=P3;delay(300);)P0=0xff;P2=0xff;P1=0xff;P3=0xff;delay(300);)voiddisp17()for(i=0;i8;i+)(P0=table3i;delay(100);)for(i=0;i8;i+)(P1=table2i;delay(10

25、0);)for(i=0;i8;i+)(P3=table2i;delay(100);)for(i=0;i8;i+)(P2=table2i;delay(100);)P0=0xff;P1=0xff;P3=0xff;P2=0xff;l*lfor(i=0;i8;i+)(P0=table3i;delay(50);)for(i=0;i8;i+)(P1=table2i;delay(50);)for(i=0;i8;i+)(P3=table2i;delay(50);)for(i=0;i8;i+)(P2=table2i;delay(50);)P0=0xff;P1=0xff;P3=0xff;P2=0xff;)void

26、disp18()(for(i=0;i8;i+)(P0=table3i;delay(100);)P0=0xff;for(i=0;i8;i+)(P1=table2i;delay(100);)P1=0xff;for(i=0;i8;i+)(P3=table2i;delay(100);)P3=0xff;for(i=0;i8;i+)(P2=table2i;delay(100);)P2=0xff;)voiddisp19()(for(i=0;i8;i+)(P2=table3i;delay(100);)for(i=0;i8;i+)(P3=table3i;delay(100);)for(i=0;i8;i+)(P1

27、=table3i;delay(100);)for(i=0;i8;i+)(P0=table2i;delay(100);P0=0xff;P1=0xff;P3=0xff;P2=0xff;l*lfor(i=0;i8;i+)(P2=table3i;delay(50);for(i=0;i8;i+)(P3=table3i;delay(50);for(i=0;i8;i+)(P1=table3i;delay(50);for(i=0;i8;i+)(P0=table2i;delay(50);P0=0xff;P1=0xff;P3=0xff;P2=0xff;voiddisp20()(for(i=0;i8;i+)(P2=table3i;delay(100);P2=0xff;for(i=0;i8;i+)(P3=table3i;delay(100);P3=0xff;for(i=0;i8;i+)(P1=table3i;delay(100);P1=0xff;for(i=0;i8;i+)(P0=table2i;delay(100);)P0=0xff;)voi

温馨提示

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

评论

0/150

提交评论