标题: 简易计算器的制作中遇到的问题 [打印本页]

作者: le51    时间: 2017-3-23 16:30
标题: 简易计算器的制作中遇到的问题
wcmd(0x38,0);请问各位大神这是什么意思。wcmd是写数据或命令输入到1602地址中设的子函数;这个程序片段是液晶初始化时的程序。主要是后面是0是和是1时代表什么。

作者: admin    时间: 2017-3-23 18:10
wcmd是一个自定义函数,楼主需要把全部源码贴上来 结合上下文 才能看明白意思
作者: g753388438    时间: 2017-3-23 21:00
我猜你这个0和1分别是液晶写指令和写数据,但是具体的还得看你的源码
作者: le51    时间: 2017-3-24 11:13
void wdat(uchar dat) //数据在1602显示
{
    P0=dat;
    busy();
    rs=1;
    rw=0;
    delay(5);
    e=1;
    delay(5);
    e=0;}
void wcmd(uchar cmd,uchar BFC) //写命令或写数据输出到1602的地址
{
    P0=cmd;
    if(BFC) busy();
    rs=0;
    rw=0;
    delay(5);
    e=1;
    delay(5);
    e=0;}   
void init()  //1602初始化
{   e=0;
    wcmd(0x38,0);
    wcmd(0x38,0);
    wcmd(0x38,0);
    wcmd(0x38,1);
    wcmd(0x08,1);
    wcmd(0x01,1);
    wcmd(0x06,1);
    wcmd(0x0c,1);}
拜托大家再帮忙看一下吧
作者: ljq1978    时间: 2017-3-24 16:27
这个是自己定义的吧。不是系统函数哦
作者: eee123    时间: 2017-3-24 16:35
不行啊,你这个代码不全啊,根本没办法看
作者: 123ert    时间: 2017-3-24 17:11
母鸡啊
作者: angmall    时间: 2017-3-24 18:57
  1. //主要是后面的是0时和是1时代表要不要 忙信号检测。 BF(液晶显示器是否忙) 检测
  2. void wcmd(uchar cmd,uchar BFC) //写指令到1602
  3. {

  4.         P0=cmd;
  5.         if(BFC) busy();    //进行忙检测
  6.         rs=0;
  7.         rw=0;
  8.         delay(5);
  9.         e=1;
  10.         delay(5);
  11.         e=0;

  12. }

  13. void init()
  14. {

  15.         e=0;
  16.         wcmd(0x38,0);  //不进行忙检测,强制执行三次。
  17.         wcmd(0x38,0);
  18.         wcmd(0x38,0);
  19.         wcmd(0x38,1); //工作模式设置,8位数据线,双行显示,要忙检  
  20.         wcmd(0x08,1); //关闭显示屏幕和光标
  21.         wcmd(0x01,1); //显示清屏
  22.         wcmd(0x06,1); //显示光标向右移动
  23.         wcmd(0x0c,1); //显示屏幕开启,但光标不出现
  24.         TMOD=0x01; //定时器0的工作模式为定时器0方式1,16位
复制代码

作者: le51    时间: 2017-3-24 21:40
angmall 发表于 2017-3-24 18:57

多谢指点,受教了。
作者: shudai123    时间: 2017-3-25 13:37
好难呀

作者: run12    时间: 2017-3-25 13:49
不错,学习了
作者: lib@    时间: 2017-3-25 20:58
不错  学习了




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1