#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit rs=P2^6;
sbit rw=P2^5;
sbit en=P2^7;
uchar shuma[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};
// 0 1 2 3 4 5 6 7 8
void delay(uchar a)
{
uint i,j;
for(i=0;i<=110;i++)
for(j=0;j<=a;j++);
}
void write_com(uchar com)
{
rs=0;
rw=0;
en=0;
P0=com;
en=1;
delay(10);
en=0;
}
void write_dat(uchar dat)
{
rs=1;
rw=0;
en=0;
P0=dat;
en=1;
delay(10);
en=0;
}
void init_1602()
{
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
}
void main()
{
init_1602();
write_com(0x80+2);
write_dat('I');
write_com(0x80+4);
write_dat('a');
write_com(0x80+5);
write_dat('m');
write_com(0x80+7);
write_dat('i');
write_com(0x80+8);
write_dat('r');
write_com(0x80+9);
write_dat('o');
write_com(0x80+10);
write_dat('n');
write_com(0x80+12);
write_dat('m');
write_com(0x80+13);
write_dat('a');
write_com(0x80+14);
write_dat('n');
关键字:C51 LCD1602显示
引用地址:
C51_LCD1602显示
推荐阅读最新更新时间:2024-03-16 14:49
单片机c语言教程第十六章--C51指针的使用
指针就是指变量或数据所在的存储区地址。如一个字符型的变量 STR 存放在内存单元DATA 区的 51H 这个地址中,那么 DATA 区的 51H 地址就是变量 STR 的指针。在 C 语言中 指针是一个很重要的概念,正确有效的使用指针类型的数据,能更有效的表达复杂的数据 结构,能更有效的使用数组或变量,能方便直接的处理内存或其它存储区。指针之所以 能这么有效的操作数据,是因为无论程序的指令、常量、变量或特殊寄存器都要存放在内 存单元或相应的存储区中,这些存储区是按字节来划分的,每一个存储单元都能用唯一的 编号去读或写数据,这个编号就是常说的存储单元的地址,而读写这个编号的动作就叫做寻 址,通过寻址就能访问到存储区中的任一个能访问的
[单片机]
【Keil5 C51】AT89C52 做流水灯实验(调用C51的库函数_crol_)
_crol_ 函数的介绍 Cx51 User’s Guide Summary #include intrins.h unsigned char _crol_ ( unsigned char c, /* character to rotate left */ unsigned char b); /* bit positions to rotate */ Description The _crol_ routine rotates the bit pattern for the character c left b bits. This routine is implemented as an intrin
[单片机]
连接多个相同地址I2C设备的C51程序
本人初学C,曾为这个问题大伤脑筋^_^,就是一个单片机系统有两个以上的相同地址的I2C设备,无法用两个同一对SDA/SCL引脚 #include stc89c51.h #include iic.h sbit scl0=P3^5; sbit sda0 = P3^4; sbit scl1= P3^3; sbit sda1 = P3^2; //这里只写了两个I2C设备,如果需要可以再加上 sbit scl2=xx; sbit sda2=xx; 实际上多个设备的scl脚可以共用 unsigned char iic_delay_time = 8; void scl(devi
[单片机]
C51单片机串口通信之上位机交互
概述:上位机(PC机)向MCU发送指令,MCU串口接收指令并根据列表发送响应。 全局变量声明 #include E51Pro.h BYTE ComBuf ;//串口通讯数据缓存,发送和接收都使用 UINT nAddress;//ROM中地址计数 UINT nTimeOut;//超时计数 ProWork pw;//编程器一般操作 1 定时器延时 1.1 微秒级 void Delay_us(BYTE nUs)//微秒级延时 255us { TH0=0; TL0=0; TR0=1; while(TL0 nUs); //利用T0做定时计数器,循环采样,直到达到定时值 TR
[单片机]
单片机C语言教程:C51数组的使用
数组不过就是同一类型变量的有序集合。形象的能这样去理解,就像一个 学校在操场上排队,每一个级代表一个数据类型,每一个班级为一个数组,每一个学生就是 数组中的一个数据。数据中的每个数据都能用唯一的下标来确定其位置,下标能是一维 或多维的。就如在学校的方队中要找一个学生,这个学生在 I 年级 H 班 X 组 Y 号的,那么 能把这个学生看做在 I 类型的 H 数组中(X,Y)下标位置中。数组和普通变量一样,要 求先定义了才能使用,下面是定义一维或多维数组的方式: “数据类型”是指数组中的各数据单元的类型,每个数组中的数据单元只能是同一数据 类型。“数组名”是整个数组的标识,命名方法和变量命名方法是一样的。在编译时系统会 根据数
[单片机]
一种C51单片机并行口扩展设计及应用
1 引言 C51单片机是我们生活中最常用的系列,MCS-51系列单片机有4个并行口(P0,P1,P2,P3口),但对一个稍微复杂的应用系统来说,真正可供用户使用的并行口,只有P1口可用,况且常常因扩展I2C和SPI的器件需占用某些P1口,迫使用户不得不扩展并行口以满足实际的需要。习惯上,常用的并行口接口芯片有8255、8155,这两种芯片功能比较齐全,可以使用在相对比较复杂的系统中,但如是对一般的系统而言,这些功能往往闲置不用。那么就可以选用一些本来闲置不用的口线作为选通信号来进行并行口的扩展,这样就能充分利用单片机有限的I/O资源,在本设计中是将P1口扩展成一个或几个8位并行口,在每一个八位口上接入8个发光二极管做为输出,二
[单片机]
独立按键c语言代码,C51独立按键的识别示例程序
每按一次独立键盘的S2键,与P1口相连的一个发光二极管往下移动一位。 #include sbit BY1=P3^4; //定义按键的输入端S2键 unsigned char count; //按键计数,每按一下,count加1 unsigned char temp; unsigned char a,b; void delay10ms(void) //延时程序 {undefined unsigned char i,j; for(i=20;i 0;i--) for(j=248;j 0;j--); } key() //按键判断程序 {undefined if(BY1==0) //判断是否按下键盘,当单片机上电时所有IO口为//高电平,S
[单片机]
单片机解码万能红外遥控器C51程序
使用方法:打开串口调试助手,设置为9600 bps 单片机这边用11.0592MHz的晶振,使用sm0038或者其他型号的红外接收头按下面的电路连接好,其中out直接与单片机的p3.2脚相连.按下遥控器,串口调试助手便会出现解码值. /******************************************************************/ /* 本程序的蓝本从网上搜集,经修改并注释,万能遥控器解码成功 */ /* 晶振:11.0592MHz */ /* 整理与测试:单片机教程网 http://www.51hei.com 胡琴 2012.5.15
[单片机]