航标灯实验c语言程序,简易航标灯报告.doc

常熟理工学院课程设计报告

PAGE

单片机实验报告

课程名称 单片机技术与应用

实验名称 简易航标灯设计实验

专 业 光电信息工程

班 级 光电121班

学 号 050312113

姓 名 蒯 玄

实验地点 躬行楼528

实验日期 2015.5.28

一、实验目的

1、掌握定时器/计数器原理及其应用;

2、了解航标灯控制要求;

二、实验仪器

编号

仪器设备

数量

单位

1

WD990微机电源

1

2

8051最小系统板

1

3

键盘显示接口板

1

4

万用表

1

5

示波器

1

6

Proteus7.8 SP2仿真软件

1

7

单芯杜邦线

若干

图3-1 简易航标灯控制结构图三、实验内容

图3-1 简易航标灯控制结构图

1、2位拨码开关:灯质设定(频率与占空比)

2、光敏电阻:实现光照采集(光照强,电阻小;光照弱,电阻大)

3、灯驱动:发光二极管采用12V供电,要实验单片机驱动电路设计,三极管驱动

要求:通过光敏电阻采集光照度,白天灯熄灭,黑夜灯按照上表闪烁。

课时数:2课时

四、预习要求

1、完成简易航标灯系统的标准DXP原理图;

2、编程实现简易航标灯的各项功能;

3、Proteus78仿真说明:光敏电阻:TORCH_LDR,2位拨码开关:DIPSW_2接时不能接上拉电阻,否则仿真不通过;

五、实验步骤

硬件:Proteus仿真电路设计,实物输入、输出信号模拟;

软件:在Keil 环境下编写程序,生成.hex文件,通过ProteusProteusV78_Timer0_HBD)进行功能仿真;

调试:反复修改程序,完善功能。

仿真完成后有条件的同学可通过端口模拟进行功能验证。

六、实验过程

1、实验原理图

原理图

2、程序部分

#include "reg51.h"

#define COUNT 50000 //50ms gcd:50ms的倍数

#define D_OPEN 1 //开灯

#define D_CLOSE 0 //关灯

sbit led=P0^0; //灯输出控制,高电平有效

sbit OPCON=P1^2; //光照检测 ,高电平(亮)

struct IALA

{

unsigned char num; //拨码开关状态

unsigned char gcd; //各时间间隔最大公约数

unsigned char state[6];//无符号字符型时间常数

};

unsigned int State[6];

unsigned char GetKey(void)

{

unsigned char key;

key=0;

if((P1&0x01)==0) //低电平有效

key|=0x01;

if((P1&0x02)==0)

key|=0x02;

return(key);

key|=P1;

return key&0x03;

}

//获取键值,两个开关有四种状态,分别是00,01,10,11即可获得四个键值0,1,2,3

const struct IALA IALA4[4]={

{0,10,1,0,0,0,0,0},

{1,10,1,3,0,0,0,0},

{2,10,1,1,1,7,0,0},

{3,10,1,2,1,2,1,5}

};

将计数判断点存入数组中

//设定灯质状态,以及各个状态的时间

unsigned int it=0;

void T0_ISR(void) interrupt 1

{

unsigned char j;

TH0=(65536-COUNT)/256;

TL0=(65536-COUNT)%256;

if(OPCON==0)//黑夜、暗照度

{

it++;

for(j=0;j<6;j++)

{ if(it==State[j])

led=(j%2)?D_OPEN:D_CLOSE; //判断是开灯还是关灯状态

}

if(it>=State[5])

{

it=0;

}

}

else //白天、亮照度

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值