導航:首頁 > 操作系統 > 單片機c51項目計劃書

單片機c51項目計劃書

發布時間:2023-03-10 10:50:30

Ⅰ 《單片機原理與應用及C51程序設計(唐穎)》最新txt全集下載

單片機原理與應用及C51程序設計(唐穎) txt全集小說附件已上傳到網路網盤,點擊免費下載:

內容預覽:
21 世紀全國本科院校電氣信息類創新型應用人才培養規劃教材
單片機原理與應用及 C51 程序設計
主 編 唐 穎 副主編 程菊花 任條娟 參 編 黃震梁 鄭艷玲 主 審 胡業發 張建軍
內 容 簡 介
本書共分為 9 章,主要內容包括:單片機概述,MCS-51 系列單片機的內部結構,MCS-51 型單片機 指令系統和匯編語言程序設計,MCS-51 系列單片機 C 語言程序設計,MCS-51 型單片機的內部硬體資源 及應用,MCS-51 型單片機系統功能的擴展,MCS-51 型單片機介面技術,綜合實例,單片機應用系統設 計等。 本書除了在每個應用章節中給出許多相關實例外,還在第 8、9 章給出大量的設計性實例和系統設計 實例,均採用匯編與 C 語言編程對照的方式編寫,力求通過應用實例,使讀者既可以在工作中進行類比編 程,又可以開闊思路,提高實際工作能力。 本書按照應用型人才培養的教學要求編寫,語言通俗易懂,內容齊全、實用性強,適合作為各類普通 高校相關專業、相關課程的教材或教學參考書,也可作為需要掌握和使……

Ⅱ 簡述c51程序開發流程

C51開發流程:
第一:必須對C51單片機內部外設和內部寄存器了解,因為寫程序需要控制單片機內部寄存器,再去控制外設。
第二:設計單片機的硬體,單片機IO控制你的硬體
第三:畫出流程圖執行大概的框架
下面就是按照你的流程圖去設計程序。

Ⅲ c51單片機程序實例

#include<reg51.h>
#defineucharunsignedchar
uchartab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};//0到9
ucharnum,cnt,disn;
ucharkeyval,disk;
ucharled[]={1,2,3,4};
voiddealdat(uchara)
{
led[0]=0;
led[1]=0;
led[2]=0;
led[3]=0;
led[a]=disk;
}
voiddelay(unsignedinta)
{
unsignedinti,j;
for(i=0;i<a;i++)
for(j=0;j<1000;j++);
}
voidt0isr()interrupt1
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
switch(num)
{
case0:P2=0x01;break;
case1:P2=0x02;break;
case2:P2=0x04;break;
case3:P2=0x08;break;
default:break;
}
P0=~tab[led[num]];
num++;
num&=0x03;
cnt++;
if(cnt>100)
{
cnt=0;
disn++;
disn%=4;
dealdat(disn);
}
}

ucharkbscan(void)
{
unsignedcharsccode,recode;
P3=0x0f;//發0掃描,列線輸入
if((P3&0x0f)!=0x0f)//有鍵按下
{
// delay(20);//延時去抖動
if((P3&0x0f)!=0x0f)
{
sccode=0xef;//逐行掃描初值
while((sccode&0x01)!=0)
{
P3=sccode;
if((P3&0x0f)!=0x0f)
{
recode=(P3&0x0f)|0xf0;
return((~sccode)+(~recode));
}
else
sccode=(sccode<<1)|0x01;
}
}
}
return0;//無鍵按下,返回0
}

voidgetkey(void)
{
unsignedcharkey;
key=kbscan();
if(key==0){keyval=0xff;return;}
switch(key)
{
case0x11:keyval=7;break;
case0x12:keyval=4;break;
case0x14:keyval=1;break;
case0x18:keyval=10;break;
case0x21:keyval=8;break;
case0x22:keyval=5;break;
case0x24:keyval=2;break;
case0x28:keyval=0;break;
case0x41:keyval=9;break;
case0x42:keyval=6;break;
case0x44:keyval=3;break;
case0x48:keyval=11;break;
case0x81:keyval=12;break;
case0x82:keyval=13;break;
case0x84:keyval=14;break;
case0x88:keyval=15;break;
default:keyval=0xff;break;
}
}

main()
{
TMOD=0x11;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
TR0=1;
ET0=1;
EA=1;
while(1)
{
getkey();
if(keyval!=0xff)disk=keyval;
delay(10);
}

}

Ⅳ C51單片機閉環控制系統的設計

控制系統以MCS-51兼容單片機AT89C51微處理器為核心,顯示模塊、定時控制模塊、電源模塊等電路組成.

AT89C51微處理器

AT89C51是一款採用ATMEL高密度非易失存儲器製造技術製造,與工業標準的MCS-51指令集和輸出管腳相兼容的單片機,其主要性能特點有:

(1)高性能、低功耗的8Byte微控制器,RISC精簡指令集機構,指令功能強大,且多數為單周期指令,具有低功耗的閑置和掉電控制模式、5個中斷源、兩個16位定時器/計數器等功能。

(2)片內集成4KB可編程閃爍存儲器,可進行1000次以上寫/擦循環操作,數據保留時間可達10年,支持三級程序存儲器鎖定。

(3)豐富強大的外部介面性能:32可編程I/O線,可編程串列通道,片內振盪器和時鍾電路。

軟體系統設計

系統利用偉福6000編寫源代碼,MEP500燒寫AT89C51晶元實現智能時鍾控制功能。由於系統軟體主要完成時鍾顯示、鬧鈴、時間設置等功能。源程序主要包括主程序、中斷子程序、顯示子程序、定時子程序、延時子程序等。

實現程序如下:
……

;**************************; 以下為主程序 (檢測各鍵是否按下)
;***************************MainLoop:
jb AlarmSetKey,CheckMinuteKey
call Delay
jb AlarmSetKey,CheckMinuteKey
setb ClockMode
call AlarmSet
CheckMinuteKey:
jb MinuteKey,CheckHourKey
mov a,Minute
add a,#1
mov Minute,a
cjne a,#3ch,NotOver1
mov Minute,#0
NotOver1:
jnb MinuteKey,$
CheckHourKey:
jb HourKey,CheckAlarmA
mov a,Hour
add a,#1
mov Hour,a
cjne a,#18h,NotOver2
mov Hour,#0
NotOver2:
jnb HourKey,$
CheckAlarmA:
jnb AlarmTimeOnA,CheckAlarmP
call StartPc; call AlarmProcess
ajmp ToReturn
CheckAlarmP:
jnb AlarmTimeOnP,ToReturn
call ShutPc
ToReturn:
ajmp MainLoop
;**************************; 定時器Timer0中斷服務程序(此程序每8ms執行一次)
;***************************
TimeInt:
mov th0,#0E0h
mov tl0,#0bfh
push acc
push psw
setb rs0
clr rs1
d jnz OneSecondCounter,NotoneSecond
mov OneSecondCounter,#125
call Clock
call ConvertoBuffer
NotoneSecond:
call ScanDisplay
pop psw
pop acc
reti
; ***************************
; 掃描顯示子程序
;***************************
ScanDisplay:
mov r1,#DisplayBuffer
mov R4,#11111011b
play:
mov a,R4
mov P2,A
mov A,@R1
mov DPTR,#TAB
movc A,@A+DPTR
mov P0,A
lcall Delay
inc R1
mov A,R4
jnb ACC.7,ENDOUT
rl A
mov R4,A
ajmp PLAY
endout: SETB P2.7
mov P0,#0FFH ret
TAB:DB 0C0H,0F9H,0A4H,0B0H,
99H,92H,82H,0F8H,80H,90H,7FH,
0B7H,0FFH
;***************************
; 時鍾內容加1秒的子程序
;***************************
Clock:
mov a,Second
add a,#1
mov Second,a
cjne a,#3cH,NotOverFlow
mov Second,#0
mov a,Minute
add a,#1
mov Minute,a
cjne a,#3cH,NotOverFlow
mov Minute,#0
mov a,Hour
add a,#1
mov Hour,a
cjne a,#18H,NotOverFlow
mov Hour,#0
NotOverFlow:
mov a,Second
jnz NotAlarm
jnb AlarmAOnOff,PAlarm
mov a,Minute
cjne a,AlarmAMinute,PAlarm
mov a,Hour
cjne a,AlarmPHour,PAlarm
ajmp alarming
PAlarm:
jnb AlarmPOnOff,NotAlarm
mov a,Minute
cjne a,AlarmPMinute,NotAlarm
mov a,Hour
cjne a,AlarmPHour,NotAlarm
ajmp Alarming1
Alarming:
setb AlarmTimeOnA
ajmp NotAlarm
Alarming1:
setb AlarmTimeOnP;
NotAlarm:
ret
;***************************
; 將時鍾內容或鬧時設置值轉換到顯示緩沖區子程序
;***************************
ConvertoBuffer:
mov r1,#DisplayBuffer
jb ClockMode,DispAlarmSet
mov a,Second
mov DispSecond,a
mov a,Minute
mov Dispminute,a
mov a,Hour
mov DispHour,a
ajmp Convert
DispAlarmSet:
jb AlarmAOnOff,AlarmAOn
mov DispSecond,#00h
jb AlarmPOnOff,AlarmPOn
mov DispSecond,#00h
ajmp Convert
AlarmAOn:
mov DispSecond,#11
NextA:
mov a,AlarmAMinute
mov Dispminute,a
mov a,AlarmAHour
mov DispHour,a
ajmp Convert
AlarmPOn:
mov DispSecond,#11
NextP:
mov a,AlarmPMinute
mov Dispminute,a
mov a,AlarmPHour
mov DispHour,a
Convert:
mov a,DispSecond
mov b,#10
div ab
mov @r1,b
inc r1
mov @r1,a
inc r1
mov a,DispMinute
mov b,#10
div ab
mov @r1,b
inc r1
mov @r1,a
inc r1
mov a,DispHour
mov b,#10
div ab
mov @r1,b
inc r1
mov @r1,a
ret

控制系統,以AT89C51微處理器為核心,具有集成度高、性能穩定、抗干擾能力強、性價比高的優點。經軟體模擬和實際功能驗證,證明設計可靠、設計方案可行,在實際應用中有較大的實 用價值。

Ⅳ C51單片機的萬年歷程序設計

我這有個數碼管顯示的程序
以前做的,。。
你可以在我這個程序上修改修改
包括鍵盤掃描,還有動態顯示



【。。。】
#include
//常量參數
#define TMODW 0x01;
#define SCONW 0x00;
#define xplay 0x04;//顯示分頻系數
//顯示位選
unsigned char data stb;
//鍵值緩存,0xFF無鍵命令
unsigned char data keynum;
//顯示字型變數
unsigned char data play[8];
//工作參數
unsigned char data l,m;
//字型碼
unsigned char code BCDPC[10]=
{0x3F,0x06,0x5B,0x4F,0x66,
0x6D,0x7D,0x07,0x7F,0x6F};
//字位碼
unsigned char code STBCODE[8]=
{0x01,0x02,0x04,0x08,
0x10,0x20,0x40,0x80 };
//400Hz xplay分頻計數
unsigned char data cttime;
//時鍾參數
unsigned char data hr,min,sec,sec100;
//調整時鍾參數(時鍾「走」)
void ct1()
{sec100++;
if (sec100==100)
{sec100=0;sec++;
if (sec==60)
{sec=0;min++;
if (min==60)
{min=0;hr++;
if (hr==24) hr=0;
}
}
}
}
//時鍾參數→LED 顯示緩存7段參數轉換函數;
void xcplay()
{play[0]=BCDPC[hr/10];
play[1]=BCDPC[hr%10];
play[2]=BCDPC[min/10];
play[3]=BCDPC[min%10];
play[4]=BCDPC[sec/10];
play[5]=BCDPC[sec%10];
play[6]=BCDPC[sec100/10];
play[7]=BCDPC[sec100%10];
}
//顯示掃描
void cplay()
{T0=1;//T0-高電平消隱
T1=0;//T1-低電平準備發脈沖前沿
TI=0;//?
P1=0;//?
SBUF=STBCODE[stb];
while (TI==0)
{
};
TI=0;
SBUF=play[stb];
while (TI==0)
{
};
T1=1;
T0=0;
stb=++stb&0x07;
}

extern void cthl0();
//定時器0中斷處理程序
void ct0(void) interrupt 1 using 1
{cthl0();
cttime--;
if (cttime==0)
{cttime=xplay;
ct1();//調用時鍾「走」函數
xcplay();//調用時鍾參數→Led顯示緩存轉換函數
};
cplay();
}
void w20ms()
{for (l=0;l<41;l++)
{for (m=0;m<81;m++)
{
}
}
}
void tkey()
{P1=0xF0;
keynum=0xFF;
if (P1!=0xF0)
{w20ms();
P1=0xF0;
if (P1!=0xF0)
{P1=0xFE;
switch (P1)
{case 0xEE:keynum=0;break;
case 0xDE:keynum=1;break;
case 0xBE:keynum=2;break;
case 0x7E:keynum=3;break;
}
P1=0xFD;
switch (P1)
{case 0xED:keynum=4;break;
case 0xDD:keynum=5;break;
case 0xBD:keynum=6;break;
case 0x7B:keynum=7;break;
}
P1=0xFB;
switch (P1)
{
case 0xEB:keynum=8;break;
}
};
};
P1=0x00;
}
void command()
{switch (keynum)
{
case 0:{hr=hr+1;
if (hr==24)
hr=0;
}
break;

case 1:{min=min+1;
if (min==60)
min=0;
}
break;

case 2:{sec=sec+1;
if (sec==60)
sec=0;
}
break;

case 3:{sec100=0;
}
break;

case 4:{
while(!(P1=0xED))
{
hr=0;
min=0;
sec=0;
}
}
break;

case 5:{hr=hr-1;
if (hr==00)
hr=24;
}
break;
case 6:{min=min-1;
if (min==00)
min=59;
}
break;

case 7:{sec=sec-1;
if (sec==00)
sec=0;
}
break;

case 0xFF:break;
}
keynum=0xFF;
}
main ()
{ hr=8;
min=5;
sec=8;
sec100=0;
TMOD=TMODW;
SCON=SCONW;
ET0=1;
TR0=1;
EA=1;
cttime=xplay;
while (1)
{w20ms();
tkey();
command();

};
}

Ⅵ 單片機原理與應用及C51程序設計教材的目錄

第1章單片機概述
1.1單片機的基本概念與發展概況
1.2單片機的特點及應用
1.3常用單片機系列介紹
本章小結
習題
第2章MCS-51系列單片機的內部結構
2.1MCS-51系列單片機內部結構和引腳說明
2.2MCS-51型單片機存儲器
2.3MCS-51型單片機並行輸入/輸出介面
2.4MCS-51型單片機的時鍾電路與時序
本章小結
習題
第3章MCS-51型單片機指令系統和匯編語言程序設計
3.1指令系統基本概念
3.2MCS-51型單片機的定址方式
3.3MCS-51型單片機的指令系統
3.4匯編程序設計示例
本章小結
習題
第4章MCS-51系列單片機C語言程序設計
4.1C語言與MCS-51系列單片機
4.2C51的數據類型
4.3C51的運算量
4.4C51的運算符及表達式
4.5表達式語句及復合語句
4.6C51的輸入/輸出
4.7C51程序基本結構與相關語句
4.8函數
4.9C51構造數據類型
本章小結
習題
第5章MCS-51型單片機的內部硬體資源及應用
第6章MCS-51型單片機系統功能的擴展
第7章MCS-51型單片機介面技術
第8章綜合實例
第9章單片機應用系統設計
附錄
參考文獻

Ⅶ 用C51單片機控制12個LED流水燈的C語言程序怎麼寫

#include "REG52.H"

//控制引腳定義
sbit LED1 = PX.X; //P0.0-P3.7任意引腳
.... .... .......
sbit LED12 = PX.X;
//宏定義燈亮燈滅
#define LED1_ON( ) LED1 =0 //陽極接電源
#define LED1_OFF( ) LED1 =1 //陽極接電源
....... ............. .............
#define LED12_ON( ) LED12 =0 //陽極接電源
#define LED12_OFF( ) LED12 =1 //陽極接電源

void Init_GPIO( )//埠引腳初始化,關閉所有指示燈
{
LED1_OFF( ) ;
..............
LED12_OFF( ) ;
}
void Delay_ms( u16 dat ) //延時函數
{
u16 i, j;
for(i = dat; i>0; i--)
{
for (j=300; j>0; j--);
}
}
int main( ) //主函數
{
Init_GPIO( );//引腳初始化
while(1) //大循環
{
LED1_ON( );//點亮第一個LED
LED2_OFF( );
.............
LED12_OFF( );
Delay_ms(1000);//延時 參數自己可以根據晶振頻率自己調節

LED1_OFF( ); //點亮第二個LED
LED2_ON( );
LED3_OFF( );
.............
LED12_OFF( );
Delay_ms(1000);
............. //按照上面修改;

LED1_OFF( );//點亮第十二個LED
LED2_OFF );
LED3_OFF( );
.............
LED12_ON( );
Delay_ms(1000);
}
}

閱讀全文

與單片機c51項目計劃書相關的資料

熱點內容
gcc編譯消耗內存過多 瀏覽:279
昌邑網站製作源碼 瀏覽:127
單片機的反向編譯 瀏覽:463
subsample演算法 瀏覽:899
蘋果免費看書app哪個最好 瀏覽:885
c語言加密怎麼弄 瀏覽:842
c語言編譯的錯誤提示 瀏覽:767
驗機蘋果app哪個最好 瀏覽:666
光遇國際服安卓如何購買禮包 瀏覽:55
163app怎麼下載 瀏覽:247
電腦程序員下場 瀏覽:45
編譯原理ll1文法判斷 瀏覽:727
qt用vs2015編譯 瀏覽:553
結婚日子最好的演算法 瀏覽:794
安卓怎麼把數據傳到蘋果里 瀏覽:504
編譯器標識 瀏覽:792
編程珠璣第三章 瀏覽:785
windows如何開啟tftp伺服器 瀏覽:110
歐姆龍plc編程指令表 瀏覽:189
程序員遠程收入不穩定 瀏覽:863