這一顆,我們學(xué)習(xí)外中斷的用法。也就是外部IO的中斷INT0,和INT1。對(duì)應(yīng)的引腳是P32和P33。在我們的電路圖中,P32也就是接在K1的引腳。所以當(dāng)我們按下P32接到地的時(shí)候,可以觸發(fā)一個(gè)INT0中斷,當(dāng)然,必須預(yù)先初始化才
嘀聲報(bào)警信號(hào)輸出試驗(yàn)我們將學(xué)習(xí)如何控制蜂鳴器的聲音輸出,這一課我們只輸出一個(gè)頻率的聲音,之后幾課我們將逐步輸出更為復(fù)雜的音樂(lè)聲,你甚至可以自己輸入一個(gè)樂(lè)譜,直接播放出來(lái)。蜂鳴器有有源和無(wú)源的幾種。也稱
利用LCD1602實(shí)現(xiàn)數(shù)字和英文字符的顯示實(shí)驗(yàn)原理圖實(shí)驗(yàn)程序#include#include#include#include#include#define busy 0x80 //用于檢測(cè)LCD 狀態(tài)字中的Busy 標(biāo)識(shí)#define RSaddr 0x1000#define RWaddr 0x2000#define CSadd
在單片機(jī)中,常用到數(shù)字與字符的方法,在C中都是使用itoa函數(shù),C51也有這個(gè)函數(shù),但是,8051的RAM是很有限的,所以盡量避免使用int型,常用的是unsigned char。當(dāng)需要轉(zhuǎn)換成字符串時(shí)用itoa的話,還是有點(diǎn)浪費(fèi)。還是自
微處理器一般用于特定環(huán)境和特定用途,出于成本、功耗和體積的考慮,一般都要求盡量節(jié)省使用資源,并且,由于微處理器硬件一般都不支持有符號(hào)數(shù)、浮點(diǎn)數(shù)的運(yùn)算,且運(yùn)算位有限,因此,分配變量時(shí)必須仔細(xì)。另外要說(shuō)明的
DAC0832是8分辨率的D/A轉(zhuǎn)換集成芯片。與微處理器完全兼容。這個(gè)DA芯片以其價(jià)格低廉、接口簡(jiǎn)單、轉(zhuǎn)換控制容易等優(yōu)點(diǎn),在單片機(jī)應(yīng)用系統(tǒng)中得到廣泛的應(yīng)用。D/A轉(zhuǎn)換器由8位輸入鎖存器、8位DAC寄存器、8位D/A轉(zhuǎn)換電路及轉(zhuǎn)
/*******鋸齒波程序*******/#include "reg51.h"#include#define DOUT XBYTE[0x7fff]void delay(unsigned char x){ unsigned char y;for(y=x;y>0;y--);}void DAconvert(unsigned char k){ DOUT=k;delay(15);}void juc
1.#i nclude<>指要在編輯器設(shè)定目錄下,#i nclude""指的是在當(dāng)前工程目錄下。2.要調(diào)用另一個(gè)文件中的函數(shù),要把這個(gè)函數(shù)文件放到當(dāng)前工程目錄下,并且在工程中添加此文件。3.命名中不能有-,比如:byq-ee會(huì)認(rèn)為是錯(cuò)誤的
這是1302的C文件,1302.h文件在后來(lái)面#include"1302.h"code unsigned char write_rtc_address[7]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c}; //秒分時(shí)日月周年 最低位讀寫(xiě)位code unsigned char read_rtc_address[7]={0x
1.某單片機(jī)系統(tǒng)的P2口接一數(shù)模轉(zhuǎn)換器DAC0832輸出模擬量,現(xiàn)在要求從DAC0832輸出連續(xù)的三角波,實(shí)現(xiàn)的方法是從P2口連續(xù)輸出按照三角波變化的數(shù)值,從0開(kāi)始逐漸增大,到某一最大值后逐漸減小,直到0,然后再?gòu)?逐漸增大
在LCD1602上面顯示"I LOVE MCU!"和"I LOVE MCU!"#include //#define uchar unsigned char;sbit RS = P1^2; //位定義,液晶的數(shù)據(jù)/命令選擇sbit RW = P1^1; //位定義,液晶的讀寫(xiě)選擇sbit EN = P1^0; //位定義,液晶使
/*=========================================================1602液晶顯示的實(shí)驗(yàn)例子-------------------------------------------------| DB4-----P0.4 | RW-------P2.1| DB5-----P0.5 | RS-------P2.2| DB6-----
文件:lcd_1602.h#ifndef _LCD1602_TRAVELER_H_#define _LCD1602_TRAVELER_H_/*************************待配置項(xiàng)*******************************/#define DATA_LCD P0 //液晶與MCU 數(shù)據(jù)口sbit RS_LCD = P2^5; // 液
今天在調(diào)1602顯示的時(shí)候又費(fèi)了點(diǎn)小周折,由于平常我們一般是對(duì)液晶進(jìn)行寫(xiě)操作,所以在有的開(kāi)發(fā)板上這個(gè)引腳直接是接地的,今天自己用杜邦線連了個(gè)1602忽略了這個(gè)問(wèn)題,后來(lái)接地就好了。數(shù)據(jù)傳輸?shù)乃木€接法和八線接法
標(biāo)準(zhǔn)的C語(yǔ)言中沒(méi)有空語(yǔ)句。但在單片機(jī)的C語(yǔ)言編程中,經(jīng)常需要用幾個(gè)空指令產(chǎn)生短延時(shí)的效果。這在匯編語(yǔ)言中很容易實(shí)現(xiàn),寫(xiě)幾個(gè)nop就行了。在keil C51中,直接調(diào)用庫(kù)函數(shù):#include // 聲明了void _nop_(void);_nop
#include#include#include "Delay.h"sbit DS18b20_DataPort=P1^7; //引腳選擇bit DS18b20_reset(void) //返回0-有設(shè)備連接1-無(wú)設(shè)備連接{unsigned char i;bit RstFlag;RstFlag=1;DS18b20_DataPort=0;delay_us(600);//
寫(xiě)這個(gè)8*8按鍵程序的過(guò)程中,不管是在自己寫(xiě)還是參考別人程序的過(guò)程中,發(fā)現(xiàn)自己對(duì)C語(yǔ)言有些基本知識(shí)點(diǎn)和編程規(guī)范有很多不懂的地方,有些是自己以前的編程習(xí)慣不好,有些就是基礎(chǔ)知識(shí)不扎實(shí)的表現(xiàn),所以總結(jié)出來(lái)。一
一般說(shuō)1T 4T 6T 12T的單片機(jī)是指的什么?標(biāo)準(zhǔn)51是12T的,就是說(shuō)12個(gè)時(shí)鐘周期(晶振周期,例如12M的,周期是1/12M,單位秒),機(jī)器做一個(gè)指令周期,剛好就是1/12M*12=1uS,常見(jiàn)指令例如nop就是一個(gè)周期,剛好1uS,其他的
AVR單片機(jī)延時(shí)程序:1.毫秒級(jí)的延時(shí) 延時(shí)1ms;void delay_1ms(void){unsigned int i;for(i=1;i<(unsigned int)(xtal*143-2);i++);}在上式中,xtal為晶振頻率,單位為MHz. AVR 延時(shí)程序當(dāng)晶振頻率為8M時(shí),延時(shí)函數(shù)軟件
1、在某程序中需要定義如下變量:(1)定義數(shù)碼管的顯示0~9的共陰極顯示代碼(0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07, 0x7f, 0x6f)數(shù)組dis_code,將其定義在CODE區(qū)。(2)定義定時(shí)器/計(jì)數(shù)器0的賦計(jì)數(shù)值的高、低字節(jié)變