




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武汉理工大学能力拓展训练课程设计说明书摘要本次课程设计是以AT89C52为核心控制器,1602液晶为显示器设计的液晶显示电路。该电路可在1602液晶上显示ASCII码表里的各种字符,通过编程设定的显示方式。设计中采用了二种动态显示方式,第一种是整屏左移操作,先将待显示的内容写入1602RAM的后面几个存储单元,当内容写入完成后,写入指令,实现指针不动而屏幕动的效果。第二种是将内容一个个写到1602显示,这主要通过延时函数控制写入的两个字符间的时间间隔。1602液晶一次可以显示32个字符,通过编程可以实现不同的动态显示方式。关键词:AT89C52;1602;动态显示1 Proteus仿真流程与Keil编译器简介1.1 Proteus仿真流程(1)工作界面Proteus ISIS的工作界面是一种标准的Windows界面,如图1-2所示。包括:标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。图1.1 proteus操作界面(2) 基本操作1 图形编辑窗口在图形编辑窗口内完成电路原理图的编辑和绘制。为了方便作图坐标系统(CO-ORDINATE SYSTEM)。ISIS中坐标系统的基本单位是10nm,主要是为了和Proteus ARES保持一致。但坐标系统的识别(read-out)单位被限制在1th。坐标原点默认在图形编辑区的中间,图形的坐标值能够显示在屏幕的右下角的状态栏中。 点状栅格(The Dot Grid)与捕捉到栅格(Snapping to a Grid)编辑窗口内有点状的栅格,可以通过View菜单的Grid命令在打开和关闭间切换。点与点之间的间距由当前捕捉的设置决定。捕捉的尺度可以由View菜单的Snap命令设置,或者直接使用快捷键F4、F3、F2和CTRL+F1。2 预览窗口该窗口通常显示整个电路图的缩略图。在预览窗口上点击鼠标左键,将会有一个矩形蓝绿框标示出在编辑窗口的中显示的区域。 其他情况下,预览窗口显示将要放置的对象的预览。这种Place Preview特性在下列情况下被激活:当一个对象在选择器中被选中、当使用旋转或镜像按钮时、当为一个可以设定朝向的对象选择类型图标时(例如:Component icon, Device Pin icon等等)、当放置对象或者执行其他非以上操作时,place preview会自动消除、对象选择器(Object Selector)根据由图标决定的当前状态显示不同的内容。显示对象的类型包括:设备,终端,管脚,图形符号,标注和图形。在某些状态下,对象选择器有一个Pick切换按钮,点击该按钮可以弹出库元件选取窗体。通过该窗体可以选择元件并置入对象选择器,在今后绘图时使用。3 对象选择与放置通过对象选择按钮,从元件库中选择对象,并置入对象选择器窗口,供今后绘图时使用。显示对象的类型包括:设备,终端,管脚,图形符号,标注和图形。放置对象的步骤如下(To place an object:)根据对象的类别在工具箱选择相应模式的图标(mode icon)。根据对象的具体类型选择子模式图标(sub-mode icon)。如果对象类型是元件、端点、管脚、图形、符号或标记,从选择器里(selector)选择你想要的对象的名字。对于元件、端点、管脚和符号,可能首先需要从库中调出。如果对象是有方向的,将会在预览窗口显示出来,你可以通过预览对象方位按钮对对象进行调整。最后,指向编辑窗口并点击鼠标左键放置对象。1.2 Keil软件简介Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。Keil C51开发系统基本知识Keil C51开发系统基本知识 (1)系统概述 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍Keil C51开发系统各部分功能和使用。 (2)Keil C51单片机软件开发系统的整体结构 C51工具包的整体结构,uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及C51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。2 单片机模块功能简介AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。其主要功能特性有以下几点:(1)兼容MCS51指令系统 (2)8K可反复擦写(大于100000次)Flash ROM; (3)32个双向I/O口; (4)256x8bit内部RAM; (5)3个16位可编程定时/计数器中断; (6)时钟频率0-24MHz; (7)2个串行中断,可编程UART串行通道; (8)2个外部中断源,共8个中断源; (9)2个读写中断口线,3级加密位; (10)低功耗空闲和掉电模式,软件设置睡眠和唤醒功能; (11)有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应不同产品的需求。 AT89C52为8 位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8XC51相同,其主要用于会聚调整时的功能控制。其引脚分布如图2.1所示。图2.1 AT89C52单片机引脚图3 设计方案与工作原理3.1 LCM1602液晶简介LCM(LCD Module)即LCD显示模组,是指将液晶显示器件、连接件、控制与驱动等外围电路,PCB电路板,背光源,结构件等装配在一起的组件。LCM提供用户一个标准的LCD显示驱动接口,用户按照接口要求进行操作来控制LCD正确显示。LCM是一种相对更高集成度的LCD产品,对小尺寸LCD显示,LCM是一种省电的显示装置,LCM可以比较方便地与各种微控制器(比如单片机)连接,作为简易的人机接口。其中,MCS-51单片机作为LCM1602显示控制系统的核心部件。它由中央处理器(CPU)、存储器(ROM与RAM)、输入/输出单元(I/O)三大基本部分构成。单片机具有高性能、低价格;体积小,集成度高,可靠性和抗干扰能力强;较低工作电压(1.85V),低功耗等优点。并且,只要在单片机的外围适当加一些必要的扩展电路及通道接口,就可以构成各种应用系统,如工业控制系统、数据采集系统、自动控制系统、自动测试系统、检测监视系统、智能仪表、功能模块等。因此单片机广泛应用于便携式智能产品与家电消费品,以及工业控制,国防装备等领域。3.2 单片机最小系统单片机控制模块是整个设计方案的核心。AT59C51芯片作为该系统的控制部件,它控制了1602液晶显示的内容以及液晶动态显示方式。单片机最下系统由时钟电路和复位电路构成,这样就可以在接入其他器件,用单片机编程实现对外部器件的控制。单片机最小系统如图3.1所示。图3.1 单片机最小系统3.3 设计方案由上面介绍的1602液晶,参看1602液晶芯片资料可以对其写入内容和设定内容的显示位置以及显示方式。将1602液晶与单片机最小系统相连接就构成了本次设计方案。1602液晶与单片机的连接方式是1602液晶的数据端D0D7连接在单片机的P0口,1602液晶的数据命令选择端RD接在单片机的P2.6引脚,读写控制端R/Wj接在单片机的P2.5引脚,使能端EN接在单片机的P2.7脚。设计的电路图如图3.2所示。图3.2 设计方案原理图4 软件编程4.1 1602流程图本次课程设计1602液晶显示的内容是“WELCOME TO WU HAN LI GONG”,设定的动态显示方式是显示的内容在屏幕上从右向左移动,停留一段时间后闪烁两次消失,然后从左向右一次显示每个字符,停留一段时间后闪烁两次后消失。动态显示方式的字符间的时间间隔,不同显示方式的时间间隔主要通过延时程序来完成,设计的1602系统流程图如图4.1所示。开始 对1602初始化写入显示设置命令 延迟5ms检查忙信号B_Z=0?获得RAM地址NY结束内容显示完?写入相应内容延迟5msNY图4.1 1602显示流程图4.2 软件程序#include #include typedef unsigned char BYTE; /用BYTE代替unsigned char数据类型typedef bit BOOL; /用BOOL代替bit数据类型 sbit LCD_RS = P26; /数据命令选择端 sbit LCD_RW = P25; /读写选择端sbit LCD_EP = P27; /使能信号BYTE code dis1 = WELCOME TO ;/待显示的字符BYTE code dis2 = WU HAN LI GONG ;BYTE code dis3 = BIG BIG WORLD ;BYTE code dis4 = I LOVE WHUT ;BYTE code dis5 = WANG DAO YUN ;BYTE code dis6 = 0120909310213 ;void delay(int ms) / 延时子程序int i;while(ms-) for(i = 0; i 250; i+) _nop_(); _nop_(); _nop_(); _nop_(); BOOL lcd_bz() / 测试LCD忙碌状态 BOOL result;LCD_RS = 0; /写指令LCD_RW = 1;LCD_EP = 1; /为产生下降沿做好准备_nop_(); /延时5ms_nop_();_nop_();_nop_();result = (BOOL)(P0 & 0x80);/判断状态字最高位STA7,确保STA7为0LCD_EP = 0; /将LED_EP拉低,产生下降沿,写入指令return result; /返回结果,为1禁止读写,为0可以读写void lcd_wcmd(BYTE cmd)/ 写入指令数据到LCD while(lcd_bz(); /为1不能进行读写操作LCD_RS = 0; /写指令LCD_RW = 0; LCD_EP = 0;_nop_();_nop_(); P0 = cmd; /将指令写到P0口_nop_();_nop_();_nop_();_nop_();LCD_EP = 1; /使能端高电平,为产生下降沿准备_nop_();_nop_();_nop_();_nop_();LCD_EP = 0; /产生下降沿,将指令写入LCD void lcd_pos(BYTE pos) /设定显示位置 lcd_wcmd(pos | 0x80); /LCD数据指针格式80H+地址void lcd_wdat(BYTE dat) /写入字符显示数据到LCD while(lcd_bz(); /LCD忙检测,为1不能进行读写,为0可以读写LCD_RS = 1; /写数据LCD_RW = 0; LCD_EP = 0;P0 = dat; /数据送入P0口_nop_();_nop_();_nop_();_nop_();LCD_EP = 1; /使能端拉高。为产生下降沿做准备_nop_();_nop_();_nop_();_nop_();LCD_EP = 0; /使能端拉低,将数据写入LCD void lcd_init() /LCD初始化设定 lcd_wcmd(0x38); /16*2显示,5*7点阵,8位数据delay(1); /延时1mslcd_wcmd(0x0c); /显示开,关光标delay(1);lcd_wcmd(0x06); /移动光标,当读或写一个字符后地址指针加1且光标加1delay(1);lcd_wcmd(0x01); /清除LCD的显示内容,地址指针数据指针清零delay(1);void flash() delay(300); /控制停留时间 lcd_wcmd(0x08); /关闭显示 delay(100); /延时 lcd_wcmd(0x0c); /开显示 delay(100); lcd_wcmd(0x08); /关闭显示 delay(100); /延时 lcd_wcmd(0x0c); /开显示 delay(100); void main() BYTE i,j; /定义uisigned char型变量i,j lcd_init(); / 初始化LCD delay(10); /延时10ms while(1) lcd_wcmd(0x06); /向右移动光标 lcd_pos(0x10); /设置显示位置为第一行的第17个字符 i = 0; while(dis1 i != 0) lcd_wdat(dis1 i ); /显示字符WLCOME TO i+; / delay(30); /控制两字之间显示速度 lcd_pos(0x50); /设置显示位置为第二行第17个字符 i = 0; while(dis2 i != 0) lcd_wdat(dis2 i ); /显示字符 WU HAN LI GONG i+; /delay(30); /控制两字之间显示速度 for(j=0;j16;j+) /向左移动16格 lcd_wcmd(0x18); /字符同时左移一格 delay(80); /控制移动时间 flash(); /闪动二次 delay(800); /控制停留时间 lcd_wcmd(0x01); /清除LCD的显示内容 delay(1); lcd_wcmd(0x06); /向左移动光标 lcd_pos(0); /设置显示位置为第一行的第1个字符 i = 0; while(dis3 i != 0) /显示字符BIG BIG WORLD lcd_wdat(dis3 i ); i+; delay(30); /控制两字之间显示速度 lcd_pos(0x40); /设置显示位置为第二行的第16个字符 i = 0; while(dis4 i != 0) lcd_wdat(dis4 i ); /显示字符 I LOVE WHUT i+; delay(30); /控制两字之间显示速度 flash(); delay(800); /控制停留时间 lcd_wcmd(0x01); /清除LCD的显示内容 delay(1); lcd_wcmd(0x06); /向左移动光标 lcd_pos(0); /设置显示位置为第一行的第1个字符 i = 0; while(dis5 i != 0) /显示字符WANG DAO YUN lcd_wdat(dis5 i ); i+; delay(30); /控制两字之间显示速度 lcd_pos(0x40); /设置显示位置为第二行的第16个字符 i = 0; while(dis6 i != 0) lcd_wdat(dis6 i ); /显示字符 0120909301213 i+; delay(30); /控制两字之间显示速度 flash(); delay(800); lcd_wcmd(0x01); /清除LCD的显示
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025个体工商户抵押借款合同范本
- 2025企业并购对劳动合同的影响
- 广东省深圳市福田区八校2026届数学八上期末考试试题含解析
- 2026届安徽省合肥市庐阳中学数学七年级第一学期期末统考模拟试题含解析
- 2026届江苏省睢宁县七年级数学第一学期期末达标检测试题含解析
- 2026届山东省平邑县数学七年级第一学期期末质量检测模拟试题含解析
- 美容行业产品知识详解
- 2026届河南省商丘市名校数学七年级第一学期期末教学质量检测模拟试题含解析
- 邮储银行丽水市莲都区2025秋招笔试管理营销专练及答案
- 2025物业租赁意向合同
- 篮球教学室内课件
- 2025年四川省高考历史试卷(含答案)
- 2025党考试题及答案
- 乳牙龋齿护理配合过程
- 2025至2030中国轨道交通行业发展分析及投资前景与战略规划报告
- 健康教育和健康促进课件
- 新东方合同协议书
- 2025年北京海淀区九年级中考二模数学试卷试题(含答案详解)
- 油漆粉刷协议书
- ktv营销经理雇佣合同协议
- 2025年全运会知识竞赛试题及答案
评论
0/150
提交评论