实验一LCD实验_第1页
实验一LCD实验_第2页
实验一LCD实验_第3页
实验一LCD实验_第4页
实验一LCD实验_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、电子信息专业实验报告 课程:数字信息技术专业实验 题目:LCD实验 学生:茹滋岩(09) 张书恺(07) 蒋正东() 邓童虎() 组号:5点阵型12864液晶的使用【实验目的】熟悉点阵型128*64液晶显示器的驱动电路及使用方法。掌握用AT89S52来控制液晶显示器的方法掌握用扫描法识别矩阵按键的方法进一步熟悉EDA实验平台【实验器材】EDA实验箱、PC机、DB25-ISP下载线、USB转换线、USB-BLASTER编程器等软件:Quatus II 、Keil uVision2、ISPlay等 。【实验原理】单片机简介在一片集成电路芯片上集成微处理器、存储器、I/O接口电路,从而构成了单芯片微

2、型计算机,即单片机。Intel公司首先推出了MCS-51系列单片机:集成 8位CPU、4K字节ROM、128字节RAM、4个8位并口、1个全双工串行口、2个16位定时/计数器。寻址范围64K,并有控制功能较强的布尔处理。80C51是MCS-51系列中的一个典型品种;其它厂商以8051为基核开发出的CMOS工艺单片机产品统称为80C51系列。当前常用的80C51系列单片机主要产品厂商有: Intel、ATMEL、Philips、华邦、Dallas 、STC、Siemens(Infineon)等。实验板上使用的AT89S52是与MCS-51单片机产品兼容的产品,它具有8K字节在系统可编程Flash

3、存储器、 1000次擦写周期、 全静态操作、0Hz33Hz 、 三级加密程序存储器 、 32个可编程I/O口线 、三个16位定时器/计数器、八个中断源 、全双工UART串行通道、 低功耗空闲和掉电模式 、掉电后中断可唤醒 、看门狗定时器等功能 。各管脚功能简介如下:P0 口:P0口是一个8位漏极开路的双向I/O口。 需要指出的是,在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。 P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个TTL 逻辑电平。 引脚号第二功能:P1.0 T2(定时器/计数器T2

4、的外部计数输入),时钟输出 P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制) P1.5 MOSI(在系统编程用) P1.6 MISO(在系统编程用) P1.7 SCK(在系统编程用) P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TTL 逻辑电平 P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p2 输出缓冲器能驱动4 个 TTL 逻辑电平。端口引脚 第二功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 INTO(外中断0)P3.3 INT1(外中断1)P3.4 TO(定时/计数器0)P

5、3.5 T1(定时/计数器1)P3.6 WR(外部数据存储器写选通)P3.7 RD(外部数据存储器读选通)RST复位输入(高电平复位)ALE/PROG当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。PSEN程序储存允许(PSEN)EA/VPP外部访问允许,访问外部程序存储器,EA端保持低电平。EA端为高电平,执行内部程序存储器的指令。液晶简介液晶作为显示器件广泛应用于各种电子仪器、便携设备上,点阵液晶可以方便的显示各种字符、图片。WGM12864H液晶显示模块采用三星公司的KS0107液晶控制器,能够显示128*64像素图形或4行16*16中文字符。

6、一 系统硬件电路1. WGM12864H液晶模块2. WGM12864H操作指令(1) 显示开关控制。R/WD/IDB7DB6DB5DB4DB3DB2DB1DB0000011111D此命令用于控制液晶显示器开关。D=1:显示开。显示器可以进行各种显示操作。D=0:显示关。不能对显示器进行各种显示操作。开显示时,液晶模块DDRAM的内容显示在LCD屏幕上,控制显示器的开关并不影响DDRAMA中的数据和内部状态。(2) 设置显示起始行。R/WD/IDB7DB6DB5DB4DB3DB2DB1DB00011A5A4A3A2A1A0WGM12864H液晶模块共有64行,由Z地址计数器进行控制。Z地址计数

7、器是一个六位计数器A5:A0,此计数器具有循环计数功能,它是用于行扫描同步,当一行扫描完成时此计数器自动加一,指向下一行扫描数据,RST复位后Z计数器为0。起始行可以是64行中的任一行,如设置A5:A0为62,则起始行于DDRAM中的行对应关系如下:DDRAM的行626301236061显示的行1234566364此命令常用于滚动显示文本/图像信息。(3) 设置页地址。R/WD/IDB7DB6DB5DB4DB3DB2DB1DB00010111A2A1A0WGM12864H液晶显示屏的128*64点阵与DDRAM的128*64位显存相对应,如下图所示:X地址计数器为DDRAM的页指针。所谓页地址

8、就是DDRAM的行地址,8行为页。WGM液晶显示器共64行,即8页,A2:A0表示07页。读写数据对页地址没有影响,页地址由本指令或RST信号改变,复位后页地址为0。(4) 设置列地址。R/WD/IDB7DB6DB5DB4DB3DB2DB1DB00001A5A4A3A2A1A0Y地址计数器为DDRAM列指针。DDRAM共128列,分为左右两屏,每屏列地址均编址为0-63。此指令将A5:A0送入Y地址计数器,作为DDRAM的Y地址指针。在对DDRAMA进行读写操作后,Y地址指针自动加一,指向下一个DDRAM单元。当Y地址计数器计数到63后,自动翻转为当前屏的0列。(5) 写显示数据。R/WD/I

9、DB7DB6DB5DB4DB3DB2DB1DB001D7D6D5D4D3D2D1D0D7-D0为显示数据,此指令把D7-D0写入相应DDRAM单元,Y地址指针自动加一。(6) 读状态。R/WD/IDB7DB6DB5DB4DB3DB2DB1DB010BF0ON/OFFRST0000当R/W=1、D/I=0、E=1时,状态分别输出到数据总线DB7-DB0相应位置。BF:BF标志提供内部工作情况。BF=1表示模块在进行内部操作,此时模块不接受外部指令和数据。BF=0时模块为准备状态,随时可接受外部指令和数据。ON/OFF:表示显示器开关触发器状态。RST:RST=1表示内部正在进行初始化,此时模块不

10、接受外部指令和数据。(7) 读显示数据。R/WD/IDB7DB6DB5DB4DB3DB2DB1DB011D7D6D5D4D3D2D1D0当R/W=1、D/I=1、E=1时,此时DDRAM相应单元数据被输出到数据总线DB7-DB0相应位置,Y地址指针自动加一。使用此12864液晶时,数据总线DB7-DB0分别接单片机的Px.7-Px.0,R/W、D/I、CS1、CS2、RST分别接单片机其它五个IO口进行控制。液晶其它引脚按引脚功能图上接线即可。3. 4*4矩阵键盘模块键盘电路图如下:这是一种简单的非编码键盘,线路简单,识别可靠。4条行线、4条列线分别接单片机IO口,列线上加上拉电阻,提高抗干扰

11、性。在行列交叉点接入16个按键。由于按键数量较多,没有给每一个按键单独加防抖电路,防抖功能依靠软件上延时实现。键盘工作原理:先给行线、列线赋1,然后给某一个列线赋0,检查行线,若某一行线为0,则表示有按键被按下,此时进行约10ms的延时,再次判断是否有按键被按下。确认有按键被按下后,根据赋0的列线和检测到为0的行线即可唯一确定被按下的是哪个键。然后所有线赋1,再给另外一列赋0,以后的工作同上。这样逐列扫描键盘即可。软件中给这每个键赋不同的值,即可识别出16个按键。如果扫描时间足够短,使用这种逐列扫描的方式可以有效识别所按按键。4. 单片机的基本工作电路单片机的基本工作电路同以上几例,在此不再赘

12、述。二系统主要程序设计1. 4*4行列式16键键盘扫描程序流程图开始第一列置0行列全赋1读入IO口值查表对照求出键值返回键值N第二列置0行列全赋1读入IO口值查表对照求出键值返回键值N第三列置0行列全赋1读入IO口值查表对照求出键值返回键值N读入IO口值查表对照求出键值返回键值N子程序返回Y行线全为1?行列全赋1Y第四列置0Y行线全为1?Y行线全为1?行线全为1?2. 主程序流程图开始初始化显示欢迎屏幕按键扫描输入数字返回按键值显示按键值 三 完整源程序参考程序如下:/*/ #include #define uint unsigned int #define uchar unsigned ch

13、ar #define ulong unsigned long #define lcdbus P0sbit lcddi=P10;sbit lcdrw=P11;sbit lcde=P14;sbit lcdcs1=P12;sbit lcdcs2=P13;sbit lcdbf=P07;/*/ uchar code title= /*- 文字: -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

14、0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*- 文字: 请 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x40,0x42,0x4C,0xC4,0x00,0x22,0xAA,0xAA,0xAA,0xBF,0xAA,0xAA,0xAA,0x22,0x20,0x00,0x00,0x00,0x00,0x7F,0x20,0x10,0xFF,0x0A,0x0A,0x0A,0x4A,0x8A,0x7F,0x00,0x00,0x00,/*- 文字: 输 -*/*- 宋体12; 此字体下对应

15、的点阵为:宽x高=16x16 -*/0x44,0xF4,0x4F,0xE4,0x44,0x64,0x90,0x98,0x94,0x93,0x14,0x98,0x08,0xD0,0x10,0x00,0x04,0x04,0x04,0xFF,0x02,0x02,0xFF,0x4A,0x8A,0x7F,0x00,0x3F,0x80,0xFF,0x00,0x00,/*- 文字: 入 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x00,0x00,0x00,0x00,0x01,0x83,0x76,0x18,0x60,0x80,0x00,0x00,0x00,0x00,0x00,0

16、x00,0x40,0x20,0x10,0x08,0x06,0x01,0x00,0x00,0x00,0x00,0x03,0x04,0x18,0x30,0x10,0x00,/*- 文字: 数 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x10,0x92,0x54,0x38,0xFF,0x38,0x54,0x52,0x80,0xF0,0x1F,0x12,0x10,0xF0,0x10,0x00,0x42,0x42,0x2A,0x2E,0x13,0x1A,0x26,0x02,0x40,0x20,0x13,0x0C,0x33,0x60,0x20,0x00,/*- 文字: 据

17、-*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x08,0x08,0x08,0xFF,0x88,0x40,0xFE,0x92,0x92,0x92,0xF2,0x92,0x92,0x9E,0x80,0x00,0x02,0x42,0x81,0x7F,0x40,0x30,0x0F,0xFC,0x44,0x44,0x47,0x44,0x44,0xFC,0x00,0x00,/*- 文字: : -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0

18、0,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*- 文字: -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/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

19、,0x00, ;uchar code key= /*- 文字: 0 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,/*- 文字: 1 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,/*- 文字: 2 -*/*- 宋体12; 此字体下

20、对应的点阵为:宽x高=8x16 -*/0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,/*- 文字: 3 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,/*- 文字: 4 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0x00,0xC0,0x20,0x10,0xF8,0

21、x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,/*- 文字: 5 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,/*- 文字: 6 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,/

22、*- 文字: 7 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,/*- 文字: 8 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,/*- 文字: 9 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0

23、xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,/*- 文字: . -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,/*- 文字: + -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0

24、x1F,0x01,0x01,0x01,0x00,/*- 文字: - -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,/*- 文字: * -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00,0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00,/*- 文字: / -*/*- 宋体12; 此字体下

25、对应的点阵为:宽x高=8x16 -*/0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00,/*- 文字: */*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ;/*/ void delay10ms() uchar i,j; for(i=50;i0;i-) for(j=250;j0;j-); /*/ void de

26、layus(uint n)while(n-);/*/ uchar scankey() /P2口(p2.0p2.3列p2.4p2.7行) 列接上拉电阻 uchar key,rk; uchar bz=1; /当有按键按下后,此标志置零,以此确定有按键被按下,并送显示。lcdrw=1;lcde=1;/将LCD使能端置一,防止对按键扫描干扰,LCDRW端置一,防止对已显示数据干扰。doP2=0xff; P2_0=0; key=P2&0xF0; if(key!=0xF0) delay10ms(); key=P2&0xF0; if(key!=0xF0) switch(key) case 0xe0:key=

27、0;break; case 0xd0:key=4;break; case 0xb0:key=8;break; case 0x70:key=12;break; bz=0;rk=key;key=key&0xF0; while(key!=0xF0) key=P2; key=key&0xF0; delayus(800); P2=0xff; P2_1=0; key=P2; key=key&0xf0; if(key!=0xf0) delay10ms(); key=P2&0xf0; if(key!=0xf0) switch(key) case 0xe0:key=1;break; case 0xd0:key=

28、5;break; case 0xb0:key=9;break; case 0x70:key=13;break; bz=0;rk=key;key=key&0xf0; while(key!=0xf0) key=P2; key=key&0xf0; delayus(800); P2=0xff; P2_2=0;key=P2; key=key&0xf0; if(key!=0xf0) delay10ms(); key=P2&0xf0; if(key!=0xf0) switch(key) case 0xe0:key=2 ;break; case 0xd0:key=6 ;break; case 0xb0:key

29、=10;break; case 0x70:key=14;break; bz=0;rk=key;key=key&0xf0; while(key!=0xf0) key=P2; key=key&0xf0; delayus(800); P2=0xff; P2_3=0;key=P2; key=key&0xf0; if(key!=0xf0) delay10ms(); key=P2&0xf0; if(key!=0xf0) switch(key) case 0xe0:key=3;break; case 0xd0:key=7;break; case 0xb0:key=11;break; case 0x70:ke

30、y=15;break; bz=0;rk=key;key=key&0xf0; while(key!=0xf0) key=P2; key=key&0xf0; delayus(800); while(bz=1); bz=1; return (rk) ; /*/ void writeinst(uchar x)/写指令lcdrw=0;lcddi=0;lcde=1;/P2_3=1;lcdbus=x;delayus(5);lcde=0;/*/ void writedata(uchar x) /写送显数据 lcdrw=0;lcddi=1;lcde=1;/P2_3=1;lcdbus=x;delayus(5);l

31、cde=0;/*/ void clr() /清屏 uchar x=0,y=0;lcdcs1=1;lcdcs2=1;for(x=0;x8;x+)writeinst(0xb8+x);writeinst(0x40);for(y=0;y64;y+) writedata(0x00);/*/ void sethang(uchar x)/设置显示起始行。lcdcs1=1;lcdcs2=1;writeinst(0xc0+x%64);/*/ void LCDInit()clr();writeinst(0xb8); /定位到第0页 writeinst(0x40); /定位到第0列 writeinst(0x3f);

32、/开显示 /*/ void display16_16(uchar x,uchar y,uchar code * buff) /在第X 页第Y列 显示16*16字符 uchar j;if(y=64)lcdcs2=1;lcdcs1=0;writeinst(0xb8+x);writeinst(0x40+y%64);for(j=0;j16;j+) writedata(*(buff+j);writeinst(0xb9+x);writeinst(0x40+y%64);for(j=16;j32;j+) writedata(*(buff+j);/*/ void display8_16(uchar x,ucha

33、r y,uchar code * buff) /在第X 页第Y列 显示8*16字符 uchar j;if(y=64)lcdcs1=0;lcdcs2=1;writeinst(0xb8+x);writeinst(0x40+y%64);for(j=0;j8;j+) writedata(*(buff+j);writeinst(0xb9+x);writeinst(0x40+y%64);for(j=8;j16;j+) writedata(*(buff+j);/*/ void main()uchar i=0,j=0,k=0; EA=0;LCDInit();sethang(0);/设置显示其实行为各页第一行。

34、P2=0XFF;/将FPGA中与门的另一路输入置1,防止对LCD使能端干扰for(i=0;i8;i+)display16_16(0,i*16,title+i*32);i=0;j=0;while(1)for(i=2;i8;i+=2)/页控制for(j=0;j16;j+=1)/列控制 k=scankey(); if(k=15) j-=2;sethang(0);P2=0XFF;display8_16(i,(j+1)*8,key+k*16); elsesethang(0);P2=0XFF;display8_16(i,j*8,key+k*16);if(k=15)i-=2;delayus(50000);L

35、CDInit();sethang(0);for(i=0;i8;i+)display16_16(0,i*16,title+i*32); /*/ 【实验内容】一 电路连线提示本实验中使用FPGA连接液晶、键盘、单片机,FPGA的内容本实验不做要求,在此简要阐明本实验中所用数据线及其在FPGA内部的联系。FPGA内部联系如图:各引脚对应关系如下图:从图中可看出,LCD的使能端与键盘第四列公共一个物理线路“KEYS0/LCD”,所以在FPGA内部用一个与门联系两个输入,两个输入分时控制这个公共线路。FPGA中其他线路可以近似看做从“input”到“output”的单向“导线”。二 实验步骤:1. FP

36、GA板插入底板,通过USB-blaster连接电脑。AT89S52单片机的ISP下载线连接电脑并口,并与底板连接。安装FPGA实验板时注意方向,使FPGA板子的开关在做左手边。注意引脚都要插入FPGA板子下面的排孔里,不要错位。2. 打开EDA底板电源。3. 将“桌面EDA实验-51部分-LCD实验底板驱动”路径下 “LCD12864.qpf”文件烧入FPGA中。具体步骤如下:a) 用USB转换线将 USB BLASTER 与PC机相连,USB BLASTER的另一端连接到FPGA核心板右下角J12口。如果连接正常,USB BLASTER绿灯点亮。b) 双击“桌面EDA实验-51部分-LCD实

37、验底板驱动”路径下 “LCD12864.qpf”文件,启动Quartus II;c) 单击菜单栏中 ToolsProgrammer ,打开FPGA程序下载窗口;d) 单击界面右上角“Hardware Setup”,在“Currently selected Hardware”下拉列表中选择“USB-BlasterUSB-0”,激活USB-Blaster,单击“close”关闭;e) 单击“Add File”,路径选择“桌面EDA实验-51部分-LCD实验底板驱动”,选中文件“LCD1602.sof”,勾选Program/Configure;f) 给EDA主板供电,单击“start”,将底板驱动程

38、序烧录到FPGA中。烧录后不要将此程序关掉,也不要断电,否则程序会丢失,需要重新烧录。4. 生成HEX文件具体步骤如下:a) 单击“开始程序”,启动Keil uVision2;b) 单击“ProjectNew Project”,创建新工程;c) 新工程保存路径为“桌面EDA实验-51部分-LCD实验程序一”,工程名设为“工程一”,单击“保存”;d) 在弹出的“器件选择窗口”中,选择“AtmelAT89S52”,单击“确定”;e) 右键单击窗口右边列表栏中“Source Group 1”,选择“Add File to Group Source Group 1”;f) 选中“桌面EDA实验-51部

39、分-LCD实验程序一”路径下“程序一.c”,单击“Add”,然后单击“close”;g) 双击“程序一.c”,打开该文件。h) 单击窗口左上角“Build Target”按键,编译程序一;i) 单击窗口左上角图标,选中“output”面板,选中“Creative HEX”,单击“确定”。j) 再次单击窗口左上角“Build Target”按键,将生成“程序二.Hex”文件;k) 在路径“桌面EDA实验-51部分-LCD实验程序一”下,已经生成“程序一.Hex”文件。5. 将 程序一.hex 烧入单片机具体步骤如下:a) 用DB25-ISP下载线连接单片机ISP程序下载口(EDA主板右下角J15

40、口)和PC机并口,EDA主板右下角S8拨码开关全部拨向ON;b) 在桌面双击图标“ISPlay.exe”,启动ISPlay;c) 单击“检测器件”,听到“嘀嘀嘀”,表示器件检测成功;d) 单击“文件”,选择“桌面EDA实验-51部分-LCD实验程序一”路径下“程序一.hex”,单击“打开”;e) 单击“AUTORUN!”,完成程序的下载;下载完成会听到“嘀嘀嘀”的响声。6. 此时12864显示器上应该出现“请输入数据:”。现在就可以按下4*4矩阵键盘上任意键,观察实验现象。按照底板上标志的各按键,填入表一各单元左下角。表一 按键显示记录0123456789.+-*/【实验注意事项】1. ISP

41、下载线与底板连接的插口下方有“MCU DISABLE”跳线,一定要将此跳线帽拔下,否则MCU将不可用。2. 单片机上方有一小块带8*8点阵的线路板,实验时请将此板拔下,否则将对显示器产生不利影响。3. FPGA中写入逻辑后不要将“Quartus ”关掉,否则FPGA将不可用,此实验亦无法完成。4. 实验中不可断电,否则应重新给FPGA写入逻辑。5. 底板的模式请设置成“3”,否则键盘将不可用,或者显示容易出错。模式显示如右图数码管位置,模式选择按键为与底板电源开关并列的右侧的按键的第一个键。【实验要求】1. 根据实验内容,填写表1。2.目前Main函数中对显示器的控制还不够完善,最大的缺陷是清

42、除键,在清除到当前行第一个字符位后,再按清除键,不能继续清除上一行。因此本实验要求分析并修改程序,完善本程序功能: 当清除到每行行首的时候,按下清除键,能够继续删除上一行的字符。注意:改写后的程序不能出现错误,不能减少程序功能。/*/ #include #define uint unsigned int #define uchar unsigned char #define ulong unsigned long #define lcdbus P0sbit lcddi=P10;sbit lcdrw=P11;sbit lcde=P14;sbit lcdcs1=P12;sbit lcdcs2=P1

43、3;sbit lcdbf=P07;/*/ uchar code title= /*- 文字: -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/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,0x42,

44、0x4C,0xC4,0x00,0x22,0xAA,0xAA,0xAA,0xBF,0xAA,0xAA,0xAA,0x22,0x20,0x00,0x00,0x00,0x00,0x7F,0x20,0x10,0xFF,0x0A,0x0A,0x0A,0x4A,0x8A,0x7F,0x00,0x00,0x00,/*- 文字: 输 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x44,0xF4,0x4F,0xE4,0x44,0x64,0x90,0x98,0x94,0x93,0x14,0x98,0x08,0xD0,0x10,0x00,0x04,0x04,0x04,0xFF,0x02

45、,0x02,0xFF,0x4A,0x8A,0x7F,0x00,0x3F,0x80,0xFF,0x00,0x00,/*- 文字: 入 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x00,0x00,0x00,0x00,0x01,0x83,0x76,0x18,0x60,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x20,0x10,0x08,0x06,0x01,0x00,0x00,0x00,0x00,0x03,0x04,0x18,0x30,0x10,0x00,/*- 文字: 数 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=1

46、6x16 -*/0x10,0x92,0x54,0x38,0xFF,0x38,0x54,0x52,0x80,0xF0,0x1F,0x12,0x10,0xF0,0x10,0x00,0x42,0x42,0x2A,0x2E,0x13,0x1A,0x26,0x02,0x40,0x20,0x13,0x0C,0x33,0x60,0x20,0x00,/*- 文字: 据 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x08,0x08,0x08,0xFF,0x88,0x40,0xFE,0x92,0x92,0x92,0xF2,0x92,0x92,0x9E,0x80,0x00,0x02,0x42,0x81,0x7F,0x40,0x30,0x0F,0xFC,0x44,0x44,0x47,0x44,0x44,0xFC,0x00,0x00,/*- 文字: : -*/*- 宋

温馨提示

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

评论

0/150

提交评论