目录

  • 1 项目1  电子琴设计
    • 1.1 课程概述
    • 1.2 蜂鸣器发声
    • 1.3 不同音阶发声和控制
    • 1.4 多功能电子琴
      • 1.4.1 播放一首乐曲的程序编写与仿真
      • 1.4.2 具有多功能电子琴设计与实施
      • 1.4.3 具有多功能电子琴程序编写和仿真
      • 1.4.4 具有多功能电子琴设计--直播程序讲解
  • 2 项目2  LED流水灯设计
    • 2.1 左右依次循环点亮的流水灯设计
    • 2.2 多种花样点亮的流水灯设计
    • 2.3 可调节型多功能亮灯的流水灯设计
  • 3 项目3 直流电机控制
    • 3.1 直流电机的双向转动设计
    • 3.2 转速可调的直流电机转动设计
    • 3.3 多功能直流电机双向转动设计
  • 4 项目4  步进电机控制
    • 4.1 步进电机的双向转动设计
    • 4.2 转速可调的步进电机转动设计
    • 4.3 多功能步进电机双向转动设计
  • 5 项目5 直流电机、步进电机、舵机综合设计
    • 5.1 综合设计
  • 6 项目6 广告灯设计
    • 6.1 在8*8点阵上显示一个字符
    • 6.2 在16*16点阵上显示一个汉字
    • 6.3 在16*16点阵上显示滚动汉字
  • 7 项目7 液晶显示设计
    • 7.1 在1602液晶屏上显示字符
    • 7.2 在1602液晶屏上显示自定义符号和图形
  • 8 电子万年历的制作
    • 8.1 简单万年历的制作
    • 8.2 复杂万年历的制作
    • 8.3 创新万年历的制作
  • 9 作品考核--制作18B20温控风扇
    • 9.1 任务书(拟实现的主要功能)
      • 9.1.1 单片机相关资料
      • 9.1.2 18B20相关资料
      • 9.1.3 PWM脉宽调制资料
      • 9.1.4 74H573介绍
      • 9.1.5 数码管介绍
    • 9.2 原理图、PCB图、焊接图、仿真图
    • 9.3 程序
在1602液晶屏上显示字符

1、在1602液晶屏上显示字符




2、在1602液晶屏上显示字符--程序编写


3、在1602液晶屏上显示字符--电路仿真


参考程序:

LCD1602.H

/********************************************

**程序名:LCD1602.H

**编写时间:2020.5.3

**硬件环境:stc89c52rc

12MHZ

**接口:RS RW E D0 ~~~D7 

**修改日志:无

**说明:在qc1602液晶上测试成功,没有使用到全局变量

**Right version of all

********************************************/

#ifndef __LCD1602_H__

#define __LCD1602_H__

#include<intrins.h>

#define uchar unsigned char

#define uint unsigned int

#define LCD1602_DATA P0 //定义LCD1602的数据口为P0口                               

sbit RS_1602=P2^7;

sbit RW_1602=P2^6;

sbit E_1602=P2^5;

extern void LCD1602_delay();

extern void LCD1602_check_busy();

extern void LCD1602_write_com( uchar );

extern void LCD1602_write_data(uchar);

extern void LCD1602_write_char(uchar x,uchar y,uchar dat);

//extern void LCD1602_write_string(uchar ,uchar,uchar *, uchar );

extern void LCD1602_write_CGRAM(uchar *);

extern void LCD1602_init( void );

#endif

LCD1602.C

/********************************************

**程序名:LCD1602.C

**编写时间:2020.5.3

**硬件环境:stc89c52rc

12MHZ

**接口:RS RW E D0 ~~~D7 

**修改日志:无

**说明:在qc1602液晶上测试成功,没有使用到全局变量

**Right version of all

********************************************/

#include<AT89X52.h>

#include"LCD1602.h"

/********************************************

**函数名称:LCD1602_delay

**函数功能:用于LCD1602的延时

**入口参数:无

**输出参数:无

**备注:

********************************************/

void LCD1602_delay()         //延时程序

{

uchar i,j;

for(i=0;i<10;i++)

for(j=0;j<20;j++); 

}


/********************************************

**函数名称:LCD1602_check_busy

**函数功能:用于LCD1602的查忙

**入口参数:无

**输出参数:无

**备注:

********************************************/

void LCD1602_check_busy( )     //查询忙碌标志信号程序

{

uchar busy;

do

{

E_1602=0;

RW_1602=1;

RS_1602=0;

E_1602=1;

busy=LCD1602_DATA;

E_1602=0;    

LCD1602_delay();

} while(busy&&0x10==1);

}

/********************************************

**函数名称:LCD1602_write_com

**函数功能:向LCD1602写入指令

**入口参数:com

**输出参数:无

**备注:

********************************************/

void LCD1602_write_com( uchar com ) //写指令

{

LCD1602_check_busy();

E_1602=0;          

RW_1602=0;

RS_1602=0;

E_1602=1;

LCD1602_DATA=com;

E_1602=0;

}

/********************************************

**函数名称:LCD1602_write_data

**函数功能:向LCD1602写入指令

**入口参数:com

**输出参数:无

**备注:

********************************************/

void LCD1602_write_data(uchar a ) //写数据到LCM程序

{

       LCD1602_check_busy();

       E_1602=0;

       RW_1602=0;

       RS_1602=1;

       E_1602=1;

       LCD1602_DATA=a;

       E_1602=0;

}

/********************************************

**函数名称:LCD1602_write_string

**函数功能:向LCD1602指定位置写入一个字符串

**入口参数:com

**输出参数:无

**备注:x:第几行  y,第几列  dat:数组  num:

********************************************/

void LCD1602_write_string( uchar x,uchar y,uchar *dat, uchar num )

{

  uchar i;

uchar m=0;

if(x==0)

{

LCD1602_write_com(0x80+y);

for(i=0;i<num;i++)    //发送数据第一行

{

LCD1602_write_data(*(dat+i));

}

}

else if(x==1)

{

LCD1602_write_com(0xc0+y);

for(i=0;i<num;i++)   //发送数据第一行

{

LCD1602_write_data(*(dat+i));

}

}

}

/********************************************

**函数名称:LCD1602_init

**函数功能:LCD1602初始化程序

**入口参数:无

**输出参数:无

**备注:

********************************************/

void LCD1602_init( )           //启动LCM程序(初始化程序)

{

   /*这里要多次激活液晶*/    

       LCD1602_write_com(0x38);//设置显示模式

   _nop_();_nop_();

   LCD1602_write_com(0x38);//设置显示模式 

   _nop_();_nop_();

   LCD1602_write_com(0x38);//设置显示模式  

   _nop_();_nop_();    

       LCD1602_write_com(0x0c);//开显示,不显示光标,不闪烁,00001100 

   LCD1602_write_com(0x01);//显示清屏

       LCD1602_write_com(0x06);//当读取或者写一个字符后地址指针加一

   LCD1602_write_com(0x0c);//开显示,不显示光标,不闪烁,00001100 

}

main.C


#include <reg51.h>

#include <lcd1602.h>

#define uchar unsigned char 

#define uint unsigned int

void main()

{

       uchar code table1[] = {"ahbvc.edu.cn"}; 

      uchar code table2[] = {"18YingYongDianZi"};

LCD1602_init();

while(1)

              LCD1602_write_string(0,2,table1,12);

LCD1602_write_string(1,0,table2,16);

}

}