久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

仿真的引腳都對應高低電平閃爍了,屏幕也亮了,但是就是不顯示東西,大佬求救!

[復制鏈接]
跳轉到指定樓層
樓主

  1. #include<reg51.h>
  2. #include"LCD1602.h"
  3. #include"DS1302.h"
  4. #define uchar unsigned char
  5. #define uint unsigned int
  6. bit key_flag1=0,key_flag2=0;
  7. SYSTEMTIME adjusted;

  8. uchar sec_add=0,min_add=0,hou_add=0,day_add=0,mon_add=0,yea_add=0;
  9. uchar data_alarm[7]={0};

  10. int key_scan()
  11. {
  12.   int i=0;
  13.   uint temp;
  14.   P1=0xf0;
  15.   temp=P1;
  16.   if(temp!=0xf0)
  17.   {
  18.           i=1;
  19.   }
  20.   else
  21.   {
  22.            i=0;
  23.   }
  24.   return i;
  25. }

  26. uchar key_value()
  27. {
  28.    uint m=0,n=0,temp;
  29.    uchar value;
  30.    uchar v[4][3]={'2','1','0','5','4','3','8','7','6','b','a','9'};
  31.    P1=0xfe;temp=P1;if(temp!=0xfe)m=0;
  32.    P1=0xfd;temp=P1;if(temp!=0xfd)m=1;
  33.    P1=0xfb;temp=P1;if(temp!=0xfb)m=2;
  34.    P1=0xf7;temp=P1;if(temp!=0xf7)m=3;
  35.    P1=0xef;temp=P1;if(temp!=0xef)m=0;
  36.    P1=0xdf;temp=P1;if(temp!=0xdf)m=1;
  37.    P1=0xbf;temp=P1;if(temp!=0xbf)m=2;
  38.    value=v[m][n];
  39.    return value;
  40. }
  41. void adjust(void)
  42. {
  43.    if(key_scan()&&key_flag1)
  44.    switch(key_value())
  45.    {
  46.              case'0':sec_add++;break;
  47.           case'1':min_add++;break;
  48.           case'2':hou_add++;break;
  49.           case'3':day_add++;break;
  50.           case'4':mon_add++;break;
  51.           case'5':yea_add++;break;
  52.           default:break;
  53.    }
  54.    adjusted.Second+=sec_add;
  55.    adjusted.Minute+=min_add;
  56.    adjusted.Hour+=hou_add;
  57.    adjusted.Day+=day_add;
  58.    adjusted.Month+=mon_add;
  59.    adjusted.Year+=yea_add;
  60.    if(adjusted.Second>59)
  61.    {
  62.              adjusted.Second=adjusted.Second%60;
  63.           adjusted.Minute++;
  64.    }
  65.    if(adjusted.Minute>59)
  66.    {
  67.               adjusted.Minute=adjusted.Minute%60;
  68.            adjusted.Hour++;
  69.    }
  70.    if(adjusted.Hour>23)
  71.    {
  72.              adjusted.Hour=adjusted.Hour%24;
  73.           adjusted.Day++;
  74.    }
  75.    if(adjusted.Day>31)adjusted.Day=adjusted.Day%31;
  76.    if(adjusted.Month>12)adjusted.Month=adjusted.Month%12;
  77.    if(adjusted.Year>100)adjusted.Year=adjusted.Year%100;   
  78. }

  79. void changing(void)interrupt 0 using 0
  80. {
  81.    if(key_flag1)
  82.    key_flag1=0;
  83.    if(key_flag1)
  84.    key_flag1=1;
  85. }

  86. main()
  87. {
  88.    uint i;
  89.    uchar p1[]="D;",p2[]="T:";
  90.    SYSTEMTIME T;

  91.    EA=1;
  92.    EX0=1;
  93.    IT0=1;
  94.    EA=1;
  95.    EX1=1;
  96.    IT1=1;
  97.    init1602();
  98.    Initial_DS1302();

  99.    while(1)
  100.    {
  101.              write_com(0x80);
  102.           write_string(p1,2);
  103.           write_com(0xc0);
  104.           write_string(p2,2);
  105.           DS1302_GetTime(&T);
  106.           adjusted.Second=T.Second;
  107.           adjusted.Minute=T.Minute;
  108.           adjusted.Hour=T.Hour;
  109.           adjusted.Week=T.Week;
  110.           adjusted.Day=T.Day;
  111.           adjusted.Month=T.Month;
  112.           adjusted.Year=T.Year;
  113.           for(i=0;i<9;i++)
  114.           {
  115.                    adjusted.DateString[i]=T.DateString[i];
  116.                  adjusted.TimeString[i]=T.TimeString[i];
  117.           }
  118.           adjust();
  119.           DateToStr(&adjusted);
  120.           TimeToStr(&adjusted);
  121.           write_com(0x82);
  122.           write_string(adjusted.DateString,8);
  123.           write_com(0xc2);
  124.           write_string(adjusted.TimeString,8);
  125.           delay(10);

  126.    }
  127. }
復制代碼


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

使用道具 舉報

沙發
ID:235200 發表于 2019-12-16 17:42 | 只看該作者
不顯示的關鍵在write_string這個函數是否符合1602的時序,因程序未貼出,難以判斷問題所在處
回復

使用道具 舉報

板凳
ID:657149 發表于 2019-12-16 20:27 | 只看該作者
csmyldl 發表于 2019-12-16 17:42
不顯示的關鍵在write_string這個函數是否符合1602的時序,因程序未貼出,難以判斷問題所在處
  1. #ifndef LCD_CHAR_1602_2005_4_9
  2. #define LCD_CHAR_1602_2005_4_9
  3. #define uchar unsigned char
  4. #define uint unsigned int

  5. sbit lcdrs=P2^0;
  6. sbit lcdrw=P2^1;
  7. sbit lcden=P2^2;

  8. void delay(uint z)
  9. {
  10.    uint x,y;
  11.    for(x=z;x>0;x--)
  12.    for(y=110;y>0;y--);
  13. }

  14. void write_com(uchar com)
  15. {
  16.    lcdrw=0;
  17.    lcden=0;
  18.    P0=com;
  19.    delay(5);
  20.    lcden=1;
  21.    delay(5);
  22.    lcden=0;
  23. }

  24. void write_data(uchar date)
  25. {
  26.    lcdrw=0;
  27.    lcdrs=1;
  28.    P0=date;
  29.    delay(5);
  30.    lcden=1;
  31.    delay(5);
  32.    lcden=0;
  33. }
  34. void init1602()
  35. {
  36.   lcdrw=0;
  37.   lcden=0;
  38.   write_com(0x3c);
  39.   write_com(0x0c);
  40.   write_com(0x06);
  41.   write_com(0x01);
  42.   write_com(0x80);
  43. }

  44. void write_string(uchar *pp,uint n)
  45. {
  46.    int i;
  47.    for(i=0;i<n;i++)
  48.    write_data(pp[i]);
  49. }

  50. #endif
復制代碼
回復

使用道具 舉報

地板
ID:657149 發表于 2019-12-16 20:28 | 只看該作者
csmyldl 發表于 2019-12-16 17:42
不顯示的關鍵在write_string這個函數是否符合1602的時序,因程序未貼出,難以判斷問題所在處

這個是1602的頭文件函數可以幫我看看嗎
回復

使用道具 舉報

5#
ID:657149 發表于 2019-12-16 20:28 | 只看該作者
我馬上把1602的頭文件貼出來,大佬可以幫我看看嗎
回復

使用道具 舉報

6#
ID:657149 發表于 2019-12-16 20:29 | 只看該作者
  1. #ifndef LCD_CHAR_1602_2005_4_9
  2. #define LCD_CHAR_1602_2005_4_9
  3. #define uchar unsigned char
  4. #define uint unsigned int

  5. sbit lcdrs=P2^0;
  6. sbit lcdrw=P2^1;
  7. sbit lcden=P2^2;

  8. void delay(uint z)
  9. {
  10.    uint x,y;
  11.    for(x=z;x>0;x--)
  12.    for(y=110;y>0;y--);
  13. }

  14. void write_com(uchar com)
  15. {
  16.    lcdrw=0;
  17.    lcden=0;
  18.    P0=com;
  19.    delay(5);
  20.    lcden=1;
  21.    delay(5);
  22.    lcden=0;
  23. }

  24. void write_data(uchar date)
  25. {
  26.    lcdrw=0;
  27.    lcdrs=1;
  28.    P0=date;
  29.    delay(5);
  30.    lcden=1;
  31.    delay(5);
  32.    lcden=0;
  33. }
  34. void init1602()
  35. {
  36.   lcdrw=0;
  37.   lcden=0;
  38.   write_com(0x3c);
  39.   write_com(0x0c);
  40.   write_com(0x06);
  41.   write_com(0x01);
  42.   write_com(0x80);
  43. }

  44. void write_string(uchar *pp,uint n)
  45. {
  46.    int i;
  47.    for(i=0;i<n;i++)
  48.    write_data(pp[i]);
  49. }

  50. #endif
復制代碼
回復

使用道具 舉報

7#
ID:235200 發表于 2019-12-17 01:12 | 只看該作者
adjusted.DateString[i]=T.DateString[i];
adjusted.TimeString[i]=T.TimeString[i];
這兩行把從DS1302讀出的時分秒年月日轉存,但沒有把它變為ASCII碼,如顯示0,要把0變為0x30,顯示1要變為0x31,也即所有數字顯示均需要加0x30,如果顯示字母,也要對應轉換為相應ASCII碼值
回復

使用道具 舉報

8#
ID:213173 發表于 2019-12-17 10:35 | 只看該作者
樓主這個程序好像是東拼西湊來的。模塊化程序通常是一個模塊對應一個.C和一個.H文件。樓主這不按正常套路把兩者混在一起。還用了另類數據結構SYSTEMTIME adjusted; Keil編譯器無法識別。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久国产麻豆 | 日本精品999 | 日韩免费视频一区二区 | 欧美成人一区二区 | 精品国产91乱码一区二区三区 | 羞视频在线观看 | 视频一区二区在线观看 | 91亚洲国产 | 成人依人| 中文字幕高清在线 | 久久精品91 | 91网站视频在线观看 | 中文字幕三区 | 国产区在线观看 | 日韩欧美视频 | 亚洲精品av在线 | 人人人艹 | 国产99久久精品一区二区永久免费 | 日韩在线一区二区 | 国产精品海角社区在线观看 | 亚洲欧美精品 | 亚洲精品视频在线观看视频 | 91精品久久久久久久久 | 欧美一级二级三级视频 | 五月天婷婷丁香 | 日韩三极 | 午夜亚洲 | 免费一级网站 | 久久久国产视频 | 精品国产乱码久久久久久图片 | 国产精品日日做人人爱 | av夜夜操 | 欧美激情综合五月色丁香小说 | 日韩欧美综合在线视频 | 午夜成人免费电影 | 久久久精品一区二区三区 | 久久综合婷婷 | 在线观看一区 | 成人在线观看黄 | 久久久999成人 | 美日韩免费视频 |