基于pwm调光的智能多功能台灯设计毕业设计论文内容摘要:
uchar xdata IRDATABUF[4]。 /* 数据缓冲区 */ sbit IR=P3^2。 uint xdata TimeBUF[33]。 /* 时间缓冲区 */ uint xdata TimeCount =0。 /* 时间计数器 */ /***********************红外处理程序 ****************************/ void IR_CL() { uchar i,j。 uint IRDATA = 0。 14 if( TimeCount == 33 ) /* 收到一包数据 */ { TR1 = 0。 TH0 = 0。 TL0 = 0。 TimeCount = 0。 for( i = 0。 i 4。 i++ ) /* 根据时间计算遥 控器发送的字节 */ { for( j = 1。 j 9。 j++ ) { IRDATA = 1。 if( TimeBUF[ i * 8 + j ] = 1800 ) /* 时间大于 2毫秒的位为 1,否则为 0 */ { IRDATA |= 0x80。 } } IRDATABUF[ i ] = IRDATA。 IRDATA = 0。 } EX0 = 1。 } } /****************************************************************/ /*延时 /****************************************************************/ void delayms(unsigned int ms) { unsigned int x。 for(。 ms。 ms) //ms=0 则跳出 for(x = 1000。 x。 x)。 } //*****************// //以下是 DS18B20 驱动程序 //*****************// sbit DQ=P1^1。 //温度输出入口 unsigned char data temper_data[2]={0x00,0x00}。 //读出温度暂放 unsigned char data _1820display[9]={0x00}。 //显示单元数据,共 4 个数据和一个运算暂用 unsigned int temper。 //**************温度小数部分用查表法 ***********// 15 unsigned char code ditab[16]= { 0x00,0x01,0x01,0x02, 0x03,0x03,0x04,0x04, 0x05,0x06,0x06,0x07, 0x08,0x08,0x09,0x09 }。 /*****************11us 延时函数 *************************/ // void _18B20_delay(unsigned int t) { for (。 t0。 t)。 } /****************DS18B20 复位函数 ************************/ void _18B20_reset(void) { char presence=1。 while(presence) { while(presence) { DQ=1。 _nop_()。 _nop_()。 //从高拉到低 DQ=0。 _18B20_delay(50)。 //550 us DQ=1。 _18B20_delay(6)。 //66 us presence=DQ。 //presence=0 复位成功,继续下一步 } _18B20_delay(45)。 //延时 500 us presence=~DQ。 } DQ=1。 //拉高电平 } /****************DS18B20 写一字节命令函数 ************************/ void _18B20_write(unsigned char val) { unsigned char i。 for(i=8。 i0。 i) { DQ=1。 _nop_()。 _nop_()。 //从高拉到低 DQ=0。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 //5 us 16 DQ=valamp。 0x01。 //最低位移出 _18B20_delay(6)。 //66 us val=val/2。 //右移一位 } DQ=1。 _18B20_delay(1)。 } /****************DS18B20 读一字节函数 ***********************/ unsigned char _18B20read_byte(void) { unsigned char i。 unsigned char value=0。 for(i=8。 i0。 i) { DQ=1。 _nop_()。 _nop_()。 //从高拉到低 value=1。 DQ=0。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 //4 us DQ=1。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 //4 us if(DQ)value|=0x80。 _18B20_delay(6)。 //66 us } DQ=1。 return(value)。 } /****************读出温度函数 ***********************/ unsigned int _18B20_read() { _18B20_reset()。 //总线复位 _18B20_delay(200)。 _18B20_write(0xcc)。 //发命令 _18B20_write(0x44)。 //发转换命令 _18B20_reset()。 _18B20_delay(1)。 _18B20_write(0xcc)。 //发命令 _18B20_write(0xbe)。 temper_data[0]=_18B20read_byte()。 //读温度的低字节 temper_data[1]=_18B20read_byte()。 //读温度的高字节 temper=temper_data[1]。 temper=8。 temper=temper|temper_data[0]。 // 两字节合成一个整型变量 17 return temper。 //返回温度值 } /****************温度数据处理函数 ************************/ //二进 制高字节的低半字节和低字节的高半字节组成一字节,这个 //字节的二进制转换为十进制后就是温度值的百、十、个位值,而剩下 //的低字节的低半字节转化十进制后,就是温度值的小数部分 /********************************************************/ void _18B20_work(unsigned int tem) { unsigned char n=0。 if(tem6348) // 温度值正负判断 { tem=65536tem。 n=1。 } // 负温度求补码,标志位置 1 _1820display[4]=temamp。 0x0f。 // 取小数部分的值 _1820display[0]=ditab[_1820display[4]]。 // 存入小数部分显示值 _1820display[4]=tem4。 // 取中间八位,即整数部分的值 _1820display[3]=_1820display[4]/100。 // 取百位数据暂存 _1820display[1]=_1820display[4]%100。 // 取后两位数据暂存 _1820display[2]=_1820display[1]/10。 // 取十位数据暂存 _1820display[1]=_1820display[1]%10。 /******************??????????**************************/ if(!_1820display[3]) { _1820display[3]=39。 39。 39。 039。 //????0???? if(!_1820display[2]) _1820display[2]=39。 39。 39。 039。 //????0???? } if(n) _1820display[3]=39。 39。 39。 039。 //????????? } /******************DS18B20 初始化 **************************/ void _18B20_init()//18B20??? { _18B20_reset()。 //开机先转换一次 _18B20_write(0xcc)。 //Skip ROM _18B20_write(0x44)。 //发转换命令 } //以下是 1602 驱动程序 sbit LCD_RS = P2^5。 18 sbit LCD_RW = P2^6。 sbit LCD_E = P2^7。 define LCD_DATA P0 /************************************************** ** 延时 1MS ****************************************************/ void delay(unsigned int z) { unsigned int x,y。 for(x=z。 x0。 x) for(y=114。 y0。 y)。 } /*******************1602 写数据 ************************/ void WriteDataLcd(unsigned char wdata) { LCD_RW=0。 LCD_RS=1。 LCD_DATA=wdata。 delay(1)。 LCD_E=1。 delay(1)。 LCD_E=0。 } /******************1602 写命令 ***********************/ void WriteCommandLcd(unsigned char wdata) { LCD_RW=0。 LCD_RS=0。 LCD_DATA=wdata。 delay(1)。 LCD_E=1。 delay(1)。 LCD_E=0。 } uchar code hanzi[4][8]= //中文汉字库 { 0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f,0x00, //日 0x0f,0x0。基于pwm调光的智能多功能台灯设计毕业设计论文
相关推荐
对报告的起草重视不够,特别是对以换届为契机,加强乡镇党委建设,加强村级组织建设重视不够。 乡镇党委换届应该是一次全面加强基础组织建设的有利契机,是选优配强乡镇领导班子的过程,是一 次全面教育党员干部的过程,更是一次凝聚人心、形成共识、推动科学发展的过程。 各地要注意克服换届就是换人的片面认识,纠正只注重安排人事,而忽略其他工作,特别是写好党委工作报告的倾向。 以上列举的问题需要我们深刻思考
called. Then quickly Netscape LiveScript renamed JavaScript, Java developers with them from the same issued a statement. A statement Java and JavaScript will plement each other, but they are
help them make business decisions. While collecting and storing vast amounts of data is one thing, utilizing and deploying that data throughout the anization is another. The technical challenges
3 特殊中间组件类:在 GUI 上起特殊作用的中间层,如 JInternalFrame。 4 基本组件类:基本组件是指那些只能依托在中间窗口上才能被显示的组件,如 JButton, JComboBox,JMenu 等。 Swing 事件处理机制 图形用户界面程序都需要对环境中发生的各种事件(包括鼠标的单击、值的改变、焦点的获取或者丢失、键盘输入等 )进行 监控并根据事件的类型进行相应的处理。
9。 width=39。 25%39。 b积分/b/td/tr %do while NOT % tr td align=39。 center39。 width=39。 25%39。 %=rs(username)%/td td align=39。 center39。 width=39。 25%39。 font color=red%=rs(Article)%/font/td td align=39。
效分离。 因此,该工艺环节起到脱水和分离的双重作用。 自垃圾库 至干燥工序 13 挤压脱水的主要设备包括:一级挤压机、破袋机、二级挤压机、弹松机等。 工艺流程原理如下:经沥水后的垃圾进入一级挤压机的预压仓开始一次挤压操作,经预压后进入主压仓(此时已有约 5%—8%的水份排除),再次起动一级挤压机开始二次挤压操作,连续挤压运行 2—5 分钟后,至第三次挤压操作时已有大量厨余和果蔬粥状物排出。