找回密码
 立即注册

QQ登录

只需一步,快速开始

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

来个大神帮我看下LCD上不显示数据是什么原因

[复制链接]
跳转到指定楼层
楼主

DO口到D7口好像不工作
下面是代码:
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #include <stdio.h>
  4. #include <absacc.h>
  5. #define uchar unsigned char
  6. #define uint unsigned int

  7. #define CON XBYTE[0xfb00]
  8. #define PA XBYTE[0xf800]
  9. #define PB XBYTE[0xf900]
  10. #define PC XBYTE[0xfa00]

  11. uchar code SMG_CODE[] = {/*0,1,2,3,4,5,6,7,8,9,空,*/
  12. 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF,0xbf};
  13. uchar array[8] = {10,10,10,10,10,10,10,0};
  14. sbit SB1 = P1^0;
  15. sbit BUZ = P1^1;

  16. uchar a = 0;

  17. uint H_Time,L_Time;
  18. unsigned long PL;
  19. unsigned long ZQ;

  20. void delayms(uint x)
  21. {
  22.   uchar i;
  23.   while(x--)for(i = 0;i < 120; i++);
  24. }
  25. extern void Init_1602(void);
  26. extern void Xian_String(uchar x,uchar y,uchar *p);
  27. //主函数
  28. void main(void)
  29. {        
  30.         uchar Buffer[20];
  31.         CON = 0x03;
  32.   //初始化
  33.   TMOD = 0x11;
  34.   TH0 = (65536 - 4000)>>8;
  35.   TL0 = (65536 - 4000)&0xff;
  36.   ET0 = 1;
  37.   EA = 1;
  38.   TR0 = 1;
  39.         TH1 = TL1 = 0;
  40.         TR1 = 0;
  41.         EX0 = 1;
  42.         IT0 = 1;
  43.         EX1 = 1;
  44.         IT1 = 1;
  45.         TR1 = 1;
  46.         Init_1602();
  47.         delayms(100);
  48.   while(1)
  49.   {
  50.                 PL = 1000000/ZQ;
  51.                 sprintf(Buffer,"%ldHZ ZQ:%ld",PL,ZQ);
  52.                 Xian_String(0,0,Buffer);
  53.                 sprintf(Buffer,"MaiKuan:%d",H_Time);
  54.                 Xian_String(1,0,Buffer);
  55.                 while(SB1 == 0)BUZ = 0;
  56.                 delayms(1000);
  57.                 BUZ = 1;
  58.   }
  59. }

  60. void EX0_IT0(void) interrupt 0
  61. {
  62.         H_Time = TH1<<8|TL1;
  63.         TH1 = TL1 = 0;
  64.         ZQ = H_Time+L_Time;
  65. }


  66. void EX1_IT1(void) interrupt 2
  67. {
  68.         L_Time = TH1<<8|TL1;
  69.         TH1 = TL1 = 0;
  70. }

  71. void ET0_T0(void) interrupt 1
  72. {
  73.   static uchar i = 0,Wei = 0x01;
  74.   TH0 = (65536 - 4000)>>8;
  75.   TL0 = (65536 - 4000)&0xff;
  76.   PB = 0x00;
  77.   PA = SMG_CODE[array[i]];
  78.   PB = Wei;
  79.   Wei<<=1;
  80.   if(++i == 8){i = 0; Wei = 0x01;}
  81. }

  82. #include <reg52.h>
  83. #include <intrins.h>
  84. #include <absacc.h>
  85. #define uchar unsigned char
  86. #define uint unsigned int

  87. #define PA XBYTE[0x0001]

  88. sbit RS = P1^2;
  89. sbit RW = P1^3;
  90. sbit E = P1^4;

  91. void delayXms(uint x)
  92. {
  93.   uchar i;
  94.   while(x--)for(i = 0; i < 120; i++);
  95. }

  96. void Write_Data(uchar x)
  97. {
  98.   delayXms(1);
  99.   RS = 0;
  100.   RW = 0;
  101.   PA = x;
  102.   E = 1;
  103.   _nop_();
  104.   E = 0;
  105.   RW = 1;
  106. }

  107. void Write_Order(uchar x)
  108. {
  109.   delayXms(1);
  110.   RS = 1;
  111.   RW = 0;
  112.   PA = x;
  113.   E = 1;
  114.   _nop_();
  115.   E = 0;
  116.   RW = 1;
  117. }

  118. void Init_1602(void)
  119. {
  120.   Write_Order(0x38);
  121.   Write_Order(0x38);
  122.   Write_Order(0x08);
  123.   Write_Order(0x01);
  124.   Write_Order(0x06);
  125.   Write_Order(0x0c);
  126. }

  127. void Xian_String(uchar x,uchar y,uchar *p)
  128. {
  129.   uchar i = 0;
  130.   y |= 0x80;
  131.   if(x == 1)y |= 0x40;
  132.   Write_Order(y);
  133.   while(p[i] != 0)
  134.   {
  135.     Write_Data(p[i++]);
  136.   }
  137. }
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:167216 发表于 2017-2-28 18:57 | 只看该作者
额,真是太长了
回复

使用道具 举报

板凳
ID:166400 发表于 2017-2-28 19:02 | 只看该作者
数据显示出来了,但是是乱码
回复

使用道具 举报

地板
ID:166400 发表于 2017-2-28 19:21 | 只看该作者
我想让LCD上显示频率周期和脉宽怎么设置的
回复

使用道具 举报

5#
ID:146949 发表于 2017-2-28 21:00 | 只看该作者

回复

使用道具 举报

6#
ID:7485 发表于 2017-3-1 17:27 | 只看该作者
8255初始化了吗?
回复

使用道具 举报

7#
ID:167489 发表于 2017-3-1 19:22 | 只看该作者
数据有误
回复

使用道具 举报

8#
ID:167491 发表于 2017-3-1 19:41 | 只看该作者
没初始化
回复

使用道具 举报

9#
ID:125378 发表于 2017-3-1 22:04 | 只看该作者
#include <reg52.h> #include <intrins.h> #include <absacc.h> #define uchar unsigned char #define uint unsigned int  #define PA XBYTE[0x0001]  sbit RS = P1^2; sbit RW = P1^3; sbit E = P1^4;  void delayXms(uint x) {   uchar i;   while(x--)for(i = 0; i < 120; i++); }  void Write_D
回复

使用道具 举报

10#
ID:166400 发表于 2017-3-2 11:28 | 只看该作者
王杰 发表于 2017-3-1 22:04
#include  #include  #include  #define uchar unsigned char #define uint unsigned int  #define PA XBYT ...

谢谢
回复

使用道具 举报

11#
ID:154214 发表于 2017-3-2 13:40 | 只看该作者
初始化
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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