haoDIY创好电子音响电脑科技DIY小制作发明移动版

主页 > 电子DIY > 工具仪表 > 仪器仪表 >

大小通吃的电感表,精度还很好(2)

  • //==========================================================================
  • // 项目:LCD1602 四线驱动程序
  • // 设计要点:
  • //     LCD1602 的运行速度慢,而单片机运行的速度快,因此容易因为速度不
  • //     匹配造成调试失败。因此,调试之前应准确测试lcd_delay() 延时函数
  • //     准确的延时量,如果不能满足注释中的要求,则应调整循次数。每步操
  • //     作所需的延时量,按照数据手册指标指行,同时留下足够的时间余量。
  • // 硬件连接:
  • //     至少需要9条线,电源线2条,7条信号线。信号线详见程序中的接口定义。
  • //     清注意对LCD1602比对的调节,否则无显示。
  • // 设计:许剑伟,于莆田,2010.12
  • //==========================================================================
  • sbit lcd_RS = P0^1; //数据命令控制位,0命令1数据
  • sbit lcd_RW = P0^2; //读写位,0写1读
  • sbit lcd_EN = P0^3; //使能位,下降沿触发
  • sbit lcd_D4 = P0^7; //数据端口D4
  • sbit lcd_D5 = P0^6; //数据端口D5
  • sbit lcd_D6 = P0^5; //数据端口D6
  • sbit lcd_D7 = P0^4; //数据端口D7
  • //==========================================================================
  • void lcd_delay(int n){ //LCD专用延时函数
  •   //32MHz钟频下,约循环3000次延迟1毫秒
  •   int i,j;
  •   if(n<0)    { for(i=0;i< 20;i++); return; } //10us
  •   if(n== 0)  { for(i=0;i<100;i++); return; } //50us
  •   for(;n;n--){ for(j=0;j<2000;j++);        } //n毫秒
  • }
  • //==========================================================================
  • void lcd_B(char f, uchar c, char t){ //控制四线式接口LCD的7个脚
  •   //f=0写命令字, f=1写RAM数据, f=2读地址(或读忙), f=3读RAM数据
  •   lcd_EN = 0;
  •   lcd_RS = f%2;
  •   lcd_RW = f/2%2;
  •   //移入高四位
  •   lcd_D4 = c & 16;
  •   lcd_D5 = c & 32;
  •   lcd_D6 = c & 64;
  •   lcd_D7 = c & 128;
  •   lcd_EN = 1;  lcd_delay(-1);  lcd_EN = 0; //使能脉冲
  •   if(f==4) { lcd_delay(t); return; }
  •   //移入低四位
  •   lcd_D4 = c & 1;
  •   lcd_D5 = c & 2;
  •   lcd_D6 = c & 4;
  •   lcd_D7 = c & 8;
  •   lcd_EN = 1;  lcd_delay(-1);  lcd_EN = 0; //使能脉冲
  •   lcd_delay(t);  //不同的命令,响应时间不同,清零命令需要2ms
  • }
  • //==========================================================================
  • void lcd_init(){ //LCD1602 初始化
  •   //启动四线模式须势行9个步骤,初始化所须耗时较长,约65ms,时限不可减
  •   lcd_delay(20); //启动lcd之前须延时大于15ms,直到VDD大于4.5V
  •   lcd_B(4, 0x30, 9); //置8线模式,须延时大于4.1ms
  •   lcd_B(4, 0x30, 5); //置8线模式,须延时大于100us
  •   lcd_B(4, 0x30, 5); //置8线模式,手册中未指定延时
  •   lcd_B(4, 0x20, 5); //进入四线模式
  •   lcd_B(0, 0x28, 5); //四线模式双行显示
  •   lcd_B(0, 0x0C, 5); //打开显示器
  •   lcd_B(0, 0x80, 5); //RAM指针定位
  •   lcd_B(0, 0x01, 5); //启动清屏命初始化LCD
  • }
  • //========================================================================== (责任编辑:admin)
  • haoDIY创好电子 版权所有,电话微信13977534587