历史上的今天

今天是:2024年11月16日(星期六)

2019年11月16日 | 0802LCD 4位显示程序 PIC单片机C语言程序

发布者:advancement3 来源: 51hei关键字:0802LCD  显示程序  PIC单片机 手机看文章 扫描二维码
随时随地手机看文章

#include

#include

//#include"head.h"

#define uchar unsigned char 

#define uint unsigned int 

#pragma config FOSC = XT        // Oscillator Selection bits (XT oscillator)

#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)

#pragma config PWRTE = ON       // Power-up Timer Enable bit (PWRT enabled)

#pragma config BOREN = OFF      // Brown-out Reset Enable bit (BOR disabled)

#pragma config LVP = ON        // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)

#pragma config CPD = OFF        // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)

#pragma config WRT = OFF        // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)

#pragma config CP = OFF         // Flash Program Memory Code Protection bit (Code protection off)


//char tab[]="0123456789";

#define uchar unsigned char 

#define uint unsigned int 

void LCD_write_cmd(uchar command);

void LCD_write_command(uchar command);

void LCD_en_write(void);

void LCD_set_xy( unsigned char x, unsigned char y );

void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s);

void LCD_write_data(unsigned char data);

void delay_nus(unsigned int n);

void delay_nms(unsigned int n);   

#define RS RC2

#define EN RC3

#define DB7 RC7

#define DB6 RC6

#define DB5 RC5

#define DB4 RC4

#define LCD_DATA_PORT PORTC

#define LCD_DATA_TRIS TRISC

   

    /*------------------------------------------------------------------------------ 

    函数说明 

    ------------------------------------------------------------------------------*/ 

void LCD_init()

{

    TRISD=0x00; //数据口方向为输出 

    PORTD=0x00;

    TRISC=0x00; //数据口方向为输出 

    PORTC=0x00;//设置EN、RS/数据为输出 

       

    LCD_write_cmd(0x30);//4位的指令 

    delay_nms(5); 

    LCD_write_cmd(0x30); 

    delay_nus(200);  

    LCD_write_cmd(0x30); 

    delay_nms(1); 

    LCD_write_cmd(0x20);

    LCD_write_cmd(0x20); //4位显示

    LCD_write_cmd(0x80); 


    LCD_write_cmd(0x00); //显示开 游标、闪烁不显示

    LCD_write_cmd(0x80); 

    

    LCD_write_cmd(0x00); //清屏

    LCD_write_cmd(0x01); 

    

    LCD_write_cmd(0x00); //两行 5*7

    LCD_write_cmd(0xc0); 

}

void LCD_write_cmd(uchar command) //写指令 

    delay_nus(10); 

    RS=0;

    EN=0;//使能清零 

    LCD_DATA_PORT&=0x0f; //清除端口

    delay_nus(2);

    EN=1;

    LCD_DATA_PORT |= (command & 0xf0);//高4位不用改

    delay_nus(2);

    EN=0;

}


void LCD_write_command(uchar command) //写指令 

    LCD_write_cmd(command);

    LCD_write_cmd(command<<4);

}


void LCD_write_data(unsigned char data) //写数据 

    delay_nus(10); 

    RS=1;

    EN=0;//使能清零

    LCD_DATA_PORT&=0x0f;

    EN=1;

    LCD_DATA_PORT |= (data & 0xf0);//高4位不用改

    delay_nus(2);

    EN=0;

    delay_nus(2);

    

    LCD_DATA_PORT&=0x0F; //清低四位 

    EN=1;

    LCD_DATA_PORT |= ((data << 4) & 0xf0);//发送低4位

    delay_nus(2);

    EN=0;

  } 


void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s) //列x=0~15,行y=0,1

    LCD_set_xy( X, Y ); //写地址 

    while (*s) // 写显示字符 

    { 

        LCD_write_data( *s ); 

        s ++; 

    } 


void LCD_set_xy( unsigned char x, unsigned char y )  //写地址函数 

    unsigned char address; 

    if (y == 0) address = 0x80 + x; 

    else        address = 0xc0 + x; 

    LCD_write_command( address); 

   


void delay_nms(unsigned int n) //N ms延时函数 

    uint a,b;

    for(a=n;a>0;a--)

        for(b=80;b>0;b--);


void delay_nus(unsigned int n) //N us延时函数 

    unsigned int i; 

    for (i=0;i}

void main()

{

     LCD_init();

//    LCD_write_command(0x0d); //光标开

     while(1)

     {

         RD0=1;

         delay_nms(1000);

         RD0=0;

         delay_nms(1000);

        LCD_write_string(0,0,"ceshiLCD");

        LCD_write_string(0,1,"hahahaha");

        delay_nms(2000);

        

     }

}


关键字:0802LCD  显示程序  PIC单片机 引用地址:0802LCD 4位显示程序 PIC单片机C语言程序

上一篇:pic16f887 TMR0计时器讲解及准确定时程序
下一篇:PIC单片机USART的应用

推荐阅读

英国一家小型机器人开发了一系列用于农业的定制型灵活机器人,这种机器人能够替代现有的田间拖拉机。 农业往往被认为落后于高科技时代,对农民来说,他们的工作场所是创新技术的肥沃试验田。他们是最早使用商用的人员,也是最早使用技术的人员。配置自动驾驶系统的农业设备完全可以在农田这种封闭的区域有效且安全地进行工作。农业科技的发展是小型农业...
  热地,是指电源电路中变压器初级(如:开关电源中的开关变压器)接地端,是与电网供电线路的相线或零钱相连,属于热地,在电路图中,接地图标是与冷地、保护接地是有区别的。  冷地,通常是指电源电路变压器次级,整流滤波后的直流电负极。因有变压器隔离作用,与电网不相连。  示波器上还有保护接地,一般与示波器机壳,示波器里面电源负极相通,...
半导体供应商意法半导体(STMicroelectronics,简称ST;纽约证券交易所代码:STM) 与意大利医学临床检测仪器生产商Alifax有限公司合作开发了一种快捷、经济的便携式医学检测解决方案。该解决方案由Alifax负责销售,使用高可靠性的实时聚合酶链反应(PCR)方法扩增患者样本中的遗传物质(RNA和DNA[1]),进行即时分子诊断。 利用意法半导体开发授权的技术,Alif...
美国众多企业热切盼望国会通过“芯片法案”之际,彭博引述知情人士说法报导,英特尔原欲利用中国成都现有厂房生产半导体,以纾缓芯片短缺,遭美国政府以国家安全疑虑为由冷眼相待,目前英特尔已搁置在中国扩产的计划。据了解,英特尔有意在成都工厂生产硅晶圆,原本预定 2022 年底前投产。但英特尔同时也在向美国申请联邦补助,以扩大在美国的研究和生产...

史海拾趣

问答坊 | AI 解惑

变器电路大全

话题:逆变器电路大全500) {this.resized=true; this.width=500; this.alt=\'这是一张缩略图,点击可放大。\\n按住CTRL,滚动鼠标滚轮可自由缩放\';this.style.cursor=\'hand\'}\" resized=\"true\">500) {this.resized=true; this.width=500; th ...…

查看全部问答∨

工作十年(一):毕业时你一文不值

算起来从1999年毕业,至今已十载。工作这些年中,应该也是尝尽了酸甜苦辣,本想留着自己品味。但也是看到一些网友现在的心绪,因此也想把自己的一些体会写出来,和EEWORLD的网友分享。也没什么系统,就想到哪儿写到哪儿吧。 今天第一次写,还 ...…

查看全部问答∨

集成RF混频器与无源混频器方案的性能比较

摘要:本应用笔记比较了集成RF混频器与无源混频器方案的整体性能,论述了两种方案的主要特征,并指出集成方案相对于无源方案的主要优点。 过去,RF研发人员在高性能接收器设计中使用无源下变频混频器取得了较好的整体线性指标和杂散指标。但在这 ...…

查看全部问答∨

木头手机一点也不“木”

随着人们对于环保的不断重视,木质手机渐渐浮出水面,逐渐成为人们关注的热点。近日,一款由韩国设计师Hyun Jin Yoon和Eun Hak Lee两人设计的木质出现了,这款Maple木质手机的原材料是非洲黑木,机身尺寸为4.5×10.4×9.8mm。 高科技与大自然完美 ...…

查看全部问答∨

急求人才!!!

大家好!我这里是北京的猎头公司,现有几十个通信方面的职位虚席以待!请有意者与我联系,如果适合我们会及时为您做推荐,即使您现在没有这方面的意向,我觉得您跟我们联系对您来说也绝对不是什么坏事!至少我们可以根据您的简历及时向您提供适合的 ...…

查看全部问答∨

关于触摸屏校准

触摸屏校准中,如果校准的数据没有之前的数据准,该怎么取舍?也就是说我们如何获取最佳的校准数据,而不是一校准就更新注册表中的校准数据? 看了下MDD层的函数,在TouchPanelReadCalibrationPoint函数中,通过“ *pRawX = lCalibrationXCoord; * ...…

查看全部问答∨

WinCE5.0网络开发的若干问题

各位大人~~~~        最近用C#在WinCE5.0系统下开发一个简单的小游戏,有网络连接功能(能两个人一个玩,像QQ的找茬一样),使用TCP/IP传输协议。实验箱是博创的UP-NETARM2410-s。现在遇到一个很大的问题,就是用网 ...…

查看全部问答∨

[驱动移植]S3C2410-2.6.24.4-CS89X0驱动

驱动启动信息显示,已经正确加载了驱动 不过ifconfig直接看不到eth0 不过ifconfig-a倒是可以 不过设置IP时出现 ifconfig: SIOCSIFFLAGS: Invalid argument 轻各位大侠帮忙看看…

查看全部问答∨

请大家指教

我以前主要做winfrom应用程序开发?我现在想学习基于WinCE平台的嵌入开发,但是不知道从何下手!起大家帮忙? 1.不知道用什么软件开发(我以前用VS2005) 2.有什么好的资料吗? 3.大家给点忠告? 在下感谢大家帮助!…

查看全部问答∨

如何跳转到stm32f的bootloader初探:

  1FFFF000  0200      LSLS         R0, R0#0x8  1FFFF002  2000      MOVS&nbs ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved