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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機時鐘和電壓表

[復制鏈接]
跳轉到指定樓層
樓主
ID:466105 發(fā)表于 2019-2-1 15:20 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. #include <reg52.h>
  2. #include "XPT2046.h"       
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. uchar a;
  6. sbit lcden=P2^7;                //LDC1602讀寫使能
  7. sbit rs=P2^6;                                //LCD1602寄存器
  8. sbit rw=P2^5;              //LCD1602讀寫

  9. sbit s1=P3^0;       //時鐘暫停
  10. sbit s2=P3^1;       //時間減
  11. sbit s3=P3^3;       //時間加
  12. sbit k3=P3^2;       //中斷開關,按下后跳到電壓表

  13. sbit LSA=P2^2;                //三八譯碼器A口
  14. sbit LSB=P2^3;                //三八譯碼器B口
  15. sbit LSC=P2^4;                //三八譯碼器C口

  16. int disp[4];
  17. int code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};     //數(shù)碼管0到9
  18. int code xiaoshu[10]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};

  19. uchar count,s1num;
  20. char miao,shi,fen;
  21. uchar code table[]=" 2019-1-11 TIME ";      
  22. uchar code table1[]="    00:00:00";
  23. uchar code table2[]="student id:1840740128";  

  24. void delay(uint z)     //延時
  25. {
  26.         uint x,y;
  27.         for(x=z;x>0;x--)
  28.                 for(y=110;y>0;y--);
  29. }

  30. void write_com(uchar com)
  31. {
  32.         rs=0;
  33.         lcden=0;
  34.         P0=com;
  35.         delay(5);
  36.         lcden=1;
  37.         delay(5);
  38.         lcden=0;       
  39. }

  40. void write_date(uchar date)
  41. {
  42.         rs=1;
  43.         lcden=0;
  44.         P0=date;
  45.         delay(5);
  46.         lcden=1;
  47.         delay(5);
  48.         lcden=0;       
  49. }

  50. void init()
  51. {

  52.         uchar num;
  53.         lcden=0;      
  54.     rw=0;
  55.         write_com(0x38);
  56.         write_com(0x0c);
  57.         write_com(0x06);
  58.         write_com(0x01);
  59.         write_com(0x80);
  60.         for(num=0;num<15;num++)
  61.                 {
  62.                         write_date(table[num]);
  63.                         delay(5);
  64.                 }
  65.         write_com(0x80+0x40);
  66.         for(num=0;num<12;num++)
  67.                 {
  68.                         write_date(table1[num]);
  69.                         delay(5);
  70.                 }
  71.         TMOD=0x01;
  72.         TH0=(65536-50000)/256;
  73.         TL0=(65536-50000)%256;
  74.         EA=1;
  75.         ET0=1;
  76.         TR0=1;
  77. }

  78. void write_sfm(uchar add,uchar date)
  79. {
  80.         uchar shi,ge;
  81.         shi=date/10;
  82.         ge=date%10;
  83.         write_com(0x80+0x40+add);
  84.         write_date(0x30+shi);
  85.         write_date(0x30+ge);
  86. }

  87. void keyscan()
  88. {
  89.         if(s1==0)       
  90.         {
  91.                 delay(5);
  92.                 if(s1==0)
  93.                 {        s1num++;
  94.                         while(!s1);
  95.                         if(s1num==1)
  96.                         {
  97.                                 TR0=0;
  98.                                 write_com(0x80+0x40+10);
  99.                                 write_com(0x0f);
  100.                         }
  101.         }
  102.                         if(s1num==2)
  103.                         {
  104.                                 write_com(0x80+0x40+7);
  105.                         }
  106.                         if(s1num==3)
  107.                         {
  108.                                 write_com(0x80+0x40+4);
  109.                         }
  110.                         if(s1num==4)
  111.                         {
  112.                                 s1num=0;
  113.                                 write_com(0x0c);
  114.                                 TR0=1;
  115.                         }

  116.                                
  117.                 }
  118.                 if(s1num!=0)
  119.                 {
  120.                         if(s2==0)
  121.                         {
  122.                                 delay(5);
  123.                                 if(s2==0)
  124.                                 {
  125.                                         while(!s2);
  126.                                         if(s1num==1)
  127.                                         {
  128.                                                 miao++;
  129.                                                 if(miao==60)
  130.                                                         miao=0;
  131.                                                 write_sfm(10,miao);
  132.                                                 write_com(0x80+0x40+10);
  133.                                                
  134.                                                
  135.                                         }
  136.                                         if(s1num==2)
  137.                                         {
  138.                                                 fen++;
  139.                                                 if(fen==60)
  140.                                                         fen=0;
  141.                                                 write_sfm(7,fen);
  142.                                                 write_com(0x80+0x40+7);
  143.                                         }
  144.                                         if(s1num==3)
  145.                                         {
  146.                                                 shi++;
  147.                                                 if(shi==24)
  148.                                                         shi=0;
  149.                                                 write_sfm(4,shi);
  150.                                                 write_com(0x80+0x40+4);
  151.                                         }
  152.                                 }
  153.                         }
  154.                         if(s3==0)
  155.                         {
  156.                                 delay(5);
  157.                                 if(s3==0)
  158.                                 {
  159.                                         while(!s3);
  160.                                         if(s1num==1)
  161.                                         {
  162.                                                 miao--;
  163.                                                 if(miao==-1)
  164.                                                         miao=59;
  165.                                                 write_sfm(10,miao);
  166.                                                 write_com(0x80+0x40+10);
  167.                                         }
  168.                                         if(s1num==2)
  169.                                         {
  170.                                                 fen--;
  171.                                                 if(fen==-1)
  172.                                                         fen=59;
  173.                                                 write_sfm(7,fen);
  174.                                                 write_com(0x80+0x40+7);
  175.                                         }
  176.                                         if(s1num==3)
  177.                                         {
  178.                                                 shi--;
  179.                                                 if(shi==-1)
  180.                                                         shi=23;
  181.                                                 write_sfm(4,shi);
  182.                                                 write_com(0x80+0x40+4);
  183.                                         }
  184.                                 }
  185.                         }
  186.                 }
  187. }


  188. void timer0() interrupt 1            //定時器中斷
  189. {
  190.         TH0=(65536-50000)/256;
  191.         TL0=(65536-50000)%256;
  192.         count++;
  193. if(count==18)
  194.                 {
  195.                         count=0;
  196.                         miao++;
  197.                         if(miao==60)
  198.                         {
  199.                                 miao=0;
  200.                                 fen++;
  201.                                 if(fen==60)
  202.                                 {
  203.                                         fen=0;
  204.                                         shi++;
  205.                                         if(shi==24)
  206.                                         {
  207.                                                 shi=0;
  208.                                         }
  209.                                         write_sfm(4,shi);
  210.                                 }
  211.                                 write_sfm(7,fen);
  212.                         }
  213.                         write_sfm(10,miao);
  214.                        
  215.                 }       
  216. }


  217. void datapros()
  218. {
  219.         int temp;
  220.         static int i;
  221.         if(i==50)
  222.         {
  223.                 i=0;
  224.                 temp = Read_AD_Data(0xE4);                //   AIN3 外部輸入
  225.         }
  226.         i++;
  227.         disp[3]=xiaoshu[temp/1000];//千位
  228.         disp[2]=smgduan[temp%1000/100];//百位
  229.         disp[1]=smgduan[temp%1000%100/10];//個位
  230.         disp[0]=smgduan[temp%1000%100%10];               
  231. }

  232. //數(shù)碼管顯示函數(shù)

  233. void DigDisplay()
  234. {
  235.         int i;
  236.         for(i=0;i<4;i++)
  237.         {
  238.                 switch(i)         //位選,選擇點亮的數(shù)碼管,
  239.                 {
  240.                         case(0):
  241.                                 LSA=0;LSB=0;LSC=0; break;//顯示第0位
  242.                         case(1):
  243.                                 LSA=1;LSB=0;LSC=0; break;//顯示第1位
  244.                         case(2):
  245.                                 LSA=0;LSB=1;LSC=0; break;//顯示第2位
  246.                         case(3):
  247.                                 LSA=1;LSB=1;LSC=0; break;//顯示第3位       
  248.                 }
  249.                 P0=disp[i];//發(fā)送數(shù)據(jù)
  250.                 delay(1); //間隔一段時間掃描       
  251.                 P0=0x00;//消隱
  252.         }               
  253. }

  254. void dianyabiao()
  255. {
  256.     datapros();         //數(shù)據(jù)處理函數(shù)
  257.                 DigDisplay();//數(shù)碼管顯示函數(shù)       
  258. }
  259. void shumaguan()
  260. {
  261.   
  262. }

  263. void main()
  264. {       
  265.   a=0;
  266.         IT0=0;  //中斷觸發(fā)方式為低電平觸發(fā),IT0=1則為下邊沿觸發(fā)              
  267.         EX0=1;  //打開外部中斷0
  268.         EA=1;    //打開中斷總開關
  269.         init();
  270.         while(1)
  271.         {
  272.                 switch(a%2)
  273.                 {
  274.                 case 1:dianyabiao();break;
  275.                 case 0:keyscan();break;
  276.                 }
  277.         }
  278. }

  279. void INTERR(void) interrupt 0
  280. {
  281.         if(k3==0)              
  282.         {       
  283.    while(1)
  284.          {
  285.             delay(100);
  286.                         if(k3==1)
  287.                         {
  288.                                 break;
  289.                         }
  290.          }
  291.          a++;
  292.          delay(300);
  293.         }
  294. }
復制代碼


改AD.zip

52.78 KB, 下載次數(shù): 2, 下載積分: 黑幣 -5

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

使用道具 舉報

沙發(fā)
ID:1 發(fā)表于 2019-2-2 02:35 | 只看該作者
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

板凳
ID:412814 發(fā)表于 2019-2-2 07:57 | 只看該作者
謝謝樓主,學習了。
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲av毛片 | 韩国毛片一区二区三区 | 国产精品视频免费观看 | 99久久99久久精品国产片果冰 | 国产区第一页 | 日日碰狠狠躁久久躁婷婷 | 国产精品一区二区在线观看 | 天天躁日日躁狠狠的躁天龙影院 | 国产精品呻吟久久av凹凸 | 国产电影精品久久 | 欧美成人第一页 | 伊人狠狠干 | 国产日韩精品在线 | 日韩在线播放av | 国产欧美精品一区二区三区 | 九九热精 | 99久久免费精品国产免费高清 | 少妇一级淫片免费放播放 | 国产精品免费一区二区三区四区 | 美国黄色毛片 | 日韩av在线免费 | 伦理二区 | 欧美另类视频 | 精品麻豆剧传媒av国产九九九 | 99久久婷婷国产综合精品电影 | 日韩不卡在线观看 | 懂色tv| 黄色亚洲 | 久久久久久国产 | 亚洲国产成人精品女人久久久 | 亚洲精品一区二三区不卡 | 精品国产99 | 亚洲天堂成人在线视频 | 欧洲一区二区视频 | 91xx在线观看| 97视频在线免费 | 一区二区精品 | 国产黄色在线观看 | 欧美在线一区二区三区 | 噜久寡妇噜噜久久寡妇 | 天天射美女|