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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機學習隨筆

[復制鏈接]
跳轉到指定樓層
樓主
ID:51088 發表于 2014-8-27 01:48 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式


最近一直在學習單片機。單片機的學習主要通過軟件和硬件兩個方面學習,軟件和硬件之間又是緊密聯系在一起的。軟件的編寫需要聯系硬件的電路來進行,而硬件也需要軟件來控制。

開始沒有意識到硬件電路的重要性,我就想我明明驅動的是LED燈點亮,為什么亮的卻是數碼管,而數碼管也只亮了8個里面的其中一個。當時也只是看著視頻里的一步步的來,視頻里用的開發板和我用的不太一樣,但我又不會變通,完全忽視電路的重要性,沒有去好好研究。后來無意中看到電路板上有個地方需要用跳線帽來選擇電路,這就驅使我更加注重對電路的分析。

通過這段時間的接觸,我發現要想學好這些東西C語言相當重要,雖然我有一定的C語言基礎,但是和實際相結合起來完全不知道怎么用,而且還有很多C語言的巧妙運用。比如通過for循環來延時一定的時間,通過while循環來得到死循環,如何使用單片機的定時器,如何進行中斷的使用,如何消除按鍵的抖動,如何進行程序的調用使程序更加的簡介清晰,如何進行掃描和動態刷新等等。每一樣東西都不是那么容易學到手的,因為有的東西不是那么容易理解,即使能夠理解時間長了也通容易遺忘。所以需要我們不斷的練習,不斷地思考,甚至于把一些東西都牢記下來,這樣時間長了才會變成自己的東西,才能夠學以致用融會貫,甚至去創新。

接下來要學的東西還有很多,需要我不斷地思考,不斷地練習,甚至是不斷地鸚鵡學舌。要思考就要不斷的向自己問各種各樣的問題。

明天的問題:

1、  如何用16個按鍵分別在數碼管顯示0-F這16個數字?

2、  怎么編一個簡易加法器?

3、  如何控制電機轉一定的轉數?


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

使用道具 舉報

沙發
ID:51088 發表于 2014-8-27 14:02 | 只看該作者
最近學習單片機就沒有以前那么快了,難度越來越大,程序越來越復雜,需要的技巧越來越多。有些東西真的只有在理解的基礎上背下來才行,只理解即使懂了也不會運用,只背那就更不行了,這兩者都有同時進行。所以需要更大的決心來面對這一切,不能半途而廢。

       這幾天的學習主要總結了一下幾點:
       一、就是步進電機的驅動,在接觸之前我以為步進電機只要給電就能轉動,接觸之后才發現這是不可能的,里面需要做很多的工作。如28BYJ-48型步進電機是四相八拍的步進電機,它的控制順序(反向就是反著讀)為:

       二、在程序里面,定時器的部分。當我們需要確定的值的時候,我們就可以直接對TH,TL進行賦值,但有的時候不知道賦值多少,因為是變動的,就需要根據自己需要的時間來進行賦值,例程如下:
                   void ConfigTimer0(unsigned int ms){        unsigned long tmp;         tmp=11059200/12; //定時器計數頻率        tmp=(tmp*ms)/1000;// 定時xms時間需要的計數值        tmp=65536-tmp;// 需要裝載的計數初值        tmp=tmp+18; //補償中斷響應延時造成的誤差         T0RH=(unsigned char)(tmp<<8); //定時器重載值拆分為高低字節        T0RL=(unsigned char)tmp;        TMOD&=0xF0; //清零 T0 的控制位        TMOD|=0x01; 配置 T0 為模式 1        TH0=T0RH; //加載 T0 重載值        TL0=T0RL;        ET0=1;        TR0=1;}
三、數碼管掃描函數算法改進
以前的 函數形式為;
       switch (i)
         {   case 0: ADDR2=0; ADDR1=0; ADDR0=0; i++; P0=LedBuff[0]; break;
            case 1: ADDR2=0; ADDR1=0; ADDR0=1; i++; P0=LedBuff[1]; break;
          case 2: ADDR2=0; ADDR1=1; ADDR0=0; i++; P0=LedBuff[2]; break;
          case 3: ADDR2=0; ADDR1=1; ADDR0=1; i++; P0=LedBuff[3]; break;
             case 4: ADDR2=1; ADDR1=0; ADDR0=0; i++; P0=LedBuff[4]; break;
             case 5: ADDR2=1; ADDR1=0; ADDR0=1; i=0; P0=LedBuff[5]; break;
             default: break;
        }
改變后的函數形式:
P1 = (P1 & 0xF8) | i;
             P0 = LedBuff;
             if (i < 5)
                 i++;
             else
                 i = 0;
       其中,ADDR0,ADDR1,ADDR2是連在P1口的第三位,通過P1 = (P1 & 0xF8) | i;就可以直接改變第三位的值,所以非常簡便。
       四、就是程序的模塊化,把各種功能的程序分別寫成獨立的模塊,然后在需要的程序里面進行調用,這樣可以讓程序看起來更加的簡單清晰,也便于后面的維護。
       總之,寫程序真不是一件容易的事情,不僅需要足夠嚴謹的邏輯思維,還需要足夠的細心,在程序的編寫中可能一個小錯誤就可能導致得不到想要的結果,這種問題是經常遇到的。不過也要盡力去解決這些問題,增加自己的經驗,遇到什么樣的問題就可以直接對癥下藥,而不是丈二的和尚,摸不著頭腦,什么都不知道。

回復

使用道具 舉報

板凳
ID:65516 發表于 2014-8-27 18:45 | 只看該作者
多謝樓主的分享,很好用自學筆記
回復

使用道具 舉報

地板
ID:65519 發表于 2014-8-27 20:32 | 只看該作者
加油加加油加加油加加油加
回復

使用道具 舉報

5#
ID:64075 發表于 2014-8-28 13:07 | 只看該作者
加油加加油加加油加加油加
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩国产精品一区二区 | 成人欧美一区二区三区视频xxx | 久久久久久久91 | 欧美一二区 | 欧美日韩国产中文字幕 | 91欧美激情一区二区三区成人 | 欧美国产日韩精品 | 精品久久香蕉国产线看观看亚洲 | 日韩在线观看中文字幕 | www.成人.com | 成人毛片网 | 欧美久久久电影 | 日本一区二区高清视频 | 亚洲一区二区免费 | 可以免费观看的av | 日韩精品一区二区三区四区 | 9色视频在线 | 婷婷色成人 | 久久精品无码一区二区三区 | 久久久精品黄色 | 国产91九色 | 一级中国毛片 | 日韩高清国产一区在线 | 精品国产精品 | 99久久精品免费看国产免费软件 | 亚洲欧美日韩一区二区 | 黄色福利 | 欧美黄在线观看 | 久久精品性视频 | 黄a网站| 中文视频在线 | 91高清在线 | 国内自拍视频在线观看 | 成人av观看| 精品成人| 91在线看片 | 一区二区三区国产好 | 日本不卡一区二区三区在线观看 | 91精品一区二区三区久久久久 | 成人国产一区二区三区精品麻豆 | 欧美一级全黄 |