第7组(单片机实验总结)

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

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

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

资源描述

广东药学院实验报告总结班级:生物医学工程11(电子仪器)组别:第19组组长:陈均连组员:陈春明、骆伟伟2013年12月15日实验三单片机I/O口控制实验1、要求利用P1口做输出口,接八只发光二极管。编写程序,使发光二极管循环点亮,或者产生有一定规律的花样,花样要求如下(提示:每一个要求编一个程序):①第一个发光管以间隔200ms闪烁#includereg52.h//1#defineuintunsignedintvoiddelayms(uint);sbitled1=P1^0;voidmain(){while(1){led1=0;delayms(200);led1=1;delayms(200);}}voiddelayms(uintxms){uinti,j;for(i=xms;i0;i--)for(j=110;j0;j--);}②8个发光管由上至下间隔1s流动,其中每个管亮500ms,灭500ms,亮时蜂鸣器响,灭时关闭蜂鸣器,一直重复下去。#includereg52.h//2#includeintrins.h#defineuintunsignedintvoiddelayms(uint);uintaa;sbitbeep=P1^5;voidmain(){P2=0xff;aa=0xfe;beep=1;while(1){P2=aa;beep=0;delayms(500);P2=0xff;beep=1;delayms(500);aa=_crol_(aa,1);}}voiddelayms(uintxms){uinti,j;for(i=xms;i0;i--)for(j=110;j0;j--);}③8个发光管来回流动,第个管亮100ms,流动时让蜂鸣器发出“滴滴”声。#includereg52.h//3#includeintrins.h#defineuintunsignedintvoiddelayms(uint);uintaa,i;sbitbeep=P2^3;voidmain(){P1=0xff;beep=1;aa=0xfe;delayms(500);while(1){for(i=0;i8;i++){P1=aa;beep=1;delayms(100);beep=0;delayms(100);aa=_crol_(aa,1);if(aa==0xfe)break;}aa=0x7f;for(i=0;i8;i++){aa=_cror_(aa,1);P1=aa;beep=1;delayms(100);beep=0;delayms(100);if(aa==0xfe)break;}}}voiddelayms(uintxms){uinti,j;for(i=xms;i0;i--)for(j=110;j0;j--);}④用8个发光管演示出8位二进制数累加过程,结合两个开关(一加一减)实现加减运算。#includereg52.h//4#defineucharunsignedchar#defineuintunsignedintsbits0=P2^0;sbits1=P2^1;uchara;voiddelayms(uintz){inti,j;for(i=z;i0;i--)for(j=110;j0;j--);}voidmain(){while(1){a=0;if(s0==0){while(a!=256){a++;P1=~a;delayms(500);}}a=0xff;if(s1==0){while(a!=0){a--;P1=~a;delayms(500);}}}}⑤8个发光管间隔200ms由上至下,再由下至上,再重复一次,然后全部熄灭再以300ms间隔全部闪烁5次。重复此过程。#includereg52.h//5#includeintrins.h#defineuintunsignedintvoiddelayms(uint);uinta,i,j;voidmain(){while(1){a=0xfe;for(j=0;j2;j++){for(i=0;i8;i++){P1=a;a=_crol_(a,1);delayms(200);}a=0x7f;for(i=0;i7;i++){a=_cror_(a,1);P1=a;delayms(200);}}P1=0xff;delayms(500);for(i=0;i5;i++){P1=0x00;delayms(300);P1=0xff;delayms(300);}}}voiddelayms(uintxms){uinti,j;for(i=xms;i0;i--)for(j=110;j0;j--);}⑥间隔300ms第一次一个管亮流动一次,第二次两个管亮流动,依次到8个管亮,然后重复整个过程。#includereg52.h//6#includeintrins.h#defineuintunsignedintvoiddelayms(uint);uinti,a;voidmain(){while(1){a=0xfe;for(i=0;i8;i++){P1=a;a=_crol_(a,1);delayms(500);}delayms(500);a=0xfc;for(i=0;i4;i++){P1=a;a=_crol_(a,2);delayms(500);}delayms(500);a=0xf8;for(i=0;i3;i++){P1=a;a=_crol_(a,3);delayms(500);}delayms(500);a=0xf0;for(i=0;i2;i++){P1=a;a=_crol_(a,4);delayms(500);}delayms(500);a=0xe0;for(i=0;i2;i++){P1=a;a=_crol_(a,5);delayms(500);}delayms(500);a=0xc0;for(i=0;i2;i++){P1=a;a=_crol_(a,6);delayms(500);}delayms(500);a=0x80;for(i=0;i2;i++){P1=a;a=_crol_(a,7);delayms(500);}delayms(500);a=0x00;delayms(500);}}voiddelayms(uintxms){uinti,j;for(i=xms;i0;i--)for(j=110;j0;j--);}⑦间隔300ms先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别从两边往中间流动三次;再从中间往两边流动三次;8个全部闪烁3次;关闭发光管,程序停止。#includereg52.h//7#includeintrins.h#defineuintunsignedintvoiddelayms(uint);uinta,i,j;voidmain(){for(i=0;i3;i++){P1=0xaa;//01010101delayms(1000);P1=0x55;//10101010delayms(1000);}P1=0xff;delayms(500);for(i=0;i3;i++){a=0xfe;for(j=0;j7;j++){P1=a;delayms(500);a=_crol_(a,1);}for(j=0;j8;j++){P1=a;delayms(500);a=_cror_(a,1);}}P1=0xff;delayms(500);for(i=0;i3;i++){P1=0x7e;delayms(1000);P1=0xbd;delayms(1000);P1=0xdb;delayms(1000);P1=0xe7;delayms(1000);}P1=0xff;delayms(500);for(i=0;i3;i++){P1=0xe7;delayms(1000);P1=0xdb;delayms(1000);P1=0xbd;delayms(1000);P1=0x7e;delayms(1000);}P1=0xff;delayms(500);for(i=0;i3;i++){P1=0x00;delayms(1000);XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P1.1/T2EX2P1.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/A1427U1AT89C52X1CRYSTALC127pFC227pFR11R210kC310uFD1LED-YELLOWR3100D2LED-YELLOWD3LED-YELLOWD4LED-YELLOWD5LED-YELLOWD6LED-YELLOWD7LED-YELLOWD8LED-YELLOWR4100R5100R6100R7100R8100R9100R10100P1=0xff;delayms(1000);}while(1){P1=0xff;}}voiddelayms(uintxms){uinti,j;for(i=xms;i0;i--)for(j=110;j0;j--);}心得体验:本实验主要学习使用单片机的I/O口控制发光二极管的亮灭,同时要熟悉延时子函数的调用,熟练进行移位操作,比如左移,右移,等指令。应该注意的是:单片机上电时,没有人为地控制I/O口的状态,所有未控制的I/O口都默认为高电频。刚开始学习单片机这门课程,因为学过C语言,所以还是稍微能上手的。学习实验三,从中掌握了I/O口的工作原理和它的数据输出方式,通过P1口观察程序的运行。而且掌握了二个新软件proteuisis和keil,可以进行仿真实验,也和单片机实物结合理论联系实际,提高动手能力,从而全面掌握单片机的应用。而在实验三中,首先要理解题目要求,相应地去编程,要有自己的思路,先把大概的脉络写出来,还要不断地去调试,最终才可以满足题目要求,在仿真和实物单片机都能实现需要的现象。7.实验四LED数码管控制实验1.单片机AT89C51读入4位开关的输入状态(0~F),并将其输出到数码管显示。#includereg52.h//数码管共阳,按键共阴(1)#includestdio.h#defineucharunsignedchar#defineuintunsignedintsbitk1=P2^0;sbitk2=P2^1;sbitk3=P2^2;sbitk4=P2^3;uinta,b,c,d,m;ucharcodetable[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x08,0x03,0x46,0x21,0x06,0x0e};voidmain(){a=k1;b=k2;c=k3;d=k4;m=(8*!d+4*!c+2*!b+1*!a);P0=table[m];//P0}2、数码管动态显示。#includereg52.h//数码管共阴(2)#includestdio.h#defineucharunsignedchar#defineuintunsignedintuinti;//1//2//3//4//5//6ucharcodedula[]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};ucharcodewela[]={0x7f,0xbf,0xdf,0xef

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

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

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

×
保存成功