您好,欢迎访问三七文档
宜宾职业技术学院《显示与按键》项目报告班级:电子11201班组员:吴意201211209毛俊秀201214621曾万兵201215437陈鼎201210602二〇一三年十月二十三日目录1、查找电路原理图………………………………………2、制作电路原理图……………………………………….3、绘制PCB图…………………………………………….4、原件的介绍………………………………………………5、实物的焊接过程………………………………………….6、烧录程序……………………………………………………7、软件…………………………………………………………...8、课堂总结………………………………………………………序言单片机技术日趋成熟的今天,其灵活的硬件电路的设计和软件的设计,让单片机得到了广泛的应用,几乎是从小的电子产品到达的工业控制,单片机都起到了举足轻重的作用。单片机在人们的生活中得到广泛的应用。本文介绍了基于单片机的按键和显示,详细的讨论了它从软件上实现的过程,以及硬件接口的原理及其实现,根据输出来判断按下的是什么键,还有按键的扫描过程,及其扫描的程序。显示我们主要是以1602和12864来实现显示,并使用软件来下载,下载的程序来控制1602上的显示。一、查找电路原理图本次的设计的目标为单片的按键和显示,主要是采用AT89C52单片机作为核心,用矩阵键盘电路和显示等模块构成,分别对按键信息和显示电路以及软件、硬件各个部分进行控制:这个设计主要采用了C语言编程来实现对单片机的控制。实际运作单片机会将检测到的信号转换成数字,显示在1602或者是12864上。为此我们就需要去查找资料,了解按键和显示的原理以及原理图。二、制作电路原理图经过我们自己在网上查找图片,了解电路的原理然后再绘制。在绘制之前我们要理解并且找出引脚的了解方法,正确的会出原理图。绘制出以下原理图:三、绘制PCB图完成了电路的原理图后,我们要绘制PCB图。在绘制PCB的过程中出现了很多的问题,我们也在这上面花费了很多的时间,并且完成的效果并不佳。有点改进的地方也很多,我们应该注意。以下就是我们完成的PCB图:四、原件的介绍1602显示的资料液晶显示器各种图形的显示原理线段的显示:点阵图形式液晶由M×N个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共16×8=128个点组成,屏上64×16个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。例如屏的第一行的亮暗由RAM区的000H——00FH的16字节的内容决定,当(000H)=FFH时,则屏幕的左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,则屏幕的右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)=00H,……(00EH)=00H,(00FH)=00H时,则在屏幕的顶部显示一条由8段亮线和8条暗线组成的虚线。这就是LCD显示的基本原理。字符的显示用LCD显示一个字符时比较复杂,因为一个字符由6×8或8×8点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成某个字符。但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。1602字符型LCD简介1·字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。一般1602字符型液晶显示器实物如图2·1602LCD的基本参数及引脚功能3.LCD1602主要技术参数:显示容量:16×2个字符芯片工作电压:4.5—5.5V工作电流:2.0mA(5.0V)模块最佳工作电压:5.0V字符尺寸:2.95×4.35(W×H)mm4.引脚功能说明1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极表1引脚接口说明表第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第7~14脚:D0~D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。5.与单片机的连接如下图所示:12864资料模块的接口引脚功能五、实物焊接过程在完成元件的检测和介绍后,我们要对电路进行焊接,以下是我们焊接过程的图片:焊接好实物要对照原理图连接导线,以下是连接过程:六、烧录程序完成实物后就要进行软件的操作,要把我们的软件通过烧录软件、电源和下载线进行下载把程序烧录在单片机内。七、软件1602的程序:#includereg51.h#includeintrins.hsbitrs=P2^0;sbitrw=P2^1;sbitep=P2^2;unsignedcharcodedis1[]=1234567890abcdef;unsignedcharcodedis2[]=ABCDEFGHIJKLMNop;voiddelay(unsignedcharms){unsignedchari;while(ms--){for(i=0;i250;i++){_nop_();_nop_();_nop_();_nop_();}}}bitlcd_bz(){bitresult;rs=0;rw=1;ep=1;_nop_();_nop_();_nop_();_nop_();result=(bit)(P0&0x80);ep=0;returnresult;}voidlcd_wcmd(unsignedcharcmd){while(lcd_bz());//判断LCD是否忙碌rs=0;rw=0;ep=0;_nop_();_nop_();P0=cmd;_nop_();_nop_();_nop_();_nop_();ep=1;_nop_();_nop_();_nop_();_nop_();ep=0;}voidlcd_pos(unsignedcharpos){lcd_wcmd(pos|0x80);}voidlcd_wdat(unsignedchardat){while(lcd_bz());//判断LCD是否忙碌rs=1;rw=0;ep=0;P0=dat;_nop_();_nop_();_nop_();_nop_();ep=1;_nop_();_nop_();_nop_();_nop_();ep=0;}voidlcd_init()//初始化{lcd_wcmd(0x38);//8位数据,双列显示,5*7的字形delay(1);lcd_wcmd(0x0c);//开启显示屏,关光标,光标不闪烁delay(1);lcd_wcmd(0x06);//显示地址,递增的方式,写一个数据后,向后移一位delay(1);lcd_wcmd(0x01);//清屏delay(1);}voidmain(void){unsignedchari;lcd_init();//初始化LCDdelay(25);lcd_pos(0x00);//设置显示位置i=0;while(dis1[i]!='\0'){lcd_wdat(dis1[i]);//显示字符i++;delay(25);}lcd_pos(0x38);//设置显示位置i=0;while(dis2[i]!='\0'){lcd_wdat(dis2[i]);//显示字符i++;delay(25);}}12864程序#includereg52.h#includeintrins.hsbitlcd_sclk=P2^2;/*接口定义:lcd_sclk就是LCD的sclk*/sbitlcd_sid=P2^1;/*接口定义:lcd_sid就是LCD的sid*/sbitlcd_rs=P2^0;/*接口定义:lcd_rs就是LCD的rs*/sbitlcd_reset=P1^0;/*接口定义:lcd_reset就是LCD的reset*/sbitlcd_cs1=P1^1;/*接口定义:lcd_cs1就是LCD的cs1*/sbitRom_IN=P1^2;/*字库IC接口定义:Rom_IN就是字库IC的SI*/sbitRom_OUT=P1^3;/*字库IC接口定义:Rom_OUT就是字库IC的SO*/sbitRom_SCK=P1^4;/*字库IC接口定义:Rom_SCK就是字库IC的SCK*/sbitRom_CS=P1^5;/*字库IC接口定义Rom_CS就是字库IC的CS#*/#defineucharunsignedchar#defineuintunsignedint#defineulongunsignedlongucharcodebmp1[];ucharcodebmp2[];ucharcodejiong1[]={/*--文字:囧--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/0x00,0xFE,0x82,0x42,0xA2,0x9E,0x8A,0x82,0x86,0x8A,0xB2,0x62,0x02,0xFE,0x00,0x00,0x00,0x7F,0x40,0x40,0x7F,0x40,0x40,0x40,0x40,0x40,0x7F,0x40,0x40,0x7F,0x00,0x00};ucharcodelei1[]={/*--文字:畾--*//*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/0x80,0x80,0x80,0xBF,0xA5,0xA5,0xA5,0x3F,0xA5,0xA5,0xA5,0xBF,0x80,0x80,0x80,0x00,0x7F,0x24,0x24,0x3F,0x24,0x24,0x7F,0x00,0x7F,0x24,0x24,0x3F,0x24,0x24,0x7F,0x00};/*写指令到LCD模块*/voidtransfer_command_lcd(intdata1){chari;lcd_rs=0;for(i=0;i8;i++){lcd_sclk=0;if(data1&0x80)lcd_sid=1;elselcd_sid=0;lcd_sclk=1;data1=data1=1;}}/*写数据到LCD模块*/voidtransfer_data_lcd(intdata1){chari;lcd_rs=1;for(i=0;i8;i++){lcd_sclk=0;if(data1&0x80)lcd_sid=1;elselcd_sid=0;lcd_sclk=1;data1=data1=1;}}/*延时*/voiddelay(intn_ms){intj,k;for(j=0;jn_ms;j++)for(k=0;k1100;k++);}unsignedcharKey_Scan(void)//键盘扫描函数如果有键按下返回键ASC值若无返回0{P3=0XF0;if(P3!=0XF0)//先确定是否有键按下{//--------------1--------------
本文标题:显示项目
链接地址:https://www.777doc.com/doc-776719 .html