实验一 指示灯/开关控制器

一、实验目的

(1)熟悉proteus仿真软件,掌握单片机原理图的绘图方法;

(2)学习I/O口的使用方法;

(3)学习C51的程序设计方法;

(4)学会在ISIS模块中进行C51程序录入、编译和调试;

(5)理解单片机程序控制原理,实现指示灯/开关控制器的预期功能。

实验内容

程序启动后,8只发光二极管先整体闪烁3次(即亮→暗→亮→暗→亮→暗,间隔时间以肉眼可观察到为准)。然后,根据开关状态控制对应发光二极管的亮灯状态,即开关闭合相应灯亮,反之则相反。

三、实验原理

此处的LED共阳极(高点平),开关共阴极(低电平)。开关1、2、3、4关闭,则导通,这一线路为低电平,通过程序让开关控制LED灯的亮灭,LED左右有电势差,所以灯亮。  5、6、7、8开关断开,灯不亮。

四、实验步骤

(1)按照表1将元件添加到编译环境中,在proteus中绘制电路原理图;用总线将P1.0~P1.7口连至开关SW1~SW8,用总线将P2.0~P2.7分别接到发光二极管D1~D8;

(2)在KEIL软件中编写相应的C51程序;

(3)在proteus中加载程序,观察仿真结果;波动开关SW1~SW8,观察发光二极管的亮灯状态,检验电路图绘制与C51程序编写的正确性。

表1 实验1的元器件清单

category

reference

value

Microprocessor ICs

U1

89C51

Miscellaneous

X1/12MHz

CRYSTAL

Capacitors

C2~C3/30PF

CAP

Capacitors

C3/22uF

CAP-ELEC

Resistors

R2~R9/200W

RES

Resistors

R1/1KW

RES

Optoelectronics

D1~D8

LED-YELLOW

Switches & Relays

SW1-SW8

SWITCH

  • 实验程序流程框图

 

图2 实验2程序流程图

编程分析:

  • 程序开始运行后8只发光二极管先整体闪烁3次(即亮→暗→亮→暗→亮→暗)。

亮灯:向P2口送入数值0(P2←0);

灭灯:向P2口送入数值0FFH(P2←0FFH);

闪烁次数:整体循环3次;

闪烁快慢:软件延时时间。

  • 然后根据开关状态控制灯亮或灯灭,即开关闭合相应灯亮,反之则相反。

开关控制灯:将P1口内容送入P2口(P2←P1);

无限持续:整体无条件循环。

C51程序可参考程序流程图,如图2所示。

五、实验代码


#include <REGX51.H>

void Delay_xms(unsigned char xms) //延时1ms
{
	unsigned char i,j;
	while(xms--)
	{
		i = 2;
	  j = 239;
			do
			{
					while(--j);
			}while(--i);
	}
}

void main() //主函数
{
	unsigned char c = 3;  //c:循环次数
	while(c)
	{
		P2=0x00; //亮
	  Delay_xms(1000); //延时1s
	  P2=0xFF;  //灭
	  Delay_xms(1000);  //延时1s
		c--;  //闪烁3次
	}
	while(1)
	{
				P2=P1; //等价于下面8行。用开关的闭合和断开来控制LED的亮灭

//			P2_0 = P1_0;
//			P2_1 = P1_1;
//			P2_2 = P1_2;
//			P2_3 = P1_3;
//			P2_4 = P1_4;
//			P2_5 = P1_5;
//			P2_6 = P1_6;
//			P2_7 = P1_7;	    
	}
}	

六、结语

若有问题,请指正,感谢阅读。

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值