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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

(開源)基于KST51單片機開發板的數碼管與LED小燈同時顯示

[復制鏈接]
跳轉到指定樓層
樓主
ID:84566 發表于 2015-7-24 17:50 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
還是上次那個程序小改而成!還同時參考了作者的書
說實話,要是自己編的話還不如作者自己的程序好
自己只是在作者的基礎上進行小修小補,但個人覺得這是程序積累的好方法,從不知從何入手到有點頭緒
還參考了一些程序架構的思想,還是不錯,個人很有成就感!
這個開發板的難度與其它的開發板的區別主要是集成度很高,對實際開發很有參考的價值
引腳復用的情況很多,這就得在編程上面下心思!
自認為想要達到作者的水平還有很多的路要走!!!
其中的最后一個函數是自已弄的,其實自己到現在用指針還是有點不知怎么用
單片機開發板電路圖:http://www.zg4o1577.cn/f/ks51.pdf
  1. /*****************************
  2. *PROJECT:LED與數碼管同時顯示
  3. *方式:數碼管1S時間加一的同時LED以0.2秒的時間進行閃爍
  4. *根據操作系統思想使用時間片輪詢法實現LED輪流閃爍
  5. *DATE:2015-7-22
  6. *操作平臺:KST51
  7. *LED與數碼管共用一個IO口P0,對軟件編程的要求更高
  8. LED與數碼管位選與段選同時由P0與P1口時行控制,選擇使用了138與245芯片時行驅動!
  9. 這也是難點所在!
  10. */
  11. #include <reg52.h>
  12. #define uChar unsigned char
  13. #define uInt  unsigned int
  14. //CONFIG
  15. sbit ADDR3 = P1^3;
  16. sbit ENLED = P1^4;
  17. uChar InDex = 0;
  18. uChar code LedChar[] = {
  19. 0xc0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xf8,
  20. 0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0X86, 0X8E
  21. };
  22. /*uChar LedBuff[7] = {
  23. 0XFF,0XFF,0XFF, 0XFF ,0xFF,0XFF, 0XFF
  24. };*/
  25. struct sLedBuff {   //LED顯示緩沖區結構
  26. unsigned char number[6];
  27. unsigned char alone;
  28. };
  29. void LedScan(void);
  30. void LedOn(void);
  31. void LedOff(void);
  32. void LedRefush(void);
  33. void InitSys(void);//系統初始化
  34. //1.定義一個結構體
  35. typedef struct _TASK_COMPONENTS
  36. {
  37. uChar Run;                 //程序運行標志   0-不運行  1-運行
  38.   uInt Timer;               //計時器
  39. uInt ItvTimer;            //任務運行間隔時間
  40. void (*TaskHook)(void);    //要運行的任務函數

  41. }TASK_COMPONENTS;
  42. typedef enum _TASK_LIST
  43. {
  44. TAST_LED_SCAN,
  45. TAST_LED_ON,
  46. TAST_LED_OFF,
  47. TAST_LED_REFUSH,
  48. TASKS_MAX        // import
  49. }TASK_LIST;
  50. static TASK_COMPONENTS TaskComps[] =
  51. {
  52. {0,2,2,LedScan},       //LEDSCAN
  53. {0,100,100,LedOn},    //  LED on
  54. {0,100,100,LedOff}, //LED OFF
  55. {0,1000,1000,LedRefush},

  56. };
  57. struct sLedBuff ledBuff;
  58. /********************************************
  59. *FunctionName    :TaskReMarks()
  60. *Description     :任務標志處理
  61. *EntryParameter  :None
  62. *RetrunValue     :None
  63. *********************************************/
  64. void TaskReMarks(void) //此函數在中斷中調用
  65. {
  66. uChar i = 0;

  67. for(i = 0;i < TASKS_MAX; i++)
  68. {
  69.   if(TaskComps[i].Timer)
  70.   {
  71.    TaskComps[i].Timer--;
  72.    if(TaskComps[i].Timer == 0)
  73.    {
  74.     TaskComps[i].Timer = TaskComps[i].ItvTimer;
  75.     TaskComps[i].Run = 1;   //任務可以運行
  76.    }
  77.   }
  78. }
  79. }
  80. //3.程序處理
  81. /**************************
  82. FunctionName    :TaskProcess()
  83. *Description     :任務標志處理
  84. *EntryParameter  :None
  85. *RetrunValue     :None
  86. ***************************/
  87. void TaskProcess(void)
  88. {
  89. uChar i = 0;

  90. for(i = 0;i < TASKS_MAX;i++)
  91. {
  92.   if(TaskComps[i].Run)
  93.   {
  94.    TaskComps[i].TaskHook();
  95.    TaskComps[i].Run = 0;
  96.   }
  97. }
  98. }
  99. void main()
  100. {
  101. InitSys();
  102. while(1)
  103. {
  104.   TaskProcess();
  105. }
  106. }

  107. void InitSys(void)//系統初始化
  108. {
  109. ENLED = 0;
  110. ADDR3 = 1;

  111. TMOD = 0X01;
  112. TH0 = 0xFC;
  113. TL0 = 0x67;
  114. TR0 = 1;
  115. ET0 = 1;
  116. EA = 1;

  117. // LED1 = 1;
  118. // LED2 = 1;
  119. }
  120. void InterruptTimer0(void) interrupt 1
  121. {
  122. TH0 = 0xFC;  //定時2MS
  123. TL0 = 0x67;

  124. TaskReMarks();
  125. }
  126. /********************************************
  127. *FunctionName    :void LedOn(void)
  128. *Description     :LED開啟與關閉
  129. *EntryParameter  :None
  130. *RetrunValue     :None
  131. *********************************************/
  132. void LedOn(void)
  133. {
  134. ledBuff.alone = 0xFE;

  135. }
  136. /********************************************
  137. *FunctionName    :void LedOff()
  138. *Description     :LED開啟與關閉
  139. *EntryParameter  :None
  140. *RetrunValue     :None
  141. *********************************************/
  142. void LedOff(void)
  143. {
  144. ledBuff.alone = 0xFF;

  145. }
  146. /********************************************
  147. *FunctionName    :void LedScan()
  148. *Description     :數碼管掃描程序
  149. *EntryParameter  :None
  150. *RetrunValue     :None
  151. *********************************************/
  152. void LedScan(void)
  153. {
  154. static uChar i = 0;

  155. P0 = 0xFF;
  156. P1 = (P1 & 0XF8) | i;
  157. P0 = *((uChar data *) &ledBuff +i);
  158. if(i < sizeof(ledBuff) - 1)
  159.   i++;
  160. else
  161.   i = 0;


  162. }
  163. /********************************************
  164. *FunctionName    :void LedRefush()
  165. *Description     :數碼管更新程序
  166. *EntryParameter  :None
  167. *RetrunValue     :None
  168. *********************************************/
  169. void LedRefush(void)
  170. {
  171.   static uChar i;  
  172.   static uChar j;

  173.   for(j = InDex + 1; j < (sizeof(ledBuff.number)); j++)
  174.   {
  175.    //沒有必要顯示的數碼管不顯示
  176.    ledBuff.number[j] = 0xFF;
  177.   }  
  178.   ledBuff.number[InDex] =  (*(&LedChar +i));//其實不知怎么用的但改了一下就好了
  179.   
  180.   if(i < 9) //判斷是否大于9,如果大于九,則將其歸零!
  181.    i++;    //如果是i<10則還要再加一次,達不到加九歸0的效梗←
  182.   else
  183.    i =0;
  184.   
  185. }
復制代碼


評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本在线观看网址 | 日韩av在线免费 | 欧美久久一级 | 国产成人91视频 | 国产午夜精品久久久 | 狠狠色综合久久丁香婷婷 | av在线影院| 国产精品视频免费播放 | 三级视频在线观看电影 | 久久久久久久一区 | 亚洲区一区二 | 亚洲国产精品久久久久婷婷老年 | 国产精品久久国产精品99 gif | 91 在线| 国产亚洲精品久久久久动 | 国产在线观看一区二区 | 福利视频一区二区 | 亚洲成人一级 | 国产1区2区 | 草久久 | 一级做a爰片性色毛片16 | 欧美白人做受xxxx视频 | 在线看黄免费 | 九热在线| 国产91视频一区二区 | 免费视频一区二区三区在线观看 | 精品无码三级在线观看视频 | 国产精品成人一区二区三区 | 99久久婷婷 | 国产日韩欧美一区二区 | 国产一级片在线观看视频 | 国产91在线播放精品91 | 日韩区 | 蜜桃一区二区三区 | 久久神马 | 免费成人高清在线视频 | 久久久国产精品一区 | 黄色在线播放视频 | 国产 欧美 日韩 一区 | 小h片免费观看久久久久 | 欧美精品网 |