欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 單片機使用1062lcd設置的電子時鐘源代碼 [打印本頁]

作者: 來了666    時間: 2018-11-22 20:43
標題: 單片機使用1062lcd設置的電子時鐘源代碼
單片機使用1062lcd設置的電子時鐘。
第一行顯示字符
第二行顯示時間
適用于初學者和一些學生。
在文件里面有源文件C文件以及hex燒錄程序。
大家可以看一看。

單片機源程序如下:
  1. #include<reg51.h>
  2. #include<string.h>           //strcat():合并字符串
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. #define GPIO_KEY P1

  6. sbit E=P2^7;                //1602使能引腳
  7. sbit RW=P2^5;                //1602讀寫引腳        
  8. sbit RS=P2^6;                //1602數據/命令選擇引腳

  9. uchar table1[]="zhangwenhua2017210484";  //The time is
  10. //注意修改后的長度
  11. uchar str1[2]="12";         //second
  12. uchar str2[2]="12";         //minute
  13. uchar str3[2]="07";         //hour

  14. uint KEY_VALUE;


  15. uint second,minute,hour;  //時鐘顯示數值
  16. uint tag; //中斷計時指標

  17. void intTostring(uint num,uchar temp[2]);
  18. void clock()           //時鐘進制函數
  19. {
  20.     if(second == 60){minute++;second=0;}
  21.         if(minute == 60){hour++;minute=0;}
  22.         if(hour == 24){hour=0;}
  23.         //數字->字符串的轉換
  24.     intTostring(second,str1);
  25.         intTostring(minute,str2);
  26.         intTostring(hour,str3);
  27.   // time 已經存儲了時間
  28. }  

  29. void delayms(uint del)   //延時1ms
  30. {
  31. uint i,j;
  32. for(i=0;i<del;i++)
  33.    for(j=0;j<=110;j++);
  34. }
  35. void writecmd(uchar com)  //寫指令
  36. {
  37.     E=0;
  38.     RS=0;
  39.     RW=0;
  40.     P0=com;
  41.     delayms(2);
  42.     E=1;  
  43.     delayms(2);
  44.     E=0;
  45. }

  46. void writedata(uchar dat)//寫數據
  47. {  
  48.    E=0;
  49.    RS=1;
  50.    RW=0;
  51.    P0=dat;
  52.    delayms(2);
  53.    E=1;  
  54.    delayms(2);
  55.    E=0;

  56. }
  57. void init(void)               //初始化
  58. {
  59.     delayms(15);
  60.     writecmd(0x38);
  61.     delayms(5);
  62.     writecmd(0x38);
  63.     delayms(5);
  64.     writecmd(0x38);
  65.     writecmd(0x38);
  66.     writecmd(0x08);
  67.     writecmd(0x01);
  68.     writecmd(0x06);
  69.     writecmd(0x0c);
  70. }

  71. void intTostring(uint num,uchar temp[2])// 一定要注意這里的字符串長度。
  72. {
  73.     uint ge,shi;
  74.         shi = num/10;
  75.         ge = num%10;
  76.         temp[0] = shi+48;//利用ASCLL編碼轉換
  77.         temp[1] = ge+48;
  78. }

  79. void display()
  80. {
  81.                 
  82.    uchar j;
  83.    uchar i;
  84.    writecmd(0x80);    //告訴液晶在哪個地方顯示 (設置地址指針)//80H+00

  85.    for(j=0;j<11;j++)   //有11個字符,要循環11次
  86.    {
  87.        writedata(table1[j]);   //The time is
  88.        delayms(5);
  89.    }

  90.    writecmd(0x80+0x40);    //再設置第二行的起始位置

  91.    //時鐘顯示
  92.    for(i=0;i<2;i++)writedata(str3[i]);
  93.    writedata(':');
  94.    for(i=0;i<2;i++)writedata(str2[i]);
  95.    writedata(':');
  96.    for(i=0;i<2;i++)writedata(str1[i]);
  97.    delayms(5);
  98.    //end
  99.   
  100. }


  101. void main()
  102. {  
  103.    TMOD = 0x02;   //設置T0為自動重裝初值的工作方式                                                         
  104.    TL0 = 0x06;//          12Mhz晶振 -->  1us,此處取250us作為一次中斷所用時間, 那么4000次中斷就算一秒。
  105.    TH0 = 0x06;//          自動重裝初值,不影響精度
  106.    EA = 1;
  107.    ET0 = 1;
  108.    TR0 = 1;
  109.     init();
  110.        
  111.    while(1){
  112.                             
  113.                           display();       
  114.                                  clock();
  115.           
  116.   }
  117.    
  118. }

  119. //利用定時器0計時
  120. void T0_time() interrupt 1
  121. {
  122.            if(tag == 4000)
  123.          {
  124.              tag = 0;
  125.                  second++;
  126.          }
  127.          tag++;
  128. }
復制代碼

所有資料51hei提供下載:
電子時鐘.rar (2.45 KB, 下載次數: 13)








歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1