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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

《51單片機PV趣味制作詳解》源碼 光盤資料下載

[復制鏈接]
跳轉到指定樓層
樓主
《51單片機PV趣味制作詳解》光盤資料包:



所有資料51hei提供下載:
51單片機PV趣味制作詳解.rar (40.81 KB, 下載次數: 24)


下面是部分內容預覽:
第3章的單片機源程序如下:
  1. //-------------------------------------------------------------------------------------------
  2. // 程序名:CPU風扇上的POV
  3. // 編  程:周正華
  4. // 說  明:單片機89S2051,晶振12M
  5. //-------------------------------------------------------------------------------------------

  6. //-------------------------------------------------------------------------------------------
  7. //**  嵌入文件  **
  8. //-------------------------------------------------------------------------------------------
  9. #include <reg52.h>                  //51單片機硬件資源參數說明

  10. //-------------------------------------------------------------------------------------------
  11. //**  變量說明  **
  12. //-------------------------------------------------------------------------------------------

  13. unsigned char V[25];               //顯示緩沖區用數組
  14. unsigned char i,j;                 //顯示定位,i:字符,j:字符其中的一列
  15. unsigned int S;                    //每隔5毫秒的時間計數
  16. unsigned char BG,BZ;               //顯示狀態用標志
  17. unsigned int N;                    //轉速計數值
  18. unsigned int Rt;                   //LED顯示一列的時間

  19. unsigned char cc;                  //取數值的位用變量
  20. unsigned int aa,bb,num;

  21. /*字符字模*/
  22. unsigned char code ASCIIDOC[] =    // -ASCII-編號
  23. {
  24.         0x3E,0x45,0x49,0x51,0x3E,0x00, // -0-0
  25.         0x00,0x21,0x7F,0x01,0x00,0x00, // -1-1
  26.         0x23,0x45,0x49,0x49,0x31,0x00, // -2-2
  27.         0x42,0x41,0x49,0x59,0x66,0x00, // -3-3
  28.         0x0C,0x14,0x24,0x7F,0x04,0x00, // -4-4
  29.         0x72,0x51,0x51,0x51,0x4E,0x00, // -5-5
  30.         0x1E,0x29,0x49,0x49,0x46,0x00, // -6-6
  31.         0x40,0x47,0x48,0x50,0x60,0x00, // -7-7
  32.         0x36,0x49,0x49,0x49,0x36,0x00, // -8-8
  33.         0x31,0x49,0x49,0x4A,0x3C,0x00, // -9-9

  34.         0x00,0x00,0x00,0x00,0x00,0x00, // - -10
  35.         0x00,0x00,0x7D,0x00,0x00,0x00, // -!-11
  36.         0x02,0x04,0x08,0x10,0x20,0x00, // -/-12
  37.     0x00,0x36,0x36,0x00,0x00,0x00, // -:-13

  38.         0x1F,0x24,0x44,0x24,0x1F,0x00, // -A-14
  39.         0x7F,0x49,0x49,0x49,0x36,0x00, // -B-15
  40.         0x3E,0x41,0x41,0x41,0x22,0x00, // -C-16
  41.         0x7F,0x41,0x41,0x41,0x3E,0x00, // -D-17
  42.         0x7F,0x49,0x49,0x49,0x41,0x00, // -E-18
  43.         0x7F,0x48,0x48,0x48,0x40,0x00, // -F-19
  44.         0x3E,0x41,0x45,0x45,0x27,0x00, // -G-20
  45.         0x7F,0x08,0x08,0x08,0x7F,0x00, // -H-21
  46.         0x00,0x41,0x7F,0x41,0x00,0x00, // -I-22
  47.         0x02,0x01,0x41,0x7E,0x40,0x00, // -J-23
  48.         0x7F,0x08,0x14,0x22,0x41,0x00, // -K-24
  49.         0x7F,0x01,0x01,0x01,0x01,0x00, // -L-25
  50.         0x7F,0x20,0x18,0x20,0x7F,0x00, // -M-26
  51.         0x7F,0x10,0x08,0x04,0x7F,0x00, // -N-27
  52.         0x3E,0x41,0x41,0x41,0x3E,0x00, // -O-28
  53.         0x7F,0x48,0x48,0x48,0x30,0x00, // -P-29
  54.         0x3E,0x41,0x45,0x42,0x3D,0x00, // -Q-30
  55.         0x7F,0x48,0x4C,0x4A,0x31,0x00, // -R-31
  56.         0x32,0x49,0x49,0x49,0x26,0x00, // -S-32
  57.         0x40,0x40,0x7F,0x40,0x40,0x00, // -T-33
  58.         0x7E,0x01,0x01,0x01,0x7E,0x00, // -U-34
  59.         0x7C,0x02,0x01,0x02,0x7C,0x00, // -V-35
  60.         0x7F,0x02,0x0C,0x02,0x7F,0x00, // -W-36
  61.         0x63,0x14,0x08,0x14,0x63,0x00, // -X-37
  62.         0x60,0x10,0x0F,0x10,0x60,0x00, // -Y-38
  63.         0x43,0x45,0x49,0x51,0x61,0x00, // -Z-39

  64.         0x12,0x15,0x15,0x0E,0x01,0x00, // -a-40
  65.         0x7F,0x0A,0x11,0x11,0x0E,0x00, // -b-41
  66.         0x0E,0x11,0x11,0x11,0x08,0x00, // -c-42
  67.         0x0E,0x11,0x11,0x0A,0x7F,0x00, // -d-43
  68.         0x0E,0x15,0x15,0x15,0x08,0x00, // -e-44
  69.         0x08,0x3F,0x48,0x48,0x20,0x00, // -f-45
  70.         0x0C,0x12,0x12,0x12,0x0F,0x00, // -g-46
  71.         0x7F,0x08,0x10,0x10,0x0F,0x00, // -h-47
  72.         0x00,0x00,0x4F,0x00,0x00,0x00, // -i-48
  73.         0x00,0x00,0x08,0x4F,0x00,0x00, // -j-49
  74.         0x7F,0x04,0x0A,0x11,0x01,0x00, // -k-50
  75.         0x00,0x41,0x7F,0x01,0x00,0x00, // -l-51
  76.         0x0F,0x10,0x0F,0x10,0x0F,0x00, // -m-52
  77.         0x10,0x0F,0x10,0x10,0x0F,0x00, // -n-53
  78.         0x0E,0x11,0x11,0x11,0x0E,0x00, // -o-54
  79.         0x1F,0x12,0x12,0x12,0x0C,0x00, // -p-55
  80.         0x0C,0x12,0x12,0x12,0x1F,0x00, // -q-56
  81.         0x10,0x0F,0x10,0x10,0x08,0x00, // -r-57
  82.         0x09,0x15,0x15,0x15,0x12,0x00, // -s-58
  83.         0x10,0x7E,0x11,0x11,0x12,0x00, // -t-59
  84.         0x1E,0x01,0x01,0x1E,0x01,0x00, // -u-60
  85.         0x1C,0x02,0x01,0x02,0x1C,0x00, // -v-61
  86.         0x1E,0x01,0x1E,0x01,0x1E,0x00, // -w-62
  87.         0x11,0x0A,0x04,0x0A,0x11,0x00, // -x-63
  88.         0x1C,0x02,0x02,0x04,0x1F,0x00, // -y-64
  89.         0x11,0x13,0x15,0x19,0x11,0x00, // -z-65
  90. };

  91. //-------------------------------------------------------------------------------------------
  92. //** 外部中斷0處理程序
  93. //-------------------------------------------------------------------------------------------
  94. void intersvr0(void) interrupt 0 using 1
  95. {
  96.   TH0=-137/256; TL0=-137%256;          //給定時器一定的偏移量,
  97.                                        //讓外部中斷與定時中斷在時間上錯開,避免沖突
  98.   i=24; P1=0xff; ET0=1;                //顯示初始化
  99.   N++;                                 //進行轉速計數
  100. }

  101. //-------------------------------------------------------------------------------------------
  102. //** 定時中斷0處理函數 **
  103. //-------------------------------------------------------------------------------------------
  104. void timer0(void) interrupt 1 using 1
  105. {
  106.   TH0=-(Rt/256); TL0=-(Rt%256);       //顯示"一排"LED的時間
  107.   if(j>0) j--;                        //在字符表中取字
  108.   else {
  109.     j=5;
  110.     {
  111.       if(i>0) i--;
  112.       else {
  113.             i=0;
  114.             ET0=0;
  115.           }
  116.     }
  117.   }
  118.   P1=~ASCIIDOC[V[i]*6+j];            //取出的數據到輸出口
  119. }

  120. //-------------------------------------------------------------------------------------------
  121. //** 定時中斷1處理函數 **
  122. //-------------------------------------------------------------------------------------------

  123. void timer1(void) interrupt 3 using 1
  124. {
  125.   TH1=-5000/256;                  
  126.   TL1=-5000%256;                    //將5毫秒作為一個時間段
  127.   S++;                              //增加一個5毫秒
  128.   if(S==2400) {                     //如到12秒
  129.         num=N;                         //取出計數值
  130.     BG=1;                           //將更新顯示數組
  131.     S=0;                            //5毫秒計數器歸零
  132.     N=0;                            //轉速計數器歸零
  133.   }
  134. }

  135. //-------------------------------------------------------------------------------------------
  136. //** 顯示畫面之一 **
  137. //-------------------------------------------------------------------------------------------
  138. void Display1(void)
  139. {
  140.   V[0]=36;             //W
  141.   V[1]=44;             //e
  142.   V[2]=51;             //l
  143.   V[3]=42;             //c
  144.   V[4]=54;             //o
  145.   V[5]=52;             //m
  146.   V[6]=44;             //e
  147.   V[7]=10;             //(空)
  148.   V[8]=33;             //T
  149.   V[9]=54;             //o  
  150.   V[10]=10;            //(空)
  151.   V[11]=21;            //H
  152.   V[12]=44;            //e
  153.   V[13]=57;            //r
  154.   V[14]=44;            //e
  155. }

  156. //-------------------------------------------------------------------------------------------
  157. //** 顯示畫面之二 **
  158. //-------------------------------------------------------------------------------------------
  159. void Display2(void)
  160. {
  161.   V[0]=29;             //P
  162.   V[1]=51;             //l
  163.   V[2]=44;             //e
  164.   V[3]=40;             //a
  165.   V[4]=58;             //s
  166.   V[5]=44;             //e
  167.   V[6]=10;             //(空)
  168.   V[7]=62;             //w
  169.   V[8]=40;             //a
  170.   V[9]=48;             //i
  171.   V[10]=59;            //t
  172.   V[11]=10;            //(空)
  173.   V[12]=10;            //(空)
  174.   V[13]=10;            //(空)
  175.   V[14]=10;            //(空)
  176. }

  177. //-------------------------------------------------------------------------------------------
  178. //** 顯示畫面之三 **
  179. //-------------------------------------------------------------------------------------------
  180. void Display3(void)
  181. {
  182.   V[0]=31;               //R
  183.   V[1]=29;               //P
  184.   V[2]=26;               //M
  185.   V[3]=13;               //:
  186.   V[4]=10;               //(空)
  187.   num=num*5;           //因是按12秒為計數單位得到的數值, 按分鐘的計數時還需乘5
  188.   do {                 //從低位到高位分別取得數字,放入緩沖區
  189.     bb=num/10;
  190.     aa=num-bb*10;
  191.     V[8-cc]=aa;
  192.     num=bb;cc++;
  193.   }while(num>0);
  194.   V[9]=10;               //(空)
  195.   V[10]=10;              //(空)
  196.   V[11]=10;              //(空)
  197.   V[12]=10;              //(空)
  198.   V[13]=10;              //(空)
  199.   V[14]=10;              //(空)
  200. }

  201. //-------------------------------------------------------------------------------------------
  202. //** 主程序 **
  203. //-------------------------------------------------------------------------------------------
  204. void main(void)
  205. {

  206.   unsigned char k;                  //循環變量
  207.       
  208.   TMOD=0x10;                        //使用定時器的方式

  209.   TH0=0; TL0=0;                     //初始化定時中斷0
  210.   TR0=1; ET0=1;

  211.   TH1=0; TL1=0;                     //初始化定時中斷1
  212.   TR1=1; ET1=1;

  213.   IT0=1; EX0=1;                     //初始化外部中斷0

  214.   EA=1;                             //打開中斷功能

  215.   Rt=1100;                          //設置LED顯示1列的時間

  216.   BZ=0;                             //顯示狀態標志置0
  217.   
  218.   for(k=0;k<25;k++) V[k]=10;        //初始化顯示數組

  219.   while(1)                          //進入主程序循環
  220.   {
  221.     if(BZ==0){         
  222.       Display1();        //顯示開機畫面"Welcome To Here"
  223.       if(S>1200) BZ=1;   //顯示6秒后進入下一步顯示
  224.     }

  225.     if(BZ==1){        
  226.       Display2();        //顯示字符"Please wait"   
  227.       if(S>2200) BZ=2;   //開機11秒后,進入轉速顯示
  228.     }
  229.    
  230.     if((BG==1)&&(BZ==2)){   
  231.       Display3();         //顯示轉速
  232.       BG=0;cc=0;          //初始化變量
  233.         }
  234.   }
  235. }
復制代碼



評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:73209 發表于 2018-4-11 16:11 | 只看該作者
好東西啊好東西
回復

使用道具 舉報

板凳
ID:73209 發表于 2018-4-16 11:09 | 只看該作者

好東西啊好東西
回復

使用道具 舉報

地板
ID:84652 發表于 2018-11-24 16:42 | 只看該作者
沒有電子檔的書么?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本xx视频免费观看 | 91久久久久久久久久久 | 日韩激情在线 | 国产91亚洲精品一区二区三区 | 影音先锋中文字幕在线观看 | 97国产爽爽爽久久久 | 国产午夜三级一区二区三 | 男女黄网站| 国产精品小视频在线观看 | av片免费 | 久久久久国产一级毛片高清网站 | 欧洲精品在线观看 | 成人免费网站www网站高清 | 在线中文字幕视频 | 欧美日韩在线一区二区三区 | 久久精品网| 成人亚洲一区 | 伊人网站| 久久99精品久久久 | 伊人艹| 亚洲免费视频播放 | 国产精品久久久久久久7电影 | 黄色网页在线 | 久久aⅴ乱码一区二区三区 亚洲国产成人精品久久久国产成人一区 | 精品国产一区探花在线观看 | 一区二区三区亚洲 | 免费人成在线观看网站 | 日韩一级不卡 | 成人免费淫片aa视频免费 | www.9191| 怡红院成人在线视频 | 国产精品久久久久久久久久软件 | 国产一区二区成人 | 人人草人人干 | 国产精品一区一区 | 久草久草久草 | 伦理午夜电影免费观看 | 国产精品一区二区不卡 | 亚洲精品黄 | av黄色在线观看 | www国产精品|