LED流水灯线路图_第1页
LED流水灯线路图_第2页
LED流水灯线路图_第3页
LED流水灯线路图_第4页
LED流水灯线路图_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

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

文档简介

ORG0000HSETBP1.0DELAY:MOVR5,#60//延时子程序,延时600msD1:MOVR6,#20D2:MOVR7,#248DJNZR7,$DJNZR6,D2DJNZR5,D1RETENDORG0000HLJMPMAINORG0100HMOVR7,#200D1:MOVR6,#200D2:DJNZR6,D2DJNZR7,D1RETMOVR7,#250D4:MOVR6,#250D5:DJNZR6,D2DJNZR7,D4RETD3:MOVP2,ARLAMOVP2,ADJNZR5,D3MOVP2,#0RETMAIN:MOVR5,#7MOVA,#11111110BLCAllD3LJMPMAINEND程序3-1:ORG0000HLED数字显示倒计时电路图MOVDPTR,#CHARTLJMPMAINORG0100H0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90HMOVR7,#10DEL1:MOVR6,#200DEL2:MOVR5,#248DJNZR5,$DJNZR6,DEL2DJNZR7,DEL1RETLOOP:MOVA,R2MOVCA,@A+DPTRMOVP2,ADECR2DJNZR1,LOOPRETMAIN:MOVR1,#10MOVR2,#9LCALLLOOPLJMPMAINEND图4-1LED加减按键电路图程序4-1:ORG0000H;ORG0030HDISP:MOVA,R2MOVR2,#1LOOP:MOVDPTR,#TABMOVCA,@A+DPTRJBP1.6,NEXTCALLDL10MSRETJBP1.6,NEXTDL10MS:JNBP1.6,$MOVR6,#20DJNZR2,NEXTDJNZR7,$MOVR2,#10NEXT:RETJBP1.7,LOOP;CALLDL10MSJBP1.7,LOOPDB0C0H,0F9H,0A4H,0B0H,99HJNBP1.7,$DB92H,82H,0F8H,80H,90HINCR2;CJNER2,#11,LOOPEND程序5-1:ORG0000HNOLED:MOVP2,#0JBP1.0,LEDCALLNOLEDLED:MOVP2,#1END图6-1电压超限预警报警显示电路图程序6-1:#include<reg52.h>#defineucharunsignedchar#defineuintunsignedint//===========================//ADC0809相关引脚定义//===========================#defineADC_sbitADC_EOC=P3^3;sbitADC_CLK=P3^4;sbitADC_OE=P3^7;//===========================//4位共阳数码管相关//===========================ucharcodeseg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0~9小数点不亮ucharcodeseg_dot[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};//0~9小数点亮#defineSEG_DATAP2//数码管段选码,共阳数码管,低电平选通段sbitSEG_SEL_0=P0^3;//数码管位选:第0位,共阳数码管,高电平选通位选码SEG_SEL_1=P0^2;//数码管位选:第1位SEG_SEL_2=P0^1;//数码管位选:第2位SEG_SEL_3=P0^0;//数码管位选:第3位//===========================//警报:LED与蜂鸣器引脚//===========================sbitLED_Y=P0^5;//低电平亮sbitBEEP=P0^4;//高电平响sbitLED_R=P0^6;sbitLED_G=P0^7;#defineBEEP_ONBEEP=1#defineBEEP_OFFBEEP=0#defineLED_Y_ONLED_Y=0#defineLED_Y_OFFLED_Y=1#defineLED_R_ONLED_R=0#defineLED_R_OFFLED_R=1#defineLED_G_ONLED_G=0#defineLED_G_OFFLED_G=1//===========================//粗略延时函数AT89C51&12MHz//===========================voiddelayms(unsignedintms){unsignedchara,b,c;while(ms--){for(c=1;c>0;c--)for(b=142;b>0;b--)for(a=2;a>0;a--);}}/*//===========================//粗略延时函数STC12C5A60S2&12MHz//===========================voiddelayms(unsignedintms){unsignedchara,b,c;while(ms--){for(c=1;c>0;c--)for(b=222;b>0;b--)for(a=12;a>0;a--);}}//===========================//定时器初始化,配置ADC0809时钟//===========================voidtimer_init(void){//配置定时器0TMOD&=0xF0;TH0=200;TL0=200;//配置定时器1TMOD&=0x0F;//定时器0,模式2,自动重装定时器//自动重装值//清除定时器1配置,不改动定时器0的配置//定时器1模式一,不改动定时器0的模式TH1=(65536-2000)/256;TL1=(65536-2000)%256;}//===========================//定时器0中断,为ADC0809提供时钟信号//===========================voidtimer0()interrupt1{ADC_CLK=~ADC_CLK;}//============================//ADC0809转换函数//============================ucharADC0809_GET(void){ADC_OE=0;while(ADC_EOC==0);ADC_OE=1;}//============================//定时器1中断函数,用于刷新数码管//============================uchart1_flag=0;//用于标记显示第几位数码管ucharseg0=0;//第0位数码管的值//第1位数码管的值ucharseg2=2;//第2位数码管的值ucharseg3=3;//第3位数码管的值voidtimer1()interrupt3{TH1=(65536-2000)/256;TL1=(65536-2000)%256;SEG_SEL_0=0;SEG_SEL_2=0;SEG_SEL_3=0;if(t1_flag==0){SEG_SEL_0=1;//选通第0位数码管SEG_SEL_2=0;SEG_SEL_3=0;SEG_DATA=seg_dot[seg0];//显示带小数点的数}elseif(t1_flag==1){SEG_SEL_0=0;SEG_SEL_2=0;SEG_SEL_3=0;}elseif(t1_flag==2){SEG_SEL_0=0;SEG_SEL_2=1;//选通第2位数码管SEG_SEL_3=0;}elseif(t1_flag==3){SEG_SEL_0=0;SEG_SEL_2=0;SEG_SEL_3=1;//选通第3位数码管}t1_flag++;//自加1t1_flag=t1_flag%4;//让t1_flag在0和3之间循环}//============================//显示电压值,输入0~255,显示0.000~5.000//============================uintprint_volt(ucharnum){uintvolt=0;volt=num/255.0*5000+0.5;//除255.0和除255有很大区别,除255.0会自动转换为float型,小数才能保持,而volt/255=0,+0.5四舍五入。seg0=volt/1000%10;seg1=volt/100%10;seg2=volt/10%10;seg3=volt%10;returnvolt;}//============================//主函数//============================voidmain(void){ucharadc_num=0;uintvolt=0;timer_init();LED_Y_OFF;LED_R_OFF;LED_G_ON;//ADC采集到的值//电压值0~5000,代表(0~5)VBEEP_OFF;while(1){adc_num=ADC0809_GET();if(volt>2500){LED_G_OFF;LED_Y_OFF;LED_R_ON;BEEP_ON;}elseif(volt>2400){LED_Y_ON;LED_G_OFF;LED_R_OFF;BEEP_OFF;}{LED_G_ON;LED_Y_OFF;LED_R_OFF;BEEP_OFF;}delayms(100);}}图7-1128*64LCD读取系统时间并显示程序7-1:#include<reg52.h>#include<ABSACC.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint/********各种指令的宏定义********/#defineLLCD_CMD_WRPBYTE[0x10]//#defineLLCD_CMD_RDPBYTE[0x11]//#defineLLCD_DATA_WRPBYTE[0x12]//#defineLLCD_DATA_RDPBYTE[0x13]//#defineRLCD_CMD_WRPBYTE[0x20]//#defineRLCD_CMD_RDPBYTE[0x21]//LCD左半部写的命令rs=0,wr=0LCD右半部部分#defineRLCD_DATA_WRPBYTE[0x22]//#defineRLCD_DATA_RDPBYTE[0x23]//#defineWRITE_SECOND0x80#defineWRITE_MINUTE0x82#defineWRITE_HOUR0x84#defineWRITE_DAY0x86#defineWRITE_MOUTH0x88#defineWRITE_YEAR0x8c#defineREAD_SECOND0x81#defineREAD_MINUTE0x83#defineREAD_HOUR0x85#defineREAD_DAY0x87#defineREAD_MOUTH0x89#defineREAD_YEAR0x8d#defineWRITE_PROTECT0x8E/*************************/sbitSCK=P1^1;sbitDIO=P1^0;sbitCE=P1^2;sbitK1=P1^5;sbitK2=P1^6;sbitK3=P1^7;sbitbusy=P0^7;ucharsec,min,hour,day,mouth,year,print;ucharbuffer[16];codeucharshuzi1[]={0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,//00x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//10x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,//20x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,//30x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,//40x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,//50x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,//60x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,//70x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,//80x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,//90x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,//-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,//.0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//空codeucharshijian1[]={0x00,0xFC,0x44,0x44,0x44,0xFC,0x10,0x90,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x00,0x00,0x07,0x04,0x04,0x04,0x07,0x00,0x00,0x03,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0xF8,0x01,0x06,0x00,0xF0,0x92,0x92,0x92,0x92,0xF2,0x02,0x02,0xFE,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x07,0x04,0x04,0x04,0x04,0x07,0x40,0x80,0x7F,0x00,0x00,codeucharriqi1[]={0x00,0x00,0x00,0xFE,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x3F,0x00,0x00,0x00,0x00,0x00,0x04,0xFF,0x54,0x54,0x54,0xFF,0x04,0x00,0xFE,0x22,0x22,0x22,0xFE,0x00,0x00,0x42,0x22,0x1B,0x02,0x02,0x0A,0x33,0x62,0x18,0x07,0x02,0x22,0x42,0x3F,0x00,0x00,voidlcd_busy_rd(ucharright){if(right==1)RLCD_CMD_RD;LLCD_CMD_RD;while(busy);}/**********写指令***********/voidlcd_comd_wr(ucharcmdcode,ucharright)//写指令{lcd_busy_rd(right);if(right==1)RLCD_CMD_WR=cmdcode;LLCD_CMD_WR=cmdcode;}/********对LCD进行读写***********/voidlcd_data_wr(ucharldata,ucharright)//{lcd_busy_rd(right);if(right==1)}/********延时函数*******/voiddelay(uintnms){uinti;while(nms--)for(i=0;i<500;i++);}/****lcd初始化*******/voidlcd_init(void){uintk;lcd_comd_wr(0x3e+1,0);//左半部显示开lcd_comd_wr(0xc0+0,0);//左半部顶行为第0行lcd_comd_wr(0xb0+0,0);//设置左半部页的地址lcd_comd_wr(0x40+0,0);//设置左列得地址lcd_comd_wr(0x3e+1,1);lcd_comd_wr(0xc0+0,1);lcd_comd_wr(0x40+0,1);lcd_comd_wr(0xb0+0,1);for(k=0;k<256;k++){lcd_data_wr(0x00,0);lcd_data_wr(0x00,1);}lcd_comd_wr(0xb8+4,0);lcd_comd_wr(0x40+0,0);lcd_comd_wr(0xb8+4,1);lcd_comd_wr(0x40+0,1);for(k=0;k<256;k++){lcd_data_wr(0x00,0);lcd_data_wr(0x00,1);}//这个for循环是为清楚不显示字的地方}/**********显示汉字****************//*********置入单个数字*********/voidlcd_shuzi_wr(ucharposx,ucharposy,uchar*shuzi){uchari1;if(posy<8){lcd_comd_wr(0xb8+2*posx,0);//左半部页的地址,相当于行扫描上半部分lcd_comd_wr(0x40+8*posy,0);//左半部列的地址for(i1=0;i1<8;i1++){lcd_data_wr(shuzi[i1],0);}lcd_comd_wr(0xb8+2*posx+1,0);//同上下部分的汉字lcd_comd_wr(0x40+8*posy,0);for(i1=8;i1<16;i1++){lcd_data_wr(shuzi[i1],0);}}else//否则右半部写{lcd_comd_wr(0xb8+2*posx,1);lcd_comd_wr(0x40+8*(posy-8),1);for(i1=0;i1<8;i1++){lcd_data_wr(shuzi[i1],1);}lcd_comd_wr(0xb8+2*posx+1,1);lcd_comd_wr(0x40+8*(posy-8),1);for(i1=8;i1<16;i1++){lcd_data_wr(shuzi[i1],1);}}}/**********输出方式**************//****n=空几格的数************/voidlcd_num_wr(ucharrow,ucharcol,ucharn,uchar*str){uchari2;for(i2=print;i2<n;i2++){if(col>15){row++;col=col-16;}lcd_shuzi_wr(row,col,str+buffer[i2]*16);//i2=写入的数字col++;}}/**********显示汉字****************//*********置入单个汉字**********/voidlcd_hanzi_wr(ucharposx,ucharposy,uchar*hanzi){uchari1;if(posy<4){lcd_comd_wr(0xb8+2*posx,0);//左半部页的地址,相当于行扫描上半部分lcd_comd_wr(0x40+16*posy,0);//左半部列的地址for(i1=0;i1<16;i1++){lcd_data_wr(hanzi[i1],0);}lcd_comd_wr(0xb8+2*posx+1,0);//同上下部分的汉字lcd_comd_wr(0x40+16*posy,0);for(i1=16;i1<32;i1++){lcd_data_wr(hanzi[i1],0);}}else//否则右半部写{lcd_comd_wr(0xb8+2*posx,1);lcd_comd_wr(0x40+16*(posy-4),1);for(i1=0;i1<16;i1++){lcd_data_wr(hanzi[i1],1);}lcd_comd_wr(0xb8+2*posx+1,1);lcd_comd_wr(0x40+16*(posy-4),1);for(i1=16;i1<32;i1++){lcd_data_wr(hanzi[i1],1);}}}/**********输出方式**************//****n=空几格的数************/voidlcd_str_wr(ucharrow,ucharcol,ucharn,uchar*str){uchari2;for(i2=0;i2<n;i2++){if(col>7){row++;col=col-8;}lcd_hanzi_wr(row,col,str+i2*32);col++;}}/***读出一个字节**********/ucharRead1302_byte(ucharaddr){uchari3,dat1,dat2;CE=0;_nop_();_nop_();CE=1;_nop_();for(i3=0;i3<8;i3++)//写入要读的字节的地址{DIO=addr&0x01;addr=addr>>1;}for(i3=0;i3<8;i3++)//读数据{dat1=dat1>>1;if(DIO)}CE=0;_nop_();_nop_();DIO=1;dat2=dat1/16;//将16进制转化为10进制dat1=dat1%16;dat1=dat2*10+dat1;return(dat1);}/***x写入一个字节**********/voidwrite_ds1302(ucharaddr,uchardat){uchari2;CE=0;_nop_();SCK=0;_nop_();CE=1;_nop_();for(i2=0;i2<8;i2++)//写入要写的字节的地址{DIO=addr&0x01;addr=addr>>1;}for(i2=0;i2<8;i2++)//写数据{DIO=dat&0x01;dat=dat>>1;}CE=0;_nop_();DIO=1;}/*****将ds1302的数据分离**********/voidzh(){buffer[0]=year/10;buffer[1]=year%10;buffer[2]=11;buffer[3]=mouth/10;buffer[4]=mouth%10;buffer[5]=11;buffer[6]=day/10;buffer[7]=day%10;buffer[8]=hour/10;buffer[9]=hour%10;buffer[10]=10;buffer[11]=min/10;buffer[12]=min%10;buffer[13]=10;buffer[14]=sec/10;buffer[15]=sec%10;}/**********读都ds1302的数据**********/voidread(){sec=Read1302_byte(READ_SECOND);min=Read1302_byte(READ_MINUTE);hour=Read1302_byte(READ_HOUR);day=Read1302_byte(READ_DAY);mouth=Read1302_byte(READ_MOUTH);year=Read1302_byte(READ_YEAR);}/***********键盘扫描***********/voidkey(){ucharw;if(K1==0){while(!K1);write_ds1302(WRITE_PROTECT,0x00);min++;if(min>=60){min=0;hour++;if(hour>=24){hour=0;write_ds1302(WRITE_HOUR,hour);}}w=min/10;min=min%10;min=min+w*16;//进制转换10进制转换16进制write_ds1302(WRITE_MINUTE,min);//把调整后的时钟写入到时钟芯片中}if(K2==0){while(!K2);write_ds1302(WRITE_PROTECT,0x00);hour++;if(hour>=24){hour=0;}w=hour/10;hour=hour%10;hour=hour+w*16;write_ds1302(WRITE_HOUR,hour);}write_ds1302(WRITE_PROTECT,0x80);print=0;lcd_num_wr(1,5,8,shuzi1);//写入到第几行,第几个开始,和写入的字数,写入的指针print=8;lcd_num_wr(2,5,16,shuzi1);}/*******主程序*************/voidmain(){lcd_init();delay(100);while(1){key();read();zh();print=0;lcd_num_wr(1,5,8,shuzi1);//写入到第几行,第几个开始,和写入的字数,写入的指针print=8;lcd_num_wr(2,5,16,shuzi1);lcd_str_wr(2,0,2,shijian1);lcd_str_wr(1,0,2,riqi1);}}图8-1128*64LCD滚动显示系统时间、姓名、班级等电路图#include<reg51.h>#defineucharunsignedchar#defineuintunsignedint#defineLCDLCDDisp_Off0x3e#defineLCDLCDDisp_On0x3f#definePage_Add0xb8//ye#defineLCDCol_Add0x40//lie#defineStart_Line0xC0//hang/*****液晶显示器的端口定义*****/#definedata_oraP0/*液晶数据总线*/sbitLCDMcs=P2^4;sbitLCDScs=P2^3;sbitLCDDi=P2^2;sbitLCDRW=P2^1;sbitLCDEnable=P2^0;ucharcodehz1[]={/*片选2*//*数据/指令选择*//*读/写选择*//*读/写使能*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*字模格式/大小:单色点阵液晶字模,纵向取模,字节倒序/32字节数据转换日期:2010-7-3115:50*/0x02,0x02,0xE2,0x22,0x22,0xFE,0x22,0x22,0x22,0xFE,0x22,0x22,0xE2,0x02,0x02,0x00,0x00,0x00,0xFF,0x48,0x44,0x43,0x40,0x40,0x40,0x43,0x44,0x44,0xFF,0x00,0x00,0x00,/*字模格式/大小:单色点阵液晶字模,纵向取模,字节倒序/32字节数据转换日期:2010-7-3115:51*/0x80,0x90,0x8C,0x84,0x84,0x84,0xF5,0x86,0x84,0x84,0x84,0x84,0x94,0x8C,0x80,0x00,0x00,0x80,0x80,0x84,0x46,0x49,0x28,0x10,0x10,0x2C,0x23,0x40,0x80,0x00,0x00,0x00,/*字模格式/大小:单色点阵液晶字模,纵向取模,字节倒序/32字节数据转换日期:2010-7-3115:52*/0x24,0x24,0xA4,0xFE,0xA3,0x22,0x00,0x22,0xCC,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x08,0x06,0x01,0xFF,0x00,0x01,0x04,0x04,0x04,0x04,0x04,0xFF,0x02,0x02,0x02,0x00,/*字模格式/大小:单色点阵液晶字模,纵向取模,字节倒序/32字节数据转换日期:2010-7-3115:53*/0x10,0x10,0x10,0xFF,0x10,0x90,0x08,0x88,0x88,0x88,0xFF,0x88,0x88,0x88,0x08,0x00,0x04,0x44,0x82,0x7F,0x01,0x80,0x80,0x40,0x43,0x2C,0x10,0x28,0x46,0x81,0x80,0x00,/*字模格式/大小:单色点阵液晶字模,纵向取模,字节倒序/32字节数据转换日期:2010-7-3115:53*/0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xFF,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x80,0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x03,0x0C,0x10,0x20,0x40,0x80,0x80,0x00,/*字模格式/大小:单色点阵液晶字模,纵向取模,字节倒序/32字节数据转换日期:2010-7-3115:54*/0x40,0x30,0x11,0x96,0x90,0x90,0x91,0x96,0x90,0x90,0x98,0x14,0x13,0x50,0x30,0x00,0x04,0x04,0x04,0x04,0x04,0x44,0x84,0x7E,0x06,0x05,0x04,0x04,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00ucharcodehz2[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/0x10,0x10,0xD0,0xFF,0x90,0x10,0x00,0xFE,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x04,0x03,0x00,0xFF,0x00,0x83,0x60,0x1F,0x00,0x00,0x00,0x3F,0x40,0x40,0x78,0x00,/*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/0x10,0x10,0xD0,0xFF,0x90,0x00,0x10,0xD0,0x10,0xD0,0x10,0xFF,0x10,0x92,0x14,0x00,0x04,0x03,0x00,0xFF,0x00,0x41,0x31,0x0F,0x01,0xBF,0x41,0x27,0x38,0x47,0xF0,0x00,/*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/0x00,0x04,0x04,0x04,0x04,0x04,0x04,0xFC,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,/*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/0x24,0x24,0xA4,0xFE,0x23,0x22,0x00,0x3E,0x22,0x22,0x22,0x22,0x22,0x3E,0x00,0x00,0x08,0x06,0x01,0xFF,0x01,0x06,0x40,0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0x41,0x00,/*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/0x40,0x30,0x11,0x96,0x90,0x90,0x91,0x96,0x90,0x90,0x98,0x14,0x13,0x50,0x30,0x00,0x04,0x04,0x04,0x04,0x04,0x44,0x84,0x7E,0x06,0x05,0x04,0x04,0x04,0x04,0x04,0x00,/*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/0x00,0xFE,0x22,0x5A,0x86,0x10,0x0C,0x24,0x24,0x25,0x26,0x24,0x24,0x14,0x0C,0x00,0x00,0xFF,0x04,0x08,0x07,0x80,0x41,0x31,0x0F,0x01,0x01,0x3F,0x41,0x41,0x71,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,ucharcodehz3[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/0x10,0x10,0xD0,0xFF,0x90,0x10,0x00,0xFE,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x04,0x03,0x00,0xFF,0x00,0x83,0x60,0x1F,0x00,0x00,0x00,0x3F,0x40,0x40,0x78,0x00,/*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/0x10,0x10,0xD0,0xFF,0x90,0x00,0x10,0xD0,0x10,0xD0,0x10,0xFF,0x10,0x92,0x14,0x00,0x04,0x03,0x00,0xFF,0x00,0x41,0x31,0x0F,0x01,0xBF,0x41,0x27,0x38,0x47,0xF0,0x00,/*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0xFF,0x88,0x88,0x88,0x88,0xF8,0x00,0x00,0x00,0x00,0x00,0x1F,0x08,0x08,0x08,0x08,0x7F,0x88,0x88,0x88,0x88,0x9F,0x80,0xF0,0x00,/*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/0x80,0x82,0x82,0x82,0x82,0x82,0x82,0xE2,0xA2,0x92,0x8A,0x86,0x82,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/0x00,0x04,0x04,0x04,0x04,0x04,0x04,0xFC,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,/*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/0x24,0x24,0xA4,0xFE,0x23,0x22,0x00,0x3E,0x22,0x22,0x22,0x22,0x22,0x3E,0x00,0x00,0x08,0x06,0x01,0xFF,0x01,0x06,0x40,0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00ucharcodehz4[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/0x40,0x44,0x54,0x54,0x55,0x56,0xD4,0x7C,0x54,0x56,0x55,0x54,0x54,0x44,0x40,0x00,0x02,0x82,0x82,0x9A,0x56,0x53,0x22,0x22,0x22,0x52,0x4E,0x42,0x82,0x02,0x02,0x00,/*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x20,0x40,0x80,0x00,0x00,0x08,0x04,0x03,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x01,0x0E,0x00,、/*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/0x40,0x21,0x11,0x09,0x7D,0x4B,0x49,0x49,0x49,0x49,0x49,0x79,0x01,0x01,0x00,0x00,0x10,0x09,0xFD,0x4B,0x49,0x49,0xF9,0x10,0x09,0xFD,0x4B,0x49,0x49,0xF9,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00/****************************************************************************入口参数:t****************************************************************************/voidLCDdelay(ucharx){uchary;for(y=0;y<x;y++)for(d=0;d<10;d++);}/*********************************************************************************************************************************************************/voidCheckState(){uchardat,DATA;//状态信息(判断是否忙)LCDRW=1;//R/W="H",E="H"数据被读到DB7∽DB0{LCDEnable=1;//EN下降源LCDdelay(1);//延时LCDEnable=0;dat=0x80&dat;//仅当第7位为0时才可操作(判别busy信号)}while(!(dat==0x00));}/*****************************************************************************入口参数:cmdcode*****************************************************************************/voidwrite_com(ucharcmdcode){CheckState();//检测LCD是否忙LCDDi=0;LCDRW=0;P1=cmdcode;LCDdelay(1);LCDEnable=1;LCDdelay(1);LCDEnable=0;}/*****************************************************************************入口参数:LCDDispdata*****************************************************************************/voidwrite_data(ucharLCDDispdata){CheckState();//检测LCD是否忙LCDDi=1;LCDRW=0;P1=LCDDispdata;LCDdelay(1);LCDEnable=1;LCDdelay(1);LCDEnable=0;}/*****************************************************************************/*****************************************************************************函数功能:LCD初始化程序入口参数:*****************************************************************************/voidinit_lcd(){LCDdelay(1);LCDMcs=1;//刚开始关闭两屏LCDScs=1;LCDdelay(1);write_com(LCDLCDDisp_Off);//写初始化命令write_com(Page_Add+0);write_com(Start_Line+0);write_com(LCDCol_Add+0);write_com(LCDLCDDisp_On);}/**************************************************************************入口参数:pag,col,hzk*****************************************************************************/voidClr_Scr(){ucharj,k;LCDMcs=0;//左、右屏均开显示LCDScs=0;write_com(Page_Add+0);write_com(LCDCol_Add+0);for(k=0;k<8;k++)//控制页数0-7,共8页{write_com(Page_Add+k);//每页每页进行写for(j=0;j<64;j++)//每页最多可写32个中文文字或64个ASCII字符{write_com(LCDCol_Add+j);write_data(0x00);//控制列数0-63,共64列,写点内容,列地址自动加1}}}/*****************************************************************************函数功能:一行一行显示入口参数:page,column,hzk*****************************************************************************/Disp(ucharpage,ucharcolumn,ucharcode*word){uchari;//左屏LCDMcs=0;LCDScs=1;//上半字write_com(0xb8|page);write_com(0x40|column);for(i=0;i<16;i++)write_data(word[i]);for(i=32;i<48;i++)write_data(word[i]);for(i=64;i<80;i++)write_data(word[i]);for(i=96;i<112;i++)write_data(word[i]);//下半字write_com(0xb8|page+1);write_com(0x40|column);for(i=16;i<32;i++)write_data(word[i]);for(i=48;i<64;i++)write_data(word[i]);for(i=80;i<96;i++)write_data(word[i]);for(i=112;i<128;i++)write_data(word[i]);//右屏LCDMcs=1;LCDScs=0;//上半字write_com(0xb8|page);write_com(0x40);for(i=128;i<144;i++)write_data(word[i]);for(i=160;i<176;i++)write_data(word[i]);for(i=192;i<208;i++)write_data(word[i]);for(i=224;i<240;i++)write_data(word[i]);//下半字write_com(0xb8|page+1);write_com(0x40);for(i=144;i<160;i++)write_data(word[i]);for(i=176;i<192;i++)write_data(word[i]);for(i=208;i<224;i++)write_data(word[i]);for(i=240;i<250;i++)write_data(word[i]);}voidmain(){uintk=0;init_lcd();Clr_Scr();k=0;for(k=0xc0;k<0xff;k++){Disp(0,0,hz1);Disp(2,0,hz2);Disp(4,0,hz3);Disp(6,0,hz4);LCDMcs=0;LCDScs=0;write_com(k);LCDdelay(2);}while(1){}}图9-1智能温度控制系统电路图程序9-1:#include"main.h"#include"delay.h"#include"ds1302.h"#include"KS0108.h"#include"IIC.h"#include"ds18B20.h"#include"serial.h"//端口定义sbitSPEAK=P1^0;//报警器控制管脚sbitLED_NOR=P1^3;//正常指示灯控制管脚sbitLED_OVER=P1^4;//温度上限指示灯控制管脚sbitLED_LOW=P1^5;//温度下限指示灯控制管脚sbitMOTO=P1^2;//风机控制管脚sbitHEAT=P1^1;//加热设备控制管脚//sbitRXD=P3^0;//reg51.h中已经定义//sbitTXD=P3^1;//reg51.h中已经定义sbitK_MOTO=P3^2;//控制风机按键sbitK_HEAT=P3^3;//控制加热设备的按键#defineDAT_ADDR0x03//IICEEPROM中保存的温度上、下限的地址/************************************************************************************************************/voidint0_inter()interrupt0{if(K_MOTO==0){MOTO=~MOTO;if(MOTO==0){g_pc_cont&=0x0C;}}}/************************************************************************************************************/voidint1_inter()interrupt2{{g_pc_cont&=0x03;}}/*******************************************************返回值:无******************************************************/voidtimer0_inter()interrupt1{//250us*4=1msstaticuchartimer=0;staticucharspeaker=0;if(speaker<235)//控制蜂鸣器声音间隔{if(timer++==3)//控制报警器声音{SPEAK=~SPEAK;timer=0;speaker++;}{if(timer++==4){speaker++;}}}/*******************************************************返回值:无******************************************************/voidport_init(void){LED_NOR=1;LED_OVER=0;LED_LOW=0;MOTO=0;}/*******************************************************返回值:无******************************************************/voidtimer0_init(void){TL0=0x06;//定时器初始值TH0=0x06;TMOD|=2;//定时器模式,工作方式2}/*******************************************************返回值:无******************************************************/voidint_init(void){IT0=1;//下降沿触发EX0=1;//外部中断打开}/*******************************************************返回值:无******************************************************/voidopen_moto(ucharopen){if(open==0){MOTO=0;g_pc_cont^=0x2;{g_pc_cont^=0x1;}}/*******************************************************返回值:无******************************************************/voidopen_heat(ucharopen){if(open==0){g_pc_cont^=0x8;{g_pc_cont^=0x4;}}/*******************************************************返回值:无******************************************************/voidset_temper_updown(uchardown,ucharup){write_IIC(DAT_ADDR,down);delay_ms(2);write_IIC(DAT_ADDR+1,up);}/*******************************************************参数:pBuff保存系统时间:年、月、日、时、分、秒、星期*返回值:无******************************************************/voidset_system_time(uchar*pBuff){SYSTEM_TIMEstr_time;str_time.year=pBuff[0];str_time.month=pBuff[1];str_time.date=pBuff[2];str_time.hour=pBuff[3];str_time.min=pBuff[4];str_time.sec=pBuff[5];str_time.day=pBuff[6];set_time(str_time);}/*******************************************************参数:pBuff保存温度整数、小数值*返回值:无******************************************************/voidget_temper(uchar*pBuff){ucharpTmpBuff[2]={0,0};read_temper(pTmpBuff);//pBuff[0]整数、pBuff[1]小数部分*pBuff=pTmpBuff[0];*(pBuff+1)=pTmpBuff[1];}/*******************************************************返回值:无******************************************************/voidget_temper_updown(uchar*pDown,uchar*pUp){*pDown=read_IIC(DAT_ADDR);*pUp=read_IIC(DAT_ADDR+1);}/*******************************************************参数:pBuff保存系统时间:年、月、日、时、分、秒、星期*返回值:无******************************************************/voidget_syste

温馨提示

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

评论

0/150

提交评论