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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

提供一個自動窗簾的51單片機程序(藍橋杯的題)

[復制鏈接]
跳轉到指定樓層
樓主
ID:500662 發表于 2019-3-29 16:03 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
提供一個自動窗簾的51單片機程序(藍橋杯的題)

單片機源程序如下:
  1. #include<reg51.h>
  2. #include<time1302.h>

  3. #define        uchar unsigned char
  4. #define uint unsigned int

  5. sbit key1=P2^3;         //獨立鍵盤的各個位置
  6. sbit key2=P2^4;
  7. sbit key3=P2^5;
  8. sbit key4=P2^6;
  9. sbit clock=P3^6;                //是單片機上IO的位置
  10. sbit dout=P3^7;                         //是out對應的位置


  11. uchar wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};                                   //位選
  12. uchar duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};                 //段選         0到9
  13. uchar cun[8];          //每位數據存放的數組
  14. uchar a;

  15. void mode_change();
  16. void chushi();
  17. void dis_clock_time();
  18. uchar read();

  19. void delay(uint x)
  20. {
  21.       uint i,j;
  22.           for(i=x;i>0;i--)
  23.           for(j=110;j>0;j--);
  24. }

  25. void display()           //顯示函數的固定格式          其中i和wei的取值根據自己的需要增加和減少
  26. {
  27.         uint i;
  28.         for(i=0;i<8;i++)          //兩位數的循環 兩取決于i
  29.         {
  30.                    P1=0xff;   //消影
  31.                 switch(i)
  32.                 {
  33.                         case 0:P0=wei[0];break;         //選擇第幾位
  34.                         case 1:P0=wei[1];break;
  35.                         case 2:P0=wei[2];break;
  36.                     case 3:P0=wei[3];break;
  37.                         case 4:P0=wei[4];break;
  38.                         case 5:P0=wei[5];break;
  39.                         case 6:P0=wei[6];break;
  40.                         case 7:P0=wei[7];break;

  41.                 }
  42.                 P1=cun[i];                          //存放第幾位
  43.                 delay(1);       
  44.         }       
  45. }

  46. void main()
  47. {
  48.     Ds1302Init();
  49.         chushi();
  50.         while(1)
  51.         {       
  52.                 a=read();
  53.                 Ds1302ReadTime();
  54.                 mode_change();
  55.                 display();
  56.         }
  57. }


  58. void mode_change()
  59. {
  60.    if(key1 == 0)           //獨立鍵盤的固定格式
  61.         {
  62.                 while(!key1)
  63.                   {
  64.                   cun[0]=~duan[TIME[5]%16];      //年       
  65.                   cun[1]=~duan[TIME[5]/16];       
  66.                   cun[2]=~duan[TIME[6]/16];       
  67.                   cun[3]=~duan[TIME[6]%16]&0x7f;          
  68.                   cun[4]=~duan[TIME[4]/16];            //月
  69.                   cun[5]=~duan[TIME[4]%16]&0x7f;               
  70.                   cun[6]=~duan[TIME[3]/16];
  71.                   cun[7]=~duan[TIME[3]%16];            //日
  72.                   display();          //這個可以根據自己的需要而定,即鍵盤的作用

  73.                 }
  74.         }
  75.        
  76. }

  77. void chushi()
  78. {
  79.                      cun[0]=~duan[10];
  80.                   cun[1]=~duan[10];       
  81.                   cun[2]=~duan[10];       
  82.                   cun[3]=~duan[10];          
  83.                   cun[4]=~duan[10];
  84.                   cun[5]=~duan[10];               
  85.                   cun[6]=~duan[10];
  86.                   cun[7]=~duan[10];            
  87. }

  88. void dis_clock_time()                                                //時鐘顯示         
  89. {
  90.           
  91.           Ds1302ReadTime();          
  92.       cun[0]=~duan[TIME[2]/16];                //小時
  93.           cun[1]=~duan[TIME[2]%16];
  94.           //閃爍  在中斷里面                                 
  95.           cun[2]=~duan[TIME[1]/16];              //分鐘
  96.           cun[3]=~duan[TIME[1]%16];          
  97.           cun[4]=~duan[10];                             //“-”
  98.           cun[5]=~duan[a/100];                    //ad顯示
  99.           cun[6]=~duan[a/10%10];
  100.           cun[7]=~duan[a%10];
  101.           display();
  102. }


  103. uchar read()  //AD固定格式
  104. {
  105.         uint i;

  106.         uchar ad=0x00;

  107.         dout=1;
  108.         for(i=0;i<8;i++)
  109.         {
  110.                 ad=ad<<1;          //左移的數碼管的 方便顯示各個位置的
  111.                 if(dout)
  112.                 {
  113.                         ad++;
  114.                 }
  115.         clock=1;
  116.         clock=0;
  117.         _nop_();           //相當于延遲函數delay
  118.                 _nop_();
  119.         }
  120.         return ad;
  121. }
復制代碼

所有資料51hei提供下載:
自動窗簾.rar (33.99 KB, 下載次數: 13)



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

使用道具 舉報

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产激情一区二区三区 | 国产一区二区三区视频免费观看 | 欧美一级欧美一级在线播放 | 欧美日韩国产精品一区 | 日韩在线播放一区 | 97日韩精品| 亚洲国产成人精品女人 | 91麻豆久久久 | 中国大陆高清aⅴ毛片 | 亚洲精品自在在线观看 | 天天射天天干 | 91中文字幕在线观看 | 国产一级片久久久 | 天天综合网91 | 手机看片在线播放 | 精品久久伊人 | 日韩av免费在线电影 | 久久精品国产一区二区三区 | 国产精品国产 | 一级毛片,一级毛片 | 免费性视频 | 亚洲播放一区 | 国产精品视频一区二区三区不卡 | 欧美成人激情 | 久久精品免费一区二区 | 久久精品亚洲一区二区三区浴池 | 精品久久久久久久 | 一区二区久久电影 | 日本小电影在线 | 午夜伦理影院 | 久久久久免费精品国产小说色大师 | 精品一区二区三区在线观看 | 极品粉嫩国产48尤物在线播放 | 狠狠久久| 99re6在线视频 | 超碰97人人人人人蜜桃 | 日韩和的一区二区 | 欧美一级免费 | 国产精品欧美一区二区三区不卡 | 日韩五月天 | 国产日韩在线观看一区 |