单片机.docx

上传人:b****5 文档编号:7365602 上传时间:2023-01-23 格式:DOCX 页数:20 大小:488.51KB
下载 相关 举报
单片机.docx_第1页
第1页 / 共20页
单片机.docx_第2页
第2页 / 共20页
单片机.docx_第3页
第3页 / 共20页
单片机.docx_第4页
第4页 / 共20页
单片机.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

单片机.docx

《单片机.docx》由会员分享,可在线阅读,更多相关《单片机.docx(20页珍藏版)》请在冰豆网上搜索。

单片机.docx

单片机

 

长沙学院

 

单片机课程设计说明书

 

题目1602点阵字符显示系统设计

系(部)电子与通信工程系

专业(班级)

姓名

学号

指导教师

起止日期10年12月13日—12月25日

摘要:

本次课程设计内容是1602点阵字符的显示系统,通过对AT89C52单片机进行编程,来实现1602LCD的显示及其他功能。

主要思路是先对1602LCD进行初始化、查忙、写数据、写指令等一系列操作,使1602LCD实现显示事先定义在数组里的字符,再通过开显示、关显示、延时等指令来实现其字符的闪烁功能。

另外,还可以通过一些指令来实现对1602LCD字符显示之后左右移动的功能,这样就丰富了整个字符显示的视觉效果。

关键词:

AT89C52单片机1602LCD字符显示

目录

绪论:

3

1、课程设计的主要内容4

2、第一章——第五章5

第一章单片机的总体介绍5

1.1单片机的种类5

1.2单片机的用途5

1.3单片机的发展历史6

1.4单片机的基本工作原理6

1.5单片机的常规用法7

1.6组成最小系统的硬件设计方法7

第二章接口电路的特点、分类及设计方法7

2.1P0口7

2.2P1口8

2.3P2口8

2.4P3口8

第三章1602LCD显示的设计思路9

3.1设计思路9

第四章硬件设计9

4.1仿真电路图9

4.2关键元器件的性能、参数及外形封装10

4.2.1AT89C52实物图及引脚图10

4.2.2AT89C52概述10

4.2.3AT89C52主要功能特性10

4.2.41602LCD引脚图11

4.2.51602LCD实物图11

4.2.61602LCD各引脚功能11

4.2.71602LCD指令系统12

4.2.81602LCD的特性12

第五章软件设计12

5.1程序流程图12

5.2源程序代码13

3、总结20

4、参考文献20

 

绪论:

在日常生活中,我们对液晶显示器并不陌生。

液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。

液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点。

液晶显示器模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。

在单片机的人机交流界面中,一般的输出方式有以下几种:

发光管、LED数码管、液晶显示器。

发光管和LED数码管比较常用,软硬件都比较简单。

液晶显示由于具有可编程驱动、接口控制方便、体积小、功耗低、具有良好的可视化人机界面等优点,在智能设备尤其是便携式仪器仪表中得到了广泛应用,在许多单片机、DSP等应用系统中也被广泛应用于终端显示。

液晶显示已成为当代高新技术产业中的最重要的信息显示方式之一。

通过本次课程设计,介绍液晶显示的基本功能及其工作原理。

简要了解了用单片机(ATC89C52)控制LCD1602显示屏的方法。

首先研究了LCD1602液晶屏的点阵显示原理及字库代码获取方法,随后通过在Proteus仿真软件上构建相关的仿真电路,并连接在Keil软件上编写、编辑及编译生成的相关的.Hex驱动程序进行电路仿真,成功仿真出对所需内容的循环显示。

编程语言主要使用的是c语言。

1、课程设计的主要内容:

单片机原理及应用课程设计任务书

系(部):

电子与通信工程系专业:

08级物本

指导教师:

袁媛、彭芳、高岳民2010-12-5

课题名称

1602点阵字符显示系统设计

设计内容及要求

1课题内容:

以单片机为核心,完成1602点阵字符显示系统设计

2要求:

1完成该系统的硬件和软件的设计,在Proteus软件上仿真通过;2外围硬件的电路原理图设计组与组间不得完全一样。

否则将严重影响评分成绩

设计工作量

1、用C51语言程序设计;

2、程序调试;

3、软件设计在Wave6000或KeilC调试、仿真,硬件设计在Proteus7.4版本上上进行调试、仿真;

4、提交课程设计说明书,包括设计原理、软件设计、程序分析(程序重要部分要求加注释)、仿真和调试过程分析、参考文献、设计总结等,具体要求、格式见课程设计说明书模板。

进度安排

起止日期(或时间量)

设计内容(或预期目标)

备注

第1天

课题、安排介绍、分组;课题介绍之后,收集、查阅资料方案论证、设计项目确定、系统整体设计。

第2天~第7天

硬件设计:

利用Proteus7.4平台结合软硬件设计调试、仿真;

软件设计:

利用Wave6000或KeilC平台,编程、调试、仿真;

第8天~第9天

验收作品、答辩

第10天

撰写课程设计说明书

教研室

意见

 

年月日

系(部)主管领导意见

 

年月日

 

2、第一章——第五章

第一章单片机的总体介绍

1.1单片机的种类

单片机分为专用型单片机和通用型单片机。

通用性单片机又分为:

CISC单片机,代表有Intel公司的MCS-51系列、Atmel公司的AT89系列和Winbond

公司的W78系列。

RISC单片机,代表有Microchip公司的PIC系列、Ateml公司的AVR系列单片机。

基于ARM核的32位单片机,代表有ARM7、ARM9、ARM9E的几个系列

DSP单片机,代表有美国德州仪器公司生产的TMS320系列。

通用型单片机按其数据线的位数可分为:

8位、16位和32位。

1.2单片机的用途

单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:

(1)在智能仪器仪表上的应用:

单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。

采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。

例如精密的测量设备(功率计,示波器,各种分析仪)。

(2)在工业控制中的应用:

用单片机可以构成形式多样的控制系统、数据采集系统。

例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。

(3)在家用电器中的应用:

可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭褒、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备,五花八门,无所不在。

(4)在计算机网络和通信领域中的应用:

现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。

(5)单片机在医用设备领域中的应用:

单片机在应用设备中的用途亦相当广泛,例如应用呼吸机,各种分析仪,监护仪,超声设备及病床呼叫系统等。

此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途。

1.3单片机的发展历史

以8位单片机的出现为基准,单片机的发展历史大致可分为以下几个阶段:

(1)第一阶段(1976-1978):

单片机的控索阶段。

以Intel公司的MCS–48为代表。

MCS–48的推出是在工控领域的控索,参与这一控索的公司还有Motorola、Zilog等,都取得了满意的效果。

这就是SCM的诞生年代,“单机片”一词即由此而来。

(2)第二阶段(1978-1982)单片机的完善阶段。

Intel公司在MCS–48基础上推出了完善的、典型的单片机系列MCS–51。

它在以下几个方面奠定了典型的通用总线型单片机体系结构。

①完善的外部总线。

MCS-51设置了经典的8位单片机的总线结构,包括8位数据总线、16位地址总线、控制总线及具有很多机通信功能的串行通信接口。

②CPU外围功能单元的集中管理模式。

③体现工控特性的位地址空间及位操作方式。

④指令系统趋于丰富和完善,并且增加了许多突出控制功能的指令。

(3)第三阶段(1982-1990):

8位单片机的巩固发展及16位单片机的推出阶段,也是单片机向微控制器发展的阶段。

Intel公司推出的MCS–96系列单片机,将一些用于测控系统的模数转换器、程序运行监视器、脉宽调制器等纳入片中,体现了单片机的微控制器特征。

随着MCS–51系列的广应用,许多电气厂商竞相使用80C51为内核,将许多测控系统中使用的电路技术、接口技术、多通道A/D转换部件、可靠性技术等应用到单片机中,增强了外围电路路功能,强化了智能控制的特征。

(4)第四阶段(1990—):

微控制器的全面发展阶段。

随着单片机在各个领域全面深入地发展和应用,出现了高速、大寻址范围、强运算能力的8位/16位/32位通用型单片机,以及小型廉价的专用型单片机。

1.4单片机的基本工作原理:

a).取指令过程:

(1)CPU把程序计数器PC中第N条指令所在存储单元通过地址总线AB送到存储器中的地址译码器,选择第N个存储单元;

(2)CPU通过控制总线向存储器发出读取数据的控制信号;(3)存储器中被选中的存储单元的内容送到数据总线上,CPU通过数据总线读入指令代码。

b).执行指令过程:

(1)CPU读取指令后,进行译码,判断该指令要进行哪一类操作,以及参加这类操作的数据所在的单元地址(如果指令需要操作数);

(2)CPU根据译码结果发出为完成所需要的控制信号(如果还需要从存储器中取操作数,则CPU将通过地址总线发出存放操作数的存储单元地址,并通过控制总线发出读取数据的控制信号,然后通过数据总线读取操作数);(3)执行指令所规定的操作,同时程序计数器PC的内容自动加一,计算机又进入下一条(第N+1)指令的取指令过程。

计算机周而复始的取指令分析指令执行指令,直到程序中所有指令操作完毕。

1.5单片机的常规用法:

在最小系统的基础上,通过利用单片机内部资源(如中断,定时,指针,计数等)改变输入及输出口线高低电平,来达到对外围电路的控制,从而执行相应的操作,以实现设计的各要求。

1.6组成最小系统的硬件设计方法:

晶振是石英振荡器的简称,英文名为Crystal,晶振分为有源晶振和无源晶振两种,其作用是在电路产生震荡电流,发出时钟信号。

它是时钟电路中最重要的部件,它的作用是向IC等部件提供基准频率,它就像个标尺,工作频率不稳定会造成相关设备工作频率不稳定,自然容易出现问题。

由于制造工艺不断提高,现在晶振的频率偏差、温度稳定性、老化率、密封性等重要技术指标都很好,已不容易出现故障,但在选用时仍可留意一下晶振的质量。

复位电路是为确保微机系统中电路稳定可靠工作必不可少的一部分,复位电路的第一功能是上电复位。

一般微机电路正常工作需要供电电源为5V±5%,即4.75~5.25V。

由于微机电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过4.75V低于5.25V以及晶体振荡器稳定工作时,复位信号才被撤除,微机电路开始正常工作。

第二章接口电路的特点、分类及设计方法

2.1P0口:

P0口是一组8位漏极开路型双向1/O口,也即地址/数据总线复用口。

作为输出口用时.每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。

在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。

在FLASH由编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。

2.2P1口:

P1是一个带内部上拉电阻的8位双向I/O口,Pl的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。

对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。

作输入口使用时,因为内部存在上拉电阻某个引脚被外部信号拉低时会输出一个电流IIL,与AT89C51不同之处是,Pl.0和P1.1还可分别作为定时/计数器2的外部计数输入(Pl.0/T2)和(P1.1/T2EX),

2.3P2口:

P2口是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑电路。

对端口P2写“l",通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(llt)。

在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOvx@DPTR指令)时,P2送出高8位地址数据。

在访问8位地址的外部数据存储器、如执行MOVX@RI指令)时,P2口输出P2锁存器的内容。

FLASH编程或校验时,P2亦接收高位地址和一些控制信号。

2.4P3口:

P3口是一组带有内部上拉电阻的8位双向I/O口。

P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。

对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。

此时,被外部拉低的P3口将用上拉电阻输出电流(IIL).P3口除了作为一般的I/0口线外,更重要的用途是它的第二功能,此外,P3口还接收一些用于FLASH闪速存储器编程和程序校验的控制信号。

 

第三章1602LCD显示的设计思路

3.1设计思路

首先对1602进行数据初始化,然后调用事先编写好的清屏子程序,设置一二两行分别显示数组dis1和dis2的内容,调用闪动子程序,延时;再设置一二两行分别显示dis3和dis4的内容,整体左右移动,并加入闪动子程序,使其视觉效果更加丰富,反复循环,直至结束。

第四章硬件设计

4.1仿真电路图

 

 

4.2关键元器件的性能、参数及外形封装

4.2.1AT89C52实物图及引脚图:

4.2.2AT89C52概述:

AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。

AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。

其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。

4.2.3AT89C52主要功能特性:

a.兼容MCS51指令系统b.8k可反复擦写(>1000次)FlashROM

  c.32个双向I/O口d.256x8bit内部RAM

  e.3个16位可编程定时/计数器中断f.时钟频率0-24MHz

  g.2个串行中断h.可编程UART串行通道

  i.2个外部中断源j.共8个中断源

  k.2个读写中断口线l.3级加密位

  m.低功耗空闲和掉电模式n.软件设置睡眠和唤醒功能

4.2.41602LCD引脚图:

4.2.51602LCD实物图:

4.2.61602LCD各引脚功能:

4.2.71602LCD指令系统

4.2.81602LCD的特性:

(a)+5V电压,对比度可调

(b)内含复位电路

(c)提供各种控制命令,如:

清屏、字符闪烁、光标闪烁、显示移位等多种功能

(d)有80字节显示数据存储器DDRAM

(e)内建有160个5X7点阵的字型的字符发生器CGROM

(f)8个可自定义的5X7的字符发生器CGRAM

第五章软件设计

5.1程序流程图:

5.2源程序代码:

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitLCD_RS=P2^0;

sbitLCD_RW=P2^1;

sbitLCD_EN=P2^2;

ucharcodedis1[]={"Hello,everyone,"};

ucharcodedis2[]={"happynewyear!

"};

ucharcodedis3[]={"yywl08"};

ucharcodedis4[]={"It'sverygood!

"};

/*延时子程序*/

voiddelay(intms)

{

inti;

while(ms--)

{

for(i=0;i<250;i++)

{

_nop_();

_nop_();

_nop_();

_nop_();

}

}

}/*检查LCD忙状态,lcd_busy为1时,忙,等待。

lcd-busy为0时,闲,可写指令与数据。

*/

bitlcd_busy()

{

bitresult;

LCD_RS=0;

LCD_RW=1;

LCD_EN=1;

_nop_();

_nop_();

_nop_();

_nop_();

result=(bit)(P0&0x80);

LCD_EN=0;

returnresult;

}/*写指令数据到LCD,RS=L,RW=L,E=高脉冲,D0-D7=指令码。

*/

voidlcd_wcmd(ucharcmd)

{

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;

}

/*写显示数据到LCD,RS=H,RW=L,E=高脉冲,D0-D7=数据。

*/

voidlcd_wdat(uchardat)

{

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;

}

/*设定显示位置*/

voidlcd_pos(ucharpos)

{

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

}

/*LCD初始化*/

voidlcd_init()

{

delay(15);//等待LCD电源稳定

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);

}/*清屏子程序*/

voidlcd_clr()

{

lcd_wcmd(0x01);//清除LCD的显示内容

delay(5);

}

/*闪动子程序*/

voidflash()

{

delay(200);//控制停留时间

lcd_wcmd(0x08);//关闭显示

delay(100);//延时

lcd_wcmd(0x0c);//开显示

delay(100);//延时

lcd_wcmd(0x08);//关闭显示

delay(100);//延时

lcd_wcmd(0x0c);//开显示

delay(100);

lcd_wcmd(0x08);//关闭显示

delay(100);//延时

lcd_wcmd(0x0c);//开显示

delay(100);//延时

}

/*主程序*/

main()

{

uchari,j;

delay(10);

lcd_init();//初始化LCD

while

(1)

{lcd_clr();

delay(5);

lcd_pos(0x00);

delay(5);

i=0;

while(dis1[i]!

='\0')

{lcd_wdat(dis1[i]);//显示字符"Hello,everyone,"

i++;

delay(100);

}

lcd_pos(0x40);//设置显示位置为第二行第1列

i=0;

while(dis2[i]!

='\0')

{

lcd_wdat(dis2[i]);//显示字符"happynewyear!

"

i++;

delay(100);

}

flash();//调闪动子程序

delay(500);

lcd_clr();

delay(500);

lcd_pos(0x10);//设置显示位置为第一行第17列

i=0;

while(dis3[i]!

='\0')

{

lcd_wdat(dis3[i]);//显示字符"yywl08"

i++;

}

lcd_pos(0x50);//设置显示位置为第二行第17列

i=0;

while(dis4[i]!

='\0')

{

lcd_wdat(dis4[i]);//显示字符"It'sverygood!

"

i++;

}

for(j=0;j<16;j++)//向左移动16格

{

lcd_wcmd(0x18);//字符同时左移一格

delay(100);//控制移动时间

}

flash();

for(j=0;j<16;j++)//向左移动16格

{

lcd_wcmd(0x18);//字符同时左移一格

delay(100);//控制移动时间

}

for(j=0;j<16;j++)//向右移动16格

{

lcd_wcmd(0x1C);//字符同时右

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1