/*內部1 M晶振。定時器實險,周期信號驅動無源蜂鳴器,些實驗基於定時器的CTC模式,由硬體產生頻率信號。程序中實現單一頻率的周期性提示音。程序採用單任務方式,軟體延時。*/#include "iom16v.h"
/*延時函數*/void delay_ms(unsigned char i) {
unsigned char a, b; for (a = 1; a
void main(void) {
unsigned char i;
DDRA = 0x00; /*方向輸入*/ PORTA = 0xFF; /*打開上拉*/ DDRB = 0xFF; /*方向輸出*/ PORTB = 0xFF; /*高*/ DDRC = 0x00; PORTC = 0xFF; DDRD = 0xFF; PORTD = 0xFF;
while (1) { for (i = 0; i
推薦閱讀
AVR單片機需要設置合適的熔絲位才能實現其功能,如果熔絲位設置的不對將有可能導致單片機自鎖,這是我整理的AVR單片機熔絲位的設置及拯救方,希望對大家有幫助。
發表於 2020-09-17
單片機源程序如下:/***版權所有(c)2018,艁ukasz Marcin Podkalicki*2009年12月13日 *簡單定時器(啟動/復位/停止),使用基於TM1637的一個按鈕和7段顯示模塊。 * *注意,這個ATtiny13項目使用的內部時鐘並不精確  
發表於 2020-09-16
為0到9,分別表示LED的佔空比為0/9到9/9。比如,當佔空比為4/9時,在9毫秒的周期中,前4毫秒LED亮,後5毫秒LED不亮。可以看見,佔空比越大,LED亮度也越高。原來,在亮與暗之間,LED還有中間的狀態。我們不是通過讓引腳輸出一個0V和5V之間的電壓,而是讓引腳電平迅速地在高低之間變化來實現的。這種通過電平的快速跳變來實現模擬量效果的技術,稱為脈衝寬度調製,簡稱PWM。定時器大多數單片機的定時器都可以輸出PWM波,外設豐富的AVR單片機自然不例外。上一講提到定時器0有四種工作模式,後兩種就是快速PWM模式與相位修正PWM模式。在快速PWM模式中,TCNT0寄存器的動作與普通模式相同,但還可以把OCR0A作為上限。對於非反轉輸出
發表於 2020-09-09
7)接到一個單片機引腳上。關於為什麼會有這種詭異的接法,這是設計時的失誤(也可能是不得已吧,畢竟單片機的32個IO已經佔滿了),參見:一個低電平引發的思考。協議1602與單片機之間是通過並行總線通信的。AVR單片機硬體上不支持並行總線,需要通過軟體模擬時序來實現。寫操作的時序如下:進行一個寫操作,需要先讓RS根據寫的類型設置電平,R/W輸出低電平,D0~D7輸出要發送的數據,然後在E的上升沿數據被對方讀取,並保持R/W與D0~D7電平不變,直到E的下降沿之後。兩次E的上升沿之間至少需要400us時間間隔。1602共有8條指令,都是一字節長度的。從高位到低位,每一條指令都由若干個0、一個1和有效指令組成,使得沒有兩條指令會有相同的二進位
發表於 2020-09-09
在第一期中,我們已經開始使用UART來實現單片機開發板與計算機之間的通信,但只是簡單地講了講一些概念和庫函數的使用。在這一篇教程中,我們將從硬體與軟體等各方面更深入地了解UART。USART組件一直在講的UART其實是USART組件的一部分,USART比UART多了同步的一部分,但這一部分用得太少(我從來沒用過),而且缺乏實例,所以就略過了。然而,單片機的設計者很機智地把這個雞肋功能升華了一下,USART組件可以支持SPI模式。SPI是一種同步串行總線,可以支持很高的傳輸速率。這個功能使得ATmega324PA支持最多3個SPI通道,其中一個是純SPI,另兩個就是SPI模式下的USART。我們將在下一講中揭開SPI的神秘面紗。回到
發表於 2020-09-08
開發板上有4個按鍵,我們可以把每一個按鍵連接到一個單片機引腳上,來實現按鍵狀態的檢測。但是常見的鍵盤有104鍵,是每一個鍵分別連接到一個引腳上的嗎?我沒有考證過,但我們確實有節省引腳的方法。矩陣鍵盤這是一個4*4的矩陣鍵盤,共有16個按鍵只需要8個引腳就可以驅動。我們先來看看它的原理。每個按鍵有兩個引腳,當按鍵按下時接通。每一行的一個引腳接在一起,分別連接到左邊4個埠,稱為「行引腳」;每一列的另一個引腳接在一起,分別連接到右邊的4個埠,稱為「列引腳」。這就是矩陣鍵盤內部的電路連接方式。那麼如何驅動它呢?首先我們簡化一下,只考慮第一排:這樣就很簡單了吧,只要讓行引腳保持低電平,4個列引腳設置為輸入並開啟上拉電阻,讀到低電平
發表於 2020-09-08