单片机个实验代码详细
单片机程序流程图及源代码

单片机上机实验报告【实验一】端口实验,掌握通过端口编程实现数据输出和输入的方法,并观察结果。
实验内容:1)输出实验:假定4个端口全部连接发光二极管,编程实现所有发光二极管同时亮,延迟一定时间(自定)后,又同时灭,如此循环。
2)输入:从P0口输入某个数据到累加器A,打开观察窗口观察数据是否进入累加器A。
实现方式:通过peripherals实现端口数据观察实验。
程序流程图:将P0到P3端口先赋值为0,调用延迟后,再赋1,然后循环执行。
源代码:ORG 0000H ;程序入口地址LJMP MAIN ;跳转到主程序ORG 0300H ;主程序地址MAIN:MOV P0,#00H;MOV P1 ,#00H;MOV P2 ,#00H;MOV P3 ,#00H ;P0~P3均赋值为0ACALL DEL;调用延迟MOV P0 ,#0FFH;MOV P1 ,#0FFH;MOV P2 ,#0FFH;MOV P3 ,#0FFH;P0~P3均设为1MOV A,P0;将P0口值赋给累加器ACALL DEL;AJMP MAIN;跳转到主程序入口ORG 0200H;延迟程序入口地址DEL:MOV R5,#04H;寄存器实现延迟,F3:MOV R6,#0FFH;若主频为12MHZ则F2:MOV R7,#0FFH;延时为256*256*4F1:DJNZ R7,F1;0.26S,人眼可分辨DJNZ R6,F2;DJNZ R5,F3;RET;从延迟程序返回END;结束3.假设P0口外接一个数码管(共阴),如图,请在数码管上轮流显示数字0~9(采用软件延时)。
程序流程图:将数码管的真值编码0~9依次赋给P0并调用延迟,然后循环运行程序即可。
源代码:ORG 0000H; 程序入口SJMP MAIN; 跳转到主程序ORG 0300H; 主程序入口地址MAIN:MOV P0,#0FCH; 将数码管0的编码赋给P0口ACALL DELAY; 调用延迟,使数码管亮0持续0.33SMOV P0,#60H; show 1ACALL DELAY;MOV P0,#0DAH; show 2ACALL DELAY;MOV P0,#0F2H; show 3ACALL DELAY;MOV P0,#66H; show 4ACALL DELAY;MOV P0,#0B6H; show 5ACALL DELAY;MOVP0,#0BEH; show 6ACALL DELAY;MOV P0,#0E0H; show 7ACALL DELAY;MOV P0,#0FEH; show 8ACALL DELAY;MOV P0,#0F6H; show 9ACALL DELAY;AJMP LOOP; 跳转到主程序入口ORG 0200H; 延迟程序入口DEL:MOV R5,#05H; 采用软件延迟,若主频为12MHz,则DEL1:MOV R6,#0FFH; 定时时间为256*256*5*1uS=0.33S,DEL2:MOV R7,#0FFH; 人眼可分辨。
(单片机)

实验四一、实验题目:当K1键按下后,首先使蜂鸣器响一声,然后使LED1-LED8完成3种闪亮的花样(自己定义),每一种花样循环3次,然后周而复始。
二、keil代码:/*当K1键按下后,首先使蜂鸣器响一声,然后使LED1- LED8完成3种闪亮的花样(自己定义),每一种花样循环3次,然后周而复始。
*/#include<reg51.h>sbit P2_0=P2^0;//接蜂鸣器sbit P2_7=P2^7;sbit P1_0=P1^0;sbit P1_1=P1^1;sbit P1_2=P1^2;sbit P1_3=P1^3;sbit P1_4=P1^4;sbit P1_5=P1^5;sbit P1_6=P1^6;sbit P1_7=P1^7;void DELAY(int time)//延时{while(time--){}}void BUZ_ON(){if(P2_7==0){P2_0=1;}else{ P2_0=0;}}void F1(void){int i;char data_group_mide[5]={0x00,0x18,0x24,0x42,0x81};//向两边延伸for(i=0;i<5;i++){P1=data_group_mide[i];DELAY(20000);}P1=0x00;}void F2(void){int i;char data_group_left[8]={0xFF,0x7F,0x3F,0x0F,0x07,0x03,0x01,0x00};//向左延伸for(i=0;i<8;i++){P1=data_group_left[i];DELAY(20000);P1=0x00;}void F3(void){int i;char date_group_right[8]={0x00,0x01,0x03,0x07,0x0f,0x3f,0x7f,0xff};//向右延伸for(i=0;i<8;i++){P1=date_group_right[i];DELAY(20000);}P1=0x00;}void main(){unsigned int i; //每种花样循环三次P2_0=0;P2_7=1;BUZ_ON();P1=0x00;while(P2_7==0){for(i=0;i<3;i++)//花样1 {F1();}for(i=0;i<3;i++)//花样2 {F2();}for(i=0;i<3;i++)//花样3 {F3();}}}三、protues电路图:四、实验截图:五、实验小结:通过本次实验,我们熟悉了protues的编译环境,对以后的单片机学习有很大帮助。
单片机代码例子

单片机代码例子
单片机是一种集成电路,具有微处理器、存储器和各种输入输出接口,可用于控制各种电子设备。
下面是一些单片机代码例子:
1. LED闪烁:通过控制IO口的高低电平,使LED灯交替闪烁,实现简单的呼吸灯效果。
2. 温度测量:利用温度传感器采集环境温度,并将温度值转换为数字信号,通过串口输出或显示在LCD屏幕上。
3. 红外遥控:通过接收红外信号,并解码得到对应的遥控指令,实现对电视、空调等家电的遥控操作。
4. 超声波测距:利用超声波传感器发射超声波,并接收反射回来的信号,通过计算时间差来测量到障碍物的距离。
5. 矩阵键盘输入:通过矩阵键盘将按键输入转换为数字或字符信息,并进行相应的处理和反馈。
6. 电机控制:通过PWM技术控制直流电机的转速和方向,实现电机的正转、反转和变速等操作。
7. 温湿度监测:利用温湿度传感器采集环境的温度和湿度值,并将数据通过无线通信模块传输到上位机进行实时监测。
8. 蜂鸣器控制:通过控制IO口输出高低电平,实现蜂鸣器的开关
和不同音调的发声。
9. 光线感应:利用光敏电阻或光电二极管检测环境光线强度,并根据光线强度的变化做出相应的控制。
10. 电子钟:通过RTC模块获取当前的时间,并在LCD屏幕上显示或通过蜂鸣器报时。
以上是一些常见的单片机代码例子,涵盖了单片机在各个领域的应用。
通过编写这些代码,可以深入理解单片机的工作原理和应用技巧,为后续的项目开发打下基础。
当然,这只是冰山一角,单片机的应用领域非常广泛,还有许多其他有趣的项目等待我们去探索。
单片机整套实验及程序(交通灯_跑马灯等)

实验1 跑马灯实验一、实验目的●初步学会Proteus ISIS和uVision2单片机集成开发环境的使用;●初步掌握采用汇编语言与C语言开发单片机系统的程序结构;●掌握80C51单片机通用I/O口的使用;●掌握单片机内部定时/计数器的使用及编程方法以及中断处理程序的编写方法。
二、实验设备及器件●硬件:PC机,HNIST-1型单片机实验系统●软件:Proteus ISIS单片机仿真环境,uVision2单片机集成开发环境三、实验内容●编写一段程序,采用P1口作为控制端口,使与P1口相接的四个发光二极管〔D1、D2、D3、D4〕按照一定的方式点亮。
如点亮方式为:先点亮D1,延时一段时间,再顺序点亮D2……D4,然后又是D4……D1,同时只能有一个灯亮;然后每隔一段时间一次使相邻两个灯亮,三个灯亮,四个灯亮,最后闪烁三次,接着循环变化。
●基于Proteus ISIS仿真环境完成上述功能的仿真。
●基于uVision2单片机集成开发环境与硬件平台完成程序的脱机运行。
四、实验原理图图3.1 跑马灯实验电路原理图电路原理图如上图3.1所示,AT89S52的P1.0~P1.3控制4个发光二极管,发光二极管按照一定次序发光,相邻发光二极管的发光时间间隔可以通过定时器控制,还可以通过软件延时实现。
五、软件流程图与参考程序●主程序流程图如下:●参考程序#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intuchar aa,num,speed,flag;uchar code table[]={0x0e,0x0d,0x0b,0x07};uchar code table1[]={0x0a,0x05,0x09,0x06};uchar codetable2[]={0x0c,0x09,0x03,0x08,0x01,0x0e,0x0c,0x08,0x00};void delay(uint z)//延时函数{uint x;uchar y;for(x=z;x>0;x--)for(y=200;y>0;y--);}void init()//条件初始化函数{ flag=0;speed=10;//控制跑马灯流水速度TMOD=0x01;//中断方式TH0=(65535-50000)/256;TL0=(65536-50000)%256;//初值EA=1;//翻开总中断ET0=1;//翻开外中断0TR0=1;}void main(){init();//调用初始化函数while(1){if(flag){delay(2000);//调用延时函数for(num=0;num<4;num++)//从左至右间隔一个依次闪烁{P1=table[num];delay(2000);}for(num=3;num>0;num--)//从左至右间隔一个依次闪烁{P1=table[num];delay(2000);}for(num=0;num<4;num++)//从左至右间隔两个依次闪烁{P1=table1[num];delay(2000);}for(num=3;num>0;num--)//从左至右间隔两个依次闪烁{P1=table1[num];delay(2000);}for(num=0;num<6;num++)//两个,三个,四个跑马灯依次闪烁{P1=table2[num];delay(2000);}for(num=0;num<5;num++)//闪烁5次{P1=0xff;//全暗delay(2000);P1=0X00;//全亮delay(2000);}speed=speed-3;//变速if(speed==4){speed=10;}}}}void timer0() interrupt 1//中断函数{TH0=(65535-50000)/256;TL0=(65536-50000)%256;aa++;if(aa==speed){aa=0;flag=1;}}六、实验思考题●请用汇编指令完本钱实验内容,深刻理解汇编语言程序设计结构。
51单片机流水灯实验汇编代码

ORG 0000HAJMP MAINORG 000BHAJMP TIME0ORG 0030HMAIN: MOV TMOD,01H ;设置定时器工作方式为1MOV TH0, #HIGH(65536-10000) ;MOV TL0, #LOW(65536-10000) ;设10MS初始值SETB EA ;开总中断SETB ET0 ;允许定时器T0MOV 20H, #100MOV 21H, #10 ;20H、21H为软件计数器START:MOV A,#0FEHMOV R0, #08HONE: MOV P2, A ;输出到P2口,每次亮一个灯CALL DELAY ;调用延时程序RL A ;通过CY循环左移DJNZ R0, ONEMOV R1,#04HMOV A,#0FCHTWO: MOV P2, A ;输出到P2口,每次亮两个灯CALL DELAYRL A ;RL A ;循环左移两次,即两个灯同时点亮DJNZ R1, TWOMOV R2, #03HMOV A, #0FCHCLR C ;进位标志位清零THREE:MOV P2, A ;输出到P2口,每次亮三个灯CALL DELAYRLC A ;RLC A ;RLC A ;通过CY进行左移,将做高位溢出的数放入CY中DJNZ R2, THREEMOV P2, #00H ;将所有灯同时点亮CALL DELAYJMP START ;重复以上操作DELAY: ;精确延时子程序DELAYCLR 30H ;标志位30H清零SETB TR0 ;启动定时器T0loop: JBC 30H,LOOP1 ;查询标志位状态AJMP LOOPloop1:CLR TR0 ;关闭定时器T0RETTIME0:MOV TH0, #HIGH(65536-10000) ;MOV TL0, #LOW(65536-10000) ;重设10MS定时DJNZ 20H, GOMOV 20H, #100DJNZ 21H, GOMOV 21H, #10SETB 30H ;计数100*10Ms时,将标志位30H置位GO: RETI ;中断返回END。
单片机实验代码

实验三:查表和散转ORG 0000HLJMP MAINORG 3000H MAIN: MOV DPTR,#0000HMOVX A,@DPTRMOV B,AANL A,#0FHMOV DPTR,#TABLEMOVC A,@A+DPTRMOV 30H,ACLR 00HCLR 01HCLR 02HCLR 03HCLR 04HCLR 05HCLR 06HCLR 07HCLR 08HCLR 09HCLR 0AHCLR 0BHCLR 0CHCLR 0DHCLR 0EHCLR 0FHMOV A,BSWAP AANL A,#0FHMOV R0,ARL AADD A,R0MOV DPTR,#ZYJMP @A+DPTRZY:LJMP PM0LJMP PM1LJMP PM2LJMP PM3LJMP PM4LJMP PM5LJMP PM6LJMP PM7LJMP PM8LJMP PM9LJMP PMALJMP PMBLJMP PMCLJMP PMDLJMP PMELJMP PMFPM0:SETB 00HAJMP HEREPM1:SETB 01HAJMP HEREPM2:SETB 02HAJMP HEREPM3:SETB 03HAJMP HEREPM4:SETB 04HAJMP HEREPM5:SETB 05HAJMP HEREPM6:SETB 06HAJMP HEREPM7:SETB 07HAJMP HEREPM8:SETB 08HAJMP HEREPM9:SETB 09HAJMP HEREPMA:SETB 0AHAJMP HEREPMB:SETB 0BHAJMP HEREPMC:SETB 0CHAJMP HEREPMD:SETB 0DHAJMP HEREPME:SETB 0EHAJMP HEREPMF:SETB 0FHAJMP HERETABLE:DB00H,11H,22H,33H,44H,55H,66H,77H,88H,99H ,0AAH,0BBH,0CCH,0DDH,0EEH,0FFHHERE:END实验一:移数和清零ORG 3000HMOV R2,#10HMOV R0,#50HLP: MOV @R0,#00HINC R0DJNZ R2,LPMOV R2,#40HMOV DPTR,#0010HMOV A,#0000HLP1:MOVX @DPTR,AINC DPTRDJNZ R2,LP1MOV R0,#30HMOV DPTR,#0000HMOV R2,#10HLOOP:MOV A,@R0MOVX @DPTR,AINC R0INC DPTRDJNZ R2,LOOPMOV R0,30HCJNE @R0,#0FH,BDMOV A,#0FHADD A,@R0MOV 40H,ASETB 01HAJMP HEREBD:JC XYCLR CYMOV A,@R0SUBB A,#0FHMOV 40H,ASETB 02HAJMP HEREXY:MOV A,@R0MOV B,@R0MUL ABMOV 40H,AMOV 41H,BSETB 00HHERE:AJMP HEREEND实验四:外中断ORG 0000HLJMP MAINORG 0003HLJMP ZCX1ORG 0013HLJMP ZCX2 MAIN:MOV P1,#00HMOV IE,#10000101BSETB IT0SETB IT1HERE:LJMP HEREZCX1:JB P1.7,QLSETB CYMOV A,P1RLC AMOV P1,ALJMP JIESHU1QL:MOV P1,#00H JIESHU1:RETIZCX2:JNB P1.0,ZYCLR CYMOV A,P1RRC AMOV P1,ALJMP JIESHU2ZY:MOV P1,#0FFH JIESHU2: RETI实验五:定时器ORG 0000HAJMP MAINORG 0003HAJMP WZDORG 000BHAJMP DSZD MAIN:CLR P1.0CLR P1.1MOV R1,#00HSETB IT0SETB EX0SETB EASJMP $WZD:INC R1CJNE R1,#02H,DSYMCLR TR0MOV R1,#00HCLR P1.0CLR P1.1LJMP JISHU DSYM:SETB P1.0CLR P1.1CLR AMOV TMOD,#01HMOV TH0,#3CHMOV TL0,#0B0HSETB ET0SETB EASETB TR0 JISHU:RETIMOV TL0,#0B0HINC ACJNE A,#0AH,JIESHUCPL P1.0CPL P1.1CLR AJIESHU:RETI实验六:定时器和计数器ORG 0000HAJMP MAINORG 000BHAJMP ZD0ORG 0013HAJMP ZDORG 001BHAJMP ZD1ORG 0030HMAIN:MOV TMOD,#01100001BCLR AMOV P1,AMOV R1,#00HMOV TH0,#3CHMOV TL0,#0B0HMOV TH1,#0FFHMOV TL1,#0FFHSETB IT1SETB EX1SETB ET0SETB ET1SETB EASJMP $ZD:CPL TR0CPL TR1MOV C,TR0JC AAAMOV P1,#00HCLR AAAA: RETIMOV TL0,#0B0HINC R1CJNE R1,#0AH,JIESHUMOV R1,#00HCPL P3.2JIESHU:RETIZD1:INC AMOV P1,ARETI实验二:加法和排序ORG 0000HLJMP MAINORG 3000HMAIN:MOV R0,#30HMOV R1,#40HMOV R2,#10CLR CYHE:MOV A,@R0ADDC A,@R1MOV @R1,AINC R0INC R1DJNZ R2,HEMOV R0,#40HMOV R1,#50HMOV R2,#10YW0:MOV A,@R0MOV @R1,AINC R0INC R1DJNZ R2,YW0MOV R0,#40HMOV R1,#60HMOV R2,#10YW1:MOV A,@R0MOV @R1,AINC R0INC R1DJNZ R2,YW1PX:CLR 00HMOV R0,#60HMOV R2,#9 PXA:MOV A,@R0INC R0SUBB A,@R0JC PX2SETB 00HMOV A,@R0DEC R0XCH A,@R0INC R0XCH A,@R0 PX2:DJNZ R2,PXAJB 00H,PXEND 实验七:交通灯S_OK BIT 20H.0ORG 0000HSJMP MAINORG 000BHAJMP SECONDORG 0030H MAIN:MOV P1,#00HMOV SP,#60HCLR EAMOV TMOD,#01HMOV TL0,#0B0HMOV TH0,#3CHSETB ET0SETB PT0SETB EASETB TR0MOV R0,#10 TEST:MOV P1,#03HMOV A,P1JB ACC.0,QK1JB ACC.1,ZIDONGAJMP QK0SJMP TEST ZIDONG:ACALL DXHACALL NBHAJMP TESTQK0:MOV A,#00100100BMOV P1,AAJMP TESTQK1:JB ACC.1,QK11AJMP ZIDONGQK11:MOV A,#10010000BMOV P1,ALP0:JNB S_OK,LP0CLR S_OKMOV A,#00000000BMOV P1,ALP1:JNB S_OK,LP1CLR S_OKLJMP TESTSECOND:CLR EACLR S_OKDEC R0MOV A,R0JZ SECOND_1SJMP SECOND_2 SECOND_1:MOV R0,#10SETB S_OK SECOND_2:MOV TH0,#3CHMOV TL0,#0B0HSETB EARETIDXH:MOV A,#01000100BMOV P1,AMOV R1,#4TLP0:JNB S_OK,TLP0CLR S_OKDJNZ R1,TLP0MOV A,#10000100BMOV P1,ATLP1:JNB S_OK,TLP1CLR S_OKRETNBH:MOV A,#00101000BMOV P1,AMOV R1,#4TLP2:JNB S_OK,TLP2CLR S_OKDJNZ R1,TLP2MOV A,#00110000BMOV P1,ATLP3:JNB S_OK,TLP3CLR S_OKRETEND实验八:串行口主机ORG 0000HAJMP MAINORG 000BHAJMP DINGSHIORG 0030HMAIN:MOV TMOD,#20HMOV TL0,#0B0HMOV TH0,#3CHCLR P3.2CLR P3.3MOV TL1,#0FAHMOV TH1,#0FAHMOV R0,#0AHSETB ET0SETB EASETB TR0SETB TR1MOV PCON,#00HCLR ESCLR TIMOV SCON,#40HSETB RENSJMP $DINGSHI:MOV TL0,#0B0HMOV TH0,#3CHDEC R0CJNE R0,#00H,JIESHUMOV R0,#0AH; MOV TL1,#0FAH; MOV TH1,#0FAH; SETB TR1; MOV PCON,#00HMOV A,P1MOV B,AMOV SBUF,ASETB P3.4WAIT0:JNB TI,WAIT0CLR P3.4CLR TICLR RIWAIT1:JNB RI,WAIT1MOV A,SBUFCJNE A,B,CHUCUOSETB P3.2CLR P3.3AJMP JIESHU CHUCUO:CLR P3.2SETB P3.3 JIESHU:RETIEND从机ORG 0000HAJMP MAIN MAIN:MOV TMOD,#20HMOV TL1,#0FAHMOV TH1,#0FAHSETB TR1MOV PCON,#00HCLR ET1CLR ESCLR EAMOV SCON,#40H START:CLR RIMOV A,SBUFWAIT0:JNB RI,WAIT0MOV P1,ACLR RICLR TIMOV SBUF,AWAIT1:JNB TI,WAIT1CLR TIAJMP STARTEND实验九:定时.计数和显示ORG 0000HAJMP MAINORG 0003HAJMP EINT0ORG 0013HAJMP EINT1ORG 001BHAJMP TINT1MAIN:MOV TMOD,#00010110B MOV TH1,#3CHMOV TL1,#0B0HMOV TH0,#00HMOV TL0,#00HMOV R2,#00HSETB IT0SETB IT1SETB EX0SETB EX1SETB ET1CLR TR0CLR TR1CLR P1.0SETB EATEST:JNB TR1,XUEHAOJNB TR0,XUEHAOACALL DISPAJMP TEST XUEHAO:ACALL XHAJMP TESTEINT0:CPL TR1RETIEINT1:CPL TR0RETITINT1:MOV TH1,#3CHMOV TL1,#0B0HINC R2CJNE R2,#10,JIEHSUCPL P1.0MOV R2,#00H JIEHSU:RETIXH:MOV 35H,#3FHMOV 34H,#6FHMOV 33H,#5BHMOV 32H,#66HMOV 31H,#66HMOV 30H,#06HMOV R3,#6MOV R0,#30HMOV R5,#01HLP2:MOV DPTR,#8002HMOV A,R5MOVX @DPTR,ARL AMOV R5,AMOV DPTR,#8004HMOV A,@R0MOVX @DPTR,AINC R0ACALL DELAY1DJNZ R3,LP2RETDISP:MOV A,TL0MOV B,#100DIV ABMOV 32H,AMOV A,#10XCH A,BDIV ABMOV 31H,AMOV 30H,BMOV R6,#3MOV R1,#30HLP:MOV A,@R1MOV DPTR,#TABMOVC A,@A+DPTRMOV @R1,AINC R1DJNZ R6,LPMOV R6,#3MOV R1,#30HMOV R7,#01HLP1:MOV DPTR,#8002HMOV A,R7MOVX @DPTR,ARL AMOV R7,AMOV DPTR,#8004HMOV A,@R1MOVX @DPTR,AINC R1ACALL DELAY2DJNZ R6,LP1RET(显示子程序可以是下面的笨方法:DISP:MOV A,TL0MOV B,#100DIV ABMOV 30H,AMOV A,BMOV B,#10DIV ABMOV 31H,AMOV 32H,BMOV DPTR,#TABMOV A,30HMOVC A,@A+DPTRMOV DPTR,#8004HMOVX @DPTR,AMOV A,#04HMOV DPTR,#8002HMOVX @DPTR,ALCALL DELAY2MOV DPTR,#TABMOV A,31HMOVC A,@A+DPTRMOV DPTR,#8004HMOVX @DPTR,AMOV A,#02HMOV DPTR,#8002HMOVX @DPTR,ALCALL DELAY2MOV DPTR,#TABMOV A,32HMOVC A,@A+DPTRMOV DPTR,#8004HMOVX @DPTR,AMOV A,#01HMOV DPTR,#8002HMOVX @DPTR,AACALL DELAY2RET)DELAY1:MOV R6,#1000DJNZ R6,$RETDELAY2:MOV R5,#200DJNZ R5,$RETTAB:DB 3FH,06H,5BH,4FHDB 66H,6DH,7DH,07HDB 7FH,6FHEND。
单片机实验程序及流程图

《单片机技术》实验多媒体讲义《单片机技术》实验多媒体讲义《单片机技术》实验多媒体讲义三.程序清单及程序流程框图ORG 0000H Array LJMP MAINMAIN: MOV R0,#30HMOV R2,#10HCLR AA1: MOV @R0,AINC R0INC ADJNZ R2,A1MOV R0,#30HMOV R1,#40HMOV R2,#10HA2: MOV A, @R0MOV @R1,AINC R0INC R1DJNZ R2, A2MOV R1,#40HMOV DPTR ,#4800HMOV R2, #10HA3: MOV A,@R1MOVX @DPTR ,AINC R1INC DPTRDJNZ R2,A3MOV SP,#60HMOV R2,#10HMOV DPTR ,#4800HPUSH DPLPUSH DPHMOV DPTR,#5800HMOV R3,DPLMOV R4,DPHA4: POP DPHPOP DPLMOVX A,@DPTRINC DPTRPUSH DPLPUSH DPHMOV DPL,R3MOV DPH,R4 MOVX @DPTR,A INC DPTRMOV R3,DPLMOV R4,DPHDJNZ R2,A4MOV R0,#50HMOV DPTR,#5800H MOV R2,#10HA5: MOVX A,@DPTR MOV @R0,AINC R0 INC DPTR DJNZ R2,A5POP DPH POP DPL HERE: LJMP HEREEND《单片机技术》实验多媒体讲义《单片机技术》实验多媒体讲义《单片机技术》实验多媒体讲义三.实验电路四.程序清单及流程图程序一ORG 0000HLJMP MAIN ORG 000BH LJMP IPTO MAIN: MOV SP, #30H MOV TMOD, #01HCLR 00H SETB EA SETB ET0 MOV TH0, #3CH MOV TL0, #0B0H MOV R1, #14H SETB TR0 MOV A, #0feH MOV P1, A NT: JNB 00H, NT RL A MOV P1, ACLR 00H LJMP NT IPTO: MOV TH0,#3CH MOV TL0,#0B0HDJNZ R1, TIOMOV R1, #14HSETB 00HTIO: RETIEND程序二只需将程序一中“RL A”改为“RR A”即可实现其功能。
单片机课程设计实验报告 基于单片机的数字时钟 含完整实验代码..

单片机课程设计报告基于单片机的数字时钟姓名:班级:学号:一、前言利用实验板上的4个LED数码管,设计带有闹铃、秒表功能的数字时钟。
功能要求:a)计时并显示(LED)。
由于实验板上只有4位数码管,可设计成显示“时分”和显示“分秒”并可切换。
b)时间调整功能。
利用4个独立按钮,实现时钟调整功能。
这4个按钮的功能为工作模式切换按钮(MODE),数字加(INC),数字减(DEC)和数字移位(SHITF)。
c)定闹功能。
利用4个独立按钮设定闹钟时间,时间到以蜂鸣器响、继电器动作作为闹铃。
d)秒表功能。
最小时间单位0.01秒。
二、硬件原理分析1.电源部分电源部份采用两种输入接口(如上图)。
a)外电源供电,采用2.1电源座,可接入电源DC5V,经单向保护D1接入开关S1。
b)USB供电,USB供电口输入电源也经D1单向保护,送到开关S1。
注:两路电源输入是并连的,因此只选择一路就可以了,以免出问题。
S1为板子工作电源开关,按下后接通电源,提供VCC给板子各功能电路。
电路采用两个滤波电容,给板子一个更加稳定的工作电源。
LED为电源的指示灯,通电后LED灯亮。
2.蜂鸣器蜂鸣器分为有源和无源两种,有源即两引脚有一个直流电源就可以长鸣,无源则需要一个1K左右的脉冲才可以蜂鸣,因此对于按键的提示音及报警蜂鸣使用有源来得方便。
有源也可以当无源使用,而无源则不能当有源使用,当然用有源蜂鸣器作音乐发声会失真厉害。
如上图:单片机P15输出高低电平经R21连接三极管B极,控制三极管的导通与截止,从而控制蜂鸣器的工作。
低电平时三极管导通,蜂鸣器得电蜂鸣,高电平时三极管截止,蜂鸣器失电关闭蜂鸣。
电路使用一个四位共阳型数码管,四个公共阳级由三极管放大电流来驱动,三极管由P10-P13控制开与关。
数码管的阴级由P0口经过电阻限流连接。
例如,要十位的数码管工作,P12输出0,使三极管Q12导通,8脚得电,当P0口相应位有输出0时,点亮相应的LED灯组合各种字符数字。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章单片机系统板说明一、概述单片机实验开发系统是一种多功能、高配置、高品质的MCS-51单片机教学与开发设备。
适用于大学本科单片机教学、课程设计和毕业设计以及电子设计比赛。
该系统采用模块化设计思想,减小了系统面积,同时增加了可靠性,使得单片机实验开发系统能满足从简单的数字电路实验到复杂的数字系统设计实验,并能一直延伸到综合电子设计等创新性实验项目。
该系统采用集成稳压电源供电,使电源系统的稳定性大大提高,同时又具备完备的保护措施。
为适应市场上多种单片机器件的应用,该系统采用“单片机板+外围扩展板”结构,通过更换不同外围扩展板,可实验不同的单片机功能,适应了各院校不同的教学需求。
二、单片机板简介本实验系统因为自带了MCS-51单片机系统,因此没有配置其他单片机板,但可以根据教学需要随时配置。
以单片机板为母板,并且有I/O接口引出,可以很方便的完成所有实验。
因此构成单片机实验系统。
1、主要技术参数(1)MSC-51单片机板板上配有ATMEL公司的STC89C51芯片。
STC89C51资源:32个I/O口;封装DIP40。
STC89C51开发软件:KEIL C51。
2、MSC-51单片机结构(1)单片机板中央放置一块可插拔的DIP封装的STC89C51芯片。
(2)单片机板左上侧有一个串口,用于下载程序。
(3)单片机板的四周是所有I/O引脚的插孔,旁边标有I/0引脚的脚引。
(4)单片机板与各个模块配合使用时,可形成—个完整的实验系统。
三、母板简介主要技术参数(1)实验系统电源实验系统内置了集成稳压电源,使整个电源具有短路保护、过流保护功能,提高了实验的稳定性。
主板的右上角为电源总开关,当把220V交流电源线插入主板后,打开电源开关,主板得电工作。
为适用多种需要,配置了+5V,+12V,—5V电压供主板和外设需要,通过右上角的插针排和插孔输出到外设。
此外,还设有螺旋保险插孔保护实验箱。
(2)RS232接口RS232接口通过MAX232芯片实现与计算机的串行通讯,通过接口引出信号。
(3)单片机最小系统单片机最小系统的核心是ATMEL公司的AT89S51单片机,A T89S51右边的按键是复位键,按下时单片机复位,单片机的放两排插孔,分别是:P1.0-P1.7,P0.0-P1.7,P3.0—P3.7,P2.0—P2.7,它们可以实现单片机实验和开发。
(4)模拟量接口一个模拟量接口,由ICL8038产生,通过插孔引出。
(5)D/A转换器D/A转换器由DA0832,LM324芯片组成,(8位,0-5V电压输出),对应的接口序号为:数据信号:D0-D7;片选信号:/CS;读有效信号/OE。
(6)A/D转换器A/D转换器和D/A转换器相临,主要由ADC0809组成,(8位)对应的接口序号为:模拟输入:IN0-IN7;基准电压:REF+,REF -;读写信号:/RD,/WR;输出信号:D0——D7;检测信号:I/0;地址锁存允许:ALE。
(7)8位拨动开关8位拨动开关由Kl—K8组成,每一位都有相应LED(Dl—D8)指示,当拨码开关拨上边时输出高电平,LED亮;拨下边时输出低电平,由插孔l—8输出。
(8)24位按键开关24位按键开关位于主板中下方,由按键Kl—K24组成,有六排,第一排按下时是高电平,弹上时是低电平,由插孔1—4输出;第二排按下时是低电平,弹上时高电平,由插孔1—4输出;第三到第六排是4*4的行列式键盘;由L1—L4,H1—H4输出。
(9)静态显示数码管静态显示区由数码管DP1—DP6组成,由插孔输出,供静态显示用。
(10)发光二极管显示区8位红色发光二极管,高电平亮,可作为状态指示用;另一部分是交通灯,由东西南北四组红绿黄发光二极管构成,高电平亮。
(11)动态扫描显示区系统的显示采用8位8段共阴或共阳数码管(高电平有效),所对应的接口序号为:段码:a,b,c,d,e,f,g,h;位选:L1,L2,L3,L4,L5,L6,L7,L8。
(12)蜂鸣器蜂鸣器(高电平TTL驱动)从其下方对应输入口,会产生lKHz的信号响声。
(13)继电器控制区继电器控制区主要由KJ1—KJ3三个继电器及其驱动电路组成,高电平TTL驱动,输出接口分别为JJ1,JJ2,JJ3。
(14)数字温度计数字温度计使用DS1302温度传感器,输出接口为SCLK、I/O、RESET。
(15)EEPROMEEPROM(AT24C16),用来保存数据信息,接口序号为:串行数据线:SDA;时钟线:SCL;写保护线:WP。
(16)串行A/DA/D转换器主要由MAX192组成,(8位)对应的接口序号为:模拟输入:IN0-IN7;片选信号:/CS;输出信号:DOUT;时钟信号:SCLK;转换开始:SSTRB。
(17)变频模块(18)直流斩波模块(19)红外模块四、主要实验项目本实验系统由于采用模块化设计,各模块之间既相互独立,又可相互组合,完成各种类型实验。
其中包括验证性基础实验,综合性、设计性、创新性实验以及研究开发性、创新性、及全国电子大赛赛前培训实验等。
以下列举了本实验系统能做的部分单片机原理课程实验及课外开放性备选实验项目。
单片机原理课程实验实验一LED显示器指示实验二软件延时及灯光控制实验实验三多级外部中断实验实验四脉冲频率的测量实验实验五串行口扩展实验实验六串行EEPROM的读出和写入实验实验七8位A/D、D/A转换器的应用实验实验八串行A/D、D/A的应用实验实验九直流继电器的驱动及控制实验实验十数据采集的软件抗干扰实验实验十一密码锁控制器的设计实验十二数字温度控制器的设计实验十三8255扫描键盘显示实验实验十四音乐编程实验实验十五声光报警实验实验十六可预置可逆计数器实验实验十七DS1302时钟芯片的应用实验实验十八红外通信接口实验实验十九单片机变频调速实验实验二十交通灯控制实验部分备选实验项目实验一闪烁灯实验一模拟开关灯实验一多路开关状态指示实验一广告灯的左移右移实验一广告灯(利用取表方式)实验一报警产生器实验一I/O并行口直接驱动LED显示实验一按键识别方法之一实验一00-99计数器实验一定时计数器T0作定时应用技术(一)实验一动态数码显示技术实验一4×4矩阵式键盘识别技术实验一定时计数器T0作定时应用技术(一)实验一定时计数器T0作定时应用技术(二)实验一“叮咚”门铃实验一数字钟实验一ADC0809A/D转换器基本应用技术第二章Keil C软件使用Keil C51 软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM 语言和C 语言的程序设计,界面友好,易学易用。
下面介绍Keil C51软件的使用方法进入Keil C51 后,屏幕如下图所示。
几秒钟后出现编辑界启动Keil C51时的屏幕进入Keil C51后的编辑界面简单程序的调试学习程序设计语言、学习某种程序软件,最好的方法是直接操作实践。
下面通过简单的编程、调试,引导大家学习Keil C51软件的基本使用方法和基本的调试技巧。
1)建立一个新工程单击Project菜单,在弹出的下拉菜单中选中New Project选项2)然后选择你要保存的路径,输入工程文件的名字,比如保存到C51目录里,工程文件的名字为C51如下图所示,然后点击保存.3)这时会弹出一个对话框,要求你选择单片机的型号,你可以根据你使用的单片机来选择,keil c51几乎支持所有的51核的单片机,我这里还是以大家用的比较多的Atmel 的89C51来说明,如下图所示,选择89C51之后,右边栏是对这个单片机的基本的说明,然后点击确定.4)完成上一步骤后,屏幕如下图所示到现在为止,我们还没有编写一句程序,下面开始编写我们的第一个程序。
5)在下图中,单击“File”菜单,再在下拉菜单中单击“New”选项新建文件后屏幕如下图所示此时光标在编辑窗口里闪烁,这时可以键入用户的应用程序了,但笔者建议首先保存该空白的文件,单击菜单上的“File”,在下拉菜单中选中“Save As”选项单击,屏幕如下图所示,在“文件名”栏右侧的编辑框中,键入欲使用的文件名,同时,必须键入正确的扩展名。
注意,如果用C语言编写程序,则扩展名为(.c);如果用汇编语言编写程序,则扩展名必须为(.asm)。
然后,单击“保存”按钮。
6)回到编辑界面后,单击“Target 1”前面的“+”号,然后在“Source Group 1”上单击右键,弹出如下菜单然后单击“Add File to Group ‘Source Group 1’” 屏幕如下图所示选中Test.c,然后单击“Add”屏幕好下图所示注意到“Source Group 1”文件夹中多了一个子项“Text1.c”了吗?子项的多少与所增加的源程序的多少相同7)现在,请输入如下的C语言源程序:#include <reg52.h> //包含文件#include <stdio.h>void main(void) //主函数{SCON=0x52;TMOD=0x20;TH1=0xf3;TR1=1; //此行及以上3行为PRINTF函数所必须printf(“Hello I am KEIL. \n”); //打印程序执行的信息printf(“I will be your friend.\n”);while(1);}在输入上述程序时,读者已经看到了事先保存待编辑的文件的好处了吧,即Keil c51会自动识别关键字,并以不同的颜色提示用户加以注意,这样会使用户少犯错误,有利于提高编程效率。
程序输入完毕后,如下图所示8)在上图中,单击“Project”菜单,再在下拉菜单中单击“Built Target”选项(或者使用快捷键F7),编译成功后,再单击“Project”菜单,在下拉菜单中单击“Start/Stop Debug Session”(或者使用快捷键Ctrl+F5),屏幕如下所示9)调试程序:在上图中,单击“Debug”菜单,在下拉菜单中单击“Go”选项,(或者使用快捷键F5),然后再单击“Debug”菜单,在下拉菜单中单击“Stop Running”选项(或者使用快捷键Esc);再单击“View”菜单,再在下拉菜单中单击“Serial Windows #1”选项,就可以看到程序运行后的结果,其结果如下图所示至此,我们在Keil C51上做了一个完整工程的全过程。
但这只是纯软件的开发过程,如何使用程序下载器看一看程序运行的结果呢?10)单击“Project”菜单,再在下拉菜单中单击“”在下图中,单击“Output”中单击“Create HEX File”选项,使程序编译后产生HEX代码,供下载器软件使用。