实验一 发光二极管实验
一、实验目的
1、掌握AT89C51 单片机IO 口的输入输出。
2、掌握用查表方式实现AT89C51 单片机IO 口的控制。 3、练习单片机简单延时子程序的编写。
4、熟练运用Proteus 设计、仿真AT89C51 系统。 二、实验原理
1、 单片机最小系统由单片机芯片、时钟电路以及复位电路构成。
2、I/O 口
P0 口:8 位双向I/O 口。在访问外部存储器时,P0 口可用于分时传送低8 位地址总线和8 位数据总线。能驱动8 个LSTTL 门。
P1 口:8 位准双向I/O 口(“准双向”是指该口内部有固定的上拉电阻)。能驱动4 个LSTTL 门。 P2 口:8 位准双向I/O 口。在访问外部存储器时,P2 口可用于高8 位地址总线。能驱动4 个LSTTL 门。
P3 口:8 位准双向I/O 口。能驱动4 个LSTTL 门。P3 口还有第二功能。
P1 口作为输出口时与一般的双向口使用方法相同。当P1 口用为输入口时,必须先对它置“1”。若不先对它置“1”,读入的数据可能是不正确的。 三、设计步骤:
【PROTEUS 电路设计】
在ISIS 中进行电路图设计,发光二极管流水灯实验装置电路原理图如下图所示。
图一
1、按照元件清单从PROTEUS 库中选取元器件,进行第2、3、4、5、6 步,完3、放置电源和地; 4、连线;
5、参照原理图进行元件属性设置; 6、电气检查。 【源程序设计】 1、流程图:
2、在KeilC 中进行源程序设计: 3、编译、生成目标代码
【PROTUES 仿真】
1、在AT89C51 属性页中加载KeilC 中生成的目标代码; 2、仿真、调试代码 3、注意使用观察窗口
四、实验内容
1、编写延时子程序,延时时间为0.1S 。
2、见图一。通过AT89C51 单片机控制8 个发光二极管发光,实现亮点以由上到下循环移动,间隔时间为0.1S 。
3、见图一。通过AT89C51 单片机控制8 个发光二极管发光,循环实现亮点由上到下移动1 次(间隔时间为0.2S) ,由下到上移动1 次(间隔时间为0.2S) ,闪烁1 次(即先全亮0.1S, 再全灭0.1S )。 4、见图一。用数组方式实现 题3 。
5、P2 口作为输入口,接8 只开关。P1 口做为输出口,接8 只发光二极管,通过设置8只拨动开关的状态控制8 只发光二极管的亮灭。(自己画硬件连线图,程序流程图如下)
图二(上图只画P2.0口连线,其它类似)
6、用蜂鸣器发出固定电话回音声音。见图三。 固定电话回音声音:450Hz ,通1秒断4秒。
7、见图三。要求: (按钮在PROTEUS 中元件为 BUTTON ) 1、按键若不按下,LED 灯全灭。
2、按键每按下一次,LED 灯亮状态实现加法功能。
即:第一次按下,灯状态为1111 1110;第二次按下,灯状态为1111 1101; 第三次按下,灯状态为1111 1100;. 。。。。。。。。。。。
直到灯状态为0000 0000 。
再次按下后,状态又如同第一次按下。
3、按键每次按下时,蜂鸣器有声音发出。(高电平1毫秒,低电平1毫秒,表明确实有按键按下)。
图三
8、 简易模拟交通灯
说明:东西向绿灯亮10秒,黄灯闪烁3次后红灯亮, 红灯亮后,南北向由红灯变为绿灯,15秒后南北向黄灯闪烁3次后变红灯,东西向变绿灯,如此重复。
9、利用开关控制LED 。要求:
1、每次按下K1时递增点亮一只LED ,全亮时再次按下则再次循环开始; 2、K2按下后点亮上面4只LED
3、K3按下后点亮下面4只LED 4、K4按下后关闭所有LED
提交实验报告写作内容要求:
1.实验目的。
2.实验内容。(每题包含题目、电路图、程序)
3.请写出实验过程中曾出现的问题和你的解决方法,你对实验有何感想和体会?
实验一 发光二极管实验
一、实验目的
1、掌握AT89C51 单片机IO 口的输入输出。
2、掌握用查表方式实现AT89C51 单片机IO 口的控制。 3、练习单片机简单延时子程序的编写。
4、熟练运用Proteus 设计、仿真AT89C51 系统。 二、实验原理
1、 单片机最小系统由单片机芯片、时钟电路以及复位电路构成。
2、I/O 口
P0 口:8 位双向I/O 口。在访问外部存储器时,P0 口可用于分时传送低8 位地址总线和8 位数据总线。能驱动8 个LSTTL 门。
P1 口:8 位准双向I/O 口(“准双向”是指该口内部有固定的上拉电阻)。能驱动4 个LSTTL 门。 P2 口:8 位准双向I/O 口。在访问外部存储器时,P2 口可用于高8 位地址总线。能驱动4 个LSTTL 门。
P3 口:8 位准双向I/O 口。能驱动4 个LSTTL 门。P3 口还有第二功能。
P1 口作为输出口时与一般的双向口使用方法相同。当P1 口用为输入口时,必须先对它置“1”。若不先对它置“1”,读入的数据可能是不正确的。 三、设计步骤:
【PROTEUS 电路设计】
在ISIS 中进行电路图设计,发光二极管流水灯实验装置电路原理图如下图所示。
图一
1、按照元件清单从PROTEUS 库中选取元器件,进行第2、3、4、5、6 步,完3、放置电源和地; 4、连线;
5、参照原理图进行元件属性设置; 6、电气检查。 【源程序设计】 1、流程图:
2、在KeilC 中进行源程序设计: 3、编译、生成目标代码
【PROTUES 仿真】
1、在AT89C51 属性页中加载KeilC 中生成的目标代码; 2、仿真、调试代码 3、注意使用观察窗口
四、实验内容
1、编写延时子程序,延时时间为0.1S 。
2、见图一。通过AT89C51 单片机控制8 个发光二极管发光,实现亮点以由上到下循环移动,间隔时间为0.1S 。
3、见图一。通过AT89C51 单片机控制8 个发光二极管发光,循环实现亮点由上到下移动1 次(间隔时间为0.2S) ,由下到上移动1 次(间隔时间为0.2S) ,闪烁1 次(即先全亮0.1S, 再全灭0.1S )。 4、见图一。用数组方式实现 题3 。
5、P2 口作为输入口,接8 只开关。P1 口做为输出口,接8 只发光二极管,通过设置8只拨动开关的状态控制8 只发光二极管的亮灭。(自己画硬件连线图,程序流程图如下)
图二(上图只画P2.0口连线,其它类似)
6、用蜂鸣器发出固定电话回音声音。见图三。 固定电话回音声音:450Hz ,通1秒断4秒。
7、见图三。要求: (按钮在PROTEUS 中元件为 BUTTON ) 1、按键若不按下,LED 灯全灭。
2、按键每按下一次,LED 灯亮状态实现加法功能。
即:第一次按下,灯状态为1111 1110;第二次按下,灯状态为1111 1101; 第三次按下,灯状态为1111 1100;. 。。。。。。。。。。。
直到灯状态为0000 0000 。
再次按下后,状态又如同第一次按下。
3、按键每次按下时,蜂鸣器有声音发出。(高电平1毫秒,低电平1毫秒,表明确实有按键按下)。
图三
8、 简易模拟交通灯
说明:东西向绿灯亮10秒,黄灯闪烁3次后红灯亮, 红灯亮后,南北向由红灯变为绿灯,15秒后南北向黄灯闪烁3次后变红灯,东西向变绿灯,如此重复。
9、利用开关控制LED 。要求:
1、每次按下K1时递增点亮一只LED ,全亮时再次按下则再次循环开始; 2、K2按下后点亮上面4只LED
3、K3按下后点亮下面4只LED 4、K4按下后关闭所有LED
提交实验报告写作内容要求:
1.实验目的。
2.实验内容。(每题包含题目、电路图、程序)
3.请写出实验过程中曾出现的问题和你的解决方法,你对实验有何感想和体会?