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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3796|回復: 4
收起左側

單片機學習隨筆

[復制鏈接]
ID:51088 發表于 2014-8-27 01:48 | 顯示全部樓層 |閱讀模式


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

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

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

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

明天的問題:

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

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

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


回復

使用道具 舉報

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 | 顯示全部樓層
加油加加油加加油加加油加
回復

使用道具 舉報

ID:64075 發表于 2014-8-28 13:07 | 顯示全部樓層
加油加加油加加油加加油加
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 麻豆视频在线免费看 | 黄色免费网 | 日韩精品在线观看一区二区 | 中文在线视频 | 日朝毛片 | 国产精品视频 | 伊人二区 | 国产精品视频一区二区三区不卡 | 成人精品鲁一区一区二区 | 国产欧美一区二区精品久导航 | 欧美日韩国产精品一区 | 天天射网站 | 中文字幕加勒比 | 欧美日韩激情 | 美女天堂| 秋霞影院一区二区 | 免费1区2区3区 | 超碰一区二区 | 91精品国产综合久久精品图片 | 国产综合精品 | 秋霞国产 | 精品欧美一区二区三区精品久久 | 国产一区二区精品在线 | 91成人免费 | 亚洲精品国产电影 | 国产成人在线免费 | 97成人精品 | 三级黄色片在线播放 | 精品国产99 | 欧美久久久久久 | 久久91av| 一级中国毛片 | 日韩欧美二区 | 国产激情精品 | 国产一区二区三区四区五区加勒比 | 欧美激情综合五月色丁香小说 | 美日韩免费视频 | 精彩视频一区二区三区 | 亚洲精品一区二区三区中文字幕 | 最新日韩在线 | 日本一区精品 |