找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机检测周期占空比lcd只亮但是不显示

[复制链接]
跳转到指定楼层
楼主
#include <reg52.h>
sbit e = P2^7;
sbit rs = P2^6;
sbit rw = P2^5;
sbit signal=P3^2;
sbit signall=P3^3;
#define uint unsigned int
#define uchar unsigned char
uchar code string1[16]={"Percent: %"};
uchar code string2[16]={"T: ms"};
uchar T[5];
uchar S[4];
void TIMER_init();       
uchar flag = 1;
uint num1,num2;
void delay_ms(uchar t);
void write_com(uchar com);
void write_date(uchar dat);
void init_1602();
void INT_TIMER_init()
{
TMOD = 0X11;
EA = 1;
EX0 = 1;
EX1 = 1;       
IT0 = 1;
IT1 = 1;
ET0=1;
ET1=1;       
}
void delay_ms(uchar t)
{
uchar i = 110;
while(t--)
while(i--)        continue;
}
void write_com(uchar com)
{
e = 0;
rs = 0;
rw = 0;
P0 = com;
delay_ms(1);
e = 1;
delay_ms(10);
e = 0;
}
void write_data(uchar dat)
{
e = 0;
rs = 1;
rw = 0;
P0 = dat;
delay_ms(1);
e = 1;
delay_ms(10);
e = 0;       
}
void init_1602()
{
delay_ms(15);
write_com(0x38);
delay_ms(5);
write_com(0x38);
delay_ms(5);
write_com(0x38);
write_com(0x07);
write_com(0x01);
write_com(0x06);
write_com(0x0c);
}
void main()
{
uchar i;
uint s;
init_1602();
INT_TIMER_init();
for(i=0;i<16;i++)
{
write_data(string1[i]);
}       
write_com(0xc0);
for(i=0;i<16;i++)
{
write_data(string2[i]);
}

while(1)
{       
T[0]='0'+num1%100000/10000;       
T[1]='0'+num1%10000/1000;       
T[2]='0'+num1%1000/100;       
T[3]='0'+num1%100/10;       
T[4]='0'+num1%10;
s = (uint)((num2*1.0/num1)*1000);
S[0] = '0'+s/100;
S[1] = '0'+s%10/10;
S[2] = '.';
S[3] = '0'+s%10;
for(i=0;i<4;i++)
{
if(S[i]=='0')
{
S[i]=' ';
}       
else
{
break;
}       
}       
for(i=0;i<5;i++)
{
if(T[i]=='0')
{
T[i]=' ';       
}       
else
{
break;
}

}
write_com(0x8b);
for(i=0;i<6;i++)
{
write_data(S[i]);       
}
write_com(0xc9);
for(i=0;i<5;i++)
{
write_data(T[i]);       
}
}
}
void int0()        interrupt 0       
{
if(flag)
{
TR0=1;       
TR1=1;
flag = 0;
}
else
{       
TR0 = 0;
num1 = num1+TH0*256+TL0;
num2 = num2+TH1*256+TL1;       
TH0 = 0;
TL0 = 0;
TH1 = 0;
TL1 = 0;
flag = 1;       
}       
}
void int1() interrupt 2       
{
TR1 = 0;
}
void timer0()        interrupt 1
{       
num1=num1+65536;       
}
void timer1()        interrupt 3       
{       
num2=num2+65536;
}


1.png (7.01 KB, 下载次数: 33)

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

使用道具 举报

沙发
ID:155507 发表于 2018-11-24 06:46 | 只看该作者
给你改了一下试试。
  1. #include <reg52.h>
  2. sbit e = P2^7;
  3. sbit rs = P2^6;
  4. sbit rw = P2^5;
  5. sbit signal=P3^2;
  6. sbit signall=P3^3;
  7. #define uint unsigned int
  8. #define uchar unsigned char
  9. uchar code string1[16]={"Percent: %"};
  10. uchar code string2[16]={"T: ms"};
  11. uchar T[5];
  12. uchar S[4];
  13. void TIMER_init();        
  14. uchar flag = 1;
  15. uint num1,num2;
  16. void delay_ms(uchar t);
  17. void write_com(uchar com);
  18. void write_date(uchar dat);
  19. void init_1602();
  20. void INT_TIMER_init()
  21. {
  22.         TMOD = 0X11;
  23.         EA = 1;
  24.         EX0 = 1;
  25.         EX1 = 1;        
  26.         IT0 = 1;
  27.         IT1 = 1;
  28.         ET0=1;
  29.         ET1=1;        
  30. }
  31. void delay_ms(uchar t)
  32. {
  33.         uchar i = 110;
  34.         while(t--)
  35.            while(i--)        continue;
  36. }
  37. void write_com(uchar com)
  38. {
  39.         e = 0;
  40.         rs = 0;
  41.         rw = 0;
  42.         P0 = com;
  43.         //delay_ms(1);
  44.         e = 1;
  45.         delay_ms(1);
  46.         e = 0;
  47. }
  48. void write_data(uchar dat)
  49. {
  50.         e = 0;
  51.         rs = 1;
  52.         rw = 0;
  53.         P0 = dat;
  54.         //delay_ms(1);
  55.         e = 1;
  56.         delay_ms(1);
  57.         e = 0;        
  58. }
  59. void init_1602()
  60. {
  61.         delay_ms(15);
  62.         write_com(0x38);   /*显示模式设置*/
  63.         delay_ms(5);
  64.         write_com(0x38);
  65.         delay_ms(5);
  66.         write_com(0x38);
  67.         write_com(0x08);          /*显示关闭*/
  68.         //write_com(0x07);
  69.         write_com(0x01);  //清屏
  70.         write_com(0x06);  /*显示光标移动设置*/
  71.         write_com(0x0c);  //显示开  /*显示开及光标设置*/
  72. }
  73. void main()
  74. {
  75.         uchar i;
  76.         uint s;
  77.         init_1602();
  78.         INT_TIMER_init();
  79.         for(i=0;i<16;i++)
  80.         {
  81.                 write_data(string1[i]);
  82.         }        
  83.         write_com(0xc0);
  84.         for(i=0;i<16;i++)
  85.         {
  86.                 write_data(string2[i]);
  87.         }

  88.         while(1)
  89.         {        
  90.                 T[0]='0'+num1%100000/10000;        
  91.                 T[1]='0'+num1%10000/1000;        
  92.                 T[2]='0'+num1%1000/100;        
  93.                 T[3]='0'+num1%100/10;        
  94.                 T[4]='0'+num1%10;
  95.                 s = (uint)((num2*1.0/num1)*1000);
  96.                 S[0] = '0'+s/100;
  97.                 S[1] = '0'+s%10/10;
  98.                 S[2] = '.';
  99.                 S[3] = '0'+s%10;
  100.                 for(i=0;i<4;i++)
  101.                 {
  102.                         if(S[i]=='0')
  103.                         {
  104.                                 S[i]=' ';
  105.                         }        
  106.                         else
  107.                         {
  108.                                 break;
  109.                         }        
  110.                 }        
  111.                 for(i=0;i<5;i++)
  112.                 {
  113.                         if(T[i]=='0')
  114.                         {
  115.                                 T[i]=' ';        
  116.                         }        
  117.                         else
  118.                         {
  119.                                 break;
  120.                         }

  121.                 }
  122.                 write_com(0x8b);
  123.                 for(i=0;i<6;i++)
  124.                 {
  125.                         write_data(S[i]);        
  126.                 }
  127.                 write_com(0xc9);
  128.                 for(i=0;i<5;i++)
  129.                 {
  130.                         write_data(T[i]);        
  131.                 }
  132.         }
  133. }
  134. void int0()        interrupt 0        
  135. {
  136.         if(flag)
  137.         {
  138.                 TR0=1;        
  139.                 TR1=1;
  140.                 flag = 0;
  141.         }
  142.         else
  143.         {        
  144.                 TR0 = 0;
  145.                 num1 = num1+TH0*256+TL0;
  146.                 num2 = num2+TH1*256+TL1;        
  147.                 TH0 = 0;
  148.                 TL0 = 0;
  149.                 TH1 = 0;
  150.                 TL1 = 0;
  151.                 flag = 1;        
  152.         }        
  153. }
  154. void int1() interrupt 2        
  155. {
  156.         TR1 = 0;
  157. }
  158. void timer0()        interrupt 1
  159. {        
  160.         num1=num1+65536;        
  161. }
  162. void timer1()        interrupt 3        
  163. {        
  164.         num2=num2+65536;
  165. }

复制代码
回复

使用道具 举报

板凳
ID:94031 发表于 2018-11-24 11:54 | 只看该作者
程序和硬件连接不一致:
1 液晶D0-D7程序是接P0口,硬件接在P1口。
2  E,RW,RS 硬件也和程序不一致。
回复

使用道具 举报

地板
ID:432118 发表于 2018-11-25 12:54 | 只看该作者
angmall 发表于 2018-11-24 06:46
给你改了一下试试。

屏幕亮了,但是没有数据
回复

使用道具 举报

5#
ID:432118 发表于 2018-11-25 12:55 | 只看该作者
xuyaqi 发表于 2018-11-24 11:54
程序和硬件连接不一致:
1 液晶D0-D7程序是接P0口,硬件接在P1口。
2  E,RW,RS 硬件也和程序不一致。

e,rs,rw 连接是一致的,硬件连载p1口也是一样的结果
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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