学了一段时间的51单片机,自己编了一些简单的程序,实现了一些比较简单的功能,我会把这些程序在后面几篇博客中贴上,供需要的人参考。
这些程序都是我调试好的,都能正常使用只是可能有些功能我没有写完,不过我都加了注释提醒,也比较简单,有时间的话,我会补全的。
有些地方写的不妥或不简洁,是因为能力所致,知识欠缺,现在正在恶补……
下面的程序是控制1602液晶上下两行分别显示JUST DO IT !和DO YOUR BEST!两句话,并整屏左右移动三次,最后静态显示出来
#include
#define uchar unsigned char
#define uint unsigned int
uchar code table1[]="JUST DO IT !";
uchar code table2[]="DO YOUR BEST !";
sbit lcden=P2^7;
sbit rd=P2^6;
sbit wr=P2^5;
uchar num,t;
void delay(uint z) // 延迟函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--)
;
}
void write_com(uchar com) //写指令
{
rd=0;
wr=0;
delay(5);
lcden=1;
P0=com;
delay(5);
lcden=0;
}
void write_date(uchar date) //写数据
{
rd=1;
wr=0;
delay(5);
lcden=1;
P0=date;
delay(5);
lcden=0;
}
void init() //初始化
{
write_com(0x38);
write_com(0x0e);
write_com(0x06);
write_com(0x01);
}
void main()
{
init();
write_com(0x80+0x10);
for(num=0;num<12;num++) //分次写入数据
write_date(table1[num]);
delay(20);
write_com(0x80+0x52);
for(num=0;num<14;num++)
write_date(table2[num]);
delay(20);
for(t=0;t<=2;t++) //来回整屏移动三次
{
for(num=0;num<=15;num++)
{ write_com(0x18); //整屏左移
delay(200); //移动间隔为ms
}
delay(1000);
for(num=0;num<=15;num++)
{ write_com(0x 1c); //整屏右移
delay(200);
}
delay(1000);
}
for(num=0;num<=15;num++)
{ write_com(0x18);
delay(200);
}
while(1);
}
关键字:1602液晶 动态显示
引用地址:
1602液晶动态显示
推荐阅读最新更新时间:2024-03-16 14:29
AVR六个IO口驱动液晶LCD1602
液晶LCD1602比中文大液晶12864较容易驱动,这个驱动程序只用六个单片机IO口驱动,可以减少四个IO口,套用也方便... //LCD1602.h /*--------------------------------------------------------------- 要使用本驱动,改变下面配置信息即可 注意:RW要接地 -----------------------------------------------------------------*/ #define LCD_EN_PORT PORTD //以下2个要设为同一个口 #define LCD_EN_DDR DDRD #define LCD_R
[单片机]
51单片机:6位数码管动态显示,从600000开始,每0.5秒加1
原理图 ##//源码 #include reg52.h #include stdlib.h #define uint unsigned long #define uchar unsigned char sbit N1 = P1^0; sbit N2 = P1^1; sbit N3 = P1^2; sbit N4 = P1^3; sbit N5 = P1^4; sbit N6 = P1^5; uchar code table ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uint num; int a,t1=0; void delayms(uint
[单片机]
51单片机配合超声波测距以及用1602液晶进行显示
/*超声波测距程序,利用51单片机的外部中断,如果有时候发现不好使,建议直接使用杜邦线连接引脚*/ #include reg52.h #include intrins.h typedef unsigned char uchar; typedef unsigned int uint; /*超声波模块为HC-SR04,触发信号给一个至少10us的高电平,之后模块会自动发送8个40kHz的方波信号, 一旦模块收到回响信号,Echo引脚便输出高电平,直到接收不到。这里有个问题是关于时间计算的问题,说明书上说的是 按Echo引脚的高电平持续时间计算,但是声波的路程,不应该是从声波发出的时候就已经开始了吗?这个程序使按照
[单片机]
LCD1602液晶显示DS1302实时时钟Proteus仿真
Proteus仿真图: 仿真程序: #include reg52.h #include intrins.h #include string.h #define uint unsigned int #define uchar unsigned char //*******LCD******* sbit LCDRS=P2^0; //LCD数据/命令选择端 sbit LCDRW=P2^1; sbit LCDEN=P2^2; //LCD使能新号端 //******DS1302****** sbit IO=P1^0; //1302数据线 sbit SCLK=P1^1; //1302时钟线 sbit
[单片机]
单片机DHT11温湿度+1602液晶显示程序
DHT11驱动程序参考 http://www.51hei.com/bbs/dpj-112282-1.html http://www.51hei.com/bbs/dpj-38067-1.html 1602驱动程序参考 http://www.51hei.com/bbs/dpj-24671-1.html /********************************************************************************************* 程序名: DHT11-1602 编写人: fby 编写时间: 2019年3月21日 硬件支持: STC89C52RC D
[单片机]
LCD1602液晶显示汉字显示程序带仿真
//建立 工 字字模并在第一行第一列显示 //P155 参考程序: GONG_ZI() //单片机仿真文件下载: http://www.51hei.com/bbs/dpj-23789-1.html #include reg51.h #include intrins.h //库函数头文件,代码中引用了_nop_()函数 sbit RS=0xb0; //P3.0 sbit RW=0xb1; //P3.1 sbit E= 0xb2; //P3.2 void lcd_w_cmd(unsigned char com); void lcd_w_dat(unsigned char dat); unsigned char
[单片机]
AVR单片机ATMEGA16 1602液晶驱动程序及心得
我自己研发的AVR微控制器芯片开发板,1602液晶屏实验成功!我很欣慰.写了一整天的程序,反复实验,最终在凌晨0点.终于成功了. 在此过程中,最大的问题莫过于那个所谓配套的1602液晶屏数据手册!这个手册简直是误人子弟,里面资料写的很含糊.并且有错误,而导致我反复试验失败,最终,我使用了通用的1602液晶屏数据手册,才得以成功. 我自制的AVR开发板尺寸和我买的51开发板差不多大小,ATmega16最小系统,8位数码管,蓝光流水灯,isp编程接口.过载保护保险丝,两个74hc573锁存器.1602液晶屏都已焊接完成,万用板是12X18cm的单孔玻纤板(质量不太好,便宜没好货).现在我才发现不够用,模块数量相同的两块实验板
[单片机]
51单片机驱动1602液晶汇编语言程序
LCMRS EQU P2.4 LCMRW EQU P2.5 LCMEN EQU P2.6 LCMDATA EQU P0 ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV SP,#60H LCALL LCMSET LCALL LCMCLR MOV A,#80H LCALL LCMWR0 MOV DPTR,#TAB0 LCALL LCMWR2 MOV A,#0C0H LCALL LCMWR0 MOV DPTR,#TAB1 LCALL LCMWR2 SJMP $ TAB0: DB I AM YUAN MING ,00H TAB1: DB NICE TO MEET YOU ,00H LCMLAY:
[单片机]