标题: atmega 16控制lcd1602 仿真可以,实物电路为什么不行? [打印本页]

作者: 3029936164    时间: 2017-4-20 21:23
标题: atmega 16控制lcd1602 仿真可以,实物电路为什么不行?
atmega 16控制lcd1602 仿真可以,实物电路为什么不行?

作者: cjjcjj1    时间: 2017-4-21 10:50
提示: 作者被禁止或删除 内容自动屏蔽
作者: 1300584512    时间: 2017-4-21 13:24
在仔细检查,问题可能性很多,比如型号不一致,线路问题,芯片坏的.....细节决定成败
作者: 3029936164    时间: 2017-4-21 14:14
1300584512 发表于 2017-4-21 13:24
在仔细检查,问题可能性很多,比如型号不一致,线路问题,芯片坏的.....细节决定成败

在程序方面atmega16与51系列单片机有什么不同吗?
作者: wc86110    时间: 2017-4-21 14:36
3029936164 发表于 2017-4-21 14:14
在程序方面atmega16与51系列单片机有什么不同吗?

有差别一个是 AVR,一个是 C51
作者: 3029936164    时间: 2017-4-21 16:13
wc86110 发表于 2017-4-21 14:36
有差别一个是 AVR,一个是 C51

就是在写程序写命令等操作是有没有与51有什么不同的地方
作者: lovexiaodong    时间: 2017-4-21 16:18
cd1602  不怎么用仿真 不太懂
作者: 3029936164    时间: 2017-4-21 18:08
Matthew175 发表于 2017-4-21 16:17
456456456

几个意思?
作者: 3029936164    时间: 2017-4-21 18:10
cjjcjj1 发表于 2017-4-21 10:50
发程序和原理图,还有实物

我的程序太乱了,你可能看起来比较费劲,大神可有那种仿真通过、实物可调出来的,分享一下?O(∩_∩)O谢谢
作者: 3029936164    时间: 2017-4-21 18:12
lovexiaodong 发表于 2017-4-21 16:18
cd1602  不怎么用仿真 不太懂

大神有程序吗?分享学习一下
作者: 3029936164    时间: 2017-4-21 21:09
cjjcjj1 发表于 2017-4-21 10:50
发程序和原理图,还有实物
  1. #include <iom16v.h>
  2. #include <macros.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. #define lcd_RS_1 PORTD|=BIT(PD0)
  6. #define lcd_RS_0 PORTD&=~BIT(PD0)
  7. #define lcd_RW_1 PORTD|=BIT(PD1)
  8. #define lcd_RW_0 PORTD&=~BIT(PD1)
  9. #define lcd_EN_1 PORTD|=BIT(PD2)
  10. #define lcd_EN_0 PORTD&=~BIT(PD2)

  11. char  table1[]= {"  Good morning "};
  12. char  table2[]= {"   wodediana! "};

  13. void delay(int x)
  14. {
  15.     int i;
  16.     while(x--)
  17.     {
  18.         for(i=0; i<1140; i++);

  19.     }
  20. }

  21. void writedata(char dat)
  22. {
  23.        
  24.         DDRD|=0x01;
  25.         lcd_RS_1;
  26.         DDRD|=0x02;
  27.         lcd_RW_0;
  28.         DDRC=0xff;
  29.         PORTC=dat;
  30.         delay(5);
  31.        
  32.         DDRD|=0x04;
  33.         lcd_EN_1;
  34.         delay(1);
  35.         DDRD|=0x04;
  36.         lcd_EN_0;
  37. }

  38. void writecommand(char com)
  39. {
  40.    
  41.        
  42.     DDRD|=0x01;
  43.         lcd_RS_0;
  44.         DDRD|=0x02;
  45.         lcd_RW_0;
  46.         DDRC=0xff;
  47.         PORTC=com;
  48.         delay(5);
  49.        
  50.         DDRD|=0x04;
  51.         lcd_EN_1;
  52.         delay(1);
  53.         DDRD|=0x04;
  54.         lcd_EN_0;
  55.        
  56. }

  57. void init()
  58. {   
  59.     DDRD|=0x04;
  60.     lcd_EN_0;
  61.     writecommand(0x38);           
  62.     writecommand(0x0c);           
  63.     writecommand(0x06);           
  64.     writecommand(0x01);         
  65. }

  66. void main(void)
  67. {
  68.     int j;
  69.     init();
  70.         DDRD=0xff;
  71.         DDRC=0xff;
  72.     while(1)
  73.     {
  74.         j=0;
  75.         while(table1[j]!='\0')
  76.         {

  77.             writedata(table1[j]);
  78.             j++;
  79.             delay(10);
  80.         }
  81.         j=0;
  82.         writecommand(0x80+0x40);
  83.         while(table2[j]!='\0')
  84.         {
  85.             writedata(table2[j]);
  86.             j++;
  87.             delay(10);
  88.         }
  89.         writecommand(0x01);
  90.         delay(100);
  91.     }
  92. }
复制代码

作者: 3029936164    时间: 2017-4-21 21:12
原理图
作者: 51Lovers    时间: 2017-4-21 22:00
仿真环境是理想环境,实物有问题主要是时序问题,根据技术资料调整时序




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