当前位置:文档之家› 单片机应用技术实验报告

单片机应用技术实验报告

单片机应用技术实验报告标准化管理部编码-[99968T-6889628-J68568-1689N]实验一流水灯控制一、实验目的1.学会使用KeilC51软件及proteus7.8仿真工具进行程序设计;2.掌握利用C语言完成80C51单片机的开发设计,完成流水LED灯控制;3.熟练掌握在计算机上编辑、编译、连接及运行C程序的方法。

二、实验设备PC微机;Windows操作系统;KeilC51软件及proteus7.8集成环境。

三、实验步骤1.Proteus下电路设计程序要求设计一个单片机控制流水灯程序,采用延时程序完成8个LED灯点亮效果(可自行设计效果,程序仅供参考)。

首先在Proteus环境下,建立以AT89C52单片机为核心的LED控制电路,电路由时钟电路、复位电路及LED控制电路组成。

2.C语言源程序的建立在KeilC51中设计C程序,首先新建工程名并保存,工程扩展名为**.uv2,并在出现的对话框中选择AT89C52单片机。

然后在工程下新建文本文件,保存为*.c 的源文件,将*.c文件添加到工程中,并配置好输出。

根据电路图要求设计c语言源程序并进行编译,如程序设计无误,则生成了扩展名为*.hex的文件,以便将该文件导入到Proteus中的AT89C52单片机中。

如编译未通过,则再次根据编译错误提示对源程序进行修改。

3.在Proteus中导入*.hex文件运行Proteus软件,在电路图中双击AT89C52,导入上面编译完成的*.hex文件。

4.程序的执行首先根据提供的程序进行验证,然后按预期在KeilC中自行修改程序,并导入Proteus中进行验证。

四、程序设计源程序(在KeilC中进行编译)/* 名称:8只LED左右来回点亮说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果*/#include<reg51.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint//延时voidDelay(unsignedintt){while(--t);}voidmain()//主程序{uchari;P0=0x01;while(1){for(i=0;i<7;i++){P0=_crol_(P0,1);//P0的值向左循环移动Delay(20000);}for(i=0;i<7;i++){P0=_cror_(P0,1);//P0的值向右循环移动Delay(20000);}}}五、实验总结XXXXXXXXXXX实验二按键控制一、实验目的1.学会使用KeilC51软件及proteus7.8仿真工具进行程序设计;2.掌握利用C语言完成80C51单片机的开发设计,完成按键控制;3.熟练掌握在计算机上编辑、编译、连接及运行C程序的方法。

二、实验设备PC微机;Windows操作系统;KeilC51软件及proteus7.8集成环境。

三、实验步骤1.Proteus下电路设计程序要求开关S1和S2分别控制LED1和LED2。

(可自行设计效果,程序仅供参考);首先在Proteus环境下,建立以AT89C52单片机为核心的LED控制电路,电路由时钟电路、复位电路及LED控制电路组成。

2.C语言源程序的建立在KeilC51中设计C程序,首先新建工程名并保存,工程扩展名为**.uv2,并在出现的对话框中选择AT89C52单片机。

然后在工程下新建文本文件,保存为*.c 的源文件,将*.c文件添加到工程中,并配置好输出。

根据电路图要求设计c语言源程序并进行编译,如程序设计无误,则生成了扩展名为*.hex的文件,以便将该文件导入到Proteus中的AT89C52单片机中。

如编译未通过,则再次根据编译错误提示对源程序进行修改。

3.在Proteus中导入*.hex文件运行Proteus软件,在电路图中双击AT89C52,导入上面编译完成的*.hex文件。

4.程序的执行首先根据提供的程序进行验证,然后按预期在KeilC中自行修改程序,并导入Proteus中进行验证。

四、程序设计/* 名称:开关控制LED说明:开关S1和S2分别控制LED1和LED2。

*/#include<reg51.h>sbitS1=P1^0;sbitS2=P1^1;sbitLED1=P0^0;sbitLED2=P0^1;//主程序voidmain(){while(1){if(!S1)//如果检测到低电平,说明按键按下LED1=0;elseLED1=1;if(!S2)//如果检测到低电平,说明按键按下LED2=0;elseLED2=1;}}五、实验总结XXXXXXXXXXX实验三直流电机控制一、实验目的1.学会使用KeilC51软件及proteus7.8仿真工具进行程序设计;2.掌握利用C语言完成80C51单片机的开发设计,完成直流电机控制;3.熟练掌握在计算机上编辑、编译、连接及运行C程序的方法。

二、实验设备PC微机;Windows操作系统;KeilC51软件及proteus7.8集成环境。

三、实验步骤1.Proteus下电路设计程序要求开关S1、S2和S3分别控制电动机正转、反转和停止。

(可自行设计效果,程序仅供参考);首先在Proteus环境下,建立以AT89C52单片机为核心的LED控制电路,电路由时钟电路、复位电路及LED控制电路组成。

2.C语言源程序的建立在KeilC51中设计C程序,首先新建工程名并保存,工程扩展名为**.uv2,并在出现的对话框中选择AT89C52单片机。

然后在工程下新建文本文件,保存为*.c 的源文件,将*.c文件添加到工程中,并配置好输出。

根据电路图要求设计c语言源程序并进行编译,如程序设计无误,则生成了扩展名为*.hex的文件,以便将该文件导入到Proteus中的AT89C52单片机中。

如编译未通过,则再次根据编译错误提示对源程序进行修改。

3.在Proteus中导入*.hex文件运行Proteus软件,在电路图中双击AT89C52,导入上面编译完成的*.hex文件。

4.程序的执行首先根据提供的程序进行验证,然后按预期在KeilC中自行修改程序,并导入Proteus中进行验证。

四、程序设计/* 名称:开关控制直流电机说明:S1、S2和S3分别控制电动机正转、反转和停止。

*/五、实验总结XXXXXXXXXXX实验四步进电机控制一、实验目的1.学会使用KeilC51软件及单片机开发板进行程序设计;2.掌握利用C语言完成80C51单片机的开发设计,完成步进电机控制;3.熟练掌握在计算机上编辑、编译、连接及运行C程序的方法。

二、实验设备PC微机;Windows操作系统;KeilC51软件及单片机开发板。

三、实验步骤1.步进电机控制电路程序要求控制步进电机工作,原理图见上。

2.硬件连接方法3.程序的执行首先根据提供的程序进行验证,然后按预期在KeilC中自行修改程序,并导入单片机开发板中进行验证。

四、程序设计/* 名称:步进电机控制*//*-----------------------------------------------内容:本程序用于测试4相步进电机常规驱动使用1相励磁------------------------------------------------*/#include<reg52.h>sbitA1=P1^0;//定义步进电机连接端口sbitB1=P1^1;sbitC1=P1^2;sbitD1=P1^3;#defineCoil_A1{A1=1;B1=0;C1=0;D1=0;}//A相通电,其他相断电#defineCoil_B1{A1=0;B1=1;C1=0;D1=0;}//B相通电,其他相断电#defineCoil_C1{A1=0;B1=0;C1=1;D1=0;}//C相通电,其他相断电#defineCoil_D1{A1=0;B1=0;C1=0;D1=1;}//D相通电,其他相断电#defineCoil_OFF{A1=0;B1=0;C1=0;D1=0;}//全部断电unsignedcharSpeed;/*------------------------------------------------uS延时函数,含有输入参数unsignedchart,无返回值unsignedchar是定义无符号字符变量,其值的范围是0~255这里使用晶振12M,精确延时请使用汇编,大致延时长度如下T=tx2+5uS------------------------------------------------*/ voidDelayUs2x(unsignedchart){while(--t);}/*------------------------------------------------mS延时函数,含有输入参数unsignedchart,无返回值unsignedchar是定义无符号字符变量,其值的范围是0~255这里使用晶振12M,精确延时请使用汇编------------------------------------------------*/ voidDelayMs(unsignedchart){while(t--){//大致延时1mSDelayUs2x(245);DelayUs2x(245);}}/*------------------------------------------------主函数------------------------------------------------*/main(){//unsignedinti=64*16;//转2周停止Speed=5;//调整速度while(1){Coil_A1//遇到Coil_A1用{A1=1;B1=0;C1=0;D1=0;}代替DelayMs(Speed);//改变这个参数可以调整电机转速, //数字越小,转速越大,力矩越小Coil_B1DelayMs(Speed);Coil_C1DelayMs(Speed);Coil_D1DelayMs(Speed);}}五、实验总结XXXXXXXXXXX。

相关主题