找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 805|回复: 1
打印 上一主题 下一主题
收起左侧

protues仿真LCD1601亮但是没有显示.求大佬指点一下

[复制链接]
跳转到指定楼层
楼主
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #include<math.h>
  4. #define uint unsigned int
  5. #define uchar unsigned char
  6. #define RS_CLR RS=0
  7. #define RS_SET RS=1
  8. #define RW_CLR RW=0
  9. #define RW_SET RW=1
  10. #define EN_CLR EN=0
  11. #define EN_SET EN=1
  12. #define DataPort P2
  13. sbit RS = P3^0;
  14. sbit RW= P3^1;
  15. sbit EN = P3^2;
  16. unsigned char Data        ;
  17. unsigned char x;
  18. unsigned char y ;
  19. void LCD_Init(void)  ;
  20. void inti()
  21. {LCD_Init() ;
  22. TMOD=0x05 ;/
  23. TH0=F0 ;
  24. TL0=60 ;/
  25. TR0=1;
  26. }

  27. // μ¥???ú??????3?êy??
  28. uint num;

  29. void delay(uint xms)
  30. {
  31. uint j;
  32. for(;xms>0;xms--)
  33. for(j=110;j>0;j--);
  34. }

  35. void DelayUs2x(unsigned char t)
  36. {
  37. while(--t);        }

  38. void DelayMs(unsigned char t)
  39. {
  40. while(t--)
  41. {
  42. DelayUs2x(245);
  43. DelayUs2x(245);        }}

  44. bit LCD_Check_Busy(void)
  45. {
  46. DataPort= 0xFF;
  47. RS_CLR;
  48. RW_SET;
  49. EN_CLR;
  50. _nop_();
  51. EN_SET;
  52. return (bit)(DataPort & 0x80);        }

  53. void LCD_Write_Com(unsigned char com)
  54. {  
  55. // while(LCD Check Busy0)
  56. DelayMs(5);
  57. RS_CLR;
  58. RW_CLR;
  59. EN_SET ;
  60. DataPort= com;
  61. _nop_();
  62. EN_CLR;           }
  63.       

  64. void LCD_Write_Data(unsigned char Data)
  65. {
  66. //while(LCD_Check_Busy0)
  67. DelayMs(5);
  68. RS_SET;
  69. RW_CLR;
  70. EN_SET;
  71. DataPort= Data;
  72. _nop_();
  73. EN_CLR;}

  74. void LCD_Clear(void)
  75. {
  76. LCD_Write_Com(0x01);
  77. DelayMs (5);         }

  78. void LCD_Write_String (unsigned char x, unsigned char y,unsigned char        *s)
  79. {
  80. if (y == 0)
  81. {
  82. LCD_Write_Com(0x80 + x);
  83. }
  84. else
  85. {
  86. LCD_Write_Com(0xC0 + x);
  87. }
  88. while (*s)
  89. {
  90. LCD_Write_Data( *s);
  91. s ++;        }}      

  92. void LCD_Write_Char(unsigned char x, unsigned char y, unsigned char Data)  
  93. {
  94. if (y == 0)
  95. {
  96. LCD_Write_Com(0x80 + x);
  97. }
  98. else
  99. {
  100. LCD_Write_Com(0xC0 + x);
  101. }
  102. LCD_Write_Data( Data); }

  103. void LCD_Init(void)
  104. {
  105. LCD_Write_Com(0x38);  
  106. DelayMs(5);
  107. LCD_Write_Com(0x38);
  108. DelayMs(5);
  109. LCD_Write_Com(0x38);

  110. DelayMs (5) ;
  111. LCD_Write_Com(0x38);
  112. LCD_Write_Com(0x08);
  113. LCD_Write_Com(0x01);
  114. LCD_Write_Com(0x06);
  115. DelayMs (5);
  116. LCD_Write_Com(0x0C); }

  117. void main()
  118. {
  119. inti();
  120. while(1)
  121. {
  122. float num1,num2,num;
  123. Data=TH0*255+TL0;
  124. if(Data==4000)
  125. {
  126. TH0=F0;
  127. TL0=60;
  128. TR0=0;
  129. }
  130. num1=Data/4*0.05;
  131. num2=0.05/4*(Data%4);
  132. num=num1+num2;
  133. LCD_Write_Char(x,y,num) ;
  134. }

  135. }
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1038987 发表于 2023-5-27 20:09 | 只看该作者
这么复 杂。没有什么意义吧。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表