人人范文网 范文大全

单片机实习报告

发布时间:2020-03-04 00:21:02 来源:范文大全 收藏本文 下载本文 手机版

1602液晶显示设计

一、实验简介:

通过学习本门课程,能够掌握利用51单片机完成简单项目的应用系统设计和调试,掌握单片机应用程序的编写和调试过程。本次实习,我的题目是用51单片机控制1602液晶显示指定字符的设计,需要分别设计系统的硬件电路及调试软件程序,并能够正确演示调试结果。

二、实验要求:

1、查找资料学习单片机的LCD点阵显示原理;

2、理解KST-51的LCD点阵显示电路图;

3、编制程序在点阵LCD上实现字母:我爱单片机绘制原理图;

4、完成实验报告的撰写。

三、硬件电路:

(一)89C52系列单片机

89C52是INTEL公司MCS-51系列单片机中基本的产品,它内置8位中央处理单元、512字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。此外,89C52还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。在空闲模式下冻结CPU而RAM定时器、串行口和中断系统维持其功能。掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。89C52有PDIP(40pin)和PLCC(44pin)两种封装形式。

1、单片机最小系统

KST-51单片机开发板

最小系统是指单片机正常工作的最基本的外围配置,主要包括时钟电路、复位电路等。

51单片机最小系统是利用XTAL1和XTAL2两个引脚外接晶体振荡器的内部时钟方式,C1和C2的作用是稳定频率和快速起振,典型值为30pf,晶体振荡器的振荡频率典型值为6 MHZ、12 MHZ或者11.0592 MHZ,系统与PC通信时常采用11.0592MHZ。

复位电路设计形式包括:上电复位、按键复位、和利用专业的复位芯片进行管理,本次设计采用按键复位方式。

51单片机最小系统

2、单片机引脚功能

51系列单片机有40个引脚,包括2个 电源引脚,2个外界晶振引脚,4个控制或 其他电源复用引脚,32个I/O引脚。 1) 主电源引脚(2根) VCC(Pin40):电源输入,接+5V电源 GND(Pin20):接地线 2) 外接晶振引脚(2根)

XTAL1(Pin19)、XTAL2(Pin18)主要用来构成单片机的时钟电路。时钟电路用来产生单片机工作所需的时钟信号。时钟信号分为内部时钟方式和外部时钟方式。 3) 控制引脚(4根)

RST/VPP(Pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。

ALE/PROG(Pin30):地址锁存允许信号 PSEN(Pin29):外部存储器读选通信号

EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。 4) 输入/输出引脚(32根)

P0口是一个双功能的8位并行口,可以用做地址/数据总线,另外P0口还可以作为通用I/O口使用,此时为准双向口,且内部无上拉电阻。

P1口是单功能的I/O口,只能作为通用的I/O口使用,为准双向口,但内部有上拉电阻。

P2口是一个双功能口,为准双向口,但内部有上拉电阻,P2口功能主要有一下两个方面:一是作为高8位地址输出线使用时,P2口可以输出外部存储器的高8位地址,与P0口输出的低8位地址一起构成16位地址,可以寻址64位的地址空间;二是作为通用I/O口使用时,与P1口使用方法一样。

P3口作为通用I/O口时使用方法与P1一样。另外,P3口主要作为第二功能使用。

(二)1602字符液晶

P3口第二功能表

字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,1602是指显示的内容为16*2,即可以显示两行,每行16个字符。字符液晶绝大多数是基于HD44780液晶芯片的。

1602实物图

1、1602LCD的特性

 +5V电压,对比度可调  内含复位电路

 提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能

 有80字节显示数据存储器DDRAM  内建有160个5X7点阵的字型的字符发生器CGROM  8个可由用户自定义的5X7的字符发生器CGRAM

2、字符型LCD1602接口 引脚

2、1为1602的电源和地,引脚

15、16 为背光电源,引脚

4、

5、6为控制端口,引脚7-14为 数据端口,以下为各个端口的详细介绍。

3、1602存储器

HD44780内置了DDRAM(显示数据存储RAM)、CGROM(字符存储ROM)和CGRAM(用户自定义RAM)。

DDRAM就是显示数据RAM,用来寄存待显示的字符代码。共80个字节,其地址和屏幕的对应关系如下表:

在DDRAM的00H地址处显示数据,则必须将00H加上80H,即0X80+0x00,若要在DDRAM的01H处显示数据,则必须将01H加上80H即 0X80+0x01。以此类推。

字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如下表所示,这些字符有:阿拉伯数字、英文字母的大小写、常 用的符号、和日文假名等,每一个字符都有一个固定的代码。

4、1602指令表

对DDRAM的内容和地址操作,HD44780的指令集及其设置说明,共有11条指令: 1)清屏指令

功能: 清除液晶显示器,即将DDRAM的内容全部填入“空白”的字符码20H; 光标归位,即将光标撤回液晶显示屏的左上方; 将地址计数器(AC)的值设为0。

2)光标归位指令

功能: 把光标撤回到显示器的左上方; 把地址计数器(AC)的值设置为0; 保持DDRAM的内容不变 3)输入模式设置指令

功能:设定每次写入1位数据后光标的移位方向,并且设定每次写入的一个字符是否移动。参数设定的情况如下所示: 位名 设置

I/D 0=写入新数据后光标左移 1=写入新数据后光标右移

S 0=写入新数据后显示屏不移动 1=写入新数据后显示屏整体右移1个字 4)显示开关控制指令

功能:控制显示器开/关、光标显示/关闭以及光标是否闪烁。参数设定的情况如下:

位名 设置 D 0=显示功能关 1=显示功能开 C 0=无光标 1=有光标 B 0=光标不闪烁 1=光标闪烁 5)设定显示屏或光标移动方向指令

功能:使光标移位或使整个显示屏幕移位。参数设定的情况如下: S/C R/L 设定情况

0 0 光标左移1格,且AC值减1 0 1 光标右移1格,且AC值加1 1 0 显示器上字符全部左移一格,但光标不动 1 1 显示器上字符全部右移一格,但光标不动 6)功能设定指令

功能:设定数据总线位数、显示的行数及字型。参数设定的情况如下: 位名 设置

DL 0=数据总线为4位 1=数据总线为8位 N 0=显示1行 1=显示2行 F 0=5×7点阵/每字符 1=5×10点阵/每字符 7)设定CGRAM地址指令

功能:设定下一个要存入数据的CGRAM的地址。 8)设定DDRAM地址指令

功能:设定下一个要存入数据的CGRAM的地址。 9)读取忙信号或AC地址指令

功能: 读取忙碌信号BF的内容,BF=1表示液晶显示器忙,暂时无法接收单片机送来的数据或指令; 当BF=0时,液晶显示器可以接收单片机送来的数据或指令; 读取地址计数器(AC)的内容。 10)数据写入DDRAM或CGRAM指令

功能: 将字符码写入DDRAM,以使液晶显示屏显示出相对应的字符; 将用户自己设计的图形存入CGRAM。 11)从CGRAM或DDRAM读出数据的指令

功能:读取DDRAM或CGRAM中的内容。

5、时序图

(1)读状态 输入:RS=0,RW=1,E=1 读数据 输入:RS=1,RW=1,E=1 (2)写指令 输入:RS=0,RW=0,E=下降沿脉冲,DB0~DB7=指令码 写数据 输入:RS=1,RW=0,E=下降沿脉冲,DB0~DB7=数据

四、实习结果与讨论:

通过程序的编辑在1602型LCD上实现了显示英文字符,通过本次实验的学习进一步熟悉了1602型LCD,对其操作有了更多的心得体会,在本次实验中获益匪浅。

五、实验程序: #include #include #define uchar unsigned char #define uint unsigned int

sbit LCD_RS = P2^0; sbit LCD_RW = P2^1; sbit LCD_EN = P2^2;

uchar code dis1[] = {\"woai danpianji\"}; uchar code dis2[] = {\"huizhi yuanlitu\"}; uchar code dis3[] = {\"chen jian\"}; uchar code dis4[] = {\" dianzihua 1101 \"};

void delay(int ms) { int i; while(ms--) { for(i = 0; i

bit lcd_busy() { bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; _nop_(); _nop_(); _nop_(); _nop_(); result = (bit)(P0&0x80); LCD_EN = 0; return result; } void lcd_wcmd(uchar cmd) { while(lcd_busy()); LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; _nop_(); _nop_(); P0 = cmd; _nop_(); _nop_(); _nop_(); _nop_(); LCD_EN = 1; _nop_(); _nop_(); _nop_(); _nop_(); LCD_EN = 0; }

void lcd_wdat(uchar dat) { while(lcd_busy()); LCD_RS = 1; LCD_RW = 0; LCD_EN = 0; P0 = dat; _nop_(); _nop_(); _nop_(); _nop_(); LCD_EN = 1; _nop_(); _nop_(); _nop_(); _nop_(); LCD_EN = 0; }

void lcd_pos(uchar pos) { lcd_wcmd(pos|0x80); //数据指针=80+地址变量 }

void lcd_init() { lcd_wcmd(0x38); //16*2显示,5*7点阵,8位数据 delay(5); lcd_wcmd(0x38); delay(5); lcd_wcmd(0x38); delay(5); lcd_wcmd(0x0c); //显示开,关光标 delay(5); lcd_wcmd(0x06); //移动光标 delay(5); lcd_wcmd(0x01); //清除LCD的显示内容 delay(5); }

void flash() { delay(600); //控制停留时间 lcd_wcmd(0x08); //关闭显示 delay(200); //延时 lcd_wcmd(0x0c); //开显示 delay(200); //延时 lcd_wcmd(0x08); //关闭显示 delay(200); //延时 lcd_wcmd(0x0c); //开显示 delay(200); } main() { uchar i; delay(10); lcd_init(); // 初始化LCD

while(1) { lcd_wcmd(0x06); //向右移动光标

lcd_pos(0); //设置显示位置为第一行的第1个字符 i = 0; while(dis1[i] != \'\\0\') { //显示字符\" woai danpianji\" lcd_wdat(dis1[i]); i++; delay(30); //控制两字之间显示速度 }

lcd_pos(0x40); //设置显示位置为第二行第1个字符 i = 0;

while(dis2[i] != \'\\0\') { lcd_wdat(dis2[i]); //显示字符\" huizhi yuanlitu \" i++; delay(30); //控制两字之间显示速度 }

flash(); //闪动二次

lcd_wcmd(0x01); //清除LCD的显示内容 delay(200); //控制转换时间 lcd_wcmd(0x04); //向左移动光标

lcd_pos(15); //设置显示位置为第一行的第16个字符 i = 0; while(dis3[i] != \'\\0\') { //显示字符\" chen jian \" lcd_wdat(dis3[i]); i++; delay(30); //控制两字之间显示速度 } lcd_pos(0x4F); //设置显示位置为第二行的第16个字符 i = 0; while(dis4[i] != \'\\0\') { lcd_wdat(dis4[i]); //显示字符\" dianzihua1101 \" i++; delay(30); //控制两字之间显示速度 }

flash(); //闪动二次

lcd_wcmd(0x01); //清除LCD的显示内容 delay(200); //控制转换时间 } }

单片机实习报告

单片机实习报告

单片机实习报告

单片机实习报告总结

单片机课程设计实习报告

单片机课程设计实习报告

单片机生产实习报告

单片机经典实习报告

单片机课程实习报告

单片机led实习报告

单片机实习报告
《单片机实习报告.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档