基于51单片机的12864驱动

/**************dis_12864.h***************/

#include <reg52.h>

#ifndef __DIS_12864_H__

#define __DIS_12864_H__

#define uchar unsigned char

#define uint  unsigned int

/*12864端口定义*/

#define LCD_data  P0             //数据口

sbit LCD_RS  =  P1^0;            //寄存器选择输入

sbit LCD_RW  =  P1^1;            //液晶读/写控制

sbit LCD_EN  =  P2^5;            //液晶使能控制

sbit LCD_PSB =  P1^2;            //串/并方式控制

/*函数声明*/

void delay(int ms);

void lcd_init();

void beep();

void  dataconv();

void lcd_pos(uchar X,uchar Y);  //确定显示位置

void zifu_dis (uchar X,uchar Y,uchar *dis);

#endif

/**************dis_12864.c***************/

#include <dis_12864.h>

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

//  延时函数

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

void delay(int ms)

{

while(ms--)

{

uchar i;

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

{

; ; ; ;

}

}

}

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

/*检查LCD忙状态                                                    */

/*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。      */

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

bit lcd_busy()

{

bit result;

LCD_RS = 0;

LCD_RW = 1;

LCD_EN = 1;

delay(1);

result = (bit)(LCD_data&0x80);

LCD_EN = 0;

return(result);

}

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

/*写指令数据到LCD                                                  */

/*RS=L,RW=L,E=高脉冲,D0-D7=指令码。                             */

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

void lcd_wcmd(uchar cmd)

{

while(lcd_busy());

LCD_RS = 0;

LCD_RW = 0;

LCD_EN = 0;

delay(1);

LCD_data = cmd;

delay(1);

LCD_EN = 1;

delay(1);

LCD_EN = 0;

}

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

/*写显示数据到LCD                                                  */

/*RS=H,RW=L,E=高脉冲,D0-D7=数据。                               */

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

void lcd_wdat(uchar dat)

{

while(lcd_busy());

LCD_RS = 1;

LCD_RW = 0;

LCD_EN = 0;

LCD_data = dat;

delay(1);

LCD_EN = 1;

delay(1);

LCD_EN = 0;

}

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

/*  LCD初始化设定                                                  */

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

void lcd_init()

{

LCD_PSB = 1;         //并口方式

lcd_wcmd(0x34);      //扩充指令操作

delay(5);

lcd_wcmd(0x30);      //基本指令操作

delay(5);

lcd_wcmd(0x0C);      //显示开,关光标

delay(5);

lcd_wcmd(0x01);      //清除LCD的显示内容

delay(5);

}

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

/* 设定显示位置       X:行数                Y:列数                                   */

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

void lcd_pos(uchar X,uchar Y)

{

uchar  pos;

if (X==0)

{X=0x80;}

else if (X==1)

{X=0x90;}

else if (X==2)

{X=0x88;}

else if (X==3)

{X=0x98;}

pos = X+Y ;

lcd_wcmd(pos);     //显示地址

}

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

/* 在设定位置显示字符(串)                                         */

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

void zifu_dis (uchar X,uchar Y,uchar *dis)

{

uchar i;

lcd_pos(X,Y);

i = 0;

while(dis[i] != ‘\0‘)

{                         //显示字符

lcd_wdat(dis[i]);

i++;

}

}

/**************main.c****测试***********/

#include <reg52.h>

#include <intrins.h>

#include <dis_12864.h>

uchar code dis1[] = {"gz_go博客"};

uchar code dis2[] = {"www.csdn.net"};

uchar code dis3[] = {"不断学习 !"};

uchar code dis4[] = {"不断思考!"};

void  main(void)

{

delay(10);                 //延时

lcd_init();                //初始化LCD

zifu_dis(0,0,"csdnCSDN");//字符串返回的的本质还是它在内存中的起始地址

zifu_dis(1,0,dis2);

zifu_dis(2,0,dis3);

zifu_dis(3,0,dis4);

while(1);

}

基于51单片机的12864驱动

时间: 2024-12-24 23:11:02

基于51单片机的12864驱动的相关文章

[原创]基于51单片机的红外遥控课程设计

[注]: 一眨眼,大学接近尾声,具有找工作需要,所以把大学做的电子设计“劣作”放上来.希望考研失意,还能赶上“好工作”的春招班车.如果大伙有什么工作推荐也可以联系我哦,因为一年考研少接触了这方面,所以难免有些生疏.但请相信我!给我机会我会很认真学的! 邮箱:[email protected] 转载请注明出处呀! 基于51单片机的红外遥控课程设计 目录 第一章 设计简介... 3 第二章 系统方案... 3 一.设计方案对比... 3 二.方案设计... 4 第三章 硬件设计... 5 一.红外遥

基于51单片机的万年历(算法实现)

基于51单片机的万年历,用到了单片机独立键盘.数码管.LED灯模块实现. 想要简单还是DS1302好用. 1 /************************************************** 2 3 作者:纟彖氵戋 博客:http://www.cnblogs.com/yllinux/ 4 5 时间:2017年6月7日 6 7 目标:利用单片机独立键盘.数码管.LED灯模块实现万年历(算法实现) 8 9 ************************************

基于51单片机的温度控制系统毕设

分享一下单片机毕设课程计参考资料33个,献给大四的朋友,毕业设计就不用愁了,如果有什么不懂的地方可以加群大家一起交流:813238832资料下载的地址:https://bbs.usoftchina.com/thread-208012-1-1.html 1.CDMA通信系统中的接入信道部分进行仿真与分析2.USB接口设计3.毕业设计(论文)OFDM通信系统基带数据4.电气工程系毕业设计开题报告5.电信运营商收入保障系统设计与实现6.基于51单片机的16×16点阵(滚动显示)7.基于51单片机的LE

基于51单片机DS18B20测温LCD1602显示可设时设温调时的项目

一.前言 1.基于51单片机DS18B20测温LCD1602显示可设时设温调时的项目包括用Keil软件编写单片机C语言程序和用Proteus软件仿真单片机外围电路 2.基于51单片机DS18B20测温LCD1602显示可设时设温调时的项目构思 (1).声明程序变量思维导图 (2).程序子函数思维导图 (3).程序主函数思维导图 二.基于51单片机DS18B20测温LCD1602显示可设时设温调时的项目的Keil软件编写的单片机C语言程序 1 #include<reg52.h>//声明51单片机

基于51单片机的无线测温系统

本51项目基于STC89C52MCU,温度传感器为DS18B20,显示模块用的是LCD1602,无线模块用的是Nodemcu. 项目用到的编程语言:C,C++,Lua. 实现思路是这样,DS18B20测温,然后数据串行传送给51单片机,然后51通过串口将数据传送给Nodemcu,Nodemcu通过其WIFI模块将数据发送给上位机,上位机上的程序是用Qt编写的GUI.(这里无线传输采用的是无连接的UDP协议) 1.DS18B20温度测量模块 DS18B20是单总线器件,所以时序要求非常严格,程序编

基于51单片机简易操作系统设计

前言 看了很久的操作系统原理,ucos源码也看了大半,但是感觉总是懵懵懂懂,用句流行的网络用语就是始终上不了车,后来在网上被人推荐了一篇文章<建立一个属于自己的操作系统>,这篇文章真的非常好,也附有源码,但不知道是不是我找的文章有差错还是啥,我根据文章提供的源码贴代码,根本无法编译,然后开始读代码修改代码最后成功编译但是在硬件平台运行根本不行.后来又断断续续看ucos源码,反正各种什么数据结构啊的通信什么的让人头痛,后来大学的单片机原理完课,学校安排课设,我选了时钟定时器(有点像闹钟),这种开

单片机课程设计——基于51单片机温湿度检测系统的设计与实现

1 #include <reg52.h> 2 #include "1602.h" 3 #include "dht.h" 4 #include "2402.h" 5 6 //定义三个LED灯 7 sbit Led_qushi=P1^6; //去湿灯 8 sbit Led_jiangwen=P1^5; //降温灯 9 sbit Led_shengwen=P1^4; //升温灯 10 sbit Key_TH1 = P3^2; 11 sbit

基于51单片机的独立按键和矩阵按键用法

------------恢复内容开始------------ 主要实现如图所示的功能 将主函数以外的函数全部放在qiyu.h文件中 1 //qiyu.h 2 #define KEY_PORT P1 3 #define led P2 4 #define unchar unsigned char 5 #define uint unsigned int 6 7 sbit Buz = P1^5; 8 sbit LED = P2^0; 9 sbit K1 = P3^0; 10 sbit K2 = P3^1

基于51单片机8位数码管(74HC595芯片)的使用方法

#include <AT89X51.H> #include <intrins.h> // 函数原形定义 #define uchar unsigned char #define uint unsigned int void main (void); // 主函数 void LED_OUT(uchar X); // LED单字节串行移位函数 void LED_print (uchar p, uchar x) ; unsigned char code LED_0F[]; // LED字模