第一范文网 - 专业文章范例文档资料分享平台

基于单片机的1602液晶显示电路设计 - 图文

来源:用户分享 时间:2025/5/29 6:00:54 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

图2-8 内部时钟方式

图2-9 外部时钟电路

本次研究采用的是内部时钟方式,晶振采用12M晶振,电容为30?F,电路图如图2-8。

第三章 软件设计

本次研究设计主要涉及到电路图的设计,程序的编写,程序的烧录,分别用到Altium Designer ,keil, AVR_fighter。下面将对这三个软件一一进行简单的介绍。

3.1 软件设计思路

通过对AT89S52单片机和LCD1602的基本了解,利用Altium designer软件绘制出电路图进行仿真,根据电路图焊接出电路板,并进行测试。利用keil软件编写c程序,程序编写无误后,将程序生成.hex文件,利用AVR_fighter烧录软件将程序烧录到单片机,得到设计结果,即LCD1602液晶显示屏上显示出字符。

3-1 原理框图

10

3.1.1 Altium Designer

Altium Designer 是原Protel软件开发商Altium公司推出的一体化的电子产品开发系统,主要运行在Windows操作系统。这套软件通过把原理图设计、电路仿真、PCB绘制编辑、拓扑逻辑自动布线、信号完整性分析和设计输出等技术的完美融合,为设计者提供了全新的设计解决方案,使设计者可以轻松进行设计,熟练使用这一软件必将使电路设计的质量和效率大大提高。

主要功能有: 1 原理图设计 2 印刷电路板设计 3 FPGA的开发 4 嵌入式开发 5 3D PCB设计 3.1.2 keil

Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。

优点:

⒈Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。

⒉与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。

3.1.3 AVR_fighter

AVR_fighter是AVR单片机ISP下载编程软件,此软件必须将编写的c程序利用keil软件生成.hex文件才能烧录到单片机,操作界面如图3-2所示:

11

图3-2 AVR_fighter

3.2 程序设计

利用keil软件编写程序,程序如下: #include //52寄存器文件 #include

typedef unsigned char BYTE; //用BYTE代替unsigned char typedef unsigned int WORD;//WORD代替unsigned int typedef bit BOOL ;//用BOOL代替bit

sbit rs = P2^6; //复位端 sbit rw = P2^5; //写数据端 sbit ep = P2^7; //使能端

BYTE code dis1[] = {\BYTE code dis2[] = {\

/*******************延时函数********************/ delay(BYTE ms)

{

12

BYTE i; while(ms--) {

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

_nop_();

_nop_(); //空执行消耗CPU时间达到等待的效果 _nop_(); _nop_(); } } }

/*******************LCD侧忙函数********************/ BOOL lcd_bz()

{ BOOL result; rs = 0; rw = 1; ep = 1; _nop_(); _nop_(); _nop_(); _nop_();

result = (BOOL)(P0 & 0x08); //检测P0最高位是否为1 ep = 0;

return result;//返回侧忙结果 }

lcd_wcmd(BYTE cmd)

{ // 写入指令数据到LCD while(lcd_bz()); rs = 0; rw = 0; ep = 0; _nop_(); _nop_();

P0 = ((cmd<<4)|(cmd>>4)); //将8位指令通过P0口传给1602 _nop_();

_nop_();//用于产生一个脉冲宽度 _nop_(); _nop_(); ep = 1; _nop_(); _nop_(); _nop_();

13

基于单片机的1602液晶显示电路设计 - 图文.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c1jvfp1tycz3j4le87moy0088t3x4qm00jfn_4.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top