找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索

小白菜的學(xué)習(xí)之路系列之四—?dú)g天喜地?fù)u搖棒

查看數(shù): 5123 | 評(píng)論數(shù): 4 | 收藏 4
關(guān)燈 | 提示:支持鍵盤(pán)翻頁(yè)<-左 右->
    組圖打開(kāi)中,請(qǐng)稍候......
發(fā)布時(shí)間: 2014-12-20 18:22

正文摘要:

一 背景話(huà)說(shuō)年就要過(guò)去了,某人的生日也快到了。送個(gè)什么東西好呢?小白菜開(kāi)始思考了,上次送是一條小白菜自己設(shè)計(jì)定做的項(xiàng)鏈(銀的,不貴的,同學(xué)們可以試一下哦,保證讓小女生感動(dòng)的不得了……咳咳,有點(diǎn)跑題了。 ...

回復(fù)

ID:71861 發(fā)表于 2015-1-8 17:06
不錯(cuò)不錯(cuò)
ID:70650 發(fā)表于 2014-12-20 18:27
Delay.c文件:
  1. /*
  2. ================================================================================
  3. * 開(kāi)發(fā)環(huán)境  : Keil4
  4. * 文件名    : Delay.C
  5. * 程序員    : 3htech
  6. * 開(kāi)發(fā)時(shí)間  : 2012-06-08
  7. * 描述      : 軟件延時(shí)函數(shù)驅(qū)動(dòng)。不同內(nèi)核的單片機(jī)、晶振、分頻數(shù)、指令所用的周期數(shù)不同
  8. *           :都會(huì)導(dǎo)致延時(shí)時(shí)間的不同。所以本驅(qū)動(dòng)需要進(jìn)行移植修改。
  9. * 生存條件  :
  10. ===============================================================================
  11. //修 改  :
  12. //日 期  :
  13. //描  述  :
  14. ================================================================================
  15. ================================================================================
  16. */

  17. //------------------------------    程序開(kāi)關(guān)    ------------------------------//
  18. //----------------------------------------------------------------------------//
  19. // 名稱(chēng) :
  20. // 功能 :
  21. //----------------------------------------------------------------------------//


  22. //------------------------------ 系統(tǒng)頭文件包含 ------------------------------//

  23. //----------------------------- 自定義頭文件包含 -----------------------------//
  24. #include"Delay.h"



  25. ////////////////////////////////////////////////////////////////////////////////
  26. //                            本文件專(zhuān)用函數(shù)定義                              //
  27. ////////////////////////////////////////////////////////////////////////////////
  28. //----------------------------------------------------------------------------//
  29. //                      xxxx函數(shù) (僅限本文件使用)
  30. //函數(shù)名稱(chēng):
  31. //函數(shù)功能:
  32. //入口參數(shù):無(wú)
  33. //出口參數(shù):無(wú)
  34. //重要說(shuō)明:無(wú)
  35. //----------------------------------------------------------------------------//
  36. //修改日期:
  37. //修改人員:
  38. //修改內(nèi)容:
  39. //----------------------------------------------------------------------------//

  40. ////////////////////////////////////////////////////////////////////////////////
  41. //                          本文件專(zhuān)用函數(shù)定義結(jié)束                            //
  42. ////////////////////////////////////////////////////////////////////////////////







  43. ////////////////////////////////////////////////////////////////////////////////
  44. //                             對(duì)外服務(wù)函數(shù)定義                               //
  45. ////////////////////////////////////////////////////////////////////////////////

  46. //----------------------------------------------------------------------------//
  47. //                      軟件延時(shí)n個(gè)毫秒函數(shù) (對(duì)外提供服務(wù))
  48. //函數(shù)名稱(chēng):Delay_MS
  49. //函數(shù)功能:STC90C52,Fcpu = 12MHz,12T條件下,精確的軟件延時(shí)n個(gè)毫秒。
  50. //入口參數(shù):n,8位無(wú)符號(hào)數(shù),延時(shí)的毫秒數(shù)。n的最大值為255,即255毫秒。小心您的看門(mén)狗。
  51. //出口參數(shù):無(wú)。
  52. //重要說(shuō)明:
  53. //編寫(xiě)日期:2012-11-29
  54. //----------------------------------------------------------------------------//
  55. extern void Delay_MS(uint8 n)
  56. {
  57.     uint8 i;
  58.     for( ; n > 0; n--)
  59.     {
  60.         for(i = 200; i > 0; i--)
  61.         {
  62.             // 空。
  63.         }
  64.         for(i = 200; i > 0; i--)
  65.         {
  66.             // 空。
  67.         }
  68.         for(i = 94; i > 0; i--)
  69.         {
  70.             // 空。
  71.         }
  72.     }
  73. }

  74. //----------------------------------------------------------------------------//
  75. //                      軟件延時(shí)n個(gè)毫秒函數(shù) (對(duì)外提供服務(wù))
  76. //函數(shù)名稱(chēng):Delay_us
  77. //函數(shù)功能:STC90C52,Fcpu = 12MHz,12T條件下,精確的軟件延時(shí)n x 50個(gè)毫秒。
  78. //入口參數(shù):n,8位無(wú)符號(hào)數(shù),延時(shí)50微秒的倍數(shù)。n的最大值為255,即255 x 50微秒秒。
  79. //出口參數(shù):無(wú)。
  80. //重要說(shuō)明:
  81. //編寫(xiě)日期:2012-11-29
  82. //測(cè)試結(jié)果:
  83. //  期望值-->實(shí)際值:
  84. //   50us -->  63us
  85. //  100us --> 112us
  86. //  150us --> 161us
  87. //  200us --> 210us
  88. //  250us --> 259us
  89. //  300us --> 308us
  90. //  400us --> 406us
  91. //  500us --> 504us
  92. //----------------------------------------------------------------------------//
  93. extern void Delay_50us(uint8 n)
  94. {
  95.     uint8 i;

  96.     if(0 == n)
  97.     {
  98.         return;
  99.     }

  100.     for( ; n > 0; n--)
  101.     {
  102.         for(i = 20; i > 0; i--)
  103.         {
  104.             // 空。
  105.         }
  106.     }
  107. }
  108. ////////////////////////////////////////////////////////////////////////////////
  109. //                           對(duì)外服務(wù)函數(shù)定義結(jié)束                             //
  110. ////////////////////////////////////////////////////////////////////////////////



  111. //------------------------------    文件結(jié)束    ------------------------------//
復(fù)制代碼
ID:70650 發(fā)表于 2014-12-20 18:26
TypeRedefine.H文件:
  1. /*
  2. ********************************************************************************
  3. *                                     WIT
  4. *                             淄博威特電氣有限公司
  5. *
  6. *     地址:山東省淄博市張店區(qū)淄博市高新技術(shù)開(kāi)發(fā)區(qū)政通路135號(hào)高創(chuàng)中心E座2層
  7. *                  (c) Copyright 2012,   All Rights Reserved
  8. *                                www.weitedq.com
  9. * 開(kāi)發(fā)環(huán)境  : Keil4
  10. * 文件名    : TypeRedefine.H
  11. * 程序員    : 3htech
  12. * 開(kāi)發(fā)時(shí)間  : 2012-06-04
  13. * 描述      : 類(lèi)型重新定義。
  14. * 生存條件  : 自由存在。
  15. *-------------------------------------------------------------------------------
  16. * 修 改    :
  17. * 日 期    :
  18. * 描  述    :
  19. *-------------------------------------------------------------------------------
  20. ********************************************************************************
  21. */


  22. //------------------------------    文件開(kāi)關(guān)    ------------------------------//
  23. // 防止文件包含時(shí)多次編本文件,與本文件結(jié)尾處的endif對(duì)應(yīng)。
  24. #ifndef     _TYPEREDEFINE_H_
  25.     #define _TYPEREDEFINE_H_
  26. //----------------------------------------------------------------------------//




  27. //------------------------------ 系統(tǒng)頭文件包含 ------------------------------//
  28. #include<stdio.H>       // 為了使用NULL的定義。

  29. //----------------------------- 自定義頭文件包含 -----------------------------//
  30. //無(wú)
  31. //--------------------------------  類(lèi)型聲明  --------------------------------//
  32. //----------------------------------------------------------------------------//
  33. //類(lèi)型名稱(chēng):
  34. //類(lèi)型功能:
  35. //成員詳解:
  36. //重要說(shuō)明:
  37. //----------------------------------------------------------------------------//


  38. //------------------------------  全局變量定義  ------------------------------//
  39. //無(wú)


  40. //--------------------------------------------------------------//
  41. //                     類(lèi)型重新定義
  42. //名稱(chēng):類(lèi)型重新定義
  43. //功能:
  44. //      51系列單片機(jī)應(yīng)用下的類(lèi)型重新定義。
  45. //      使用的是8位單片機(jī),因此char是8位,int為16位,long為32位
  46. //--------------------------------------------------------------//

  47. typedef  bit  bdata   uint1;    //  無(wú)符號(hào)1 位整型變量需要加前綴u1

  48. typedef unsigned char uint8;    // 無(wú)符號(hào)8 位整型,前綴u8
  49. typedef   signed char  int8;    // 有符號(hào)8 位整型,前綴i8

  50. typedef unsigned int  uint16;   // 無(wú)符號(hào)16位整型,前綴u16
  51. typedef   signed int   int16;   // 有符號(hào)16位整型,前綴i16

  52. typedef unsigned long uint32;   // 無(wú)符號(hào)32位整型,前綴u32
  53. typedef   signed long  int32;   // 有符號(hào)32位整型,前綴i32

  54. typedef  float         flt32;   // 單精度浮點(diǎn)數(shù)(32位長(zhǎng)度),前綴f32



  55. //-------------------------------   宏定義   ---------------------------------//
  56. //----------------------------------------------------------------------------//
  57. //宏名    :TURE, FALSE
  58. //功能    :錯(cuò)誤標(biāo)志或操作完成標(biāo)志。
  59. //重要說(shuō)明:無(wú)
  60. //----------------------------------------------------------------------------//
  61. #ifndef TRUE
  62.     #define TRUE  0
  63. #endif

  64. #ifndef FALSE
  65.     #define FALSE 1
  66. #endif
  67. //------------------------------    文件開(kāi)關(guān)    ------------------------------//
  68. // 防止文件包含時(shí)多次編本文件,與本文件開(kāi)頭處的 #ifndef 對(duì)應(yīng)。
  69. #endif
  70. //----------------------------------------------------------------------------//


  71. //------------------------------    文件結(jié)束    ------------------------------//
復(fù)制代碼
ID:70650 發(fā)表于 2014-12-20 18:24
主程序預(yù)覽:
  1. #include "Config.H"


  2. //========================================================================//
  3. //                              慣性開(kāi)關(guān)                                  //
  4. //========================================================================//
  5. sbit InertiaSwitch = P2^7;  // 為0時(shí)表示開(kāi)關(guān)閉合了。
  6. //========================================================================//
  7. //                      顯示允許函數(shù) (對(duì)外提供服務(wù))
  8. //函數(shù)名稱(chēng):App_YYB_Disp_Enable ()
  9. //函數(shù)功能:檢查當(dāng)前是否允許顯示
  10. //入口參數(shù):無(wú)。
  11. //出口參數(shù):TRUE = 運(yùn)動(dòng)到最左邊,口線(xiàn)電平被拉低,允許啟動(dòng)顯示。FALSE = 其他位置,不允許顯示。
  12. //重要說(shuō)明:
  13. //編寫(xiě)日期:2012-11-29
  14. //測(cè)試結(jié)果:
  15. //========================================================================//
  16. // 函數(shù)返回值:
  17. extern uint8 App_YYB_Disp_Enable(void)
  18. {
  19.     // 閉合后口線(xiàn)電平為低
  20.     if(0 == InertiaSwitch)
  21.     {
  22.         Delay_MS(30);   // 在剛觸發(fā)時(shí),搖搖棒剛行進(jìn)到最左邊,此時(shí)速度很低,因而若立即啟動(dòng)顯示,則必然會(huì)使字顯示的很少,所以延時(shí)一段時(shí)間。
  23.                         // 在搖搖棒速度上來(lái)之后再啟動(dòng)顯示。

  24.         return TRUE;
  25.     }
  26.     else
  27.     {
  28.         return FALSE;
  29.     }
  30. }

  31. //========================================================================//
  32. //                              顯示部分                                  //
  33. //========================================================================//


  34. //========================================================================//
  35. //變量名稱(chēng):u8Picture
  36. //變量功能:保存需要顯示的數(shù)據(jù)
  37. //作用域  :全局變量、僅限本文件
  38. //重要說(shuō)明:,僅適用于本程序。
  39. //========================================================================//

  40. static uint8 code u8Picture[4][32] =
  41. {

  42.     0xFF,0xFF,0xFF,0xEF,0xFF,0xEF,0xFE,0xEF,0x00,0x6F,0x80,0xEF,0xEE,0xEF,0xEE,0xEF,    // 與
  43.     0xEE,0xEF,0xEE,0xEF,0xEE,0xCF,0xEE,0xED,0xEE,0xFC,0xCE,0x01,0xFC,0x03,0xFE,0xFF,

  44.     0xFF,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xBE,0xFF,0xBE,0xFF,0xBE,0xFD,0xBE,0xFD,    // 子
  45.     0xB8,0x00,0xB0,0x01,0xA6,0xFF,0x8E,0xFF,0x1E,0xFF,0xBE,0xFF,0xFC,0xFF,0xFE,0xFF,

  46.     0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x80,0x01,0xB7,0xFF,0xB4,0x07,0xB6,0x0F,0xB6,0xEF,    // 同
  47.     0xB6,0xEF,0xB6,0x07,0xA4,0x0D,0xB6,0xFD,0x80,0x00,0x00,0x01,0xBF,0xFF,0xFF,0xFF,

  48.     0xFF,0xFF,0xFB,0xDF,0xF7,0xBF,0xCE,0x00,0x18,0x01,0xBD,0xFF,0xFF,0xFF,0xFB,0xFF,    // 行
  49.     0xBB,0xFF,0xBB,0xFD,0xBB,0xFD,0xB8,0x00,0xB8,0x01,0x3B,0xFF,0xB3,0xFF,0xFB,0xFF,

  50. };

  51. //========================================================================//
  52. //                      顯示一列數(shù)據(jù)函數(shù) (對(duì)外提供服務(wù))
  53. //函數(shù)名稱(chēng):App_YYB_Disp_Colum ()
  54. //函數(shù)功能:顯示一列數(shù)據(jù)。
  55. //入口參數(shù):u8UpByte為16位的上半部分?jǐn)?shù)據(jù),u8DownByte為下半部分?jǐn)?shù)據(jù)
  56. //出口參數(shù):無(wú)。
  57. //重要說(shuō)明:
  58. //編寫(xiě)日期:2012-11-29
  59. //測(cè)試結(jié)果:
  60. //========================================================================//
  61. static void App_YYB_Disp_Colum(uint8 u8UpByte, uint8 u8DownByte)
  62. {
  63.     P1 = u8UpByte;
  64.     P0 = u8DownByte;

  65.     Delay_50us(10);  // 延時(shí)500us,可自行調(diào)節(jié)

  66.     P1 = 0xFF;      // 關(guān)閉顯示
  67.     P0 = 0xFF;
  68. }
  69. //========================================================================//
  70. //                      顯示圖像函數(shù) (對(duì)外提供服務(wù))
  71. //函數(shù)名稱(chēng):App_YYB_Disp()
  72. //函數(shù)功能:顯示一幅圖片。漢字點(diǎn)陣實(shí)際上也是一幅圖片
  73. //入口參數(shù):u8disp_Enable:是否起動(dòng)顯示。TRUE = 允許起動(dòng)顯示,F(xiàn)ALSE = 不允許顯示。
  74. //出口參數(shù):無(wú)。
  75. //重要說(shuō)明:
  76. //編寫(xiě)日期:2012-11-29
  77. //測(cè)試結(jié)果:
  78. //========================================================================//
  79. extern void App_YYB_Disp(uint8 u8disp_Enable)
  80. {
  81.     uint8 i, k;

  82.     if(FALSE == u8disp_Enable)
  83.     {
  84.         return; // 一個(gè)函數(shù)最好只有一個(gè)出口,顯然,這里不符合要求。
  85.     }


  86.     for(i = 0; i < 4; i++)  // 要顯示的4個(gè)漢字
  87.     {
  88.         for(k = 0; k < 16; k++) // 這里,一個(gè)漢字有16列
  89.         {
  90.             App_YYB_Disp_Colum(u8Picture[i][2*k], u8Picture[i][2*k + 1]);
  91.         }

  92.         Delay_MS(1);
  93.     }

  94.     Delay_MS(20);
  95. }
  96. //========================================================================//
  97. //                               主函數(shù)                                   //
  98. //========================================================================//
  99. void main(void)
  100. {
  101.     uint8 u8State;

  102.     while(1)
  103.     {
  104.         u8State = App_YYB_Disp_Enable();

  105.         App_YYB_Disp(u8State);
  106.     }
  107. }




復(fù)制代碼

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

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

快速回復(fù) 返回頂部 返回列表