1、最新最详细的单片机课程设计基于单片机控制的1602液晶显示单片机原理及系统课程设计专 业: 自动控制 班 级: 控XX 姓 名: XX 学 号: XXX 指导教师: XXX 评语:平时(40)修改(30)报告(30)总成绩兰州交通大学自动化与电气工程学院2012 年 7月 1日基于单片机控制的1602液晶显示1.引言单片机作为微型计算机发展的一个重要的分支,以其高可靠性、高性价比、低电压、低功耗的优势,赢得了广泛的应用。单片机技术是一门技术性、应用性很强的学科,在目前和今后相当长的一段时间仍有着广泛的应用。实验教学作为其极为重要的组成环节,在硬件扩展、接口应用、编程方法以及程序调试等方面,都起
2、到重要作用。作为学习自动控制专业的学生,单凭课堂理论课学习,不切实认真的进行实践仿真,势必出现理论与实践脱节、学习与应用脱节等局面。1.1课程设计的思想此次单片机原理及系统课程设计,选择的是利用1602液晶显示,利用AT89C52芯片实现一串滚动字符显示,本次设计使用的1602液晶为5V电压驱动,带背光,可显示两行,每行16个字符,不能显示汉字,内置128个字符的ASC字符集字库,只有并行接口,无串行接口。通过C语言编程经keil软件生成可以在proteus软件中仿真装载的.hex文件,进而通过proteus软件进行硬件电路连接以及软件的仿真,利用LM016L显示器替代1602型液晶显示器,最
3、终得出液晶显示。1.2课程设计的目的此次程设计是在学习必修课程单片机原理与系统设计之后,为加强学生对单片机系统设计和应用能力的培养而开设的综合设计训练环节。本课程设计应结合单片机原理与系统设计课程的基础理论,重点强调实际应用技能训练,包括单片机系统设计的软件和硬件两部分。其课程设计任务是使学生通过应用单片机系统设计的基本理论,基本知识与基本技能,掌握单片机应用系统各主要环节的设计、调试方法,初步掌握并具备应用单片机进行设备技术改造和产品开发的能力,培养学生的创新意识,提高学生的动手能力和分析问题、解决问题的能力。1.3课程设计要求 设计要求:采用单片机控制,通过C语言编程实现在1602液晶的第
4、一行显示”WELCOME TO ZDH!”,然后在第二行显示”K092XWEI”然,定格在屏幕上。2.设计方案及原理2.1 1602型液晶简介 2.1.1 1602引脚功能LCD1602引脚如图2.1所示:图2.1 LCD1602引脚图1602液晶显示屏各端口信号功能如表2.1所示:表2.1 1602液晶接口信号说明编号符号引脚说明编号符号引脚说明1Vss电源地9D2数据口2Vdd电源正极10D3数据口3Vee液晶显示对比度调节端11D4数据口4RS数据/指令端(H/L)12D5数据口5R/W读写选择端(H/L)13D6数据口6E使能信号14D7数据口7D0数据口15BLA背光电源正极8D1数
5、据口16BLK背光电源负极2.2 1062型液晶初始化设置使用该液晶显示屏时,应首先对其进行初始化设置。各初始化设置指令码及功能,如表2.2所示:表2.2 显示开/关及光标设置指令码功能00001DCBD=1 开显示;D=0 关显示00001DCBC=1 显示光标;C=0 不显示光标00001DCBB=1 光标闪烁;B=0 光标不显示000001N1N=1当读或写一个字符后地址光标加1000001N1N=0当读或写一个字符后地址光标加100000001显示清屏:数据指针、所有显示清零00111000162显示、57点阵、8位数据接口2.3 1602液晶写操作时序流程(1)通过RS确定是写数据还
6、是写指令。写指令包括使液晶的光标显示/不显示、光标闪烁/不闪烁、需/不需要移屏、在什么地方显示等。(2)读/写控制端设为写模式,即低电平。(3)将数据或指令送达数据线上。(4)给E一个高脉冲将数据送入液晶控制器,完成操作。2.4 硬件接口设计方案(1)液晶1、2端为电源;15、16为背光电源(在仿真中可不用)。(2)液晶3端为液晶对比度调节端,通过一个10千欧电位器接地来调节对比度。(3)液晶4端为向液晶控制器写数据或写指令选择端,接单片机的P3.5口。(4)液晶5端为读/写选择端,因为我们不从液晶读取任何数据,只向其写入指令或显示数据,因此此端始终选择为写状态,即为低电平接地。(5)液晶6端
7、为使能信号,是操作是必需的信号,接单片机的P3.4口。(6)液晶714端口为数据或指令的输入输出口,接单片机P0的8个接口。3.硬件设计根据如上分析,在proteus软件环境中搭建硬件电路,采用AT89C52型单片机,LM016L显示器替代1602型液晶显示器。硬件连接方式(两种)如图3.1、3.2所示:图3.1 系统硬件电路图连接方式一图3.2 系统硬件电路图连接方式二两个连接图皆可实现此次仿真。4.软件设计4.1源程序清单见附录14.2源程序调试结果在keil软件中键入4.1中的源程序并给予调试。调试结果如图4.1所示:图4.1 源程序调试结果由图可知源程序语法无误,并生成了.hex的文件
8、,为在proteus软件中仿真做准备。4.3仿真结果在proteus软件中仿真,屏幕上会出现如下两行字符“WELCOME TO ZDH!”和“K092XWEI”。如图4.2所示:图4.2 最终效果图继而可知仿真成功,软硬件设计合理。5.总结心得经过一周的努力,本次课程设计已经接近尾声,由于经验的匮乏,有许多考虑不周全的地方,如果没有导师的督促指导,以及一起工作的同学们的支持,想要完成此次课程设计是存在很大难度的。在这里,我要感谢我的指导老师和给予我帮助的同学们,没有您们的悉心开导和帮助,我很难按时完成此次课程设计。单片机是自动控制专业的一门重点必修课,对于学习控制的我们来说,掌握如何应用单片机
9、就变得尤为重要了。这次的实践课是对上学期所学的单片机理论课的一次巩固与加深,同时也是动手能力的一种历练。实践过程中,虽然没有实物作为参考与搭建,但通过运用keil及proteus两个软件进行实验的电路搭建与仿真,也得到了预期效果。在操作过程中,我也遇到了不少麻烦。遇到困难我会及时的向老师同学请教、翻资料或上网搜搜,进而解决问题,以使我的实验顺利的进行,虽然花费了大量的时间,但是记忆深刻。单片机是我们的控制大脑,因此学好学精这门课程显得尤为重要。我会从此次设计中认真总结,提高自己在本门学科上的理论知识和实践上的应用。6参考文献1 李华.单片机原理及应用.兰州:兰州大学出版社,20012 郭天祥.
10、新概念51单片机C语言教程.北京:电子工业出版社,2011附录附录1 源程序清单# include# define uint unsigned int /预定义一下# define uchar unsigned charsbit lcden=P34; /液晶使能端sbit lcdrs=P35; /液晶数据命令选择端sbit dula=P26; /申明U1锁存器的锁存端sbit wela=P27; /申明U2锁存器的锁存端uchar num;uchar table=WELCOME TO ZDH!;/要显示的内容1放入数组tableuchar table1=K092XWEI;/要显示的内容2放入数
11、组table1void delay(uint x) /延时子程序 uint i,j; for(i=x;i0;i-) for(j=110;j0;j-);void write_com(uchar com) /写命令子程序 lcdrs=0; /选择指令寄存器 P0=com; /把命令字送入P0 delay(5); /延时,让1602准备接收数据 lcden=1; /使能线电平变化,命令送入1602的16位数据口 delay(5); /延时,让1602准备接收数据 lcden=0; /使能线电平变化,命令送入1602的16位数据口void write_data(uchar date) /写数据子程序
12、lcdrs=1; /选择数据寄存器 P0=date; /把要显示的数据送入P0 delay(5); /延时,让1602准备接收数据 lcden=1; /使能线电平变化,数据送入1602的16位数据口 delay(5); /延时,让1602准备接收数据 lcden=0; /使能线电平变化,数据送入1602的16位数据口void init() /液晶显示屏初始化子程序 dula=0; wela=0; lcden=0; write_com(0x38); /设置162显示,57点阵,16位数据接口 write_com(0x0c); /设置开显示,不显示光标 write_com(0x06); /写一个字
13、符后地址指针加1 write_com(0x01); /显示清零void main() /主函数 init(); /液晶初始化 write_com(0x80); /显示地址设为80H(即00H) for(num=0;num16;num+) /将table中的数据依次写入1602显示 write_data(tablenum); delay(5); write_com(0x80+0x40); /重新设定显示地址为0xc0,即下排第1位 for(num=0;num8;num+) /将table1中的数据依次写入1602显示 write_data(table1num); delay(5); while(1); /动态停机 附录2 主程序流程图附图2.1 主程序流程图 附录3 两种不同连线方式下的仿真效果图附图3.1 连线方式一情况下的仿真效果图附图3.2 连线方式二情况下的仿真效果图