基于51单片机的1602LCD液晶反显程序

发布者:SerendipitySoul最新更新时间:2012-11-15 来源: 21ic 关键字:AT89S51  1602LCD液晶  反显程序 手机看文章 扫描二维码
随时随地手机看文章

/*1602LCD演示程序*/
/*单片机型号:AT89S51*/
/*晶振:11.0592MHZ*/
/*作者:http://www.51hei.com*/
/*编译环境:Keil 7.50A*/
/****包含头文件*****/
#include
#include
/******************端口定义可根据你的电路自行修改*******/
sbit rs=P3^5;
sbit rw=P2^7;
sbit cs=P3^4;
sbit ep=P3^4;/*****显示数据表*******/
unsigned char code dis1[] = {"xu han jun"};
unsigned char code dis2[] = {"best wishes"};
/********************
函数功能:LCD延时子程序
入口参数:ms
出口参数:
********************/
void delay(unsigned char ms)
{
unsigned char i;
while(ms--)
{
for(i = 0; i<250; i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
/********************
函数功能:测试LCD忙碌状态
入口参数:
出口参数:result
**********************/
bit lcd_bz()
{
bit result;
rs = 0;
rw = 1;
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
result = (bit)(P0 & 0x80);
ep = 0;
return result;
}
/*****************
函数功能:写指令数据到LCD子程序
入口参数:cmd
出口参数:
***************/
void lcd_wcmd(unsigned char cmd)
{
while(lcd_bz());//判断LCD是否忙碌
rs = 0;
rw = 0;
ep = 0;
_nop_();
_nop_();
P0 = cmd;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 0;
}
/*************************
函数功能:设定显示位置子程序
入口参数:pos
出口参数:
*************************/
void lcd_pos(unsigned char pos)
{
lcd_wcmd(pos | 0x80);
}
/***********************
函数功能:写入显示数据到LCD子程序
入口参数:dat
出口参数:
************************/
void lcd_wdat(unsigned char dat)
{
while(lcd_bz());//判断LCD是否忙碌
rs = 1;
rw = 0;
ep = 0;
P0 = dat;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 0;
}
/**********************
函数功能:LCD初始化子程序
入口参数:
出口参数:
***********************/
void lcd_init()
{
lcd_wcmd(0x38);
delay(1);
lcd_wcmd(0x0c);
delay(1);
lcd_wcmd(0x01);
delay(1);
lcd_wcmd(0x04);
delay(1);
}
/*****************
函数功能:主程序
入口参数:
出口参数:
********************/
void main(void)
{
unsigned char i;
lcd_init();// 初始化LCD
delay(10);
lcd_pos(0x0E);//设置显示位置
i = 0;
while(dis1[i] != '\0')
{
lcd_wdat(dis1[i]);//显示字符
i++;
}
lcd_pos(0x4E);// 设置显示位置
i = 0;
while(dis2[i] != '\0')
{
lcd_wdat(dis2[i]);// 显示字符
i++;
}
while(1);
}

关键字:AT89S51  1602LCD液晶  反显程序 引用地址:基于51单片机的1602LCD液晶反显程序

上一篇:基于TLC1549的单片机数字电压表程序
下一篇:用51单片机中断法解码pt2262无线遥控器

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

感应式循迹小车的设计与实现
   循迹小车是目前较为普遍的一项智能小车制作竞赛,该制作要求小车能寻着一条黑色轨迹前进直到终点,用达到终点的时间决定竞赛成绩。到达终点的时间越短,成绩越好。在整个设计过程中,循迹小车的寻迹电路是循迹小车的一个关键部件,传统的设计采用光电传感器作为寻迹器件。然而,光电传感器对环境的光线变化比较敏感,不适合在露天环境和光照比较强的地方开展活动。通过反复试验和尝试,作者提出把金属感应传感器用于循迹小车替代光电寻迹电路,用带不干胶的金属铝箔胶带贴在地面替代黑色轨迹线条,循迹小车寻着铝箔胶带轨道前进,无需光线介入,大大增加了寻迹小车活动的环境适应性。 1 硬件及电路     感应式循迹小车是由单片机控制系统、寻迹电路、电动机驱动电
[单片机]
感应式循迹小车的设计与实现
AT89S51单片机的硬件组成
AT89S51单片机的片内硬件组成结构如图2-1所示。它把那些作为控制应用所必需的基本功能部件都集成在一个尺寸有限的集成电路芯片上,具有如下功能部件和特性:      (1)8位微处理器(CPU)。      (2)数据存储器(128B RAM)。      (3)程序存储器(4KB FLASH ROM)。      (4)4个8位可编程并行I/O口(PO口、Pl口、P2口和P3口)。      (5)1个全双工的异步串行口。      (6)2个可编程的16位定时器/计数器。      (7)1个看门狗定时器。      (8)中断系统具有5个中断源、5个中断向量。      (9)特殊功能寄存器(SFR) 26个。  
[单片机]
<font color='red'>AT89S51</font>单片机的硬件组成
AT89S51单片机驱动扬声器实现报警器功能的设计
1. 用P1.0输出1KHz和500Hz的音频信号驱动扬声器,作报警信号,要求1KHz信号响100ms,500Hz信号响200ms,交替进行,P1.7接一开关进行控制,当开关合上响报警信号,当开关断开告警信号停止,编出程序。 2. 电路原理图 “单片机系统”区域中的P1.0端口用导线连接到“音频放大模块”区域中的SPK IN端口上; 在“音频放大模块”区域中的SPK OUT端口上接上一个8欧的或者是16欧的喇叭; 把“单片机系统”区域中的P1.7/RD端口用导线连接到“四路拨动开关”区域中的K1端口上; 3. 程序框图 4. 参考源程序 FLAG BIT 00H ORG 00H START: JB P1.7,STA
[单片机]
<font color='red'>AT89S51</font>单片机驱动扬声器实现报警器功能的设计
AT89S51单片机多路开关状态指示
  1. 实验任务   AT89S51单片机的P1.0-P1.3接四个发光二极管L1-L4,P1.4-P1.7接了四个开关K1-K4,编程将开关的状态反映到发光二极管上。(开关闭合,对应的灯亮,开关断开,对应的灯灭)。   2. 系统板上硬件连线   1. 把“单片机系统”区域中的P1.0-P1.3用导线连接到“八路发光二极管指示模块”区域中的L1-L4端口上;   2. 把“单片机系统”区域中的P1.4-P1.7用导线连接到“四路拨动开关”区域中的K1-K4端口上;   4. 程序设计内容   1. 开关状态检测   对于开关状态检测,相对单片机来说,是输入关系,我们可轮流检测每个开关状态,根据每
[单片机]
用<font color='red'>AT89S51</font>单片机多路开关状态指示
基于AT89S51的单片机无线双显示抢答器C代码
#include REG51.h #include STRING.H /****************************************************************** * 自定义Macro *******************************************************************/ //编码的均为反向编码 #define CLEAR 0x7f //定义清空的反码 #define LED_BEGIN 0x01 // 定义开始时数码管的显示 #define LED_FOUL 0x38 // 犯规后显示
[单片机]
6位数字显示频率计数器电路及51单片机源程序
1.频率计算器功能 利用AT89S51单片机的T0、T1的定时计数器功能,来完成对输入的信号进行频率计数,计数的频率结果通过8位动态数码管显示出来。要求能够对0-250KHZ的信号频率进行准确计数,计数误差不超过±1HZ。 2.电路原理图 3.程序设计内容 (1).定时/计数器T0和T1的工作方式设置,由图可知,T0是工作在计数状态下,对输入的频率信号进行计数,但对工作在计数状态下的T0,最大计数值为fOSC/24,由于fOSC=12MHz,因此:T0的最大计数频率为250KHz。对于频率的概念就是在一秒只数脉冲的个数,即为频率值。所以T1工作在定时状态下,每定时1秒中到,就停止T0的计数,而从T0的计数单元中读取计数
[单片机]
6位数字显示频率计数器电路及51单片机源<font color='red'>程序</font>
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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