如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
实验一循环彩灯一、实验目的1.熟悉单片机实验板、KeilC51软件使用2.学习简单程序的调试方法3.学习延时子程序的编写和使用4.学习P0口的使用方法二、实验内容P0口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。三、实验原理八个发光二极管D0-D7分别接在单片机的P0.0-P0.7接口上,“0”输出时,发光二极管亮,按P0.0→P0.1→P0.2→P0.3→┅→P0.7→P0.6→┅→P0.0逐一点亮,重复循环。硬件电路如图1-1所示。图1-1我们可以运用输出端口指令MOVP0,A或MOVP0,#DATA,只要给累加器值或常数值,然后执行上述的指令,即可达到输出控制的动作。每次送龅氖菔遣煌咛宓氖萑缦卤?-1所示。表1-1:P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0说明D7D6D5D4D3D2D1D011111110D0亮11111101D1亮11111011D2亮11110111D3亮11101111D4亮11011111D5亮10111111D6亮01111111D7亮四、实验步骤1.将三档开关K29拨到最下(指向89S51),其它开关都拨到中间,插上USB下载线,打开电源。2打开KEIL软件,在所建的项目文件中输入源程序,进行编译,编译无误后,将生成的.HEX文件用Proisp下载到单片机中。3.观察实验板上小灯的现象,看是否符合实验要求。如果未到达实验要求,修改程序,重复2操作,直至达到实验要求。五、程序代码1.汇编程序代码:ORG0000HAJMPSTARTORG0030HSTART:MOVSP,#60HMOVR2,#8MOVA,#0FEHSETBCLOOP:MOVP0,A;左移LCALLDELAYRLCADJNZR2,LOOPMOVR2,#8RRCALOOP1:MOVP0,A;右移LCALLDELAYRRCADJNZR2,LOOP1LJMPSTARTDELAY:MOVR5,#20;延时D1:MOVR6,#20D2:MOVR7,#200DJNZR7,$DJNZR6,D2DJNZR5,D1RETEND2.C编程序代码:#include<reg51.h>voiddelay10ms(unsignedintcount);zy_a1();yy_a1();//-----------------------主函数--------------------------main(){while(1){zy_a1();yy_a1();}}//-----------------------左移模块逐渐点亮-------------------zy_a1(){unsignedchari,temp,a;//声明无符号型变量i,temp,atemp=0xfe;//左移初始值for(i=0;i<8;i++)//设置移动位数{a=temp<<i;//灯左移i位P0=a;//输出delay10ms(50);//延时}}//----------------------右移模块逐渐点亮-------------------yy_a1(){unsignedchari,temp,a;//声明无符号型变量temp=0xff;//左移初始值for(i=0;i<8;i++)//设置移动位数{a=temp>>i;//灯左移i位P0=a;//输出delay10ms(50);//延时}}//--------------------------延时----------------------------voiddelay10ms(unsignedintcount)//延时函数{inti,j,k;for(i=0;i<count;i++)for(j=0;j<10;j++)for(k=0;k<120;k++);}六、实验思考1.改用查表法实现上述功能。2.改动程序实现循环速度的变化。3.改动程序实现其他形式的循环彩灯。4.试着用PWM方式,改变小灯的亮度。实验二动态数码显示一、实验目的1.了解数码管动态显示原理2.了解74LS138译码器的原理3.了解数码管编码的原理二、实验内容利用实验仪提供的数码管显示电路,动态显示“09-10-01”字样。三、实验原理本实验仪提供了8位8段码LED显示电路,学生只要按地址输出相应数据,就可以实现对显示器的控制。电路原理图如图2-1所示。系统板上硬件连线说明如下:(1)单片机的P0.0-P0.7连接到8位数码管的a-h段上。显示内容与单片机P0口输出数据对应关系如表2-1所示。(2)单片机的P2.0-P2.2连接到74LS138译码器的A-C上。74LS138译码的输出端