原创 【博客大赛】如何用1602做的电压和电流显示?

2012-10-5 22:01 4376 24 28 分类: MCU/ 嵌入式

1602字符型液晶显示器

指定行和列写字符串子程序

void LCD_disp(char x,char y,char dat)
{
char address;

if(y==1)
address=0x80+x;   //确定行地址
else
address=0xc0+x;
write_comm(address);//写入行地址
write_data(dat);           //写入显示数据
}

1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。

我选用的JHD162A,好像是SPLC780D液晶芯片吧?但这个不关键,主要是他的引脚排序和工作时序图,是必须要的。

JH162A的引脚排序(如下):

001.jpg
读模式时序(如下):
002.jpg
写模式时序(如下):
003.jpg

 对于1602,他是字符型显示,所以对于显示数据要转换成对应的ASCII码,对于显示数据可以根据使用是固定的还是需要改变的,把他定义在FLASH或RAM 里,这样可以节省RAM,有利于MCU的利用效率,当然也可以全部定义在RAM里。我使用的操作环境是IAR,在这个环境里

如:__flash char n_disp[13]={" BATT VOLTAGE"};

把固定显示内容“BATT VOLTAGE”定义在FLASH里。

对于随时改变的显示数据,必须要定义在RAM里面,而且对采集来的信号,要进行分位和ASCII转换。

如采样电压数据为X(十进制),最大为1000,实际电压显示0--25.0V,设X为512,X1=512/4=128

那么显示的十位Y为

X1/100=1           ASCII转换 Y+0X30=0X31

 那么显示的个位Z为

X1%100=28     28/10=2      ASCII转换 2+0X30=0X32

那么显示的小数位I为

28%10=8       ASCII转换 8+0X30=0X38

对应十位,个位,小数点和小数位显示分别为

0X31,0X32,0X2E,0X38

这样显示的数据位12.8

定义外部引脚

 #define LED PORTC_Bit4        
#define RS  PORTD_Bit5        
#define RW  PORTD_Bit6
#define E   PORTD_Bit7
#define ANJ PORTD_Bit4

 显示忙子程序

void LCD_check_busy()
{
i_symbol=0x01;
  while(i_symbol>0)
  {
   
     RS=0;
     RW=1;
     E=1;
     //PORTB=0xff;
    delay_nus(1);
    PORTB=0xff;
    DDRB=0x00;
   
    busy_symbol=PINB&0x80;
    //E=0;
    i_symbol=busy_symbol;
  }
}

写命令子程序

void write_comm(char dat)
{
 LCD_check_busy();
 DDRB=0xff;
 PORTB=dat;
 RS=0;
 RW=0;

 E=1;
 delay_nus(10);
 E=0;
//delay_nms(100);
}

写数据子程序

void write_data(char dat)
{
LCD_check_busy();
DDRB=0xff;
PORTB=dat;
RS=1;
RW=0;

E=1;
delay_nus(10);
E=0;
//delay_nms(100);
}

指定行和列写字符串子程序

void LCD_disp(char x,char y,char dat)
{
char address;

if(y==1)
address=0x80+x;
else
address=0xc0+x;
write_comm(address);
//delay_nms(100);
write_data(dat);
//delay_nms(100);
}

 

文章评论4条评论)

登录后参与讨论

chen_zs2012_704941858 2013-4-21 13:08

学习了

用户395944 2013-1-15 19:27

学习了,谢谢

用户1646592 2012-10-16 09:37

下一个项目刚好要用液晶显示

用户377235 2012-10-16 08:27

不错,若有个简单的电路图就更好了!
相关推荐阅读
ydcman_691947663 2014-06-07 12:47
从AD9.4的PCB中,输出带有钻孔文件的CAD图形
遇到一位做工艺的工程师,要求我从PCB导出的CAD图形中,包含有钻孔文件。这个要求我第一次听说,有点汗!姑且不讨论这要求是否合理,但我还得试一试! 就在网络上搜了一通,发现不论是PRO99SE...
ydcman_691947663 2014-01-17 08:24
公司职场环境评估表格---2013版
主要功能: 从一个工作者的角度,对自己熟悉的企业评估  适用范围: 本标准适用于入职时间<2年,非管理技术岗位。 计分说明: 实施总分百分制,单项也为百分,以权重来区分,...
ydcman_691947663 2013-11-16 21:35
闲来扯淡,这些事你们做过吗?
呵呵,纯手工绘制的原理图,整理以前的资料和图纸时发现的 一.窗口比较器和555构成的触发单稳 二.这是什么?好像是检测电路,忘记了 三.这个是纯硬件设计的查...
ydcman_691947663 2013-07-26 22:08
神马是工作的原动力--我认为是兴趣
   今天领导不在,作为硬件工程师,我做的项目所缺的元件来了,我就迫不及待的“埋头苦干”;一心想着快点焊好,可以做调试,及时发现其中BUG。   干的累了看看同事们都在”逍遥“。呵呵,难免会有...
ydcman_691947663 2013-07-25 06:34
天太热了,这酷暑什么时候结束?
连续一个星期都是晴天,中午空旷地最少40度,神马天气预报还说36度,超搞笑啊!...
ydcman_691947663 2013-07-21 20:54
推荐好书<越控越有趣-TI C2000 LaunchPad炼成记>
这两年TI的活动很多,DSP开发板也很容易通过建议的途径得到,不像以前大都在代理商手里。去年我通过积极参与,也得到一个LAUNCH2000的开发板,早就想下手,但一直苦于没有简单实用的入门的资料,...
我要评论
4
24
关闭 站长推荐上一条 /2 下一条