導航:首頁 > 操作系統 > 51單片機怎麼查彩燈

51單片機怎麼查彩燈

發布時間:2022-08-05 02:32:45

單片機匯編語言編程彩燈程序

在單片機開發過程中,從硬體設計到軟體設計幾乎是開發者針對本系統特點親自完成的。這樣雖然可以降低系統成本,提高系統的適應性,但是每個系統的調試佔去了總開發時間的2/3,可見調試的工作量比較大。單片機系統的硬體調試和軟體調試是不能分開的,許多硬體錯誤是在軟體調試中被發現和糾正的。但通常是先排除明顯的硬體故障以後,再和軟體結合起來調試以進一步排除故障。可見硬體的調試是基礎,如果硬體調試不通過,軟體設計則是無從做起。本文結合作者在單片機開發過程中體會,討論硬體調試的技巧。
當硬體設計從布線到焊接安裝完成之後,就開始進入硬體調試階段,調試大體分為以下幾步。
1 硬體靜態的調試
1.1排除邏輯故障
這類故障往往由於設計和加工制板過程中工藝性錯誤所造成的。主要包括錯線、開路、短路。排除的方法是首先將加工的印製板認真對照原理圖,看兩者是否一致。應特別注意電源系統檢查,以防止電源短路和極性錯誤,並重點檢查系統匯流排(地址匯流排、數據匯流排和控制匯流排)是否存在相互之間短路或與其它信號線路短路。必要時利用數字萬用表的短路測試功能,可以縮短排錯時間。
1.2排除元器件失效
造成這類錯誤的原因有兩個:一個是元器件買來時就已壞了;另一個是由於安裝錯誤,造成器件燒壞。可以採取檢查元器件與設計要求的型號、規格和安裝是否一致。在保證安裝無誤後,用替換方法排除錯誤。
1.3排除電源故障
在通電前,一定要檢查電源電壓的幅值和極性,否則很容易造成集成塊損壞。加電後檢查各插件上引腳的電位,一般先檢查VCC與GND之間電位,若在5V~4.8V之間屬正常。若有高壓,聯機模擬器調試時,將會損壞模擬器等,有時會使應用系統中的集成塊發熱損壞。
2 聯機模擬調試
聯機模擬必須藉助模擬開發裝置、示波器、萬用表等工具。這些工具是單片機開發的最基本工具。
信號線是聯絡8031和外部器件的紐帶,如果信號線連結錯誤或時序不對,那麼都會造成對外圍電路讀寫錯誤。51系列單片機的信號線大體分為讀、寫信號線、片選信號線、時鍾信號線、外部程序存貯器讀選通信號(PSEN)、地址鎖存信號(ALE)、復位信號等幾大類。這些信號大多屬於脈沖信號,對於脈沖信號藉助示波器(這里指通用示波器)用常規方法很難觀測到,必須採取一定措施才能觀測到。應該利用軟體編程的方法來實現。例如對片選信號,運行下面的小程序就可以檢測出解碼片選信號是否正常。
MAIN:MOVDPTR,#DPTR
;將地址送入DPTR
MOVXA,@DPTR
;將解碼地址外RAM中的內容送入ACC
NOP;適當延時
SJMPMAIN;循環
執行程序後,就可以利用示波器觀察晶元的片選信號引出腳(用示波器掃描時間為1μs/每格檔),這時應看到周期為數微秒的負脈沖波形,若看不到則說明解碼信號有錯誤。
對於電平類信號,觀測起來就比較容易。例如對復位信號觀測就可以直接利用示波器,當按下復位鍵時,可以看到8031的復位引腳將變為高電平;一旦松開,電平將變低。
總而言之,對於脈沖觸發類的信號我們要用軟體來配合,並要把程序編為死循環,再利用示波器觀察;對於電平類觸發信號,可以直接用示波器觀察。
下面結合在自動配料控制系統中鍵盤、顯示部分的調試過程來加以說明。本系統中的鍵盤、顯示部分都是由並行口晶元8155擴展而成的。8155屬於可編程器件,因而很難劃分硬體和軟體,往往在調試中即使電路安裝正確沒有一定的指令去指揮它工作,也是無法發現硬體的故障。因此要使用一些簡單的調試程序來確定硬體的組裝是否正確、功能是否完整。在本系統中採取了先對顯示器調試,再對鍵盤調試。

㈡ 基於51單片機的循環彩燈控制設計

老兄,東西不復雜的,自己思考,別碰到1+1的問題也要來問。要給你畫流程,沒人有那麼多時間的,

硬體:51用p1口接電阻驅動三級管,用三極體驅動二極體動作。
軟體:網上很多現成的資料,自己去整理。
;************;
;小燈控製程序;
;************;
;
;************;
;中斷入口程序;
;************;
;
ORG 0000H ;程序執行開始地址
LJMP START ;跳至START執行
ORG 0003H ;外中斷0中斷入口地址
RETI ;中斷返回(不開中斷)
ORG 000BH ;定時器T0中斷入口地址
RETI ;中斷返回(不開中斷)
ORG 0013H ;外中斷1中斷入口地址
RETI ;中斷返回(不開中斷)
ORG 001BH ;定時器T1中斷入口地址
RETI ;中斷返回(不開中斷)
ORG 0023H ;串列口中斷入口地址
RETI ;中斷返回(不開中斷)
;
;************;
; 初始化程序 ;
;************;
;
CLEAR: MOV 20H,#00H ;20H單元內存清0(閃爍標志清0)
SETB 00H ;20H.0位置1(上電時自動執行閃爍功能1)
RET ;子程序返回
;
;************;
; 主 程 序 ;
;************;
;
START:ACALL CLEAR ;調用初始化子程序
MAIN: LCALL KEYWORK ;調用鍵掃描子程序
JB 00H,FUN0 ;20H.0位為1時執行FUN0
JB 01H,FUN1 ;20H.1位為1時執行FUN1
JB 02H,FUN2 ;20H.2位為1時執行FUN2
JB 03H,MAIN ;備用
AJMP MAIN ;返回主程序MAIN
;
;************;
; 功能程序 ;
;************;
;第1種閃爍功能程序
FUN0: MOV A,#0FEH ;累加器賦初值
FUN00:MOV P1,A ;累加器值送至P1口
LCALL DL05S ;延時
JNB ACC.7,MAIN ;累加器最高位為0時轉MAIN
RL A ;累加器A中數據循環左移1位
AJMP FUN00 ;轉FUN00循環
;
;第2種閃爍功能程序
FUN1:MOV A,#0FEH ;累加器賦初值
FUN11:MOV P1,A ;累加器值送至P1口
LCALL DL05S ;延時
JZ MAIN ;A為0轉MAIN
RL A ;累加器A中數據循環左移1位
ANL A,P1 ;A同P1口值相與
AJMP FUN11 ;轉FUN11循環
;
; 第3種閃爍功能程序
FUN2:MOV A,#0AAH ;累加器賦初值
MOV P1,A ;累加器值送至P1口
LCALL DL05S ;延時
CPL A ;A中各位取反
MOV P1,A ;累加器值送至P1口
LCALL DL05S ;延時
AJMP MAIN ;轉MAIN
;************;
; 掃鍵程序 ;
;************;
;
KEYWORK:MOV P3,#0FFH ;置P3口為輸入狀態
JNB P3.0,KEY0 ;讀P3.0口,若為0轉KEY0
JNB P3.1,KEY1 ;讀P3.1口,若為0轉KEY1
JNB P3.2,KEY2 ;讀P3.2口,若為0轉KEY2
JNB P3.3,KEY3 ;讀P3.3口,若為0轉KEY3
RET ;子程序返回
;
;閃爍功能0鍵處理程序
KEY0:LCALL DL10MS ;延時10毫秒消抖
JB P3.0,OUT0 ;P3.0為1,子程序返回(干擾)
SETB 00H ;20H.0位置1(執行閃爍功能1標志)
CLR 01H ;20H.1位清0
CLR 02H ;20H.2位清0
CLR 03H ;20H.3位清0
OUT0:RET ;子程序返回
;
; 閃爍功能1鍵處理程序
KEY1:LCALL DL10MS
JB P3.1,OUT1
SETB 01H ;20H.1位置1(執行閃爍功能2標志)
CLR 00H
CLR 02H
CLR 03H
OUT1:RET
;
;閃爍功能2鍵處理程序
KEY2:LCALL DL10MS
JB P3.2,OUT2
SETB 02H ;20H.2位置1(執行閃爍功能3標志)
CLR 01H
CLR 00H
CLR 03H
OUT2:RET
;
;閃爍功能(備用)鍵處理程序
KEY3:LCALL DL10MS
JB P3.3,OUT3
SETB 03H ;20H.3位置1(執行備用閃爍功能標志)
CLR 01H
CLR 02H
CLR 00H
OUT3:RET
;
;************;
; 延時程序 ;
;************;
;0.5毫秒延時子程序,執行一次時間為513微秒
DL512:MOV R2,#0FFH
LOOP1: DJNZ R2,LOOP1
RET
;
;10毫秒延時子程序(調用20次0.5毫秒延時子程序)
DL10MS:MOV R3,#14H
LOOP2: LCALL DL512
DJNZ R3,LOOP2
RET
;
;延時子程序,改變R4寄存器初值可改變閃爍的快慢(時間為15×25毫秒)
DL05S:MOV R4,#0FH
LOOP3: LCALL DL25MS
DJNZ R4,LOOP3
RET
;
;25毫秒延時子程序,用調用掃鍵子程序延時,可快速讀出功能按鍵值
DL25MS:MOV R5,#0FFH
LOOP4:LCALL KEYWORK
DJNZ R5,LOOP4
RET
END ;程序結束

㈢ 51單片機編程~~~~彩燈控制系統:

這個應該很簡單的呀。買一本單片機C語言教科書,上邊有例子的。

㈣ 幫我改個51單片機查表彩燈C程序

給個你參考
/* 程序詳細功能介紹:
*利用取表的方法,使埠P1做單一燈的變化:左移2次,右移2次,閃爍2次(延時的時間0.2秒)。
*在用表格進行程序設計的時候,要用以下的指令來完成
*(1).利用MOV DPTR,#DATA16的指令來使數據指針寄存器指到表的開頭。
*(2).利用MOVC A,@A+DPTR的指令,根據累加器的值再加上DPTR的值,就可以使程序計數器PC指到表格內所要取出的數據。
*因此,只要把控制碼建成一個表,而利用MOVC,@A+DPTR做取碼的操作,
*就可方便地處理一些復雜的控制動作.
*/

#include <AT89X51.H>
unsigned char code table[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f,
0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f,
0x7f,0xbf,0xdf,0xef,
0xf7,0xfb,0xfd,0xfe,
0x7f,0xbf,0xdf,0xef,
0xf7,0xfb,0xfd,0xfe,
0x00,0xff,0x00,0xff,
0x01};
unsigned char i;

void delay(void)
{
unsigned char m,n,s;
for(m=20;m>0;m--)
for(n=20;n>0;n--)
for(s=248;s>0;s--);
}

void main(void)
{
while(1)
{
if(table[i]!=0x01)
{
P1=table[i];
i++;
delay();
}
else
{
i=0;
}
}
}

㈤ 基於51單片機的led彩燈設計。 9個燈(紅綠藍三色)。按鍵控制 c語言程序

首先要查看電路的連接,看看輸入連接到單片機的哪個引腳(比如p1.0),led燈連接到哪個引腳(比如p2.0)。然後看是高電平有效還是低電平有效(也就是高電平時led燈亮,還是低電平時led燈亮)。
如果是高電平燈亮的話,程序如下:
p2.0=p1.0;

㈥ 51單片機彩燈控制C語言程序:請問燈光疊加閃動32位的程序如何寫,知道的師傅請指教,最好用數組寫法

類似以下的程序,把所有需要點亮的燈所對應的的數值都放到數組中,然後讀取送埠就可以了

//文件名shiyan1.c
#include "reg51.h"
#define uchar unsigned char
void delay05s(void)
{
unsigned char i,j,k;
for(i=5;i>0;i--)
for(j=200;j>0;j--)
for(k=248;k>0;k--);
}
void main(void)
{
uchar b;
const unsigned char design[32]={0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,
0x7F,0xBf,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF,
0xFF,0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x00,
0xE7,0xDB,0xBD,0x7E,0xFF};
while(1)
{
for(b=0;b<32;b++)
{
P2=design[b];
delay05s();
}
}
}

閱讀全文

與51單片機怎麼查彩燈相關的資料

熱點內容
區域網伺服器下如何連續看照片 瀏覽:252
經過加密的數字摘要 瀏覽:645
加密鎖9000變列印機 瀏覽:694
程序員的職業發展前途 瀏覽:639
安卓是世界上多少個程序員開發 瀏覽:45
解壓器官方免費 瀏覽:85
單片機p10開發 瀏覽:487
做什麼app賺錢 瀏覽:84
博途編譯失敗聯系客戶支持部門 瀏覽:928
金蝶旗艦版編譯 瀏覽:51
萬象伺服器斷電後啟動不了怎麼辦 瀏覽:357
我的世界蘋果版的2b2t伺服器地址咋查 瀏覽:97
xlsx轉換pdf 瀏覽:101
3dmax擠出命令英語 瀏覽:904
靶心率的定義和演算法 瀏覽:514
3d模術師app哪裡下載 瀏覽:476
php中文api文檔 瀏覽:458
安卓設計怎麼加入輸入框 瀏覽:188
主根伺服器什麼時候開始 瀏覽:738
奇門遁甲完整版pdf 瀏覽:904