51与光敏电阻经典程序_第1页
51与光敏电阻经典程序_第2页
51与光敏电阻经典程序_第3页
51与光敏电阻经典程序_第4页
51与光敏电阻经典程序_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本程序是利用光敏电阻和51单片机来控制led灯亮灭#include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存定义#include /包含NOP空指令函数_nop_();#include#define AddWr 0x90 /写数据地址 #define AddRd 0x91 /读数据地址sbit RST=P24; /时钟 加上后可以关掉DS1302芯片输出sbit Sda=P20; /定义总线连接端口sbit Scl=P21;sbit dula=P26;sbit wela=P27;bit ADFlag; /定义AD采样标志位unsigned char code Datatab=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;data unsigned char Display8;/定义临时存放数码管数值/*-延时程序-*/void mDelay(unsigned char j) unsigned int i; for(;j0;j-) for(i=0;i125;i+) ; /*-初始化定时器1-*/void Init_Timer1(void) TMOD |= 0x10; TH1=0xff; /* Init value */ TL1=0x00; /PT1=1; /* 优先级 */ EA=1; /* interupt enable */ ET1=1; /* enable timer1 interrupt */ TR1=1; /*-启动IIC总线-*/ void Start(void) Sda=1; _nop_(); Scl=1; _nop_(); Sda=0; _nop_(); Scl=0; /*-停止IIC总线-*/ void Stop(void) Sda=0; _nop_(); Scl=1; _nop_(); Sda=1; _nop_(); Scl=0; /*-应答IIC总线-*/ void Ack(void) Sda=0;_nop_();Scl=1;_nop_();Scl=0;_nop_();/*-非应答IIC总线-*/void NoAck(void) Sda=1; _nop_(); Scl=1; _nop_(); Scl=0; _nop_(); /*-发送一个字节-*/ void Send(unsigned char Data) unsigned char BitCounter=8; unsigned char temp;do temp=Data; Scl=0; _nop_(); if(temp&0x80)=0x80) Sda=1; else Sda=0;Scl=1;temp=Data1;Data=temp;BitCounter-; while(BitCounter); Scl=0; /*-读入一个字节并返-*/ unsigned char Read(void) unsigned char temp=0; unsigned char temp1=0; unsigned char BitCounter=8;Sda=1; do Scl=0; _nop_(); Scl=1; _nop_(); if(Sda) temp=temp|0x01; else temp=temp&0xfe;if(BitCounter-1) temp1=temp=250)P1 = 0X00;else if(ADtemp = 210)P1 = 0X80;else if(ADtemp = 180)P1 = 0Xc0;else if(ADtemp = 150)P1 = 0Xe0;else if(ADtemp = 120)P1 = 0Xf0;else if(ADtemp = 90)P1 = 0Xf8;else if(ADtemp = 60)P1 = 0Xfc;else if(ADtemp = 30)P1 = 0Xfe; /*-定时器中断程序-*/void Timer1_isr(void) interrupt 3 using 1/定时器1执行数码管动态扫描 static unsigned int j; TH1=0xfb;/重新赋值 TL1=0x00; j+; if(j=200) j=0;ADFlag=1; /定时置位AD采样标志位#include#include#includesbit RS = P35;/Pin4sbit RW = P36; /Pin5sbit E = P34;/Pin6#define Data P0 /数据端口unsigned char TempData8;unsigned char SecondLine= ;unsigned char FirstLine = ;void DelayUs(unsigned char us)/delay us unsigned char uscnt; uscnt=us1;/* Crystal frequency in 12MHz*/ while(-uscnt);void DelayMs(unsigned char ms)/delay Ms while(-ms) DelayUs(250); DelayUs(250); DelayUs(250); DelayUs(250); void WriteCommand(unsigned char c) DelayMs(5);/short delay before operation E=0; RS=0; RW=0; _nop_(); E=1; Data=c; E=0;void WriteData(unsigned char c) DelayMs(5); /short delay before operation E=0; RS=1; RW=0; _nop_(); E=1; Data=c; E=0; RS=0;void ShowChar(unsigned char pos,unsigned char c) unsigned char p; if (pos=0x10) p=pos+0xb0; /是第二行则命令代码高4位为0xc else p=pos+0x80; /是第二行则命令代码高4位为0x8 WriteCommand (p);/write command WriteData (c); /write datavoid ShowString (unsigned char line,char *ptr) unsigned char l,i; l=line4; for (i=0;i16;i+) ShowChar (l+,*(ptr+i);/循环显示16个字符void InitLcd() DelayMs(15); WriteCommand(0x38); /display mode WriteCommand(0x38); /display mode WriteCommand(0x38); /display mode WriteCommand(0x06); /显示光标移动位置 WriteCommand(0x0c); /显示开及光标设置 WriteCommand(0x01); /显示清屏void disp(void) FirstLine2=0+TempData0; FirstLine4=0+TempData1; FirstLine3=.; FirstLine6=V;FirstLine9=0+TempData2; FirstLine11=0+TempData3; FirstLine10=.; FirstLine13=V;SecondLine2=0+TempData4; SecondLine4=0+Tem

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论