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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2455|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

單片機課程設(shè)計~主要是led和點陣顯示方面的東西(附源碼)~

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:349536 發(fā)表于 2018-6-11 15:57 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
51單片機的C語言源碼~
顯示效果秀~
大家來一起玩耍吖~
基礎(chǔ)部分最終版

實現(xiàn)功能:
按下獨立按鍵后,分別顯示四種顯示效果,并在靜態(tài)數(shù)碼管顯示效果編號:
(1)按下k1:乒乓球回彈
(2)按下k2:  LED燈1357位和0246位交替亮滅
(3)按下k3: 中心波浪向兩側(cè)推出
(4)按下k4:點陣顯示桃心笑臉
接線:
靜態(tài)數(shù)碼管JP3------P0
數(shù)碼管段選J12------P2
點陣J17------P595_A,J18------P595_B
獨立按鍵k1------P1^1
        K2------P1^2
        K3------P1^3
        K4------P1^4
注意:595跳帽要接上,165和JP1302的跳帽要摘去


單片機源程序如下:
  1. #include "reg52.h"                         //此文件中定義了單片機的一些特殊功能寄存器
  2. #include "intrins.h"               

  3. typedef unsigned int u16;          //對數(shù)據(jù)類型進行聲明定義
  4. typedef unsigned char u8;

  5. #define GPIO_DIG P0

  6. sbit k1=P1^1;
  7. sbit k2=P1^2;
  8. sbit k3=P1^3;
  9. sbit k4=P1^4;

  10. #define led P2   //將P2口定義為led 后面就可以使用led代替P2口


  11. u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  12.                                         0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//顯示0~F的值

  13. //--定義使用的IO口--//
  14. sbit SRCLK=P3^6;
  15. sbit R_CLK=P3^5;
  16. sbit SER=P3^4;

  17. //定義LED點陣的位選,也就是類似于數(shù)碼管的位選,因為要對其動態(tài)掃描操作
  18. //數(shù)組前16位和后16位數(shù)據(jù)正好是相反的,也就是說先讓第3個595輸出低電平,然后再讓第4個595輸出低電平

  19. u8 code ledwei[]=
  20. {
  21. 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  22. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,
  23. };

  24. u8 code ledduan1[]=
  25. {
  26. /*--  表情:  桃心笑臉 --*/
  27. /*--  宋體12;  此表情下對應(yīng)的點陣為:寬x高=16x16   --*/
  28. 0x00,0x08,0x1C,0x3E,0x7C,0x7C,0x3E,0x1C,
  29. 0x08,0x00,0x20,0x70,0xE0,0xE0,0x70,0x20,
  30. 0x00,0x04,0x08,0x10,0x20,0x20,0x40,0x41,
  31. 0x42,0x41,0x20,0x20,0x10,0x08,0x04,0x00
  32. };


  33. /*******************************************************************************
  34. * 函 數(shù) 名         : delay
  35. * 函數(shù)功能                   : 延時函數(shù),i=1時,大約延時10us
  36. *******************************************************************************/
  37. void delay(u16 i)
  38. {
  39.         while(i--);       
  40. }
  41. /******************************************************************************
  42. 函數(shù)功能:第一種LED運行效果        :乒乓球回彈
  43. ******************************************************************************/
  44. void firstLedDisplay()
  45. {
  46.     u8 i;
  47.            led=0x01;
  48.     {       
  49.                 for(i=0;i<7;i++)         //將led左移一位
  50.                 {
  51.                         led=_crol_(led,1);
  52.                 delay(30000); //大約延時450ms       
  53.                 }
  54.                 for(i=0;i<7;i++)        //將led右移一位
  55.                 {
  56.                         led=_cror_(led,1);
  57.                         delay(30000); //大約延時450ms       
  58.                 }
  59.         }               
  60. }

  61. /**********************************************
  62. 函數(shù)功能:LED運行第二種效果:0,2,4,6和1,3,5,7交替亮滅
  63. **********************************************/

  64. void secondLedDisplay()
  65. {
  66.     led=0x55;
  67.         delay(50000); //大約延時450ms       
  68.         led=~led;
  69.         delay(50000);       
  70. }

  71. /*****************************************************
  72. 函數(shù)功能:LED運行第三種效果:中心波浪向兩側(cè)推出
  73. *****************************************************/
  74. void thirdLedDisplay()
  75. {
  76.         led=0x18;
  77.     delay(50000);
  78.     led=0x24;
  79.     delay(50000);
  80.     led=0x42;
  81.     delay(50000);
  82.     led=0x81;
  83.         delay(50000);
  84. }

  85. /*******************************************************************************
  86. * 函 數(shù) 名         : Hc595SendByte(u8 dat1,u8 dat2,u8 dat3,u8 dat4)
  87. * 函數(shù)功能                   : 通過595發(fā)送四個字節(jié)的數(shù)據(jù)
  88. * 輸    入         : dat1:第4個595輸出數(shù)值
  89. *                  * dat2: 第3個595輸出數(shù)值
  90. *                  * dat3:第2個595輸出數(shù)值
  91. *                  * dat4:第1個595輸出數(shù)值
  92. * 輸    出         : 無
  93. *******************************************************************************/
  94. void Hc595SendByte(u8 dat1,u8 dat2,u8 dat3,u8 dat4)
  95. {
  96.         u8 a;

  97.         SRCLK = 1;
  98.         R_CLK = 1;

  99.         for(a=0;a<8;a++)                 //發(fā)送8位數(shù)
  100.         {
  101.                 SER = dat1 >> 7;                 //從最高位開始發(fā)送
  102.                 dat1 <<= 1;

  103.                 SRCLK = 0;                         //發(fā)送時序
  104.                 _nop_();
  105.                 _nop_();
  106.                 SRCLK = 1;       
  107.         }
  108.    
  109. for(a=0;a<8;a++)                 //發(fā)送8位數(shù)
  110.         {
  111.                 SER = dat2 >> 7;                 //從最高位開始發(fā)送
  112.                 dat2 <<= 1;

  113.                 SRCLK = 0;                         //發(fā)送時序
  114.                 _nop_();
  115.                 _nop_();
  116.                 SRCLK = 1;       
  117.         }

  118.         for(a=0;a<8;a++)                 //發(fā)送8位數(shù)
  119.         {
  120.                 SER = dat3 >> 7;                 //從最高位開始發(fā)送
  121.                 dat3 <<= 1;

  122.                 SRCLK = 0;                         //發(fā)送時序
  123.                 _nop_();
  124.                 _nop_();
  125.                 SRCLK = 1;       
  126.         }

  127.         for(a=0;a<8;a++)                 //發(fā)送8位數(shù)
  128.         {
  129.                 SER = dat4 >> 7;                 //從最高位開始發(fā)送
  130.                 dat4 <<= 1;

  131.                 SRCLK = 0;                         //發(fā)送時序
  132.                 _nop_();
  133.                 _nop_();
  134.                 SRCLK = 1;       
  135.         }

  136.         R_CLK = 0;
  137.         _nop_();
  138.         _nop_();
  139.         R_CLK = 1;
  140. }

  141. void dianZhenDisplay()
  142. {
  143.    u8 i;
  144.    for(i=0;i<16;i++)
  145.    {
  146.                 Hc595SendByte(~ledwei[i+16],~ledwei[i],ledduan1[16+i],ledduan1[i]);
  147.                 delay(10);
  148.         }               
  149. }


  150. /*******************************************************************************
  151. * 函 數(shù) 名         : BreakInit()
  152. * 函數(shù)功能                   : 設(shè)置中斷
  153. * 輸    入         : 無
  154. * 輸    出         : 無
  155. *******************************************************************************/
  156. void BreakInit()
  157. {
  158.     EA=0;
  159.         TMOD=0x01;
  160.         TH0=0XFC;        //給定時器賦初值,定時1ms
  161.     TL0=0X18;
  162.         IE=0x82;
  163.         TR0=1;//打開定時器
  164. }

  165.   
  166. /*main()*/


  167. u8 flag = 0 ;
  168. void main()
  169. {
  170.     BreakInit();
  171.         while(1)
  172.         {
  173.                 switch (flag)          {
  174.                 case 1 :
  175.                         GPIO_DIG=~smgduan[1];
  176.                         firstLedDisplay() ;
  177.                         break ;
  178.                 case 2 :
  179.                         GPIO_DIG=~smgduan[2];
  180.                         secondLedDisplay() ;
  181.                         break ;
  182.                 case 3 :
  183.                         GPIO_DIG=~smgduan[3];
  184.                         thirdLedDisplay() ;
  185.                         break ;
  186.                 case 4 :
  187.                         GPIO_DIG=~smgduan[4];
  188.                         dianZhenDisplay() ;
  189.                         break ;       
  190.                 default :
  191.                         break ;
  192.                         }
  193.         }
  194. }  

  195. /*******************************************************************************
  196. * 函 數(shù) 名         : void Timer0() interrupt 1
  197. * 函數(shù)功能                   : 定時器0中斷函數(shù)
  198. * 輸    入         : 無
  199. * 輸    出         : 無
  200. *******************************************************************************/
  201. void Timer0() interrupt 1
  202. {
  203.           static u16 i;
  204.         TH0=0XFC;        //給定時器賦初值,定時1ms
  205.         TL0=0X18;
  206.         i++;
  207.         if(i==100)
  208.         {
  209.                 i=0;
  210.             if(k1==0)
  211.                 {
  212.                     flag=1;
  213.                 }
  214.                 if(k2==0)
  215.                 {
  216.                     flag=2;
  217.                 }
  218.                 if(k3==0)
  219.                 {
  220.                         flag = 3 ;
  221.                 }
  222.                 if(k4==0)
  223.                 {
  224.                     flag=4;
  225.                 }
  226.         }       
  227. }
復(fù)制代碼

所有資料51hei提供下載:
基礎(chǔ)部分最終版.docx (163.52 KB, 下載次數(shù): 14)



評分

參與人數(shù) 3黑幣 +14 收起 理由
jdjdje + 4 贊一個!
yz3210 + 5 贊一個!
zqy181818 + 5 贊一個!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:352052 發(fā)表于 2018-6-15 00:42 | 只看該作者
你好,我想問一下led那附近接線的情況是怎么樣的,怎么我接出來的樣式跟你的不一樣
回復(fù)

使用道具 舉報

板凳
ID:355644 發(fā)表于 2018-6-22 23:44 | 只看該作者

你好,我想問一下led那附近接線的情況是怎么樣的,怎么我接出來的樣式跟你的不一樣
回復(fù)

使用道具 舉報

地板
ID:355644 發(fā)表于 2018-6-22 23:47 | 只看該作者
點陣不亮
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久久91精品国产一区二区精品 | 99精品国产在热久久 | 精品欧美一区二区在线观看视频 | 亚洲日本视频 | 99精品久久久久久 | av在线免费观看网址 | 亚洲视频中文字幕 | 国产精品一区二区电影 | 亚洲欧美综合精品久久成人 | 亚洲第一av | 狠狠骚| 亚洲性人人天天夜夜摸 | 色婷婷久久久久swag精品 | 国产精品一区二区av | 欧美一区二区三区大片 | 亚洲一区二区高清 | 在线国产视频 | 操射视频| 亚洲一区二区在线 | 亚洲激情综合网 | 日韩精品视频在线 | 麻豆av网| 色婷婷精品国产一区二区三区 | 亚洲 中文 欧美 日韩 在线观看 | 久久1区 | 精品国产欧美 | 欧美成人综合 | 中文一区二区 | 国产资源网 | 黄色毛片网站在线观看 | 国产一区免费 | 一区二区成人 | 国产高清一二三区 | 中文字幕av一区二区三区 | 国产小视频在线 | 日韩在线欧美 | 国产 欧美 日韩 一区 | 久久岛国 | 一二区视频 | 中文字幕在线观看精品 | 国产美女一区二区 |