《单片机最小系统设计》由会员分享,可在线阅读,更多相关《单片机最小系统设计(123页珍藏版)》请在金锄头文库上搜索。
1、单片机最小系统设计熟悉单片机基本工作条件;熟悉单片机外 围电路的设计及软件编程方法。第一节 51单片机基本工作条件一、电源电路(+5V)第一节 51单片机基本工作条件二、时钟电路时钟电路为整个单片机系统产生时间基准。 是单片机系统必须的部分。XTAL2XTAL1GND8051VCC5VOSCCC第一节 51单片机基本工作条件三、复位电路复位电路是单片机系统必须的,用来为单片机提供正确的复位信号。四、ISP下载电路第二节 单片机系统设计一、LED显示电路 1、设计任务:在 P0.0端口上接一个 发光二极管 L1, 使 L1在不停地一 亮一灭,一亮一灭 的时间间隔为 0.2 秒。第二节 单片机系统
2、设计2、源程序 (1)、设计流程图第二节 单片机系统设计(2)、汇编源程序w ORG 00H wSTART:CLR P0.0 w LCALL DELAY w SETB P0.0 w LCALL DELAY w LJMP START wDELAY:MOV R5, #20 ;延时子程序,延时 0.2秒 wD1:MOV R6, #20 wD2: MOV R7,#248 w DJNZ R7, $ w DJNZ R6, D2 w DJNZ R5, D1 w RET w END第二节 单片机系统设计 (3)、C语言 w#include wsbit L1=P00; wvoid delay02s(void)
3、/延时 0.2秒子程序 w unsigned char i,j,k; wfor(i=20;i0;i-) wfor(j=20;j0;j-) wfor(k=248;k0;k-); wvoid main(void) w while(1) w L1=0; w delay02s(); w L1=1; w delay02s(); w w 第二节 单片机系统设计二、流水灯 1、设计任务: 设计P0口让8个LED间隔1S从右至左依次闪烁。 2、源程序 (1)、汇编语言 wORG 00H wSTART: MOV R2,#8 w MOV A,#0FEH w SETB C wLOOP: MOV P1,A w LCA
4、LL DELAY w RLC A第二节 单片机系统设计wDJNZ R2, LOOP wMOV R2,#8 wLOOP1: MOV P1,A wLCALL DELAY wRRC A wDJNZ R2, LOOP1 wLJMP START wDELAY: MOV R5,#20 ; wD1: MOV R6,#20 wD2: MOV R7,#248 wDJNZ R7,$ wDJNZ R6,D2 wDJNZ R5,D1 wRET wEND第二节 单片机系统设计 (2)、C语言#include “reg51.h“ w#include “intrins.h“ w#define uchar unsigned
5、char w#define uint unsigned int wvoid mDelay(unsigned int Delay) w unsigned int i; wfor(;Delay0;Delay-) w for(i=0;i wsbit K1=P37; wsbit L1=P00; wvoid main(void) w while(1) w if(K1=0) w L1=0; w else w L1=1; w第二节 单片机系统设计四、多路开关状态指示 1、设计任务: AT89S51 单片机的P0.0P0.3 接四个发光二 极管L1L4,P3.4P3.7 接了四个开关S5 S20,编程将开关的
6、状态反映到发光二极管。 (开关闭合,对应的灯亮,开关断开,对应的 灯灭)。第二节 单片机系统设计 2、电路原理第二节 单片机系统设计3、汇编源程序 wORG 00H wSTART: JB P3.4, NEXT1 wCLR P0.0 wSJMP NEX1 wNEXT1: SETB P0.0 wNEX1: JB P3.5,NEXT2 wCLR P0.1 wSJMP NEX2 wNEXT2: SETB P0.1 wNEX2: JB P3.6,NEXT3 wCLR P0.2 wSJMP NEX3 wNEXT3: SETB P0.2 wNEX3: JB P3.7,NEXT4 wCLR P0.3 wSJM
7、P NEX4 wNEXT4: SETB P0.3 wNEX4: SJMP START wEND第二节 单片机系统设计 4、C语言 w#include wvoid main(void) wwhile(1) wif(P3_4=0) w P0_0=0; welse w P0_0=1; wif(P3_5=0) w P0_1=0; welse w P0_1=1; wif(P3_6=0) w P0_2=0; welseP0_2=1; wif(P3_7=0) wP0_3=0; welseP0_3=1; w w第二节 单片机系统设计五、广告灯的设计 1、设计任务: 利用取表的方法,使端口P0 做单一灯的变化:
8、左 移2 次,右移2 次,闪烁2 次(延时的时间0.2秒)第二节 单片机系统设计2、电路原理第二节 单片机系统设计 3、汇编源程序ORG 0 wSTART: MOV DPTR,#TABLELOOP: CLR A w MOVC A, A+DPTR w CJNE A,#01H,LOOP1 w LJMP START wLOOP1: MOV P0, A w MOV R3, #20 w LCALL DELAY w INC DPTR w LJMP LOOP wDELAY: MOV R4,#20 wD1: MOV R5,#248 w DJNZ R5,$ w DJNZ R4,D1 w DJNZ R3,DELA
9、Y第二节 单片机系统设计wRET wTABLE: DB 0FEH,0FDH,0FBH,0F7H wDB 0EFH,0DFH,0BFH,07FH wDB 0FEH,0FDH,0FBH,0F7H wDB 0EFH,0DFH,0BFH,07FH wDB 07FH,0BFH,0DFH,0EFH wDB 0F7H,0FBH,0FDH,0FEH wDB 07FH,0BFH,0DFH,0EFH wDB 0F7H,0FBH,0FDH,0FEH wDB 00H, 0FFH,00H, 0FFH wDB 01H wEND第二节 单片机系统设计 4、C语言 w#include wunsigned char code
10、table=0xfe,0xfd,0xfb,0xf7, w0xef,0xdf,0xbf,0x7f, w0xfe,0xfd,0xfb,0xf7, w0xef,0xdf,0xbf,0x7f, w0x7f,0xbf,0xdf,0xef, w0xf7,0xfb,0xfd,0xfe, w0x7f,0xbf,0xdf,0xef, w0xf7,0xfb,0xfd,0xfe, w0x00,0xff,0x00,0xff, w0x01; wunsigned char i; wvoid delay(void)第二节 单片机系统设计 w wunsigned char m,n,s; wfor(m=20;m0;m-) wf
11、or(n=20;n0;n-) wfor(s=248;s0;s-); w wvoid main(void) w wwhile(1) w wif(tablei!=0x01) w wP1=tablei; wi+; wdelay(); w welse w wi=0; w w w第二节 单片机系统设计六、按键识别方法 1、设计任务:每按下一次开关S20,计数值加1,通过 AT89S51 单片机的P0 端口的P0.0 到P0.7 显 示出其的二进制计数值。 2、电路原理第二节 单片机系统设计第二节 单片机系统设计3、源程序 (1)、汇编语言 wORG 0wSTART: MOV R1,#00H ;初始化R1
12、为0,表示从0开始计数wMOV A,R1 ;wCPL A ;取反指令wMOV P0,A ;送出P1端口由发光二极管显示wREL: JB P3.7,REL ;判断SP1是否按下wLCALL DELAY10MS ;若按下,则延时10ms左右wJB P3.7,REL ;再判断SP1是否真得按下wINC R1 ;若真得按下,则进行按键处理,使wMOV A,R1 ;计数内容加1,并送出P1端口由wCPL A ;发光二极管显示wMOV P0,A ;wJNB P3.7,$ ;等待SP1释放wSJMP REL ;继续对K1按键扫描wDELAY10MS: MOV R6,#20 ;延时10ms子程序wL1: MO
13、V R7,#248wDJNZ R7,$wDJNZ R6,L1wRETwEND第二节 单片机系统设计 (2)、C语言 #include unsigned char count; void delay10ms(void) unsigned char i,j; for(i=250;i0;i-) for(j=248;j0;j-); void main(void) while(1) if(P3_7=0) delay10ms(); if(P3_7=0) 第二节 单片机系统设计wcount+; wif(count=256) w wcount=0; w wP0=count; wwhile(P3_7=0); w
14、 w w w第二节 单片机系统设计七、流水灯定时器 1、设计任务:隔1S,通过AT89S51 单片机的P0.0 端 口的LED闪亮。 2、电路原理第二节 单片机系统设计第二节 单片机系统设计 C程序设计 w#include w#define uchar unsigned char w#define uint unsigned int wsbit d1=P00; wuchar tt; wvoid main() wuchar temp=0xfe; w tt=0; wTMOD=0x10; wTH1=(65536-50000)/256; wTL1=(65536-50000)%256; wEA=1; wET1=1; wTR1=1;第二节 单片机系统设计wwhile(1) wif(tt=20) wtt=0; wd1=!d1; w w wvoid ex() interrupt 3 w wTH1=(65536-50000)/256; wTL1=(65536-50000)%256; wtt+; w第二节 单片机系统设计八、LED显示 1、设计任务:w利用AT89S51 单片机的P0 端口的P0.0 P0