51单片机_1602液晶自定义心形图案

发布者:WhisperingGlow最新更新时间:2015-06-24 来源: 51hei关键字:51单片机  1602液晶  心形图案 手机看文章 扫描二维码
随时随地手机看文章
# include

unsigned char table1[]={0x03,0x07,0x0f,0x1f,0x1f,0x1f,0x1f,0x1f,
                         0x18,0x1E,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
                         0x07,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
                         0x10,0x18,0x1c,0x1E,0x1E,0x1E,0x1E,0x1E,
                         0x0f,0x07,0x03,0x01,0x00,0x00,0x00,0x00,
                         0x1f,0x1f,0x1f,0x1f,0x1f,0x0f,0x07,0x01,
                         0x1f,0x1f,0x1f,0x1f,0x1f,0x1c,0x18,0x00,
                         0x1c,0x18,0x10,0x00,0x00,0x00,0x00,0x00};//心图案
#define   CLEARSCREEN   LCD_write_command(0x01)

/**************定义接口************************/

#define   LCDIO    P0
sbit LCD1602_RS=P2^2;    
sbit LCD1602_RW=P2^1;   
sbit LCD1602_EN=P2^0; 

/**************定义函数************************/
void LCD_write_command(unsigned char command);//写入指令函数
void LCD_write_dat(unsigned char dat);//写入数据函数
void LCD_set_xy( unsigned char x, unsigned char y );//设置显示位置函数
void LCD_dsp_char( unsigned x,unsigned char y,unsigned char dat);//显示一个字符函数
void LCD_dsp_string(unsigned char X,unsigned char Y,unsigned char *s);//显示字符串函数
void LCD_init(void);//初始化函数
void delay_nms(unsigned int n);//延时函数
/********************************************/

/************初始化函数****************/
void LCD_init(void)

CLEARSCREEN;//clear screen 
LCD_write_command(0x38);//set 8 bit data transmission mode 
LCD_write_command(0x0c);//open display (enable lcd display)
LCD_write_command(0x80);//set lcd first display address 
CLEARSCREEN;//clear screen
}
/****************************************************/

/**************写指令函数********************************/ 
void LCD_write_command(unsigned char command)
{
    LCDIO=command;
    LCD1602_RS=0;   
    LCD1602_RW=0;
    LCD1602_EN=0;
    LCD1602_EN=1;
    delay_nms(10);
}
/***************************************************/
/****************写数据函数************************/
void LCD_write_dat(unsigned char dat)
{
LCDIO=dat;
LCD1602_RS=1;
LCD1602_RW=0;
LCD1602_EN=0;
delay_nms(1);
LCD1602_EN=1;
}
/****************************************************/

/***************设置显示位置**************************/
void LCD_set_xy( unsigned char x, unsigned char y )
{
unsigned char address;
if (y == 1) 
   address = 0x80 + x;
else 
      address =0xc0+ x;
LCD_write_command(address); 
}
/***************************************************/

/****************显示一个字符**********************/
void LCD_dsp_char( unsigned x,unsigned char y,unsigned char dat)
{
LCD_set_xy( x, y ); 
LCD_write_dat(dat);
}
/**********************************************/

/***************显示字符串函数***************/
void LCD_dsp_string(unsigned char X,unsigned char Y,unsigned char *s)
{
     LCD_set_xy( X, Y ); 
     while (*s) 
     {
       LCD_write_dat(*s);   
       s ++;
     }
}
/***********************************************/

/********** 延时**********************/
void delay_nms(unsigned int n)      
{
     unsigned int i=0,j=0;
     for (i=n;i>0;i--)
     for (j=0;j<10;j++); 
}
/**************************************/

/***********主函数**************/
void main(void)
{
unsigned char i,j,k,tmp;
LCD_init();
delay_nms(100);
tmp=0x40;//设置CGRAM地址的格式字
k=0;
for(j=0;j<8;j++)
   {
      for(i=0;i<8;i++)
       {
         LCD_write_command(tmp+i); // 设置自定义字符的 CGRAM 地址 
         delay_nms(2);
         LCD_write_dat(table1[k]); // 向CGRAM写入自定义字符表的数据
         k++;
         delay_nms(2);
       }
      tmp=tmp+8;
    }
   LCD_dsp_string(1,1,"heart:      ");//在第一行第一列显示“heart”
   for (i=0;i<4;i++)
     {
       LCD_dsp_char( 10+i,1,i);//在第一行第10列位置显示心图案的上半部
       delay_nms(1);
     }
   for (i=4;i<8;i++)
     {
       LCD_dsp_char( 10+i-4,2,i);//在第二行第10列位置显示心图案的下半部
       delay_nms(1);
     }
   while (1);
}
/************************   感谢陈青华老师的帮助********************************************/

关键字:51单片机  1602液晶  心形图案 引用地址:51单片机_1602液晶自定义心形图案

上一篇:51单片机学习之2-流水灯
下一篇:80C51单片机通过模拟SPI口驱动UZZ9001读写操作

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

51单片机3个外部中断源中断响应编程举例
某系统有3个外部中断源1、2、3,当某一中断源变为低电平时,便要求CPU进行处理,它们的优先处理次序由高到低依次为3、2、1,中断处理程序的入口地址分别为1000H,1100H,1200H。试编写主程序及中断服务程序(转至相应的中断处理程序的入口即可)。 答:若仅在/INT0引脚接3个外部中断源 ORG 0000H LJMP MAIN ORG 0003H LJMP INT_EX0 ORG 0030H MAIN: CLR IT0 ; 采用低电平有效中断
[单片机]
51单片机开发板的主要功能 51单片机开发板能做什么
51单片机开发板是一种基于8051系列单片机芯片的开发板,具有丰富的功能和广泛的应用。下面将详细介绍51单片机开发板的主要功能以及能够实现的各种应用。 一、基本功能: 通用输入输出:51单片机开发板具有多个通用输入输出引脚,可以连接各种外部设备和传感器,实现数据的输入和输出。 时钟管理:开发板通常会集成时钟电路,包括晶振、时钟发生器等,可以提供稳定的时钟信号给单片机使用。 存储器管理:开发板通常会搭载闪存、EEPROM、SRAM等各种类型的存储器,用于存储程序代码和数据。 电源管理:开发板通常会提供多种电源供电方式,可以选择外部电源或者USB供电。 通信接口:如串口、SPI、I2C等,可以连接各种外部设备进行数据通信
[单片机]
MCS-51单片机实用子程序库(三)
(23)标号: BHD2 功能:双字节BCD码小数转换成双字节十六进制小数 入口条件:待转换的双字节BCD码小数在R4、R5中。 出口信息:转换后的双字节十六进制小数在R2、R3中。* 影响资源:PSW、A、R2~R6 堆栈需求: 2字节 BHD2: MOV R6,#10H ;准备计算两个字节小数 BHD3: MOV A,R5 ;按十进制倍增 ADD A,R5 DA A MOV R5,A MOV A,R4 ADDC A,R4 DA A MOV R4,A MOV A,R3 ;将进位标志移入结果中 RLC A MOV R3,A MOV A,R2 RLC A MOV R2,A DJNZ R6,BHD3 ;共计算16bit小数 MOV
[单片机]
Keil C51单片机变量的使用方法详细介绍
引言 8051内核单片机是一种通用单片机,在国内占有较大的市场份额。在将C语言用于51内核单片机的研究方面,Keil公司做得最为成功。由于51内核单片机的存储结构的特殊性,Keil C51中变量的使用与标准C有所不同。正确地使用变量,有利于获得高效的目标代码。下面详细介绍Keil C51中变量的使用方法。 1 CPU存储结构与变量的关系 变量都需要有存储空间,存储空间的不同使得变量使用时的工作效率也不同。 标准C的典型运行环境是8086(含IA-32系列)内核,其存储结构是CPU内部有寄存器,外部有存储器,寄存器的访问速度大大高于存储器的访问速度。在标准C中,不加特别定义的变量是放在存储器中的,使用register可以强制变量
[单片机]
Keil C<font color='red'>51单片机</font>变量的使用方法详细介绍
手把手教你学51单片机:硬件基础知识学习
一、电磁干扰 使用去耦电容来达到电磁兼容目的。 二、去耦电容的应用 类比电流和水流,可得到去耦电容的作用: (1)缓冲作用:防止电流不稳定时对电子元器件的冲击。 (2)稳定作用:稳定电压电流,使之不产生大的波动。 故该如何选取电容: (1)耐压值:一般选取系统电压的1.5倍到2倍。 (2)滤波电容:一般为0.1uf,滤除高频信号干扰,可加在电源处作为去耦高频电容。 (3)稳定电压:较大电流通过时会加大电容用来稳压。 三、三极管 3.1三极管分类 NPN、PNP 3.2三极管原理 3.2.1口诀 箭头指內PNP,导通电压顺箭头过,电压导通,电流控制。 3.2.2电流控制 三极
[单片机]
手把手教你学<font color='red'>51单片机</font>:硬件基础知识学习
用AT89C2051单片机制作水族箱加氧泵自控开关源程序
以下程序已实际调试运行通过) ; ---AT89C2051加氧泵控制器源程序-OK! org 0000h ajmp main nop org 01bh clr tr1 ajmp timon org 30h main:mov 40h,#00h mov 41h,#00h mov 42h,#00h mov 43h,#02h mov 44h,#00h mov 45h,#00h
[单片机]
51单片机keil提供的启动代码解析(STARTUP.A51)
1.由Keil C生成的启动代码 程序清单1.1 AT89C51启动代码 $NOMOD51 //不使用51默认的特殊功能寄存器 ;------------------------------------------------------------------------------ ; This file is part of the C51 Compiler package ; Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc. ;------------------------------------------------------
[单片机]
51单片机时序及延时分析介绍
计算机工作时,是在统一的时钟脉冲控制下一拍一拍地进行的。这个脉冲是由单片机控制器中的时序电路发出的。单片机的时序就是CPU在执行指令时所需控制信号的时间顺序,为了保证各部件间的同步工作,单片机内部电路应在唯一的时钟信号下严格地控时序进行工作,在学习51单片机的时序之前,我们先来了解下时序相关的一些概念。 既然计算机是在统一的时钟脉冲控制下工作的,那么,它的时钟脉冲是怎么来的呢? 要给我们的计算机CPU提供时序,就需要相关的硬件电路,即振荡器和时钟电路。我们学习的8051单片机内部有一个高增益反相放大器,这个反相放大器的作用就是用于构成振荡器用的,但要形成时钟,外部还需要加一些附加电路。8051单片机的时钟产生有以下两
[单片机]
<font color='red'>51单片机</font>时序及延时分析介绍
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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