找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2305|回復: 4
打印 上一主題 下一主題
收起左側

單片機檢測周期占空比lcd只亮但是不顯示

[復制鏈接]
跳轉到指定樓層
樓主
ID:432118 發(fā)表于 2018-11-23 23:00 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
#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, 下載次數(shù): 33)

1.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:155507 發(fā)表于 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 發(fā)表于 2018-11-24 11:54 | 只看該作者
程序和硬件連接不一致:
1 液晶D0-D7程序是接P0口,硬件接在P1口。
2  E,RW,RS 硬件也和程序不一致。
回復

使用道具 舉報

地板
ID:432118 發(fā)表于 2018-11-25 12:54 | 只看該作者
angmall 發(fā)表于 2018-11-24 06:46
給你改了一下試試。

屏幕亮了,但是沒有數(shù)據
回復

使用道具 舉報

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

e,rs,rw 連接是一致的,硬件連載p1口也是一樣的結果
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表