精品学习网
所在位置:主页 > 电子工程 > 1602和单片机引脚怎么连接?

1602和单片机引脚怎么连接?

发布时间:2022-12-07 12:00来源:www.51edu.com作者:畅畅

一、1602和单片机引脚怎么连接?

1602对应上面每一只脚都有名字的,你上网找一下就知道了,然后你可以看到你的程序刚开始的的方都有因骄傲的宏定义了,按照那个定义和单片机对应接上就可以了。记得不要接错,另外1602还有两对电源脚,一个调对比度的脚,那些要接上,那些不是接到单片机上面的,注意

#define DB P1//1602D0-D7输出I/O口sbit RS=P3^2;

sbit RW=P3^1;

sbit EN=P3^0;sbit k1=P2^0;

sbit k2=P2^1;

sbit k3=P2^2;

sbit k4=P2^3;

sbit k5=P2^4;

sbit k6=P2^5;这个就是定义,数据脚D0-D7接到P1,剩下的按照上面的来接

二、自己根据51单片机和液晶屏1602的原理和相关电路图焊接了一个简单的电子时钟,不能正常显示

不能正常显示有多种情况,问题没有描述清楚。以下简列几种可能情况:

情况一:数字图形显示正常,但数字显示的位置不对;可以检查下引脚的焊接电路,是引脚焊错导致的。

情况二:数字图形显示不正常,则是现实模块阴阳极焊接顺序焊接反了。

情况三:数字图形和位置显示都正常,但是位置、顺序错乱,该显示的没显示,不应显示的却显示了,则是编程出的程序出错,应检查编程的程序。

电子钟是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟相比,它具有走时准确、显 示直观、无机械传动装置等优点,因而得到广泛应用。随着人们生活环境的不断改善和美化,在许多场合可以看到数字电子钟。

电子钟是一个将“ 时”,“分”,“秒”显示于人的视觉器官的计时装置。它的计时周期为24小时,显示满刻度为23时59分59秒,具有校时功能和报时功能。因此,一个基本的数字钟电路主要由译码显示器、“时”,“分”,“秒”计数器、校时电路、报时电路和振荡器组成。主电路系统由秒信号发生器、“时、分、秒”计数器、译码器及显示器、校时电路、整点报时电路组成。

秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器加分频器来实现。将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。“时计数器”采用24进制计时器,可实现对一天24小时的累计。译码显示电路将“时”、“分”、“秒”计数器的输出状态用七段显示译码器译码,通过七段显示器显示出来。整点报时电路时根据计时系统的输出状态产生一脉冲信号,然后去触发一音频发生器实现报时。校时电路时用来对“时”、“分”、“秒”显示数字进行校对调整。

估计是单片机的在控制LCD时端口翻转速度太快了,LCD跟不上。我以前在STC12单片机上操作1602时也遇到过类似的问题,你的程序在RS、RW和E控制信号电平变化后,加2~3个nop语句延时再试试看。

液晶屏1602,厂家不同,有的,引脚排列,就是 完全相反 的。

如果数字图形是正确的,只是数字出现的位置不对,--》是引脚焊错

如果数字图形不正确,--》是现实模块阴阳极焊反

如果数字图形和位置都正确,只是不该显示这个数字--》是程序问题

你都买了一块,你不会按照买的那个原理图来焊接,真是笨

三、如何使用51单片机1602液晶显示和按键实现进制转换计算器设计?

8位AD,最大255; uchar num; num=AD_receive();//把AD采集回来的数据保存 write_com(0x80);//1602从0x80开始显示数据 write_data(num/100+0x30); //显示字符百位,后面以此类推 write_data(num%100/10+0x30);//十位数 write_data(num%10+0x30);//个位数 至于1602的驱动程序,网上多得是,找找就有了

四、51单片机如何在1602液晶屏上显示一个字母?

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

名称:LCD1602

内容:通过标准程序静态显示字符

引脚定义如下:1-VSS 2-VDD 3-V0 4-RS 5-R/W 6-E 7-14 DB0-DB7 15-BLA 16-BLK

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

#include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

#include

sbit RS = P2^4; //定义端口

sbit RW = P2^5;

sbit EN = P2^6;

#define RS_CLR RS=0

#define RS_SET RS=1

#define RW_CLR RW=0

#define RW_SET RW=1

#define EN_CLR EN=0

#define EN_SET EN=1

#define DataPort P0

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

uS延时函数,含有输入参数 unsigned char t,无返回值

unsigned char 是定义无符号字符变量,其值的范围是

0~255 这里使用晶振12M,精确延时请使用汇编,大致延时

长度如下 T=tx2+5 uS

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

void DelayUs2x(unsigned char t)

{

while(--t);

}

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

mS延时函数,含有输入参数 unsigned char t,无返回值

unsigned char 是定义无符号字符变量,其值的范围是

0~255 这里使用晶振12M,精确延时请使用汇编

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

void DelayMs(unsigned char t)

{

while(t--)

{

//大致延时1mS

DelayUs2x(245);

DelayUs2x(245);

}

}

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

判忙函数

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

bit LCD_Check_Busy(void)

{

DataPort= 0xFF;

RS_CLR;

RW_SET;

EN_CLR;

_nop_();

EN_SET;

return (bit)(DataPort & 0x80);

}

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

写入命令函数

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

void LCD_Write_Com(unsigned char com)

{

while(LCD_Check_Busy()); //忙则等待

RS_CLR;

RW_CLR;

EN_SET;

DataPort= com;

_nop_();

EN_CLR;

}

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

写入数据函数

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

void LCD_Write_Data(unsigned char Data)

{

while(LCD_Check_Busy()); //忙则等待

RS_SET;

RW_CLR;

EN_SET;

DataPort= Data;

_nop_();

EN_CLR;

}

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

清屏函数

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

void LCD_Clear(void)

{

LCD_Write_Com(0x01);

DelayMs(5);

}

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

写入字符函数

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

void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data)

{

if (y == 0)

{

LCD_Write_Com(0x80 + x);

}

else

{

LCD_Write_Com(0xC0 + x);

}

LCD_Write_Data( Data);

}

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

初始化函数

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

void LCD_Init(void)

{

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

DelayMs(5);

LCD_Write_Com(0x38);

DelayMs(5);

LCD_Write_Com(0x38);

DelayMs(5);

LCD_Write_Com(0x38);

LCD_Write_Com(0x08); /*显示关闭*/

LCD_Write_Com(0x01); /*显示清屏*/

LCD_Write_Com(0x06); /*显示光标移动设置*/

DelayMs(5);

LCD_Write_Com(0x0C); /*显示开及光标设置*/

}

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

主函数

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

void main(void)

{

LCD_Init();

LCD_Clear();//清屏

while (1)

{

LCD_Write_Char(7,0,'o');

LCD_Write_Char(8,0,'k');

while(1);

}

}

#include

sbit lcden=P1^0;

sbit lcdrs=P1^1;

sbit lcdrw=P1^2;

void delay(unsigned int z)

{

 unsigned int x,y;

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

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

}

void write_com(unsigned char com)

{

 lcdrs=0;

 P0=com;

 delay(5);

 lcden=1;

 delay(5);

 lcden=0;

}

void write_data(unsigned char date)

{

 lcdrs=1;

 P0=date;

 delay(5);

 lcden=1;

 delay(5);

 lcden=0;

}

void init()

{

 lcdrw=0;

 lcden=0;

 write_com(0x38);

 write_com(0x0e);

 write_com(0x06);

 write_com(0x01);

 write_com(0x80+0x10);

}

void main()

{

 init();

 write_data('a');

 while(1);

}

最简单的了

刚好学到1602,这里有

  • 热门资讯
  • 最新资讯
  • 手游排行榜
  • 手游新品榜