51单片机 1602液晶显示静态字符

发布者:清新家园最新更新时间:2017-11-15 来源: eefocus关键字:51单片机  1602液晶  静态字符 手机看文章 扫描二维码
随时随地手机看文章
  1. #include   

  2. #define LCD1602_DB P0  

  3.   

  4. typedef unsigned char uchar;  

  5. typedef unsigned int uint;  

  6. typedef unsigned long ulong;  

  7.   

  8. sbit LCD1602_RS = P1^0;  

  9. sbit LCD1602_RW = P1^1;  

  10. sbit LCD1602_E = P1^5;  

  11.   

  12. void initLCD1602();  

  13. void LCDShowStr(uchar i, uchar j, uchar * pCh);  

  14. void LCDWaitRdy();  

  15. void LCDWrCmd(uchar cmd);  

  16. void LCDWrData(uchar dat);  

  17. void LCDSetCursor(uchar i, uchar j);  

  18.   

  19. void main() {  

  20.     initLCD1602();  

  21.     LCDShowStr(0, 1, "Hello world !");  

  22.     LCDShowStr(1, 1, "Chasing Waves");  

  23.     while (1) ;  

  24. }  

  25.   

  26. void LCDWaitRdy() {  

  27.     uchar state;  

  28.   

  29.     LCD1602_DB = 0xFF;      //使数据总线处于高电平  

  30.     LCD1602_RS = 0;         //选择命令模式  

  31.     LCD1602_RW = 1;         //选择读  

  32.     do {  

  33.         LCD1602_E = 1;      //开启液晶读写使能  

  34.         state = LCD1602_DB; //从数据总线上读取状态字  

  35.         LCD1602_E = 0;      //关闭液晶读写使能  

  36.     } while (state & 0x80); //重复直到bit7 == 0为止(不忙了)  

  37. }  

  38.   

  39. void LCDWrCmd(uchar cmd) {  

  40.     LCDWaitRdy();  

  41.     LCD1602_RS = 0;  

  42.     LCD1602_RW = 0;  

  43.     LCD1602_DB = cmd;  

  44.     LCD1602_E = 1;  

  45.     LCD1602_E = 0;  

  46. }  

  47.   

  48. void LCDWrData(uchar dat) {  

  49.     LCDWaitRdy();  

  50.     LCD1602_RS = 1;  

  51.     LCD1602_RW = 0;  

  52.     LCD1602_DB = dat;  

  53.     LCD1602_E = 1;  

  54.     LCD1602_E = 0;  

  55. }  

  56.   

  57. void LCDSetCursor(uchar i, uchar j) {  

  58.     uchar addr = (i == 0 ? j : 0x40 + j);  

  59.     LCDWrCmd(addr | 0x80);  

  60. }  

  61.   

  62. void LCDShowStr(uchar i, uchar j, uchar * pch) {  

  63.     LCDSetCursor(i, j);  

  64.     while (*pch != '\0') {  

  65.         LCDWrData(*pch++);  

  66.     }  

  67. }  

  68.   

  69. void initLCD1602() {  

  70.     LCDWrCmd(0x38);     //16 * 2显示,5 * 7点阵,8位数据接口  

  71.     LCDWrCmd(0x0C);     //显示器开,光标关闭  

  72.     LCDWrCmd(0x06);     //文字不动,地址自动加1  

  73.     LCDWrCmd(0x01);     //清屏  

  74. }  



关键字:51单片机  1602液晶  静态字符 引用地址:51单片机 1602液晶显示静态字符

上一篇:51单片机 带修改错误功能的计算器
下一篇:51单片机 UART串口通信

推荐阅读最新更新时间:2024-03-16 15:45

STC12C5406AD 1602液晶显示+LM35DZ 温度计
STC12C5406AD 晶振频率为12MHz 本程序已调试完成: 功能说明:STC12C5406AD+74HC164+1602液晶显示+LM35DZ+DS18B20温度计设计。 测量电压:采用8位AD测量,LM35DZ,DS18B20读出的温度值都非常准确。 #include stc12c5410ad.h //头文件 #include intrins.h #define uchar unsigned char//宏定义 #define uint unsigned int//宏定义 sbit RS=P3^4;//定义I/O的硬件接口 sbit E=P3^7; sbit A_B=P3^2; sbit CP=P3^3;
[单片机]
STC12C5406AD <font color='red'>1602</font><font color='red'>液晶</font>显示+LM35DZ 温度计
基于51单片机的无线温湿度控制系统
发射_DHT11程序 //宏定义 #define uchar unsigned char #define uint unsigned int //头函数 #include reg51.h #include intrins.h //无线模块 #include api.h #include nRF24L01P.h #include DHT11.h //LED 管脚定义 sbit TXLED_R=P1^3; sbit RXLED_Y=P1^5; //主机询问命令 uchar CMD ={0xaa,0xbb,0xcc,0xdd}; //主函数 void main() { TXLED_R=0;
[单片机]
基于<font color='red'>51单片机</font>的无线温湿度控制系统
基于51单片机modbusRTU从机设计
设计思想如下: modbus协议是以主从的方式通信的,也就是上位机发送指令,下位机应答机制,发起通信的一直是上位机,下位机只要应答就好了。 modbus协议被设计出来是针对PLC应用的,这里我们可以简单的模拟PLC环境,可以在单片机里面设计一块共享区,该区域是上位机和下位机共享的,均可以读取或写入该区域的值,所有的modbus协议都是针对该快区域的操作,下位机也是根据这块区域的值做相应的操作。 这块共享区我们用结构体来表示,这里我们只用了两个变量: /*modbus 16位值的定义,起始地址0000H,每一个值为16位 int型,占两个字节 */ struct MODBUS_ADD{ int LED_value;//地址:
[单片机]
51单片机实现温度采集与显示(二)
下面简单介绍一下DS18B20: DS18B20 是由 DALLAS 半导体公司推出的一种的“一线总线(单总线) ” 接 口的温度传感器。 与传统的热敏电阻等测温元件相比, 它是一种新型的体积小、 适用电压宽、 与微处理器接口简单的数字化温度传感器。 通过P37模拟单总线通信读取数据和发送命令 上面是DS18B20 的示意图,可以看出他与51单片机相连的只有一个管脚——P37,那么二者是如何通信的呢?——采用软件模拟单总线通信 DS18B20 时序包括如下几种: 初始化时序、 写(0 和 1) 时序、 读(0 和 1) 时序。 DS18B20 发送所有的命令和数据都是字节的低位在前。 初始化时序:简单来说,就是主机发送复位
[单片机]
<font color='red'>51单片机</font>实现温度采集与显示(二)
基于LabVIEW和MCS-51单片机实现数据采集与信息分析系统的设计
1、LabVIEW部分设计 1.1VISA简介 LabVIEW提供了功能强大的VISA库。VISA(Virtual Instrument Software Architecture)——虚拟仪器软件规范,是用于仪器编程的标准I/O函数库及其相关规范的总称。VISA库驻留于计算机系统中,完成计算机与仪器之间的连接,用以实现对仪器的程序控制,其实质是用于虚拟仪器系统的标准的API。VISA本身不具备编程能力,它是一个高层API,通过调用底层驱动程序来实现对仪器的编程,其层次如图1所示。VISA是采用VPP标准的I/O接口软件,其软件结构包含三部分,如图2所示。 与其他现存的I/O接口软件相比,VISA的I/O控制功能具有如下几个特
[测试测量]
基于LabVIEW和MCS-<font color='red'>51单片机</font>实现数据采集与信息分析系统的设计
stc51单片机怎么学, 先掌握STC单片机程序烧录方法!
今天我在这里和大家探讨一下关于 51单片机怎么学 这个话题。 08年我在大学里学习单片机课程的时候,学习内容主要包括单片机的发展历史,单片机的框架,单片机的寄存器,以及单片机的操作指令,用汇编语言实现一些简单的功能。 当时学习的时候知识课本知识,而又没有配套的开发板,可以让我们动手。 当时的感触就是一个字:难,两个字:枯燥。 也许大多数的同学和我是一样的,一大堆指令,感到非常的无趣,没有什么意思,考试也是一大堆理论知识。 当然现在大学里的课程可能已经做了升级,关于单片机编程以及 单片机C语言 这一块了不知道大学里有没有增加,课程有没有优化的更加人性化一点。 后来参加电赛,自己买了一个开发板,不断的编代码,实践。 刚开始用汇编语言,
[单片机]
51单片机编程中,编译出现Target not created情况
1.像往常一样新建工程选择的是51型号系列的单片机,插入的头文件是reg51,但是在编译的时候出现了以下问题 代码中的P2不能被定义,且出现Target not created 2.在了解之后,可以将单片机型号改为AT89C52,也就是52型号的,相应的插入的头文件也就是reg52 这样编译结果就不会出错了 3.出现上述问题的主要原因是头文件的不同会导致其中有些引脚的表示方式不同,导致编译器不能识别
[单片机]
在<font color='red'>51单片机</font>编程中,编译出现Target not created情况
基于51单片机和可编程逻辑器件实现LED显示屏的硬件设计
0 引言 LED显示屏主要由电流驱动电路及LED点阵阵列、控制系统和PC端管理软件三部分构成(图1)。控制系统负责接收、转换和处理各种外部信号,并实现扫描控制,然后驱动LED点阵显示需要的文字或图案。控制系统作为LED显示屏的核心部分,直接决定了显示屏的显示效果和性能的优劣。本文详细分析采用Verilog HDL对ATF1508AS进行编程,实现双口RAM访问和产生LED点阵驱动电路所需的各种时序信号。 1 LED显示屏的基本结构及关键技术 本系统设计中,控制系统采用单片机+CPLD的方案来实现,整个控制系统可分为:信号接收及处理模块和CPLD的扫描控制模块和LED点阵驱动模块,如图1 所示。本系统的关键技术是使用双口
[单片机]
基于<font color='red'>51单片机</font>和可编程逻辑器件实现LED显示屏的硬件设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved