㈠ 求一高手解析一下單片機源程序,每一步的意思,表達了什麼,可追加分數。
#include<reg52.h> //頭文件,定義硬穗判件相關的寄存器等
#define uchar //宏,下面中的uchar 全部用unsigned char替代。缺寬編譯器處理的第一步
sbit P3_4=P3^4; //sbit單片機特有的位變數地址類型,相當於給p3.4引腳重命名
//數碼管的顯示編碼,要顯示5就把tab[5]的值輸出到對應引腳;code也是
//單片機特有,tab數組存到代碼區,不佔用內存
code uchar tab[10]={0xbf,0x06,0xdb,0xcf,0x66,0xed,0xfd,0x87,0xff,0xef,};
//c程序從main開始看。
main()
{
//開機掃描按鍵伏族亮
void KEY();
//寄存器設置,這些都在頭文件定義。以下是定時器初始化,具體數值查數據手冊
TMOD=0x15;
IE=0X88;
TH1=0X3C;
TL1=0XB0;
TR0=1;
TR1=1;
a=0;
//mian通常 初始化 + 大循環;循環沒內容,肯定加了中斷,
//從void scjs(void)interrupt 3 中斷入口看
while(1);
}
//全局變數設太多。。。。沒時間看
㈡ 單片機程序 解析一下 謝謝 急
ISP_ERASE(0x2c00); //執行 ISP_ERASE(int16 data)函數賣知,0x2c00是形參。
ISP_PROGRAM(0x2c00, SET_H/256);
ISP_PROGRAM(0x2c01, SET_H);
ISP_PROGRAM(0x2c02, SET_L/256);
ISP_PROGRAM(0x2c03, SET_L);
這幾個都是一樣的。SET_H、SET_L。這2個雀配頌是參數。頃鄭 看意思是 取高位。
㈢ 51單片機流水燈程序解析,求大神指導,本人是初學者。
首先,樓主要搞清楚P口的值與P口每一個輸出端的關系,也即樓上所說的,要轉換成二進制來看,數據0xfe = 1111 1110中的每一個1或0對應一個埠的高或低電平;其次樓主要結合電路圖LED的接法與單片機埠的屬性,搞清楚是1使得燈亮還是0使得燈亮;最後樓主要知道函數_crol_(P0,1)的作用,它是將P0的值循環左移後,即比如原來P0為1111 1110,循環左移後為1111 1101,再賦值給P0,你如果給P0一開始設置的初值為0x00,那當然不論怎麼循環都是0x00,沒有流水燈的效果。
㈣ 單片機 解析8421碼 (望高手選一種單片機進行稍具體的說明)
設錯,就是這樣搞
傳送出去是指用串口或其它通訊方式? 或者只是傳送給上一層次處理模塊?
這是一個串岩畝行通訊,當然要「轉換/處理」下,應該是每 8 個位 發送一次
三種脈沖 0, 1, p 前兩個好理解,後一個p 是啥? 位元組結束標記?
按我理解應該是個結束標搭廳記
這樣收到 p 脈沖即把前面收集的 0,1 序列組合成若干位元組發送出去知棗隱。
㈤ 單片機最小系統原理圖解析 看完新手也能自己動手製作
單片機最小系統就是能夠運行的最少元件組合,雖然這樣過的單片機看起來非常簡單,但實際操作並沒有那麼容易,特別是對於一些新手來說,沒有手把手來教,確實還是有點小為難,不過沒關系,這里提供單片機最小系統原理圖,讓你理解每一個步驟,就可以自己動手操作了。
一、單片機最小系統的特點
單片機最小系統是用最少的元件組成的單片機可以工作的系統,最大的特點局勢系統資源完全開放,能夠配合其他模塊板或自行搭建用戶電路可實現任意實驗功能。單片機最小系統的借口設計靈活,使用起來就會非常方便,所以適合創新實踐活動,下面來看看單片機最小系統原理圖。
二、單片機最小系統原理圖解析
上圖就是單片機最小系統原理圖,對於一個完整的電子設計,首先就要搞定供電模塊,電源模塊的穩定可靠是系統平穩運行的前提和基礎,51單片機雖然應用范圍最廣,但實際上還有個弊端,那就是容易受到干擾而出現程序跑飛的現象,克服這個現象的重要手段就是為單片機最小系統配置一個穩定而可靠的電源供電模塊。
單片機最小系統的電源供電模塊可以通過計算機的USB介面供給,也可以用外部穩定的5V電源,電源電路中接入電源指示LED。圖中R11為LED的限流電阻。S1 為電源開關。 上一頁 0 /3 下一頁
㈥ c51單片機原理及應用重點
1、單片機內部資源
STC89C52:8KFLASH、512位元組RAM、32個IO口、3個定時器、1個UART、8個中斷源
(1)Flash(硬碟)——程序存儲空間 —— 擦寫10萬次,斷電數據不丟失,讀寫速度慢
(2)RAM(內存)——數據存儲空間 —— 斷電數據丟失,讀寫速度快,無限次使用
(3)SFR —— 特殊功能寄存器
2、單片機最小系統
51單片機的內部組成及應用原理解析
最小系統:最少組件組成單片機可以工作的系統。
三要素:
(1)、 電源電路:5V
(2)、 晶振電路:11.0592MHZ、兩個30PF
(3)、 復位電路:
P0:開漏輸出,必須加上拉電阻
准雙向口:
強推挽輸出:電流驅動能力強
高阻態
上下拉電阻:上拉電路就是將不確定的信號通過一個電阻拉到高電平,同時限流作用。下拉電阻就是下拉到低電平。
上下拉電阻選取:從降低功耗方面考慮應該足夠大,因為電阻越大,電流越小;驅動能力來看,小電阻
3、硬體基礎知識
(1)、電磁干擾(EMI)——靜電放電(ESD)、快速瞬間脈沖群(EFT)、浪涌(Surge)
(2)、去耦電容的使用
低頻濾波電容,平常應用最多的事鉭電容,電解電容,陶瓷電容,起到去除電源低頻紋波,穩定電源的作用。
高頻濾波電容,電容附近,通常用104電容來進行去除高頻干擾。
(3)、三極體(PNP,NPN) b,c,e --- 電壓驅動
控制應用
驅動應用
4、LED發光二極體——電流驅動
51單片機的內部組成及應用原理解析
通常紅色貼片LED, 靠電流驅動,電壓1.8V~2.2V,電流1~20mA,在1~5mA亮度有所變化,5mA以上亮度基本不變。
VCC 電壓是 5V,發光二極體自
身壓降大概是 2V,那麼在右邊 R34 這個電阻上承受的電壓就是 3V。
R = U/I —— 1~20mA —— R:150~3K
5、C語言基礎
(1)、基本運算符
+ - * / % ++ -- = == != += -= 《《 》》
㈦ 求單片機相關程序解析(1/3)
#include "reg52.h"//聲明調用了reg52.h單片機特徵庫
#include"18b20.h"//聲明調用了18b20.h自定義頭文件
#include "intrins.h" //聲明調用了intrins.h函數庫
sbit io_LCD12864_RS = P1^5 ;//將單片機的P1.5口用io_LCD12864_RS來關聯,以後對io_LCD12864_RS的操作就是對p1.5口的操作
sbit io_LCD12864_RW = P1^4 ;//原理同上
sbit io_LCD12864_EN = P1^3 ;//原理同上
#define io_LCD12864_DATAPORT P0 //將單片機的P0口用io_LCD12864來關聯,以後對io_LCD12864的操作就是對整個P0口的操作(8bit)
#define SET_DATA io_LCD12864_RS = 1 ;//這是#define帶賦值的用法,用SET_DATA來代表對io_LCD12864_RS賦1的操作,以後程序中一出現SET_DATA,則io_LCD12864_RS對應的P1.5口就被寫1
#define SET_INC io_LCD12864_RS = 0 ;//原理同上
#define SET_READ io_LCD12864_RW = 1 ;//原理同上
#define SET_WRITE io_LCD12864_RW = 0 ;//原理同上
#define SET_EN io_LCD12864_EN = 1 ;//原理同上
#define CLR_EN io_LCD12864_EN = 0 ;//原理同上
unsigned char code table[]={"0123456789"};//在程序代碼區定義了一個數組table內容是一個字元串0123456789
/*******************************
忙檢測函數
檢查12864是否將之前對其寫入的指令處理完畢
*********************************/
void v_Lcd12864CheckBusy_f( void ) //
{
unsigned int nTimeOut = 0 ;//定義一個整形的循環次數累加變數
SET_INC //io_LCD12864_RS = 0 指向指令寄存器
SET_READ //io_LCD12864_RW = 1 當前操作變為讀操作
CLR_EN //io_LCD12864_EN = 0 EN先變低電平
SET_EN //io_LCD12864_EN = 1 上升沿跳變,指令寄存器的數據被讀到12864的埠上
while( ( io_LCD12864_DATAPORT & 0x80 ) && ( ++nTimeOut != 0 ) ) ;
//查看此時數據埠的最高位(忙標志位)是不是為1,若為1說明12864還忙著,則等待nTimeOut加到0時退出循環
//nTimeOut要在這個while裡面循環65535次才退出循環,原因是需要累加到溢出其值才會變成0,這樣起到延時的作用;
//也就是查詢忙標志位,如果不忙了就立即退出循環,執行下面的指令,忙的話我給你延時一段時間,你肯定也忙完了,我也退出循環.
CLR_EN //EN回到0電平(對液晶不操作的時候EN都應該回到低電平,防止錯誤數據的出入,加強抗干擾)
SET_INC //冗餘操作,上面已經執行了SET_INC
SET_READ //冗餘操作,上面已經執行了SET_READ
}
/**************************************
發送命令
輸入變數:byCmd-發給12864的指令代碼
***************************************/
void v_Lcd12864SendCmd_f( unsigned char byCmd ) //發送命令
{
v_Lcd12864CheckBusy_f() ;//確認液晶不在忙狀態
SET_INC //io_LCD12864_RS = 0 指向指令寄存器
SET_WRITE //io_LCD12864_RW = 0 當前操作變成寫操作
CLR_EN //io_LCD12864_EN = 0 EN先變低電平
io_LCD12864_DATAPORT = byCmd ;//將指令代碼放到液晶埠上
_nop_();//延時等待埠數據穩定
_nop_();//延時等待埠數據穩定
SET_EN //io_LCD12864_EN = 1 上升沿跳變,埠的數據(指令代碼)被12864讀入到數據寄存器
_nop_();//延時等待12864讀完
_nop_();//延時等待12864讀完
CLR_EN//EN回到0電平
SET_READ//回到讀狀態(平時都應該在讀狀態,防止誤寫)
SET_INC//冗餘操作
}
/**************************************
發送數據
輸入變數:byData-發給12864的數據代碼
***************************************/
void v_Lcd12864SendData_f( unsigned char byData ) //發送數據
{
v_Lcd12864CheckBusy_f() ;//確認液晶不在忙狀態
SET_DATA //io_LCD12864_RS = 1 指向液晶的數據寄存器
SET_WRITE //io_LCD12864_RW = 0 當前操作變成寫操作
CLR_EN //io_LCD12864_EN = 0 EN先變低電平
io_LCD12864_DATAPORT = byData ;//將數據代碼放到液晶埠上
_nop_();//延時等待埠數據穩定
_nop_();//同上
SET_EN//io_LCD12864_EN = 1 上升沿跳變,埠的數據(數據代碼)被12864讀入到數據寄存器
_nop_();//延時等待12864讀完
_nop_();//同上
CLR_EN//EN回到0電平
SET_READ//回到讀狀態
SET_INC//冗餘操作
}
㈧ 單片機 解析8421碼 (望高手選一種單片機進行稍具體的說明)
設錯,就是這樣搞
傳送出去是指用串口或其它通訊方式?
或者只是傳送給上一層次處理謹陸帶模塊?
這是一個串列通訊,當然要「轉換/處理」下,應該是每
8
個位
發送一次
三種脈沖
0,
1,
p
前兩個好理解,後一個p
是啥?
位元組結束標悉絕記?
按我理解應該是個結束標記
這樣收到
p
脈沖即把前面收集的
0,1
序列組合成祥蘆若干位元組發送出去。
㈨ 什麼叫單片機
單片機的名詞解析我就不多說了,我說說它的結構吧
目前市面上單片機分幾種51系列(8位,最早被開發的系列)、AVR、PIC、ARM系列
51系列的典型實例就是80C51了,不過由於它不具備在線編程能力,已經淘汰,取而代之的是89S51,它內部集成了運算器、存儲器、輸入輸出單元,具有典型的馮諾依曼結構,簡單的說,它就是一台微型計算機,我們常稱之為微處理器(MCU)。
AVR單片機是ATmega公司推出的,具有哈佛結構的單片機,它具有預取值的功能,教傳統單片機來說,各個性能上都有所提升。
ARM則是新時代的產物,由於人們生活對處理器要求越來越高,對速度以及存儲容量還有片上外設要求越來越高,51等8位單片機已經遠不能滿足了,ARM公司推出的處理器核心,ARM系列處理器,被眾多的晶元製造商認可,並在ARM核心的基礎上加上了諸如AD轉換器,DMA控制器,串口,USB,網口,SD卡讀取介面,攝像頭介面等外設,設計並製造了許多優秀的ARM處理晶元,被廣泛應用與軍事航天等領域。我們生活中用的手機,裡面的主控CPU就是單片機,U盤裡面有單片機,數碼相機等,幾乎無處不在。
硬體設計工程師通過編寫單片機程序,對單片機的各種外設和寄存器進行操作,實現對單片機的控制,一般說來,單片機是可以燒寫程序的,也存在一次性燒寫的單片機。
差不多了吧,我想你應該了解了