tag 标签: 1602

相关帖子
相关博文
  • 热度 20
    2014-12-1 20:06
    1440 次阅读|
    1 个评论
    很久之前做的,在stc89c52rc上调试通过。实测比较好用,大家完全可以自己去做一个,当然电机驱动可以用nmos搭电路。
  • 热度 29
    2013-8-30 16:25
    3449 次阅读|
    1 个评论
    ( 注:如果本文有代码 则均搜索于网络或本人编写仅供学习交流之用 ) FPGA驱动LCD1602 驱动1602其实比实现IIC协议要简单 要注意读写模式  命令/数据线以及数据的发送和时序问题即可 难点还是在于时钟的生成 开发板自带的LCD1602是具有8位数据线 1个使能信号线 1个读写控制信号 1个数据/命令模式选择信号   使用流程如下 发命令配置LCD 设置数据地址 发送数据   因为要延时5ms  系统晶振50Mhz 50M = 20ns , 20ns * 131072 *2 ~= 5ms, 5 ms is LCD Cycle 在系统时钟的边沿开始计数,计数到一定值时归零并产生一个时钟信号,下次计数满时将时钟信号翻转即可产生新时钟。   verilog语言 : 1602操作 时钟 生成 // 50M = 20ns , 20ns * 131072 *2 ~= 5ms, 5 ms is LCD Cycle always @( posedge sys_clk_50m or negedge sys_rst_n ) begin         if ( sys_rst_n == 1'b0 )               div_cnt = # `U_DLY 17'b0 ;         else             div_cnt = # `U_DLY div_cnt + 17'b1 ; end always @( posedge sys_clk_50m or negedge sys_rst_n ) begin         if ( sys_rst_n == 1'b0 )               clk_lcd = # `U_DLY 1'b0 ;         else if ( div_cnt == { 17 { 1'b1 }} )             clk_lcd = # `U_DLY ~ clk_lcd ;         else ; end 接下来就是控制读写信号线  和  数据.命令控制信号线 来发送初始化LCD的命令---- 然后设置数据地址---- 写入要显示的数据 1 verilog语言 : 高亮代码由发芽网提供 assign   RW = 1'b0 ;                                           //RW=0时对LCD模块执行写操作 assign   LCD_EN = LCD_EN_Sel ? clk_lcd : 1'b0 ;                 //通过LCD_EN_Sel信号来控制LCD_EN的开启与关闭 always @( posedge clk_lcd or negedge rst ) begin   if ( ! rst )       begin           state = Clear_Lcd ;                               //复位:清屏并光标复位             RS = 1'b0 ;                                       //复位:RS=0时为写指令;                                 DB8 = 8'b0 ;                                       //复位:使DB8总线输出全0           LCD_EN_Sel = 1'b1 ;                               //复位:开启夜晶使能信号           disp_count = 4'b0 ;       end   else       case ( state )                                           //初始化LCD模块       Clear_Lcd:             begin                 state = Set_Disp_Mode ;                 DB8 = 8'b00000001 ;                         //清屏并光标复位               end       Set_Disp_Mode:             begin                 state = Disp_On ;                 DB8 = 8'b00111000 ;                         //设置显示模式:8位2行5x8点阵                     end       Disp_On:             begin                 state = Shift_Down ;                 DB8 = 8'b00001100 ;                         //显示器开、光标不显示、光标不允许闪烁                 end       Shift_Down:             begin                 state = Write_Addr ;                 DB8 = 8'b00000110 ;                         //文字不动,光标自动右移                 end       Write_Addr:             begin                 state = Write_Data_First ;                 DB8 = 8'b10000001 ;                         //写入第一行显示起始地址:第一行第二个位置                     Data_First_Buf = Data_First ;               //将第一行显示的数据赋给Data_First_Buf?             end       Write_Data_First:                                     //写第一行数据             begin                 if ( disp_count == 14 )                         //disp_count等于14时表示第一行数据已写完                     begin                         DB8 = 8'b11000001 ;                 //送入写第二行的指令                         RS = 1'b0 ;                         disp_count = 4'b0 ;                         Data_Second_Buf = Data_Second ;                         state = Write_Data_Second ;         //写完第一行进入写第二行状态                     end                 else                     begin                         DB8 = Data_First_Buf ;                         Data_First_Buf = ( Data_First_Buf 8 );                         RS = 1'b1 ;                         //RS=1表示写数据                         disp_count = disp_count + 1'b1 ;                         state = Write_Data_First ;                     end             end       Write_Data_Second:                                     //写第二行数据             begin                 if ( disp_count == 14 )                     begin                         LCD_EN_Sel = 1'b0 ;                         RS = 1'b0 ;                         disp_count = 4'b0 ;                         state = Idel ;                       //写完进入空闲状态                     end                 else                     begin                         DB8 = Data_Second_Buf ;                         Data_Second_Buf = ( Data_Second_Buf 8 );                         RS = 1'b1 ;                         disp_count = disp_count + 1'b1 ;                         state = Write_Data_Second ;                     end                           end       Idel:                 begin                 state =   Idel ;                             //在Idel状态循环               end       default :   state = Clear_Lcd ;                         //若state为其他值,则将state置为Clear_Lcd       endcase end
  • 热度 28
    2012-10-5 22:01
    4394 次阅读|
    4 个评论
    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的引脚排序(如下): 读模式时序(如下): 写模式时序(如下):  对于1602,他是字符型显示,所以对于显示数据要转换成对应的ASCII码,对于显示数据可以根据使用是固定的还是需要改变的,把他定义在FLASH或RAM 里,这样可以节省RAM,有利于MCU的利用效率,当然也可以全部定义在RAM里。我使用的操作环境是IAR,在这个环境里 如:__flash char n_disp ={" 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_symbol0)   {          RS=0;      RW=1;      E=1;      //PORTB=0xff;     delay_nus(1);     PORTB=0xff;     DDRB=0x00;         busy_symbol=PINB0x80;     //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); }  
  • 热度 24
    2010-12-24 11:27
    1697 次阅读|
    0 个评论
    1602LCM也是跟着教程手把手的学的,只能显示简单的ASCII,两行X16,刚开始一直就用它和DS12CR887搭配做万历年用,加上温度,感觉挺不错的。但是怎么说得找个显示汉字的玩玩才够味,于是请来了12864,就是128乘以64个点阵的液晶屏。比1602大一倍,整个就一封辨率超低的MP4屏模样。可以显示的就4X8个字,刚开始的硬件连接就费尽周折,找卖家要全了资料对着电路图本想就着试验板用杜邦线连上就能用,可以半天不亮,好是郁闷,最后才找出更本原因:杜邦线好像不太好使,反正是接不通。那就索性自己焊到别的板子上得了。焊好后,程序没费多久,能显示字了,但是坐标死活不对,一会这一会那像捉迷藏,指令几个换过来换过去还是老样子,最后总算还是让我找到正确的指令了,算是能让它乖乖的在任意位置显示了。 但是接下来的画图可让我郁闷了好久,给的产品资料里说得很笼统,什么X轴Y轴的哪是哪都分不清,GOOGLE上一阵搜,好容易有型号差不多的,看了程序也半天没明白,但是依别人的程序倒也能画出别人的图,但是自己的图自己用软件将BMP图片转成16进制代码后却怎么也不对,好像有那只兔子有点轮廓,但就是不完全一样。那两天折腾的够呛先扔一边了去了,回过头来再研究的时候,给参考程序的作者发个了E-MAIL,回了,但是还不太明白,最后搜到了坐标的比较详细的地址说明,然后仔细的把自己的图分析了下,发现应该是反了。就把转化图片时原先从低到高取点改成了从高到低取,啊哈,一上电,0H,YEAR!兔兔出来啦!那叫一个兴奋!
相关资源
  • 所需E币: 5
    时间: 2023-8-22 09:57
    大小: 397.38KB
    上传者: 物联创客
    本资源内容概要:这是基于51单片机的交流电压测量1602液晶显示语音播报设计,包含了电路图源文件(Altiumdesigner软件打开)、C语言程序源代码(keil软件打开)。本资源适合人群:单片机爱好者、电子类专业学生、电子diy爱好者。本资源能学到什么:可以通过查看电路学习电路设计原理,查看代码学习代码编写原理。本资源使用建议:建议使用者需要具备一定电子技术基础,掌握一些常用元器件原理,例如三极管、二极管、数码管、电容、稳压器等。了解C语言基础设计原理,能看懂基础的电路图,具备一定的电路图软件使用能力。
  • 所需E币: 5
    时间: 2023-8-5 11:35
    大小: 51.88KB
    上传者: 物联创客
    本资源内容概要:这是基于51单片机的温湿度距离检测时间1602液晶显示设计,包含了C语言程序源代码(keil软件打开)。本资源适合人群:单片机爱好者、电子类专业学生、电子diy爱好者。本资源能学到什么:可以通过查看电路学习电路设计原理,查看代码学习代码编写原理。本资源使用建议:建议使用者需要具备一定电子技术基础,掌握一些常用元器件原理,例如三极管、二极管、数码管、电容、稳压器等。了解C语言基础设计原理,能看懂基础的电路图,具备一定的电路图软件使用能力。
  • 所需E币: 5
    时间: 2023-8-5 11:33
    大小: 52.01KB
    上传者: 物联创客
    本资源内容概要:这是基于51单片机的温湿度PM2.5检测万年历1602液晶显示设计,包含了C语言程序源代码(keil软件打开)。本资源适合人群:单片机爱好者、电子类专业学生、电子diy爱好者。本资源能学到什么:可以通过查看电路学习电路设计原理,查看代码学习代码编写原理。本资源使用建议:建议使用者需要具备一定电子技术基础,掌握一些常用元器件原理,例如三极管、二极管、数码管、电容、稳压器等。了解C语言基础设计原理,能看懂基础的电路图,具备一定的电路图软件使用能力。
  • 所需E币: 0
    时间: 2023-8-5 11:19
    大小: 47.74KB
    上传者: 物联创客
    本资源内容概要:这是基于51单片机的红外测温万年历1602液晶显示设计,包含了C语言程序源代码(keil软件打开)。本资源适合人群:单片机爱好者、电子类专业学生、电子diy爱好者。本资源能学到什么:可以通过查看电路学习电路设计原理,查看代码学习代码编写原理。本资源使用建议:建议使用者需要具备一定电子技术基础,掌握一些常用元器件原理,例如三极管、二极管、数码管、电容、稳压器等。了解C语言基础设计原理,能看懂基础的电路图,具备一定的电路图软件使用能力。
  • 所需E币: 5
    时间: 2023-8-5 11:10
    大小: 3.34MB
    上传者: 物联创客
    本资源内容概要:这是基于51单片机的脉搏测量1602液晶显示设计,包含了电路图源文件(Altiumdesigner软件打开)、C语言程序源代码(keil软件打开)、元件清单(excel表格打开)。本资源适合人群:单片机爱好者、电子类专业学生、电子diy爱好者。本资源能学到什么:可以通过查看电路学习电路设计原理,查看代码学习代码编写原理。本资源使用建议:建议使用者需要具备一定电子技术基础,掌握一些常用元器件原理,例如三极管、二极管、数码管、电容、稳压器等。了解C语言基础设计原理,能看懂基础的电路图,具备一定的电路图软件使用能力。
  • 所需E币: 5
    时间: 2023-7-28 10:34
    大小: 32.87KB
    上传者: 物联创客
    本资源内容概要:这是基于51单片机的酒精浓度检测1602液晶显示设计,包含了C语言程序源代码(keil软件打开)。本资源适合人群:单片机爱好者、电子类专业学生、电子diy爱好者。本资源能学到什么:可以通过查看电路学习电路设计原理,查看代码学习代码编写原理。本资源使用建议:建议使用者需要具备一定电子技术基础,掌握一些常用元器件原理,例如三极管、二极管、数码管、电容、稳压器等。了解C语言基础设计原理,能看懂基础的电路图,具备一定的电路图软件使用能力。
  • 所需E币: 2
    时间: 2023-7-26 10:07
    大小: 54.6KB
    上传者: 物联创客
    本资源内容概要:这是基于51单片机的自行车测速里程记忆1602液晶显示设计,包含了C语言程序源代码(keil软件打开)。本资源适合人群:单片机爱好者、电子类专业学生、电子diy爱好者。本资源能学到什么:可以通过查看电路学习电路设计原理,查看代码学习代码编写原理。本资源使用建议:建议使用者需要具备一定电子技术基础,掌握一些常用元器件原理,例如三极管、二极管、数码管、电容、稳压器等。了解C语言基础设计原理,能看懂基础的电路图,具备一定的电路图软件使用能力。
  • 所需E币: 5
    时间: 2023-7-22 09:43
    大小: 454.67KB
    上传者: 物联创客
    本资源内容概要:这是基于51单片机的hs1101湿度检测DS18B20温度检测1602液晶显示串口输出设计,包含了电路图源文件(Altiumdesigner软件打开)、C语言程序源代码(keil软件打开)。本资源适合人群:单片机爱好者、电子类专业学生、电子diy爱好者。本资源能学到什么:可以通过查看电路学习电路设计原理,查看代码学习代码编写原理。本资源使用建议:建议使用者需要具备一定电子技术基础,掌握一些常用元器件原理,例如三极管、二极管、数码管、电容、稳压器等。了解C语言基础设计原理,能看懂基础的电路图,具备一定的电路图软件使用能力。
  • 所需E币: 5
    时间: 2023-7-22 09:42
    大小: 38.67KB
    上传者: 物联创客
    本资源内容概要:这是基于51单片机的DHT11温湿度灰尘煤气检测1602液晶显示设计,包含了C语言程序源代码(keil软件打开)。本资源适合人群:单片机爱好者、电子类专业学生、电子diy爱好者。本资源能学到什么:可以通过查看电路学习电路设计原理,查看代码学习代码编写原理。本资源使用建议:建议使用者需要具备一定电子技术基础,掌握一些常用元器件原理,例如三极管、二极管、数码管、电容、稳压器等。了解C语言基础设计原理,能看懂基础的电路图,具备一定的电路图软件使用能力。
  • 所需E币: 2
    时间: 2023-5-11 16:22
    大小: 10.58KB
    上传者: 木头1233
    基于51单片机的串口发送1602显示例程源代码
  • 所需E币: 2
    时间: 2023-5-11 16:21
    大小: 411.7KB
    上传者: 木头1233
    基于51单片机的超声波测距在1602液晶上显示例程
  • 所需E币: 2
    时间: 2023-5-11 16:19
    大小: 11.75KB
    上传者: 木头1233
    基于51单片机的1602显示秒表例程源代码文件
  • 所需E币: 2
    时间: 2023-5-11 16:19
    大小: 3.85KB
    上传者: 木头1233
    基于51单片机的1602液晶显示秒表例程源代码
  • 所需E币: 2
    时间: 2023-5-11 16:19
    大小: 12.46KB
    上传者: 木头1233
    基于51单片机的1602液晶显示温度例程源代码
  • 所需E币: 2
    时间: 2023-5-11 16:22
    大小: 3.51KB
    上传者: 木头1233
    基于51单片机的串口发送1602液晶显示例程源代码
  • 所需E币: 2
    时间: 2023-5-4 13:47
    大小: 897.77KB
    上传者: 木头1233
    基于AT89C51单片机1602液晶显示的DS1302实时时钟Proteus仿真及程序
  • 所需E币: 2
    时间: 2023-5-4 13:47
    大小: 907.46KB
    上传者: 木头1233
    基于AT89C51单片机1602字符液晶滚动演示程序Proteus仿真及程序
  • 所需E币: 2
    时间: 2023-4-20 14:03
    大小: 430.89KB
    上传者: 木头1233
    基于51单片机的1602从右到左移动显示字符设计资料源程序
  • 所需E币: 2
    时间: 2023-4-20 14:03
    大小: 20.36MB
    上传者: 木头1233
    基于51单片机的1602遥控解码设计资料源程序文件
  • 所需E币: 1
    时间: 2022-8-3 22:40
    大小: 25.1KB
    上传者: xyzzyxaaa
    【实验58】DS18B20温度计(1602显示).zip