天天ok

    1. 谢谢,错误有两处,一处在应答函数,应答时scl是高电平,一处在写数据处,一个数据写完,没有释放总线。我改了,能工作了.不知还有没有问题?
    2. 关于1602液晶显示 6/2478 单片机 2015-04-06
      奋斗吧小鱼儿 发表于 2015-4-6 18:41 程序也没给全,怎么帮你看~。可以确定是,肯定程序有错误~
      #include #include #define uint unsigned int #define uchar unsigned char uchar string[]={"I am pengfa"}; uchar string1[]={"good men"}; sbit RS=P2^0; sbit RW=P2^1; sbit E=P2^2; sbit BF=P0^7; /*1ms延时函数*/ void delay1ms(void) {   uchar i,j;   for(i=100;i>0;i--)    for(j=7;j>0;j--); } /* 1ms延时函数的调用*/ void delay(uchar i) {         for(i;i>0;i--)         {                 delay1ms();         } } /*判断忙信号*/ uchar zero(void) {           RS=0;         //读取忙信号         RW=1;         E=1;          _nop_();   //空操作     _nop_();     _nop_();     _nop_();         return BF; } /*写命令函数*/ void sendaddress(uchar i) {   while(zero()==1);   RS=0;   RW=0;   E=0;   P0=i;    _nop_();   //空操作     _nop_();     _nop_();     _nop_();   E=1;    _nop_();   //空操作     _nop_();     _nop_();     _nop_();   E=0; } /*写数据函数*/ void senddate(uchar i) {   while(zero()==1) ;   RS=1;   RW=0;   E=0;   P0=i;   _nop_();   //空操作     _nop_();     _nop_();     _nop_();   E=1;    _nop_();   //空操作     _nop_();     _nop_();     _nop_();   E=0; } /*写地址函数*/ void writeaddress(uchar i) {   sendaddress(i|0x80) ;        //设定DDRAM地址,字符显示地址 } /*1602液晶初始状态设置*/ void setup1602(void) {   delay(20);   sendaddress(0x38);//8位数据总线 显示两行 5*7点阵DB7~DB0 0011 1000   delay(3);    sendaddress(0x38);    delay(3);   sendaddress(0x0f);//光标右移一格 AC加一 0000 1000   delay(3);   sendaddress(0x06);//写入数据后光标右移      delay(3);   sendaddress(0x01);//清屏   delay(3);        } void main() {    uchar i;    setup1602();         sendaddress(0x01); //先清屏         writeaddress(0x00);//从00H开始显示    i=0;    while(string!='\0')    {       senddate(string);                             i++;                         delay(500);           }         writeaddress(0x40);//从40H处开始显示         sendaddress(0x01);//清屏         i=0;         while(string1!='\0')         {                                                                  senddate(string1);           i++;           delay(500);         } while(5000); } 谢谢了
    3. 关于1602液晶显示 6/2478 单片机 2015-04-06
      flashtt 发表于 2015-4-6 20:36 呃,能贴个完整程序吗,可能是显示地址的问题吧
      #include #include #define uint unsigned int #define uchar unsigned char uchar string[]={"I am pengfa"}; uchar string1[]={"good men"}; sbit RS=P2^0; sbit RW=P2^1; sbit E=P2^2; sbit BF=P0^7; /*1ms延时函数*/ void delay1ms(void) {   uchar i,j;   for(i=100;i>0;i--)    for(j=7;j>0;j--); } /* 1ms延时函数的调用*/ void delay(uchar i) {         for(i;i>0;i--)         {                 delay1ms();         } } /*判断忙信号*/ uchar zero(void) {           RS=0;         //读取忙信号         RW=1;         E=1;          _nop_();   //空操作     _nop_();     _nop_();     _nop_();         return BF; } /*写命令函数*/ void sendaddress(uchar i) {   while(zero()==1);   RS=0;   RW=0;   E=0;   P0=i;    _nop_();   //空操作     _nop_();     _nop_();     _nop_();   E=1;    _nop_();   //空操作     _nop_();     _nop_();     _nop_();   E=0; } /*写数据函数*/ void senddate(uchar i) {   while(zero()==1) ;   RS=1;   RW=0;   E=0;   P0=i;   _nop_();   //空操作     _nop_();     _nop_();     _nop_();   E=1;    _nop_();   //空操作     _nop_();     _nop_();     _nop_();   E=0; } /*写地址函数*/ void writeaddress(uchar i) {   sendaddress(i|0x80) ;        //设定DDRAM地址,字符显示地址 } /*1602液晶初始状态设置*/ void setup1602(void) {   delay(20);   sendaddress(0x38);//8位数据总线 显示两行 5*7点阵DB7~DB0 0011 1000   delay(3);    sendaddress(0x38);    delay(3);   sendaddress(0x0f);//光标右移一格 AC加一 0000 1000   delay(3);   sendaddress(0x06);//写入数据后光标右移      delay(3);   sendaddress(0x01);//清屏   delay(3);        } void main() {    uchar i;    setup1602();         sendaddress(0x01); //先清屏         writeaddress(0x00);//从00H开始显示    i=0;    while(string!='\0')    {       senddate(string);                             i++;                         delay(500);           }         writeaddress(0x40);//从40H处开始显示         sendaddress(0x01);//清屏         i=0;         while(string1!='\0')         {                                                                  senddate(string1);           i++;           delay(500);         } while(5000); } 谢谢了
    4. 1206液晶的显示问题 5/2207 单片机 2015-04-05
      不过现在调好了,但是显示出来问题,后面总是跟着杂符号,该怎么解决呢?
    5. 1206液晶的显示问题 5/2207 单片机 2015-04-05
      就是什么都显示不了
    6. 模拟集成电路三本圣经(书及答案) 566/120397 模拟电子 2015-04-03
      解压不了啊
    7. 从零开始学模电系列讲座(力荐) 494/232643 模拟电子 2015-04-02
      那些基础知识太多了
    8. 关于模电数电的问题 9/2882 51单片机 2015-04-01
      chunyang 发表于 2015-3-31 22:18 很多看不到用处的东西因为往往用的太多所以隐藏在表面之下,但不等于不存在,更不等于不重要。恰恰相反,那些东西极重要,甚至可以说,你真学明白了模电、数电,单片机根本就不用学,拿起来就能用,一用就是高手。 有这样的人么?俺就是。
      牛啊!
    9. EETALK——电子工程师35岁之后都有什么打算? 22/6272 工作这点儿事 2015-03-31
      正在前往电子工程师的路上?师哥能给小弟一点建议吗?我现在很迷茫,徘徊在找工作和考研上。

最近访客

< 1/1 >

统计信息

已有2人来访过

  • 芯积分:--
  • 好友:1
  • 主题:7
  • 回复:9

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言