历史上的今天
返回首页

历史上的今天

今天是:2024年11月19日(星期二)

正在发生

2019年11月19日 | 51+PIC单片机兼容程序 1602液晶显示欢迎界面

2019-11-19 来源:51hei

//犯的错:在51里RW(L命令、H数据)是直接焊成接地的

//∴ 少了lcd_enable(); 这一函数{lcdrs = 0; lcdrw = 0; lcden = 0; delay(5); lcden = 1;}

//少了这一函数设置就无法显示了

#define PIC     //说明,如果是51,你把这句删掉即可

#define ww     //说明,如果是PIC16F877A,你把这句删掉即可

#ifdef ww

#include

sbit lcden=P3^4;

sbit lcdrs=P3^5;

sbit lcdrw=P3^0;   //这是个无用的定义,因为51板直接接地,而PIC则不是

sbit dula=P2^6;     

sbit wela=P2^7;

#endif

#ifdef PIC

#include

__CONFIG(0X3B31);

#define lcden RA3

#define lcdrs RA5

#define lcdrw RA4

#define P0 PORTD

#endif

#define uchar unsigned char

#define uint unsigned int


#ifdef ww

uchar code table[]="   hello! jasper";   //写字符串时用“”而不是{ }了

uchar code table1[]="   xm.dabiao    ";

#endif

#ifdef PIC

  //奇怪了,移动下面2行会提示,逗号错误

const uchar table[]="   hello! jasper";    //写字符串时用“”而不是{ }了

const uchar table1[]="   xm.dabiao    "; //PIC的数组写法与51的是不同的

#endif

uchar num;

void delay(uint z)     //延时

{

  uint x,y;

  for(x=z;x>0;x--)

   for(y=110;y>0;y--);

}

void write_com(uchar com)

{

  lcdrs=0;  

  P0=com;

  delay(5);  

  lcden=1;  

  delay(5);

  lcden=0;

}

void write_data(uchar date)  

{

  lcdrs=1;

  P0=date;

//  delay(5);

  lcdrs=1;

  lcdrw=0;

  lcden=0;

  delay(5);

  lcden=1;

}

void lcd_enable(void)   

{

lcdrs = 0;                     

lcdrw = 0;                  

lcden = 0;                  

delay(5);                

lcden = 1;                   

}

void init()

{

#ifdef ww

   dula=0;          

  wela=0;

  lcden=0;

#endif

#ifdef PIC

TRISA=0x00;PORTA=0XF0;

TRISD=0x00;PORTD=0XFF;

ADCON1=0X07; 

RA1=1;

#endif

  lcd_enable();   

  write_com(0x38);  

  lcd_enable(); 

  write_com(0x0c);    

  lcd_enable();   

  write_com(0x06);    

  lcd_enable();  

  write_com(0x01);

  lcd_enable(); 

// write_com(0x80);

  write_com(0x80+0x10); 

}

void main()

{

  init();

  for(num=0;num<16;num++) 

  {       

    write_data(table[num]); 

    delay(20); 

  }

  write_com(0x80+0x51);  

  for(num=0;num<16;num++)

  {

    write_data(table1[num]);

    delay(20);

  }

  for(num=0;num<16;num++)

  {

    write_com(0x18); 

    delay(160); 

  }

  while(1);

}


推荐阅读

史海拾趣

ETL semiconductor公司的发展小趣事

英特尔(Intel)的成立与发展与微处理器的发明密不可分。在20世纪70年代初,英特尔的工程师们开始研发一种能够将计算机的中央处理器(CPU)集成到单一芯片上的技术。经过数年的努力,他们成功推出了世界上第一款微处理器——Intel 4004。这一创新不仅改变了计算机行业,也为英特尔的崛起奠定了坚实基础。

FOX [Fox Electronics]公司的发展小趣事

进入21世纪后,Fox Electronics意识到全球化对于企业发展的重要性。为了更好地服务全球客户,公司开始在全球范围内布局生产基地和销售网络。通过在亚洲、欧洲和北美等地设立分厂和办事处,Fox Electronics不仅缩短了交货周期,还降低了生产成本,提高了市场竞争力。同时,公司还加强了与全球供应链伙伴的合作,通过优化供应链管理,确保产品质量和交货期的稳定性。

锋鸣电子(Fengming)公司的发展小趣事

福斯特集团在半导体封测领域也展现了强大的实力。集团旗下拥有安徽龙芯微科技有限公司和泸州龙芯微科技有限公司等多家子公司,这些公司均配备有全球领先的集成电路封装测试线。通过不断的技术创新和设备升级,福斯特集团能够满足客户全方位的器件封测要求,为客户提供高质量、高效率的封测服务。此外,公司还积极投入研发,推出多项新技术和新产品,进一步巩固其在半导体封测领域的领先地位。

E-Z-HOOK公司的发展小趣事

在1956年的一个晴朗午后,E-Z-HOOK的创始人阿尔伯特·史密斯(化名)在实验室里遇到了一个棘手的问题。他正在测试一个复杂的电子系统,但发现现有的测试工具无法满足他的需求。于是,他动手设计并制造出了第一个E-Z-HOOK测试钩,这个简单但实用的工具极大地方便了他的工作。史密斯看到了这个产品的巨大潜力,于是决定成立一家公司来专门生产这种测试钩。这就是E-Z-HOOK公司的起源。

Gazelle Microcircuits Inc公司的发展小趣事
+12V电压是电脑主板中非常重要的电压之一,它主要用于给硬盘驱动器、光驱、风扇等大功率设备供电。这些设备通常需要较高的电压来驱动其内部的电机或机械结构。
BLT Circuit Services公司的发展小趣事

品质一直是BLT Circuit Services公司的核心竞争力。公司注重品质管理,建立了严格的质量控制体系,从原材料采购到生产过程中的每一个环节都进行严格把关。正是这种对品质的执着追求,使得BLT Circuit Services的产品在行业内赢得了良好的口碑,为公司赢得了大量的忠实客户。

问答坊 | AI 解惑

第二届(1995年)全国大学生电子设计竞赛题目

本帖最后由 paulhyde 于 2014-9-15 09:34 编辑 第二届(1995年)全国大学生电子设计竞赛题目 题目一 实用低频功率放大器一、任务 设计并制作具有弱信号放大能力的低频功率放大器。其原理示意图如下:   二、要求 1.基本要求   (1)在 ...…

查看全部问答>

FPGA的速度等级

多次转载后不知道原作者了,感觉还是有点内容的。 启发:认识观的改变!   最初接触speedgrade这个概念时,很是为Altera的-6、-7、-8速度等级逆向排序的方法困惑过一段时间。不很严密地说,“序号越低,速度等级越高”这是Altera FPGA ...…

查看全部问答>

Clean Technology Fuels MTC Transformers' Growth

MTC transformers  美国致力于本土市场的一家变压器厂家----低碳产业 MTC Transformers, a world-class provider of high-quality, precision-engineered transformers and rewind services, was recently honored with the Vanguar ...…

查看全部问答>

(*紧急*)关于mc9s12dg128b芯片和定时计数器中断的问题

我是参加第二届“飞思卡尔”杯全国大学生智能车大赛的学生,在制作开发智能车的时候遇到了一些问题,想请教一下各位。     mc9s12dg128b芯片定时计数器中的TCNT、 TSCR是什么意思,用什么给它赋初值,怎样赋初值?     还有 ...…

查看全部问答>

编译驱动程序出现的问题

/usr/local/arm/2.95.3/bin/arm-linux-gcc -D__KERNEL__ -DMOULE -I/home/linux2-24/linux-2.4.27/include -O -w  -g -c addrv.c In file included from /usr/local/arm/2.95.3/lib/gcc-lib/arm-linux/2.95.3/../../../../arm-linux/sys ...…

查看全部问答>

超声波模块+步进电机做雷达的童鞋们.来公开源码讨论下吧

本帖最后由 paulhyde 于 2014-9-15 09:13 编辑 很多人说类似于雷达的东西今年必须弄一个.我弄了个.超声波模块效果不大好.总体效果就没出来.源码上了.明天新的超声波模块到.说实话.国赛弄成这个样子真没多大意思了.我现在只求速度比完...   ...…

查看全部问答>

利用RAM构建平滑窗口滤波方法

  滑动窗口滤波是一种很好滤波方法。这种方法不影响数据的实效性,每个数据都与前面一段数据相关联,这样瞬间峰值或毛刺对下一个数据影响较小。   在FPGA数据处理中,如果大量数据需要进行滑动滤波,如果定义寄存器来设计上面的算 ...…

查看全部问答>

如何提高这个时钟程序的精度呢?

翻了以前的程序看了下,这个程序是不用实时时钟芯片来完成时钟功能的。和秒表对了一下时间,发现竟然在1分钟内慢了4秒钟,顿时纠结了=。= 于是我决定思考、调试一下视图解决这个问题。这个程序是利用单片机的定时器中断来完成简单的时钟功能的。 ...…

查看全部问答>

关于ST Visual Develop环境编译出现bad addressing mode是怎么回事

最近在IAR上做的一个关于STM8S208MB的一个功能模块,移植到ST Visual Develop环境编译出现bad addressing mode是怎么回事。具体错误信息如下: #error castm8 C:\\DOCUME~1\\Owner\\LOCALS~1\\Temp\\s570.cx1:1531 bad addressing mode ..\\..\\s ...…

查看全部问答>