可以联系我的,有作好的防真,去我的百度空间看看。然后联系我,空间有我的联系方式
Computers have accelerated the transformation of the world's human pace, but it is after all bulky. SCM in this case was born. As of today, SCM application rapid development of technology, looking around us now in all spheres of life, from missiles, navigation equipment, to the various instruments on the aircraft control from a computer network communications and data transmission, industrial automation to real-time process control and data processing, and our lives extensive use of the smart card, electronic pets, which is inseparable from the microcontroller. Monolithic single-chip micro-computer or computer. (Single-Chip Microcomputer) is the set of CPU, RAM, ROM, the timing, number and variety of interface integrated microcontrollers. Its small size, low cost, high performance, which are widely used in smart industries, and industrial automation. And 51 Series SCM SCM is the most typical and the most representative one. The graduation design Through the study, and thereby achieve the study, design, development hardware and software capabilities. Based on a microcontroller based on the will to achieve timing, stopwatch, calendar, alarm clocks, and other functions of a multi-functional electronic clock design study, in detail, the computer application of data conversion, Principle LCD, keyboard scanning principle, SCM regularly interrupted principle. Thereby achieve studying and understanding the relevant directives SCM in all aspects of the application. By AT89S52 system, temperature detection chip, the clock chips, liquid crystal displays, memory, Regulators and electricity supply of components, to achieve clock calendar display function can be carried out, hours seconds of the show and real-time temperature display. Also calculated with the calendar and clock, calendar calibration, regular hours and set the alarm function. The article attached circuit diagram, the PCB plans and procedures checklist for the reference of our readers. Due to limited, and it will inevitably be lighter inadequate, locations will give teachers and students correction and criticism. Keywords : stopwatch, alarm clock, calendar time
昨天才把我的毕业论文删掉。。
这个程序大概超过一千行每行注释10个字平均那就是1万来字啊天啊
#include#include"DS18B20_3.H"#define uint unsigned int#define uchar unsigned charuchar a,miao,shi,fen,ri,yue,nian,week,flag,key1n,temp;//flag用于读取头文件中的温度值,和显示温度值#define yh 0x80 //LCD第一行的初始位置,因为LCD1602字符地址首位D7恒定为1(100000000=80)#define er 0x80+0x40 //LCD第二行初始位置(因为第二行第一个字符位置地址是0x40)//液晶屏的与C51之间的引脚连接定义(显示数据线接C51的P0口)sbit rs=P1^0;sbit en=P1^2;sbit rw=P1^1; //如果硬件上rw接地,就不用写这句和后面的rw=0了sbit led=P3^7; //LCD背光开关//DS1302时钟芯片与C51之间的引脚连接定义sbit IO=P2^2;sbit SCLK=P2^1;sbit RST=P2^2;sbit ACC0=ACC^0;sbit ACC7=ACC^7;/************************************************************ACC累加器=AACC.0=E0H ACC.0就是ACC的第0位。Acc可以位寻址。累加器ACC是一个8位的存储单元,是用来放数据的。但是,这个存储单元有其特殊的地位,是单片机中一个非常关键的单元,很多运算都要通过ACC来进行。以后在学习指令时,常用A来表示累加器。但有一些地方例外,比如在PUSH指令中,就必须用ACC这样的名字。一般的说法,A代表了累加器中的内容、而ACC代表的是累加器的地址。 ***************************************************************///校时按键与C51的引脚连接定义sbit key1=P2^4; //设置键sbit key2=P2^5; //加键sbit key3=P2^6; //减键sbit buzzer=P2^0;//蜂鸣器,通过三极管9012驱动,端口低电平响/**************************************************************/uchar code tab1[]={"20 - - "}; //年显示的固定字符uchar code tab2[]={" : : "};//时间显示的固定字符//延时函数,后面经常调用void delay(uint xms)//延时函数,有参函数{ uint x,y; for(x=xms;x>0;x--) for(y=120;y>0;y--);}/********液晶写入指令函数与写入数据函数,以后可调用**************//*在这个程序中,液晶写入有关函数会在DS1302的函数中调用,所以液晶程序要放在前面*/write_1602com(uchar com)//****液晶写入指令函数****{ rs=0;//数据/指令选择置为指令 rw=0; //读写选择置为写 P0=com;//送入数据 delay(1); en=1;//拉高使能端,为制造有效的下降沿做准备 delay(1); en=0;//en由高变低,产生下降沿,液晶执行命令}write_1602dat(uchar dat)//***液晶写入数据函数****{ rs=1;//数据/指令选择置为数据 rw=0; //读写选择置为写 P0=dat;//送入数据 delay(1); en=1; //en置高电平,为制造下降沿做准备 delay(1); en=0; //en由高变低,产生下降沿,液晶执行命令}lcd_init()//***液晶初始化函数****{ write_1602com(0x38);//设置液晶工作模式,意思:16*2行显示,5*7点阵,8位数据 write_1602com(0x0c);//开显示不显示光标 write_1602com(0x06);//整屏不移动,光标自动右移 write_1602com(0x01);//清显示 write_1602com(yh+1);//日历显示固定符号从第一行第1个位置之后开始显示 for(a=0;a<14;a++) { write_1602dat(tab1[a]);//向液晶屏写日历显示的固定符号部分 //delay(3); } write_1602com(er+2);//时间显示固定符号写入位置,从第2个位置后开始显示 for(a=0;a<8;a++) { write_1602dat(tab2[a]);//写显示时间固定符号,两个冒号 //delay(3); }}/*********************over***********************//***************DS1302有关子函数********************/void write_byte(uchar dat)//写一个字节{ ACC=dat; RST=1; for(a=8;a>0;a--) { IO=ACC0; SCLK=0; SCLK=1; ACC=ACC>>1; }}uchar read_byte()//读一个字节{ RST=1; for(a=8;a>0;a--) { ACC7=IO; SCLK=1; SCLK=0; ACC=ACC>>1; } return (ACC);}//----------------------------------------void write_1302(uchar add,uchar dat)//向1302芯片写函数,指定写入地址,数据{ RST=0; SCLK=0; RST=1; write_byte(add); write_byte(dat); SCLK=1; RST=0;}uchar read_1302(uchar add)//从1302读数据函数,指定读取数据来源地址{ uchar temp; RST=0; SCLK=0; RST=1; write_byte(add); temp=read_byte(); SCLK=1; RST=0; return(temp);}uchar BCD_Decimal(uchar bcd)//BCD码转十进制函数,输入BCD,返回十进制{ uchar Decimal; Decimal=bcd>>4; return(Decimal=Decimal*10+(bcd&=0x0F));}//--------------------------------------void ds1302_init() //1302芯片初始化子函数(2010-01-07,12:00:00,week4){RST=0;SCLK=0;write_1302(0x8e,0x00); //允许写,禁止写保护 write_1302(0x80,0x00); //向DS1302内写秒寄存器80H写入初始秒数据00write_1302(0x82,0x00);//向DS1302内写分寄存器82H写入初始分数据00write_1302(0x84,0x12);//向DS1302内写小时寄存器84H写入初始小时数据12write_1302(0x8a,0x04);//向DS1302内写周寄存器8aH写入初始周数据4write_1302(0x86,0x07);//向DS1302内写日期寄存器86H写入初始日期数据07write_1302(0x88,0x01);//向DS1302内写月份寄存器88H写入初始月份数据01write_1302(0x8c,0x10);//向DS1302内写年份寄存器8cH写入初始年份数据10write_1302(0x8e,0x80); //打开写保护}//------------------------------------//温度显示子函数void write_temp(uchar add,uchar dat)//向LCD写温度数据,并指定显示位置{ uchar gw,sw; gw=dat%10;//取得个位数字 sw=dat/10;//取得十位数字 write_1602com(er+add);//er是头文件规定的值0x80+0x40 write_1602dat(0x30+sw);//数字+30得到该数字的LCD1602显示码 write_1602dat(0x30+gw);//数字+30得到该数字的LCD1602显示码 write_1602dat(0xdf);//显示温度的小圆圈符号,0xdf是液晶屏字符库的该符号地址码 write_1602dat(0x43); //显示"C"符号,0x43是液晶屏字符库里大写C的地址码 }//------------------------------------//时分秒显示子函数void write_sfm(uchar add,uchar dat)//向LCD写时分秒,有显示位置加、现示数据,两个参数{ uchar gw,sw; gw=dat%10;//取得个位数字 sw=dat/10;//取得十位数字 write_1602com(er+add);//er是头文件规定的值0x80+0x40 write_1602dat(0x30+sw);//数字+30得到该数字的LCD1602显示码 write_1602dat(0x30+gw);//数字+30得到该数字的LCD1602显示码 }//-------------------------------------//年月日显示子函数void write_nyr(uchar add,uchar dat)//向LCD写年月日,有显示位置加数、显示数据,两个参数{ uchar gw,sw; gw=dat%10;//取得个位数字 sw=dat/10;//取得十位数字 write_1602com(yh+add);//设定显示位置为第一个位置+add write_1602dat(0x30+sw);//数字+30得到该数字的LCD1602显示码 write_1602dat(0x30+gw);//数字+30得到该数字的LCD1602显示码 }//-------------------------------------------void write_week(uchar week)//写星期函数{ write_1602com(yh+0x0c);//星期字符的显示位置 switch(week) { case 1:write_1602dat('M');//星期数为1时,显示 write_1602dat('O'); write_1602dat('N'); break; case 2:write_1602dat('T');//星期数据为2时显示 write_1602dat('U'); write_1602dat('E'); break; case 3:write_1602dat('W');//星期数据为3时显示 write_1602dat('E'); write_1602dat('D'); break; case 4:write_1602dat('T');//星期数据为4是显示 write_1602dat('H'); write_1602dat('U'); break; case 5:write_1602dat('F');//星期数据为5时显示 write_1602dat('R'); write_1602dat('I'); break; case 6:write_1602dat('S');//星期数据为6时显示 write_1602dat('T'); write_1602dat('A'); break; case 7:write_1602dat('S');//星期数据为7时显示 write_1602dat('U'); write_1602dat('N'); break;}}//****************键盘扫描有关函数**********************void keyscan(){ if(key1==0)//---------------key1为功能键(设置键)-------------------- { delay(9);//延时,用于消抖动 if(key1==0)//延时后再次确认按键按下 { buzzer=0;//蜂鸣器短响一次 delay(20); buzzer=1; while(!key1); key1n++; if(key1n==9) key1n=1;//设置按键共有秒、分、时、星期、日、月、年、返回,8个功能循环 switch(key1n) { case 1: TR0=0;//关闭定时器 //TR1=0; write_1602com(er+0x09);//设置按键按动一次,秒位置显示光标 write_1602com(0x0f);//设置光标为闪烁 temp=(miao)/10*16+(miao)%10;//秒数据写入DS1302 write_1302(0x8e,0x00); write_1302(0x80,0x80|temp);//miao write_1302(0x8e,0x80); break; case 2: write_1602com(er+6);//按2次fen位置显示光标 //write_1602com(0x0f); break; case 3: write_1602com(er+3);//按动3次,shi //write_1602com(0x0f); break; case 4: write_1602com(yh+0x0e);//按动4次,week //write_1602com(0x0f); break; case 5: write_1602com(yh+0x0a);//按动5次,ri //write_1602com(0x0f); break; case 6: write_1602com(yh+0x07);//按动6次,yue //write_1602com(0x0f); break; case 7: write_1602com(yh+0x04);//按动7次,nian //write_1602com(0x0f); break; case 8: write_1602com(0x0c);//按动到第8次,设置光标不闪烁 TR0=1;//打开定时器 temp=(miao)/10*16+(miao)%10; write_1302(0x8e,0x00); write_1302(0x80,0x00|temp);//miao数据写入DS1302 write_1302(0x8e,0x80); break; }} }//------------------------------加键key2---------------------------- if(key1n!=0)//当key1按下以下。再按以下键才有效(按键次数不等于零) { if(key2==0) //上调键 { delay(10); if(key2==0) { buzzer=0;//蜂鸣器短响一次 delay(20); buzzer=1; while(!key2); switch(key1n) { case 1:miao++;//设置键按动1次,调秒 if(miao==60) miao=0;//秒超过59,再加1,就归零 write_sfm(0x08,miao);//令LCD在正确位置显示"加"设定好的秒数 temp=(miao)/10*16+(miao)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00); //允许写,禁止写保护 write_1302(0x80,temp); //向DS1302内写秒寄存器80H写入调整后的秒数据BCD码 write_1302(0x8e,0x80); //打开写保护 write_1602com(er+0x09);//因为设置液晶的模式是写入数据后,光标自动右移,所以要指定返回 //write_1602com(0x0b); break; case 2:fen++; if(fen==60) fen=0; write_sfm(0x05,fen);//令LCD在正确位置显示"加"设定好的分数据 temp=(fen)/10*16+(fen)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x82,temp);//向DS1302内写分寄存器82H写入调整后的分数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(er+6);//因为设置液晶的模式是写入数据后,指针自动加一,在这里是写回原来的位置 break; case 3:shi++; if(shi==24) shi=0; write_sfm(2,shi);//令LCD在正确的位置显示"加"设定好的小时数据 temp=(shi)/10*16+(shi)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x84,temp);//向DS1302内写小时寄存器84H写入调整后的小时数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(er+3);//因为设置液晶的模式是写入数据后,指针自动加一,所以需要光标回位 break; case 4:week++; if(week==8) week=1; write_1602com(yh+0x0C);//指定'加'后的周数据显示位置 write_week(week);//指定周数据显示内容 temp=(week)/10*16+(week)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x8a,temp);//向DS1302内写周寄存器8aH写入调整后的周数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(yh+0x0e);//因为设置液晶的模式是写入数据后,指针自动加一,所以需要光标回位 break; case 5:ri++; if(ri==32) ri=1; write_nyr(9,ri);//令LCD在正确的位置显示"加"设定好的日期数据 temp=(ri)/10*16+(ri)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x86,temp);//向DS1302内写日期寄存器86H写入调整后的日期数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(yh+10);//因为设置液晶的模式是写入数据后,指针自动加一,所以需要光标回位 break; case 6:yue++; if(yue==13) yue=1; write_nyr(6,yue);//令LCD在正确的位置显示"加"设定好的月份数据 temp=(yue)/10*16+(yue)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x88,temp);//向DS1302内写月份寄存器88H写入调整后的月份数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(yh+7);//因为设置液晶的模式是写入数据后,指针自动加一,所以需要光标回位 break; case 7:nian++; if(nian==100) nian=0; write_nyr(3,nian);//令LCD在正确的位置显示"加"设定好的年份数据 temp=(nian)/10*16+(nian)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x8c,temp);//向DS1302内写年份寄存器8cH写入调整后的年份数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(yh+4);//因为设置液晶的模式是写入数据后,指针自动加一,所以需要光标回位 break;} } } //------------------减键key3,各句功能参照'加键'注释--------------- if(key3==0) { delay(10);//调延时,消抖动 if(key3==0) { buzzer=0;//蜂鸣器短响一次 delay(20); buzzer=1; while(!key3); switch(key1n) { case 1:miao--; if(miao==-1) miao=59;//秒数据减到-1时自动变成59 write_sfm(0x08,miao);//在LCD的正确位置显示改变后新的秒数 temp=(miao)/10*16+(miao)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00); //允许写,禁止写保护 write_1302(0x80,temp); //向DS1302内写秒寄存器80H写入调整后的秒数据BCD码 write_1302(0x8e,0x80); //打开写保护 write_1602com(er+0x09);//因为设置液晶的模式是写入数据后,指针自动加一,在这里是写回原来的位置 //write_1602com(0x0b); break; case 2:fen--; if(fen==-1) fen=59; write_sfm(5,fen); temp=(fen)/10*16+(fen)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x82,temp);//向DS1302内写分寄存器82H写入调整后的分数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(er+6);//因为设置液晶的模式是写入数据后,指针自动加一,在这里是写回原来的位置 break; case 3:shi--; if(shi==-1) shi=23; write_sfm(2,shi); temp=(shi)/10*16+(shi)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x84,temp);//向DS1302内写小时寄存器84H写入调整后的小时数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(er+3);//因为设置液晶的模式是写入数据后,指针自动加一,所以需要光标回位 break; case 4:week--; if(week==0) week=7; write_1602com(yh+0x0C);//指定'加'后的周数据显示位置 write_week(week);//指定周数据显示内容 temp=(week)/10*16+(week)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x8a,temp);//向DS1302内写周寄存器8aH写入调整后的周数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(yh+0x0e);//因为设置液晶的模式是写入数据后,指针自动加一,所以需要光标回位 break; case 5:ri--; if(ri==0) ri=31; write_nyr(9,ri); temp=(ri)/10*16+(ri)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x86,temp);//向DS1302内写日期寄存器86H写入调整后的日期数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(yh+10);//因为设置液晶的模式是写入数据后,指针自动加一,所以需要光标回位 break; case 6:yue--; if(yue==0) yue=12; write_nyr(6,yue); temp=(yue)/10*16+(yue)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x88,temp);//向DS1302内写月份寄存器88H写入调整后的月份数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(yh+7);//因为设置液晶的模式是写入数据后,指针自动加一,所以需要光标回位 break; case 7:nian--; if(nian==-1) nian=99; write_nyr(3,nian); temp=(nian)/10*16+(nian)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x8c,temp);//向DS1302内写年份寄存器8cH写入调整后的年份数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(yh+4);//因为设置液晶的模式是写入数据后,指针自动加一,所以需要光标回位 break;} } } }}//-------------------------------void init() //定时器、计数器设置函数{ TMOD=0x11; //指定定时/计数器的工作方式为3 TH0=0; //定时器T0的高四位=0 TL0=0; //定时器T0的低四位=0 EA=1; //系统允许有开放的中断 ET0=1; //允许T0中断 TR0=1; //开启中断,启动定时器}//*******************主函数**************************//***************************************************void main(){ lcd_init(); //调用液晶屏初始化子函数 ds1302_init(); //调用DS1302时钟的初始化子函数 init(); //调用定时计数器的设置子函数 led=0; //打开LCD的背光电源 buzzer=0;//蜂鸣器长响一次 delay(80); buzzer=1; while(1) //无限循环下面的语句: { keyscan(); //调用键盘扫描子函数 }}void timer0() interrupt 1 //取得并显示日历和时间{ //Init_DS18B20();//温度传感器DS18b2初始化子函数,在头文件中 flag=ReadTemperature();//将18b2头文件运行返回的函数结果送到变量FLAG中,用于显示 //读取秒时分周日月年七个数据(DS1302的读寄存器与写寄存器不一样):miao = BCD_Decimal(read_1302(0x81)); fen = BCD_Decimal(read_1302(0x83)); shi = BCD_Decimal(read_1302(0x85)); ri = BCD_Decimal(read_1302(0x87)); yue = BCD_Decimal(read_1302(0x89)); nian=BCD_Decimal(read_1302(0x8d)); week=BCD_Decimal(read_1302(0x8b)); //显示温度、秒、时、分数据: write_temp(12,flag);//显示温度,从第二行第12个字符后开始显示 write_sfm(8,miao);//秒,从第二行第8个字后开始显示(调用时分秒显示子函数) write_sfm(5,fen);//分,从第二行第5个字符后开始显示 write_sfm(2,shi);//小时,从第二行第2个字符后开始显示 //显示日、月、年数据: write_nyr(9,ri);//日期,从第二行第9个字符后开始显示 write_nyr(6,yue);//月份,从第二行第6个字符后开始显示 write_nyr(3,nian);//年,从第二行第3个字符后开始显示 write_week(week);}
来找我,我帮你做!
到看一下吧,这里有讲解51单片机的
论文很简单啊,把你设计的这个东西的前因后果写完整理整理就可以了。比如你搞这个东西的动机是什么,目前市场状态是怎么样,你用了几种方案,比较几种方案你所采用的方案的优点是什么,不足又是什么。主要的分析计算等。基本上就这样就可以了。论文切忌空动和大。小而实为首选。
其实写毕业论文还是要和以后的求职方向相关。所以你应该好好考虑下选题。比如液晶显示及制造技术。选一个目前在液晶显示中存在的问题,比如透过率的问题,比如显示视角的问题、比如大尺寸显示存在的问题,或者如果在液晶面板制造实现低能耗。你写了这个论文,还可以分分钟去一些大企业,京东方、华星光电、天马等。
呵呵,连这个都能,看来LED发展挺快的!!
#include#include"DS18B20_3.H"#define uint unsigned int#define uchar unsigned charuchar a,miao,shi,fen,ri,yue,nian,week,flag,key1n,temp;//flag用于读取头文件中的温度值,和显示温度值#define yh 0x80 //LCD第一行的初始位置,因为LCD1602字符地址首位D7恒定为1(100000000=80)#define er 0x80+0x40 //LCD第二行初始位置(因为第二行第一个字符位置地址是0x40)//液晶屏的与C51之间的引脚连接定义(显示数据线接C51的P0口)sbit rs=P1^0;sbit en=P1^2;sbit rw=P1^1; //如果硬件上rw接地,就不用写这句和后面的rw=0了sbit led=P3^7; //LCD背光开关//DS1302时钟芯片与C51之间的引脚连接定义sbit IO=P2^2;sbit SCLK=P2^1;sbit RST=P2^2;sbit ACC0=ACC^0;sbit ACC7=ACC^7;/************************************************************ACC累加器=AACC.0=E0H ACC.0就是ACC的第0位。Acc可以位寻址。累加器ACC是一个8位的存储单元,是用来放数据的。但是,这个存储单元有其特殊的地位,是单片机中一个非常关键的单元,很多运算都要通过ACC来进行。以后在学习指令时,常用A来表示累加器。但有一些地方例外,比如在PUSH指令中,就必须用ACC这样的名字。一般的说法,A代表了累加器中的内容、而ACC代表的是累加器的地址。 ***************************************************************///校时按键与C51的引脚连接定义sbit key1=P2^4; //设置键sbit key2=P2^5; //加键sbit key3=P2^6; //减键sbit buzzer=P2^0;//蜂鸣器,通过三极管9012驱动,端口低电平响/**************************************************************/uchar code tab1[]={"20 - - "}; //年显示的固定字符uchar code tab2[]={" : : "};//时间显示的固定字符//延时函数,后面经常调用void delay(uint xms)//延时函数,有参函数{ uint x,y; for(x=xms;x>0;x--) for(y=120;y>0;y--);}/********液晶写入指令函数与写入数据函数,以后可调用**************//*在这个程序中,液晶写入有关函数会在DS1302的函数中调用,所以液晶程序要放在前面*/write_1602com(uchar com)//****液晶写入指令函数****{ rs=0;//数据/指令选择置为指令 rw=0; //读写选择置为写 P0=com;//送入数据 delay(1); en=1;//拉高使能端,为制造有效的下降沿做准备 delay(1); en=0;//en由高变低,产生下降沿,液晶执行命令}write_1602dat(uchar dat)//***液晶写入数据函数****{ rs=1;//数据/指令选择置为数据 rw=0; //读写选择置为写 P0=dat;//送入数据 delay(1); en=1; //en置高电平,为制造下降沿做准备 delay(1); en=0; //en由高变低,产生下降沿,液晶执行命令}lcd_init()//***液晶初始化函数****{ write_1602com(0x38);//设置液晶工作模式,意思:16*2行显示,5*7点阵,8位数据 write_1602com(0x0c);//开显示不显示光标 write_1602com(0x06);//整屏不移动,光标自动右移 write_1602com(0x01);//清显示 write_1602com(yh+1);//日历显示固定符号从第一行第1个位置之后开始显示 for(a=0;a<14;a++) { write_1602dat(tab1[a]);//向液晶屏写日历显示的固定符号部分 //delay(3); } write_1602com(er+2);//时间显示固定符号写入位置,从第2个位置后开始显示 for(a=0;a<8;a++) { write_1602dat(tab2[a]);//写显示时间固定符号,两个冒号 //delay(3); }}/*********************over***********************//***************DS1302有关子函数********************/void write_byte(uchar dat)//写一个字节{ ACC=dat; RST=1; for(a=8;a>0;a--) { IO=ACC0; SCLK=0; SCLK=1; ACC=ACC>>1; }}uchar read_byte()//读一个字节{ RST=1; for(a=8;a>0;a--) { ACC7=IO; SCLK=1; SCLK=0; ACC=ACC>>1; } return (ACC);}//----------------------------------------void write_1302(uchar add,uchar dat)//向1302芯片写函数,指定写入地址,数据{ RST=0; SCLK=0; RST=1; write_byte(add); write_byte(dat); SCLK=1; RST=0;}uchar read_1302(uchar add)//从1302读数据函数,指定读取数据来源地址{ uchar temp; RST=0; SCLK=0; RST=1; write_byte(add); temp=read_byte(); SCLK=1; RST=0; return(temp);}uchar BCD_Decimal(uchar bcd)//BCD码转十进制函数,输入BCD,返回十进制{ uchar Decimal; Decimal=bcd>>4; return(Decimal=Decimal*10+(bcd&=0x0F));}//--------------------------------------void ds1302_init() //1302芯片初始化子函数(2010-01-07,12:00:00,week4){RST=0;SCLK=0;write_1302(0x8e,0x00); //允许写,禁止写保护 write_1302(0x80,0x00); //向DS1302内写秒寄存器80H写入初始秒数据00write_1302(0x82,0x00);//向DS1302内写分寄存器82H写入初始分数据00write_1302(0x84,0x12);//向DS1302内写小时寄存器84H写入初始小时数据12write_1302(0x8a,0x04);//向DS1302内写周寄存器8aH写入初始周数据4write_1302(0x86,0x07);//向DS1302内写日期寄存器86H写入初始日期数据07write_1302(0x88,0x01);//向DS1302内写月份寄存器88H写入初始月份数据01write_1302(0x8c,0x10);//向DS1302内写年份寄存器8cH写入初始年份数据10write_1302(0x8e,0x80); //打开写保护}//------------------------------------//温度显示子函数void write_temp(uchar add,uchar dat)//向LCD写温度数据,并指定显示位置{ uchar gw,sw; gw=dat%10;//取得个位数字 sw=dat/10;//取得十位数字 write_1602com(er+add);//er是头文件规定的值0x80+0x40 write_1602dat(0x30+sw);//数字+30得到该数字的LCD1602显示码 write_1602dat(0x30+gw);//数字+30得到该数字的LCD1602显示码 write_1602dat(0xdf);//显示温度的小圆圈符号,0xdf是液晶屏字符库的该符号地址码 write_1602dat(0x43); //显示"C"符号,0x43是液晶屏字符库里大写C的地址码 }//------------------------------------//时分秒显示子函数void write_sfm(uchar add,uchar dat)//向LCD写时分秒,有显示位置加、现示数据,两个参数{ uchar gw,sw; gw=dat%10;//取得个位数字 sw=dat/10;//取得十位数字 write_1602com(er+add);//er是头文件规定的值0x80+0x40 write_1602dat(0x30+sw);//数字+30得到该数字的LCD1602显示码 write_1602dat(0x30+gw);//数字+30得到该数字的LCD1602显示码 }//-------------------------------------//年月日显示子函数void write_nyr(uchar add,uchar dat)//向LCD写年月日,有显示位置加数、显示数据,两个参数{ uchar gw,sw; gw=dat%10;//取得个位数字 sw=dat/10;//取得十位数字 write_1602com(yh+add);//设定显示位置为第一个位置+add write_1602dat(0x30+sw);//数字+30得到该数字的LCD1602显示码 write_1602dat(0x30+gw);//数字+30得到该数字的LCD1602显示码 }//-------------------------------------------void write_week(uchar week)//写星期函数{ write_1602com(yh+0x0c);//星期字符的显示位置 switch(week) { case 1:write_1602dat('M');//星期数为1时,显示 write_1602dat('O'); write_1602dat('N'); break; case 2:write_1602dat('T');//星期数据为2时显示 write_1602dat('U'); write_1602dat('E'); break; case 3:write_1602dat('W');//星期数据为3时显示 write_1602dat('E'); write_1602dat('D'); break; case 4:write_1602dat('T');//星期数据为4是显示 write_1602dat('H'); write_1602dat('U'); break; case 5:write_1602dat('F');//星期数据为5时显示 write_1602dat('R'); write_1602dat('I'); break; case 6:write_1602dat('S');//星期数据为6时显示 write_1602dat('T'); write_1602dat('A'); break; case 7:write_1602dat('S');//星期数据为7时显示 write_1602dat('U'); write_1602dat('N'); break;}}//****************键盘扫描有关函数**********************void keyscan(){ if(key1==0)//---------------key1为功能键(设置键)-------------------- { delay(9);//延时,用于消抖动 if(key1==0)//延时后再次确认按键按下 { buzzer=0;//蜂鸣器短响一次 delay(20); buzzer=1; while(!key1); key1n++; if(key1n==9) key1n=1;//设置按键共有秒、分、时、星期、日、月、年、返回,8个功能循环 switch(key1n) { case 1: TR0=0;//关闭定时器 //TR1=0; write_1602com(er+0x09);//设置按键按动一次,秒位置显示光标 write_1602com(0x0f);//设置光标为闪烁 temp=(miao)/10*16+(miao)%10;//秒数据写入DS1302 write_1302(0x8e,0x00); write_1302(0x80,0x80|temp);//miao write_1302(0x8e,0x80); break; case 2: write_1602com(er+6);//按2次fen位置显示光标 //write_1602com(0x0f); break; case 3: write_1602com(er+3);//按动3次,shi //write_1602com(0x0f); break; case 4: write_1602com(yh+0x0e);//按动4次,week //write_1602com(0x0f); break; case 5: write_1602com(yh+0x0a);//按动5次,ri //write_1602com(0x0f); break; case 6: write_1602com(yh+0x07);//按动6次,yue //write_1602com(0x0f); break; case 7: write_1602com(yh+0x04);//按动7次,nian //write_1602com(0x0f); break; case 8: write_1602com(0x0c);//按动到第8次,设置光标不闪烁 TR0=1;//打开定时器 temp=(miao)/10*16+(miao)%10; write_1302(0x8e,0x00); write_1302(0x80,0x00|temp);//miao数据写入DS1302 write_1302(0x8e,0x80); break; }} }//------------------------------加键key2---------------------------- if(key1n!=0)//当key1按下以下。再按以下键才有效(按键次数不等于零) { if(key2==0) //上调键 { delay(10); if(key2==0) { buzzer=0;//蜂鸣器短响一次 delay(20); buzzer=1; while(!key2); switch(key1n) { case 1:miao++;//设置键按动1次,调秒 if(miao==60) miao=0;//秒超过59,再加1,就归零 write_sfm(0x08,miao);//令LCD在正确位置显示"加"设定好的秒数 temp=(miao)/10*16+(miao)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00); //允许写,禁止写保护 write_1302(0x80,temp); //向DS1302内写秒寄存器80H写入调整后的秒数据BCD码 write_1302(0x8e,0x80); //打开写保护 write_1602com(er+0x09);//因为设置液晶的模式是写入数据后,光标自动右移,所以要指定返回 //write_1602com(0x0b); break; case 2:fen++; if(fen==60) fen=0; write_sfm(0x05,fen);//令LCD在正确位置显示"加"设定好的分数据 temp=(fen)/10*16+(fen)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x82,temp);//向DS1302内写分寄存器82H写入调整后的分数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(er+6);//因为设置液晶的模式是写入数据后,指针自动加一,在这里是写回原来的位置 break; case 3:shi++; if(shi==24) shi=0; write_sfm(2,shi);//令LCD在正确的位置显示"加"设定好的小时数据 temp=(shi)/10*16+(shi)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x84,temp);//向DS1302内写小时寄存器84H写入调整后的小时数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(er+3);//因为设置液晶的模式是写入数据后,指针自动加一,所以需要光标回位 break; case 4:week++; if(week==8) week=1; write_1602com(yh+0x0C);//指定'加'后的周数据显示位置 write_week(week);//指定周数据显示内容 temp=(week)/10*16+(week)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x8a,temp);//向DS1302内写周寄存器8aH写入调整后的周数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(yh+0x0e);//因为设置液晶的模式是写入数据后,指针自动加一,所以需要光标回位 break; case 5:ri++; if(ri==32) ri=1; write_nyr(9,ri);//令LCD在正确的位置显示"加"设定好的日期数据 temp=(ri)/10*16+(ri)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x86,temp);//向DS1302内写日期寄存器86H写入调整后的日期数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(yh+10);//因为设置液晶的模式是写入数据后,指针自动加一,所以需要光标回位 break; case 6:yue++; if(yue==13) yue=1; write_nyr(6,yue);//令LCD在正确的位置显示"加"设定好的月份数据 temp=(yue)/10*16+(yue)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x88,temp);//向DS1302内写月份寄存器88H写入调整后的月份数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(yh+7);//因为设置液晶的模式是写入数据后,指针自动加一,所以需要光标回位 break; case 7:nian++; if(nian==100) nian=0; write_nyr(3,nian);//令LCD在正确的位置显示"加"设定好的年份数据 temp=(nian)/10*16+(nian)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x8c,temp);//向DS1302内写年份寄存器8cH写入调整后的年份数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(yh+4);//因为设置液晶的模式是写入数据后,指针自动加一,所以需要光标回位 break;} } } //------------------减键key3,各句功能参照'加键'注释--------------- if(key3==0) { delay(10);//调延时,消抖动 if(key3==0) { buzzer=0;//蜂鸣器短响一次 delay(20); buzzer=1; while(!key3); switch(key1n) { case 1:miao--; if(miao==-1) miao=59;//秒数据减到-1时自动变成59 write_sfm(0x08,miao);//在LCD的正确位置显示改变后新的秒数 temp=(miao)/10*16+(miao)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00); //允许写,禁止写保护 write_1302(0x80,temp); //向DS1302内写秒寄存器80H写入调整后的秒数据BCD码 write_1302(0x8e,0x80); //打开写保护 write_1602com(er+0x09);//因为设置液晶的模式是写入数据后,指针自动加一,在这里是写回原来的位置 //write_1602com(0x0b); break; case 2:fen--; if(fen==-1) fen=59; write_sfm(5,fen); temp=(fen)/10*16+(fen)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x82,temp);//向DS1302内写分寄存器82H写入调整后的分数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(er+6);//因为设置液晶的模式是写入数据后,指针自动加一,在这里是写回原来的位置 break; case 3:shi--; if(shi==-1) shi=23; write_sfm(2,shi); temp=(shi)/10*16+(shi)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x84,temp);//向DS1302内写小时寄存器84H写入调整后的小时数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(er+3);//因为设置液晶的模式是写入数据后,指针自动加一,所以需要光标回位 break; case 4:week--; if(week==0) week=7; write_1602com(yh+0x0C);//指定'加'后的周数据显示位置 write_week(week);//指定周数据显示内容 temp=(week)/10*16+(week)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x8a,temp);//向DS1302内写周寄存器8aH写入调整后的周数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(yh+0x0e);//因为设置液晶的模式是写入数据后,指针自动加一,所以需要光标回位 break; case 5:ri--; if(ri==0) ri=31; write_nyr(9,ri); temp=(ri)/10*16+(ri)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x86,temp);//向DS1302内写日期寄存器86H写入调整后的日期数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(yh+10);//因为设置液晶的模式是写入数据后,指针自动加一,所以需要光标回位 break; case 6:yue--; if(yue==0) yue=12; write_nyr(6,yue); temp=(yue)/10*16+(yue)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x88,temp);//向DS1302内写月份寄存器88H写入调整后的月份数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(yh+7);//因为设置液晶的模式是写入数据后,指针自动加一,所以需要光标回位 break; case 7:nian--; if(nian==-1) nian=99; write_nyr(3,nian); temp=(nian)/10*16+(nian)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x8c,temp);//向DS1302内写年份寄存器8cH写入调整后的年份数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(yh+4);//因为设置液晶的模式是写入数据后,指针自动加一,所以需要光标回位 break;} } } }}//-------------------------------void init() //定时器、计数器设置函数{ TMOD=0x11; //指定定时/计数器的工作方式为3 TH0=0; //定时器T0的高四位=0 TL0=0; //定时器T0的低四位=0 EA=1; //系统允许有开放的中断 ET0=1; //允许T0中断 TR0=1; //开启中断,启动定时器}//*******************主函数**************************//***************************************************void main(){ lcd_init(); //调用液晶屏初始化子函数 ds1302_init(); //调用DS1302时钟的初始化子函数 init(); //调用定时计数器的设置子函数 led=0; //打开LCD的背光电源 buzzer=0;//蜂鸣器长响一次 delay(80); buzzer=1; while(1) //无限循环下面的语句: { keyscan(); //调用键盘扫描子函数 }}void timer0() interrupt 1 //取得并显示日历和时间{ //Init_DS18B20();//温度传感器DS18b2初始化子函数,在头文件中 flag=ReadTemperature();//将18b2头文件运行返回的函数结果送到变量FLAG中,用于显示 //读取秒时分周日月年七个数据(DS1302的读寄存器与写寄存器不一样):miao = BCD_Decimal(read_1302(0x81)); fen = BCD_Decimal(read_1302(0x83)); shi = BCD_Decimal(read_1302(0x85)); ri = BCD_Decimal(read_1302(0x87)); yue = BCD_Decimal(read_1302(0x89)); nian=BCD_Decimal(read_1302(0x8d)); week=BCD_Decimal(read_1302(0x8b)); //显示温度、秒、时、分数据: write_temp(12,flag);//显示温度,从第二行第12个字符后开始显示 write_sfm(8,miao);//秒,从第二行第8个字后开始显示(调用时分秒显示子函数) write_sfm(5,fen);//分,从第二行第5个字符后开始显示 write_sfm(2,shi);//小时,从第二行第2个字符后开始显示 //显示日、月、年数据: write_nyr(9,ri);//日期,从第二行第9个字符后开始显示 write_nyr(6,yue);//月份,从第二行第6个字符后开始显示 write_nyr(3,nian);//年,从第二行第3个字符后开始显示 write_week(week);}
你也没有联系方式,你留个邮箱?我给你发过去。
【摘要】判断计算机故障是维护的第一步;计算机维护靠的是正确有效的方法;对计算机硬件的日常清洁能够减少故障的发生率。计算机维护是一门技术,更是一门艺术。计算机维护技术是通过积累而成熟,通过分享而传播。希望通过本文,能对从事计算机维护的工作者或于计算机维护不熟悉的广大群众有所帮助,使大家少走维护上的弯路。【关键词】故障判断;维护方法;日常清洁如何保养和维护好一台计算机,最大限度地延长计算机的使用寿命,这是我们非常关心和经常面临的问题。在这篇文章中,我们向你介绍最基本的的计算机维护方法和应该注意的事项,让你的计算机常常保持在比较稳定的状态。一、维护计算机的第一步先不要忙着打开机箱,首先得观察观察主要包括:1.计算机周围的环境情况——计算机位置、电源、连接线、计算机外设、温度与湿度等。2.计算机表现出的故障现象、显示器显示的内容及其与正常情况下的异同。3.计算机内外的物理情况——灰尘是否过多、线路板和元器件的颜色状况、部件的形状有无变形、指示灯的显示状态等。4.计算机的软硬件配置——安装了哪些硬件,系统资源的使用情况;使用的是哪种操作系统,安装了哪些应用软件;硬件的设置驱动程序的版本等。二、根据观察到的现象判断故障产生原因判断工作可以包括以下几个方面:1.要先想好是什么,为什么和怎么办,即:故障是什么故障,为什么会产生这样的故障和应该如何处理。2.对于所观察到的现象,尽可能地先查阅网上类似故障处理方案,这可以免去很多不必要的弯路。3.在分析故障时,尽量根据自身已有的知识、经验来进行判断,但对于自己不太了解或根本不了解的,应当先向有经验的人寻求帮助,或在硬件论坛发帖提问。三、坚持“先软后硬”的原则即在整个维护判断的过程中,本着先判断是否为软件故障,在能正常开机的情况下可先重新安装操作系统,当确认软件环境正常时,如果故障不能消失,再从硬件方面着手检查。四、维护环境很重要要保证你的维护环境是绝对没有问题的,即电源接地是否正常,工作电压是否稳定,工作室的温度湿度控制等。五、对计算机故障要“先主后次”逐一排除在观察分析故障时,有时可能会遇到一台故障机不止一个故障,(比如:系统启动时会自动重启,重启后能进系统,进入系统后会有死机现象,显示屏又出现无规则波纹),此时应该先从主要的故障开始维护,当修复主要故障后再维护次要故障,很多情况下可能在主要故障问题解决后次要故障现象已不需要维护了。以下为计算机维护的方法及心得:(一)观察法观察,是维护判断过程中第一要法,它贯穿于整个维护过程中。观察不仅要认真,而且要全面。要观察的内容包括:1.周围的环境;2.硬件环境。包括接插头、座和槽等;3.软件环境;4.用户操作的习惯、过程。(二)最小系统法最小系统是指,从维护判断的角度能使计算机开机或运行的最基本的硬件和软件环境。最小系统有两种形式:硬件最小系统:由电源、主板和CPU组成。在这个系统中,没有任何信号线的连接,只有电源到主板的电源连接。在判断过程中是通过声音来判断这一核心组成部分是否可正常工作;软件最小系统:由电源、主板、CPU、内存、显示卡/显示器、键盘和硬盘组成。这个最小系统主要用来判断系统是否可完成正常的启动与运行。对于软件最小环境,就“软件”有以下几点要说明:1.保留着原先的软件环境,只是在分析判断时,根据需要进行隔离如卸载、屏蔽等)。保留原有的软件环境,主要是用来分析判断应用软件方面的问题。2.只有一个基本的操作系统环境(可能是卸载掉所有应用,或是重新安装一个干净的操作系统),然后根据分析判断的需要,加载需要的应用。需要使用一个干净的操作系统环境,是要判断系统问题、软件冲突或软、硬件间的冲突问题。3.在软件最小系统下,可根据需要添加或更改适当的硬件。比如:在判断启动故障时,由于硬盘不能启动,想检查一下能否从其它驱动器启动。这时,可在软件最小系统下加入一个软驱或干脆用软驱替换硬盘,来检查。又如:在判断音视频方面的故障时,应需要在软件最小系统中加入声卡;在判断网络问题时,就应在软件最小系统中加入网卡等。最小系统法,主要是要先判断在最基本的软、硬件环境中,系统是否可正常工作。如果不能正常工作,即可判定最基本的软、硬件部件有故障,从而起到故障隔离的作用。最小系统法与逐步添加法结合,能较快速地定位发生在其它板软件的故障,提高维护效率。(三)逐步添加/去除法1.逐步添加法,以最小系统为基础,每次只向系统添加一个部件/设备或软件,来检查故障现象是否消失或发生变化,以此来判断并定位故障部位。2.逐步去除法,正好与逐步添加法的操作相反。3.逐步添加/去除法一般要与替换法配合,才能较为准确地定位故障部位。(四)隔离法是将可能妨碍故障判断的硬件或软件屏蔽起来的一种判断方法。它也可用来将怀疑相互冲突的硬件、软件隔离开以判断故障是否发生变化的一种方法。上提到的软硬件屏蔽,对于软件来说,即是停止其运行,或者是卸载;对于硬件来说,是在设备管理器中,禁用、卸载其驱动,或干脆将硬件从系统中去除。(五)替换法替换法是用好的部件去代替可能有故障的部件,以判断故障现象是否消失的一种维护方法。好的部件可以是同型号的,也可能是不同型号的。替换的顺序一般为:1.根据故障的现象或第二部分中的故障类别,来考虑需要进行替换的部件或设备;2.按先简单后复杂的顺序进行替换。如:先内存、CPU,后主板,又如要判断打印故障时,可先考虑打印驱动是否有问题,再考虑打印机连线是否有故障,最后考虑打印机或并口是否有故障等;3.最先考查与怀疑有故障的部件相连接的连接线、信号线等,之后是替换怀疑有故障的部件,再后是替换供电部件,最后是与之相关的其它部件。4.从部件的故障率高低来考虑最先替换的部件。故障率高的部件先进行替换。(六)比较法比较法与替换法类似,即用好的部件与怀疑有故障的部件进行外观、配置、运行现象等方面的比较,也可在两台计算机间进行比较,以判断故障计算机在环境设置,硬件配置方面的不同,从而找出故障部位。(七)升降温法在上门服务过程中,升降温法由于工具的限制,其使用与维护间是不同的。在上门服务中的升温法,可在用户同意的情况下,设法降低计算机的通风能力,靠计算机自身的发热来升温;降温的方法有:1.一般选择环境温度较低的时段,如一清早或较晚的时间;2.使计算机停机12~24小时以上等方法实现;3.用电风扇对着故障机吹,以加快降温速度。(八)敲打法敲打法一般用在怀疑计算机中的某部件有接触不良的故障时,通过振动、适当的扭曲,甚或用橡胶锤敲打部件或设备的特定部件来使故障复现,从而判断故障部件的一种维护方法。计算机日常清洁的注意点:灰尘是计算机的杀手,日常生活中很多计算机故障是由于机器内灰尘较多引起的,这就要求我们在日常生活中多注意计算机的清洁除尘,防患于未燃。在进行除尘操作中,以下几个方面要特别注意:1.注意风道的清洁2.注意风扇的清洁。风扇的清洁过程中,最好在清除其灰尘后,能在风扇轴处,点一点儿钟表油,加强润滑。3.注意接插头、座、槽、板卡金手指部分的清洁。金手指的清洁,可以用橡皮擦拭金手指部分,或用酒精棉擦拭也可以。插头、座、槽的金属引脚上的氧化现象的去除:一是用酒精擦拭,一是用金属片(如小一字改锥)在金属引脚上轻轻刮擦。4.注意大规模集成电路、元器件等引脚处的清洁。清洁时,应用小毛刷或吸尘器等除掉灰尘,同时要观察引脚有无虚焊和潮湿的现象,元器件是否有变形、变色或漏液现象。5.注意使用的清洁工具。清洁用的工具,首先是防静电的。如清洁用的小毛刷,应使用天然材料制成的毛刷,禁用塑料毛刷。其次是如使用金属工具进行清洁时,必须切断电源,且对金属工具进行泄放静电的处理。用于清洁的工具包括:小毛刷、皮老虎、吸尘器、抹布、酒精(不可用来擦拭机箱、显示器等的塑料外壳)。6.对于比较潮湿的情况,应想办法使其干燥后再使用。可用的工具如电风扇、电吹风等,也可让其自然风干。7.液晶显示器的清洁:擦拭液晶显示器屏幕尽量不要使用酒精或其它化学溶剂,因为屏幕表面出厂时涂有一层保护膜,使用化学溶剂的话反而会造成损伤,所以建议用无尘布稍稍蘸一些清水擦拭。参考文献[1]王红明.计算机组装维护完全手册.中国铁道出版社,2005.[2]卓文.3天学会计算机维护.上海科学普及出版社,2006.[3]熊巧玲.计算机组装与维护技能实训.兵器工业出版社, 2005.[4]陈艳灵等.计算机故障自维护.科学出版社, 2004.[5]导向科技.计算机常见故障排除精讲1000例(第二版).人民邮电出版社,2006参考一下,需要写作专业指导的找我
不用写了,电子信息毕业就失业。不像人家修鞋的,还能一个月赚到1500块钱。
100元给你搞好
那个(电子商务评论)你可以尝试看下
平板显示技术现状与发展趋势分析 姓 班 学 名: 级: 号: 指导老师: 日 期: 2010.12.20~2010.12.25 1 摘 要:平板显示与 CRT 显示技术简介与对比,介绍平板显示 的主要技术类型以及主流产品。 分析中国平板显示市场现状以及发展 趋势,对该产业的发展提出具体建议。 关键词:平板显示;显像管技术;液晶显示技术;等离子显示技 关键词 术; 发展现状;前景。 An Analysis of the Current Situation and Development Trend of FPD Technology LIU gui-liang (Class 3,College major of Electronic Science and Technology,SCAU.) Abstract:Differents between the FPD and CRT technology.Introduce the main technology and mainstream products of FPD.Summary of the current stage and development trend of FPD.Some suggestion. Keyword: flat panel display; television picture tube technology; liquid-crystal display; plasma display panel; situation of development; future prospect. 目录 一.引言 …………………………………………………………3 …………………………………………3 二.平板显示技术概述 2.1.阴极射线管(CRT) …………………………………3 2.2.液晶显示器(LCD) …………………………………5 2.3.等离子显示器(PDP) ………………………………6 2.4.其他平板显示产品 四.中国平板行业前景 五.发展规划 六.结论 参考文献 …………………………………6 ……………………………7 三.中国平板电视行业的发展现状 …………………………………………7 ……………………………………………………8 …………………………………………………………9 …………………………………………………………9 一.引言 2 从 1999 年-2009 年,中国平板行业走过了不平凡的十年。十年来中国平板 电视行业经历了从无到有、从小到大、从弱到强的成长历程。在这波澜壮阔的发 展进程中,造就了一批行业明星,同时也倒下了一些辉煌一时的品牌。 10 年对于中国平板电视行业,是一段曲折崛起的峥嵘岁月。总结过去经验, 我们可以很清楚地看到自身优势与不足;立足现在,我们可以坦然地面对困惑与 问题,寻找突破之道;展望未来,我们期待中国的平板电视行业能突破瓶颈,取 得关键性进展。 本文立足于各种显示技术特点以及中国平板显示行业自身特点, 对此行业目 前的境况作出较为客观的分析。 二.平板显示技术概述平板显示(FPD)技术,顾名思义,就是采用平面屏幕显示的技术,它是相 对于传统阴极射线管作比较而言的一类显示技术,主要包括液晶显示(LCD)、 等离子显示 (PDP) 有机电致发光显示 、 (OLED) 表面传导电子发射显示 、 (SED) 等几大技术类型的相关产品。 平板显示器与传统的阴极射线管(CRT)相比,具有薄、轻、功耗小、辐射 低、没有闪烁、有利于人体健康等优点。下面将分类简单介绍几种主要显示技术 的主要原理。 2.1 阴极射线管(CRT) 阴极射线管的关键部件是连在荧光屏后部成为一体的电子枪。 电子枪发射出 一束经过图像信号调制的窄电子流,经过加速、聚焦、偏转后打在荧光屏的荧光 粉上使之发光。电子枪以一个相当快的速度发射电子流,同时偏转线圈控制电子 束方向,逐行在屏幕上扫过,达到显示图像的目的。CRT 显示图像是是不断连 续刷新着的,因此此类显示器看上去给眼睛一种“闪烁”的感觉。容易引起眼睛 疲劳损坏视力。 CRT 有黑白和彩色两种,黑白的显像管构造相对简单。图 1.为黑白显像管 的构造示意图。 3 图 1.阴极射线管 彩色显像管与黑白显像管的区别是前者有三个电子枪, 前端多一个布满微小 孔洞的 “荫罩” 以及荧光粉是红绿蓝三种原色排列的。 , 彩色显像管显示图像时, 三个电子枪发射出三束电子,在同一个荫罩小孔上通过,分别打在三种颜色的荧 光粉上,人眼看到的效果会自动把三种色光混合,组成一幅图像。如图 2. 图 2. 彩色显像原理 4 荫罩的作用就是保证三个电子共同穿过同一个荫罩小孔,以激发荧光粉,使 之发出红、绿、蓝三色光。不同形状的荫罩有不同的透光率、对比度、分辨率等 参数。制造成本也不同。有一种栅条状的荫罩其透过率达到 95%。如图 3. 图 3. 孔状荫罩(左上)、沟槽状荫罩(右上)以及栅条状荫罩(下) 2.2 液晶显示器(LCD) 液晶显示器的关键物质是液晶材料,此类显示器也因此而得名。液晶材料具 有一个特别的特性:当它被加上适当电压时,液晶材料的分子会发生偏转,引起 其透射率变化,从而由“遮光”状态变换到“通光”状态,达到显示的目的。如 图: 5 图 1.液晶显示器件构成示意图 按照不同的分类方式,液晶显示有多种类型,根据所采用的液晶材料不同而 异:分别有扭曲向列型(TN)等多种,并不一一列举。根据显示像素构成不同, 液晶显示器分为无源矩阵液晶显示器(PM-LCD)与有源矩阵液晶显示器 (AM-LCD) 较早期的扭曲向列型 。 (TN) 液晶显示器与超扭曲向列型 (STN) 液晶显示器均同属于无源矩阵液晶显示器。新一代的薄膜晶体管液晶显示 器(TFT-LCD)等属于有源矩阵液晶显示器。作为 STN 的换代产品具有响应 速度快、不产生闪烁等优点。 AM-LCD 与 PM-LCD 的差别在于前者每象素 加有开关器件,可克服交叉干扰,可得到高对比度和高分辨率显示。 2.3 等离子显示器(PDP) 等离子显示器是利用两块玻璃基板之间的惰性气体电子放电,产生紫 外线激发所涂布的红、绿、蓝荧光粉,呈现各种彩色光点的画面。PDP 适 合应用于中大型尺寸(约 40-70 寸)显示器。等离子体显示器具有阴极射 线管的优点,但其超薄体积与重量远优越于传统大尺寸 CRT 电视,在高解 析度、不受磁场影响、视角广及主动发光等胜于 TFT-LCD 的特点,图像具 有丰富的层次。缺点是功率大,比较耗电。 2.4 其他平板显示产品 除了 LCD、PDP 外,还有应用于各种智能家电、汽车仪表、数码电子 产品显示屏、投影设备以及电子纸等等多种显示技术,都属于平板产品的 范畴。 6 三.中国平板电视行业的发展现状从行业的技术与产品成熟程度来看,虽然经过不断地改进,平板电视的画质 和产品性能都已经达到比较稳定和舒适的水平,特别是 LED 背光模组的大规模 应用,确实带动了液晶电视的响应速度和画面质量取得较大进步。但是与国外起 步早的大型企业相比,中国平板行业还有较大差距,各种自主知识产权的关键技 术并不多。这也是中国平板行业脚步沉重的一大因素。 从市场形态来看,2009 年,平板电视的零售量占比达到 80%,零售额占比 超过 95%, 平板电视在市场消费形态上已经为彩电行业的绝对主流, 这说明平板 电视对 CRT 电视的市场替代已经基本实现。 从消费需求看, 平板电视已经逐渐成为老百姓购置新家电的首选, 少量 CRT 电视的购买者主要集中在流动人口、低保户家庭和边远乡村。随着平板电视的价 格进一步下降,这一部分 CRT 人群还会快速转化; 从厂家的产品策略来看,一线品牌已经停产 CRT 电视,二线品牌还在少量 维持,但是从总体趋势看,都已经把 CRT 作为补充和辅助,预计 2010 年各厂家 的 CRT 产品线将基本上处于清理库存状态; 从产业链来看,平板上下游相关的面板、模组、玻璃、IC 和化学材料等企 业都与日韩企业有较大差距。 中国平板若要真正立足世界市场一方,整个产业链势必要经过大幅度升级。 以目前的状况观察,此路虽远但并非遥不可及。我国政府在十一五的后期已经把 显示产业的复兴上升到国家意志,并通过《电子信息产业振兴规划》和其他的科 技发展规划,加大了对平板显示产业的扶持力度,赋予平板显示产业链建设以重 要任务和使命;预计在十二五规划中,显示产业的重要性和产业地位将会更加突 出。作为平板显示产业的重要支撑和重要支柱,平板电视行业将会从以上扶持政 策中得到最直接的支持。各地方政府和社会投资的持续跟进,将为平板电视产业 链的建设和为发展提供强大的资金来源、技术合作支持和人才培养支持。所以可 以推断中国平板电视行业在未来十年将迎来前所未有的宽松政策环境。 四.中国平板行业前景总体来说,中国平板在未来的十多年将会是机遇与挑战并存的局面。 旺盛的市场需求为中国平板行业提供稳定的成长空间。人民生活水平提高、 新增家庭、 旧彩电自然淘汰、 家电下乡政策城市化进程、 房地产发展、 商用市场、 国际市场需要等等,都将成为中国平板行业稳步快速发展的契机。 7 而起步晚,设备旧,世代早等等,是限制中国平板发展的绊脚石。中国的平 板行业比起日韩等普遍晚 2-3 年,世代线也较之落后。还要避免产业链建成即落 后的风险、现有品牌格局被颠覆的风险、对行业方向判断错误和反应迟钝的风险 等等,都将影响中国平板行业前行的脚步。 五.发展规划中国平板行业过去凭借着一定的优势,已经取得较为瞩目的成就。但是未 来是否能继续保持,就不但是要看行业的机会,更要看企业能否抓住机遇,规避 风险,还要看政府的支持和引导是否得力而有效。关键的几点是: 1、需要借鉴韩国和台湾地区在平板显示产业的发展经验 2、必须推动行业的核心技术研发 3、在下一代显示技术上的及早布局 4、借助行业标准力量规范和引导行业发展 5、建立和完善资本进出机制,加强行业融资渠道建设 从整个行业层面上,需要有正确的战略布局: 要推动行业整体的联合和协作,解决一些单个企业无法解决的行业共性问 题;比如由中国电子视像行业协会牵头成立的中彩联,积极主动的应对国外专利 公司的谈判,大幅度降低了企业的专利费用标准,取得了非常重大的专利授权突 破; 要通过集体协作,通过争取国家主管政府部门的支持,在行业标准建设、 行业准入门槛和行业游戏规则的制定等方面,进行持续努力和推动,为中国彩电 行业的长远发展和整体竞争力的提升创造条件。比如在产品的接口标准规范、尺 寸规范、售后服务规范等方面,积极行动起来,为推动行业的健康和有序发展创 造条件。 为了应对下一代显示技术核心技术的专利限制,我们可以推动行业骨干企 业成立联合技术研发开发小组,共同进行前沿技术的战略性投入,这样可以使行 业花最小的代价获得最高程度的收益。 从企业层面看,为了企业的长远发展,提前做好战略布局是十分有必要的。 要解决核心资源的站队问题。在平板时代,没有核心上游面板资源供应的 支持,就意味着要流血和被其他竞争对手伤害。但是这个资源的来源,究竟是自 己建还是选择与现有主力面板供应商合作,是和其中主要的少数几家合作,还是 货比三家全面合作,这都是值得深思熟虑的问题。由于在 2010 年-2011 年期间 全球平板显示产业还会不定期出现面板资源相对紧张的局面, 因此要避免断货和 供应不及时的问题,就首先要考虑好如何站队的问题 8 要找准自身的行业定位,在技术、资源和产品的持续建设上,梳理出适合 自身特征的阶段性发展目标。 要时刻保持清醒,做好企业应对彩电行业转型和升级的具体战略规划。 六.结论总而言之,一个行业的崛起离不开核心技术和扶持力量。若具备了这两方面 的有利因素,中国平板显示技术行业迅速跟上世界领先脚步,将会是时间问题而 已。 参考文献:《平板显示技术》 《液晶显示技术》 《等离子体技术及应用》 应根裕等 毛学军 赵青, 刘述章, 童洪辉 北京人民邮电出版社,2002 北京电子工业出版社,2008 北京国防工业出版社,2009 9
手机LCD背光驱动电荷泵的选择手机、手持无绳电话、对讲机之类的手持通信产品都是使用电池作为电源的,因此管理好电池电力的使用,可以延长电池的寿命,提高使用效率,用科技的方法挖掘电池的潜力,可以获得更经济的利益。手机的LCD彩屏需要高亮度的白光LED去电亮,白光LED需要供给稳定的5V工作电压或恒定的电流,如果工作电压下降,会影响白光LED的亮度,LCD彩屏的显示效果就不理想、颜色不鲜明。白光LED的电源不能直接到电池上,因为电池一开始使用,电压就递减,影响使用效果。所以在电路设计上需要使用一个升压型的电荷泵,把递降的电压在一段较长的时间内稳定在5V,充分挖掘电池的潜力,提高使用经济效益。 1) 电荷泵的种类• 开关式调整器升压泵 (图1.a)三个电路的工作过程均为:首先贮存能量,然后以受控方式释放能量,以获得所需的输出电压。开关式调整器升压泵采用电感器来贮存能量,而电荷泵采用电容器。1) 电荷泵的工作原理电容式电荷泵通过开关阵列和振荡器、逻辑电路、比较控制器实现电压提升,采用电容器来贮存能量。电荷泵是无须电感的,但需要外部电容器。工作于较高的频率,因此可使用小型陶瓷电容(1μF),使空间占用最小,使用成本低。电荷泵仅用外部电容即可提供±2倍的输出电压。其损耗主要来自电容器的ESR(等效串联电阻)和内部开关晶体管的RDS(ON)。电荷泵转换器不使用电感,因此其辐射EMI可以忽略。输入端噪声可用一只小型电容滤除。它 1) 电荷泵选用要点作为一个设计工程师选用电荷泵时必然会考虑以下几个要素:• 转换效率要高2) 几种不同的电荷泵1) AAT3110电荷泵的性能 AAT3110微功率升压电荷泵是美国研诺逻辑科技有限公司(AATI)开发的微功率开关电容器电压提升转换器,它可以提供一个稳定的5V输出,应用时没有其它升压泵运作所必需的电感器,周边只使用三个小的陶瓷电容器,它能输出100mA电流。它可以驱动4-5个白色或蓝色LED,以满足彩色LCD背光的应用。AAT3110主要技术参数:SHDN=1uAAAT3111也是类似的微功率升压电荷泵,它的工作电压是1.8V-3.3V/3.6V,输出100mA稳定的3.3V或3.6V,最适合于使用二个电池作为电源的产品。电荷泵适用于手机、PDA、E-Book、平板显示器、智能读卡机、USB5V稳压电源、GSM手机的SIM接口电源。手机LCD背光驱动电荷泵的选择一文由第一范文网搜集整理,版权归作者所有,转载请注明出处!