51单片机数码管显示学号实验汇编代码.
51单片机流水灯与数码管显示实验设计
#include<reg52.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned charsbit dula=P2^6;sbit wela=P2^7;sbit key1=P3^4; //这个key没用到,具体功能可以完善函数uint temp,shu=432;uchar aa,bb,cc,bai,shi,ge,flag,flag1,t0,t1,count;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x76,0x38,0x3f,0};void init();void display(uchar aa,uchar bb,uchar cc,uchar bai,uchar shi,uchar ge); void delayms(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void main(){init();while(1){if(flag!=1)//减数还未到指定值{temp=_crol_(temp,1);//流水灯P1=temp;//赋值给P1口delayms(10);//流水延时10msdisplay(7,6,5,bai,shi,ge);}// if(t0%4==0) t0这个变量是T0溢出时间的倍数值,每次到指定的倍数值都会被清零,所以这个判断语句错误// if(t0==60) t0每次到10都会被清零,所以这个判断语句错误else if(count!=100) //没有到指定的时间3s,但这里设置的是5s,因为led闪烁的时间是50ms,这样闪烁的次数就多一点,便于看清效果{temp=0xff;P1=temp;delayms(50);//闪烁延时temp=0x00;P1=temp;}else{display(16,14,17,17,18,19);temp=0xff;//关闭ledP1=temp;//这里我们可以看出在位带操作的时候P1是已定义变量,不需要中间变量过度}}}void init(){TMOD=0x11;TH0=(65535-5000)/256;TL0=(65535-5000)%256;TH1=(65535-5000)/256;TL1=(65535-5000)%256;EA=1;ET0=1;ET1=1;TR0=1;temp=0xfe;P1=temp;}void timer0()interrupt 1{TH0=(65535-5000)/256;TL0=(65535-5000)%256;t0++;if(t0==10)t0=0;//闪烁间隔时间10*50msif(flag==1){count++;//计数3sif(count==100){EA=0;//关闭总中断,也可以写TR0=0,因为在数码管停止减数的时候已经关闭了TR1}}}void timer1()interrupt 3{TH1=(65535-5000)/256;TL1=(65535-5000)%256;t1++;if(t1==2){t1=0;shu--;bai=shu/100;shi=shu%100/10;ge=shu%10;if(shu==398){TR1=0;//关闭定时器1,数码管显示的内容不变TR0=0;//这里也可以不关闭TR0直接清零TH0=(65535-5000)/256;TL0=(65535-5000)%256;TR0=1;//这里的定时器0计数值的清零初始是为了3s的算时(函数里设置了5s)flag=1;}}void display(uchar aa,uchar bb,uchar cc,uchar bai,uchar shi,uchar ge) {dula=1;P0=table[aa];dula=0;wela=1;P0=0xfe;wela=0;delayms(1);dula=1;P0=table[bb];dula=0;wela=1;P0=0xfd;wela=0;delayms(1);dula=1;P0=table[cc];dula=0;wela=1;P0=0xfb;wela=0;delayms(1);dula=1;P0=table[bai];dula=0;wela=1;P0=0xf7;wela=0;delayms(1);dula=1;P0=table[shi];dula=0;wela=1;P0=0xef;wela=0;delayms(1);dula=1;P0=table[ge];dula=0;wela=1;P0=0xdf;wela=0;delayms(1);}(注:可编辑下载,若有不当之处,请指正,谢谢!)。
51单片机_数码管显示
一 LED显示器的结构与原理
a +5V a b b
c c
COM 10 9 g f a f g b 8 a 7 b 6
d d
e e
f e d g e 1 d 2 3 c 4 dp 5 dp COM GND dp g c f
(a )
(b )
(c )
管脚排列
共阴极数码管
共阳极数码管
一 LED显示器的结构与原理
思考:1.如果是共阴极的数码管怎样显示0呢? 2.大家能不能把所有数码管能显示的 字符的字型码分析出来? 3.怎样实现令一个数码管连续显示0— 9十个字符。
一个数码管显示0、1、2的程序 #include <reg51.h> void delay(int); void main() { P2=0x00; P0=0x03; delay(400); P0=0x9f; delay(400); P0=0x25; delay(400); } void delay(int x) { int i,j; for(i=0;i<x;i++) for(j=1;j<120;j++); }
2. 数码管显示原理 LED数码管的a~g七个发光二极管。加正电压 的发光,加零电压的不能发光,不同亮暗的组合就 能形成不同的字型,这种组合称为字型码。共阳极 和共阴极的字型码是不同的,下面我们分析一下。 如下图所示,把一个共阳极的数码管接到 STC89C52RC单片机的P0口上,思考,怎样让此数码 管显示数字0?
voiddelayintledled字型显示代码表字型显示代码表显示十六进制代码dp共阴极共阳极3fh06h5bh4fh66h6dh7dh07h7fh6fh77h7ch39h5eh79h71h76hf3hc0hf9ha4hb0h99h92h82hf8h80h90h88h83hc6ha1h86h8eh89h8chledled显示器静态显示及应用实例显示器静态显示及应用实例静态显示的特点静态显示就是单片机将所要显示的数据送出去后数码管始终显示该数据不变到下一次显示时再传送一次新的显示数据
51单片机4×4矩阵键盘且在数码管最后一位显示汇编语言
51下面是51单片机使用4×4矩阵键盘的汇编程序,并在数码管的最后一位显示一个字符:```ORG 0 ;程序从地址0开始MOV P1,#0FFH ;P1口设置为输入口MOV P0,#0FH ;P0口设置为输出口LOOP:MOV A,P1 ;读取P1口的值CJNE A,#0FFH,KEY_PRESSED ;判断是否有按键按下SJMP LOOP ;如果没有按键按下,继续循环KEY_PRESSED:MOV R0,A ;保存按键的值CLR P0.0 ;选定行0MOV A,P1ANL A,#0F0H ;按位与运算,保留列位的值CJNE A,#0F0H,COL0 ;判断是否有按键按下在第0列MOV A,#'0' ;如果在第0列按下按键,则A的值为0JMP DISP ;跳转到显示程序COL0:CLR P0.1 ;选定行1MOV A,P1ANL A,#0F0HCJNE A,#0E0H,COL1 ;判断是否有按键按下在第1列MOV A,#'1' ;如果在第1列按下按键,则A的值为1JMP DISP ;跳转到显示程序COL1:CLR P0.2 ;选定行2MOV A,P1ANL A,#0F0HCJNE A,#0D0H,COL2 ;判断是否有按键按下在第2列MOV A,#'2' ;如果在第2列按下按键,则A的值为2JMP DISP ;跳转到显示程序COL2:CLR P0.3 ;选定行3MOV A,P1ANL A,#0F0HCJNE A,#0B0H,COL3 ;判断是否有按键按下在第3列MOV A,#'3' ;如果在第3列按下按键,则A的值为3JMP DISP ;跳转到显示程序COL3:CLR P0.4 ;选定行4MOV A,P1ANL A,#0F0H4MOV A,#'4' ;如果在第4列按下按键,则A的值为4 JMP DISP ;跳转到显示程序COL4:CLR P0.5 ;选定行5MOV A,P1ANL A,#0F0HCJNE A,#0B0H,COL5 ;判断是否有按键按下在第5列 MOV A,#'5' ;如果在第5列按下按键,则A的值为5 JMP DISP ;跳转到显示程序COL5:CLR P0.6 ;选定行6MOV A,P1ANL A,#0F0HCJNE A,#0D0H,COL6 ;判断是否有按键按下在第6列 MOV A,#'6' ;如果在第6列按下按键,则A的值为6 JMP DISP ;跳转到显示程序COL6:CLR P0.7 ;选定行7MOV A,P1ANL A,#0F0HCJNE A,#0E0H,COL7 ;判断是否有按键按下在第7列 MOV A,#'7' ;如果在第7列按下按键,则A的值为7 JMP DISP ;跳转到显示程序COL7:MOV A,#00HJMP EXIT ;如果没有按下任何键,退出程序DISP: ;数码管显示程序MOV R1,#100B ;延时计数器初始化MOV P2,A ;把按键值存入P2口MOV A,#07HANL A,P0 ;从P0口读取选定的行值MOV P0,A ;根据选定的行值输出相应的值ACALL DELAY ;调用延时程序MOV P0,#0FH ;关闭所有行DJNZ R1,$ ;当延时计数器不为0时,继续延时MOV A,#0FHMOV P0,A ;清除所有显示JMP LOOP ;跳转回主程序EXIT:MOV P2.7,1 ;在数码管的最后一位显示字符1SJMP EXIT ;无限循环DELAY: ;延时程序MOV R2,#75DMOV R3,#200D DELAY3:DJNZ R3,$DJNZ R2,DELAY2 RET```。
单片机实验报告——矩阵键盘数码管显示
单片机实验报告信息处理实验实验二矩阵键盘专业:电气工程及其自动化指导老师:***组员:明洪开张鸿伟张谦赵智奇学号:152703117 \152703115\152703118\152703114室温:18 ℃日期:2017 年10 月25日矩阵键盘一、实验内容1、编写程序,做到在键盘上每按一个键(0-F)用数码管将该建对应的名字显示出来。
按其它键没有结果。
二、实验目的1、学习独立式按键的查询识别方法。
2、非编码矩阵键盘的行反转法识别方法。
3、掌握键盘接口的基本特点,了解独立键盘和矩阵键盘的应用方法。
4、掌握键盘接口的硬件设计方法,软件程序设计和贴士排错能力。
5、掌握利用Keil51软件对程序进行编译。
6、会根据实际功能,正确选择单片机功能接线,编制正确程序。
对实验结果能做出分析和解释,能写出符合规格的实验报告。
三、实验原理1、MCS51系列单片机的P0~P3口作为输入端口使用时必须先向端口写入“1”。
2、用查询方式检测按键时,要加入延时(通常采用软件延时10~20mS)以消除抖动。
3、识别键的闭合,通常采用行扫描法和行反转法。
行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然后读取列值,如读列值中某位为低电平,表明有键按下,否则扫描下一行,直到扫完所有行。
行反转法识别闭合键时,要将行线接一并行口,先让它工作在输出方式,将列线也接到一个并行口,先让它工作于输入方式,程序使CPU通过输出端口在各行线上全部送低电平,然后读入列线值,如此时有某键被按下,则必定会使某一列线值为0。
然后,程序对两个并行端口进行方式设置,使行线工作于输入方式,列线工作于输出方式,并将刚才读得的列线值从列线所接的并行端口输出,再读取行线上输入值,那么,在闭合键所在行线上的值必定为0。
这样,当一个键被接下时,必定可以读得一对唯一的行线值和列线值。
由于51单片机的并口能够动态地改变输入输出方式,因此,矩阵键盘采用行反转法识别最为简便。
数码管显示程序(汇编语言)
实验三数码显示一、实验目的了解LED数码管动态显示的工作原理及编程方法。
二、实验内容编制程序,使数码管显示“DJ--88”字样。
三、实验程序框图四、实验步骤联机模式:(1)在PC机和实验系统联机状态下,运行该实验程序,可用鼠标左键单击菜单栏“文件”或工具栏“打开图标”,弹出“打开文件”的对话框,然后打开598K8ASM文件夹,点击S6.ASM文件,单击“确定”即可装入源文件,再单击工具栏中编译装载,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。
(2)数码管显示“DJ--88”字样。
脱机模式:1、在P.态下,按SCAL键,输入2DF0,按EXEC键。
2、数码管显示“DJ--88”字样。
五、实验程序清单CODE SEGMENT ;S6.ASM display "DJ--88"ASSUME CS:CODEORG 2DF0HSTART: JMP START0PA EQU 0FF20H ;字位口PB EQU 0FF21H ;字形口PC EQU 0FF22H ;键入口BUF DB ?,?,?,?,?,?data1:db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1hdb 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH,0F0H START0: CALL BUF1CON1: CALL DISPJMP CON1DISP: MOV AL,0FFH ;00HMOV DX,PAOUT DX,ALMOV CL,0DFH ;显示子程序 ,5msMOV BX,OFFSET BUFDIS1: MOV AL,[BX]MOV AH,00HPUSH BXMOV BX,OFFSET DATA1ADD BX,AXMOV AL,[BX]POP BXMOV DX,PBOUT DX,ALMOV AL,CLMOV DX,PAOUT DX,ALPUSH CXDIS2: MOV CX,00A0HLOOP $POP CXCMP CL,0FEH ;01HJZ LX1MOV AL,0FFH ;00HMOV DX,PAOUT DX,ALINC BXROR CL,1 ;SHR CL,1JMP DIS1LX1: MOV AL,0FFHMOV DX,PBOUT DX,ALRETBUF1: MOV BUF,0DHMOV BUF+1,19HMOV BUF+2,17HMOV BUF+3,17HMOV BUF+4,08HMOV BUF+5,08HRETCODE ENDSEND START。
51单片机数码管显示程序设计
练习3主程序参考:
ORG 0000H LJMP START ORG 000BH LJMP T0SERV ;T0中断入口 ORG 0030H START: MOV SP,#50H ;初始化堆栈 LCALL INIT ;初始化 MOV DISBUF,#0 MOV DISBUF+1,#1 MOV DISBUF+2,#2 MOV DISBUF+3,#3 MOV DISBUF+4,#4 MOV DISBUF+5,#0 MOV FLASH,#11000000B MOV R0,#0 LOOP: MOV DISBUF+5,R0 LCALL DELAY INC R0 CJNE R0,#10,LOOP MOV R0,#0 AJMP LOOP
恢复现场
返回
动态显示参考程序1:定义变量
;--------------------------------------------------------;动态显示程序 ;--------------------------------------------------------;全局变量定义 FLAG EQU 20H ;标志位 DISSEG EQU P0 ;显示段驱动 DISBIT EQU P2 ;显示位驱动P2.7-P2.2 DISBUF EQU 21H ;显示缓冲区首地址21H-26H DISBITBUF EQU 27H ;当前显示位计数器0-5 FLASH EQU 28H ;闪烁控制xxxxxx00,将x=1闪烁,=0不闪 ;小数点的处理: ;若显示‘3’,缓冲区放‘3’,若显示‘3.’,缓冲区放‘3+80H’, 最高位为1 S_PULSE EQU FLAG.0 ;秒脉冲 CNT_2D5MS EQU 2FH ;2.5MS计数器 CNT_10MS1 EQU 30H ;10MS计数器 CN_0D5S EQU 31H ;0.5秒计数器 ;----------------------------------------------------------
51单片机数码管显示程序
;该程序库为4位显示,可以设置3个小数点的位置,数据在R2中, LED_DATA EQU P0 ;数码管数据口定义SHOW1 EQU 30H ;个位SHOW2 EQU 31H ;十位SHOW3 EQU 32H ;百位SHOW4 EQU 33H ;千位SHOW5 EQU 34H ;万位XSDW EQU 50H ;小数点位数ORG 0000HAJMP LOOPORG 0030HLOOP: MOV P0,#0FFHMOV P1,#0FFHMOV P2,#0FFHMOV P3,#0FFHMOV SP,#60HMOV XSDW,#00HLOOP0: CALL CONVTCALL PLAYJB P3.7,LOOP0CALL DELAY2MSCALL DELAY2MSCALL DELAY2MSCALL DELAY2MSCALL DELAY2MSCALL DELAY2MSCALL DELAY2MSJB P3.7,LOOP0JNB P3.7, LOOP1NOPLOOP1: CALL PLAYJNB P3.7, LOOP1MOV A,XSDWCJNE A,#3,LOOP2MOV XSDW,#00HAJMP LOOP0LOOP2: INC XSDWAJMP LOOP0;---------------------------------------------------------;代码变换 (HEX TO BCD);---------------------------------------------------------CONVT: CLR EAMOV 41H,#00HMOV R4,40H ;待转换低位 MOV R3,41H ;待转换高位HEX2BCD: CLR AMOV R5,AMOV R6,AMOV R7,AMOV R2,#16 ;转换16位H2B: CLR CMOV A,R4RLC AMOV R4,AMOV A,R3RLC AMOV R3,AMOV A,R7ADDC A,R7DA AMOV R7,AMOV A,R6ADDC A,R6DA AMOV R6,AMOV A,R5ADDC A,R5DA AMOV R5,ADJNZ R2,H2BMOV A,R7MOV B,#16DIV ABMOV R4,AMOV R4,AMOV R3,BMOV A,R5MOV R7,AMOV A,R6MOV B,#16DIV ABMOV R6,AMOV R5,BMOV SHOW5,R7 ;万位MOV SHOW4,R6MOV SHOW2,R4MOV SHOW1,R3 ;个位H2B0: SETB EARET;-----------------------------------------------------;显示子程序;---------------------------------------------PLAY: PUSH ACCMOV A,XSDW ;小数点的位数是3则直接跳转到显示,即千位是0也要显示CJNE A,#3, PLAY0AJMP PLAY5PLAY0: NOPMOV A,SHOW4 ;取千位JNZ PLAY5 ;等于0吗MOV SHOW4,#0AH ;等于0送数据0A,即不显示MOV A,XSDW ;小数点的位数是3则直接跳转到显示,即千位是0也要显示CJNE A,#2, PLAY1AJMP PLAY5PLAY1: NOPMOV A,SHOW3 ;取百位JNZ PLAY5MOV SHOW3,#0AHMOV A,XSDW ;小数点的位数是3则直接跳转到显示,即千位是0也要显示CJNE A,#1, PLAY2AJMP PLAY5PLAY2: NOPMOV A,SHOW2 ;取十位JNZ PLAY5MOV SHOW2,#0AHPLAY5: MOV R1,XSDW ;小数点的位数送R2MOV A,SHOW4 ;获得当前位地址MOV DPTR,#TAB_NU ;获得表头MOVC A,@A+DPTR ;查表获得显示数据MOV LED_DATA,A ;显示数据CJNE R1,#3, PLAY6 ;小数点的位数送R2,如果是3就点亮3位的小数点 CLR P0.7PLAY6: NOP ;不是则不点亮CLR P2.4LCALL DELAY2MS ;延时 2 MSSETB P2.4MOV A,SHOW3 ;获得当前位地址MOV DPTR,#TAB_NU ;获得表头MOVC A,@A+DPTR ;查表获得显示数据MOV LED_DATA,A ;显示数据CJNE R1,#2, PLAY7 ;小数点的位数送R2,如果是2就点亮2位的小数点 CLR P0.7PLAY7: NOP ;不是则不点亮CLR P2.5LCALL DELAY2MS ;延时 2 MSSETB P2.5MOV A,SHOW2 ;获得当前位地址MOV DPTR,#TAB_NU ;获得表头MOVC A,@A+DPTR ;查表获得显示数据MOV LED_DATA,A ;显示数据CJNE R1,#1, PLAY8 ;小数点的位数送R2,如果是3就点亮3位的小数点 CLR P0.7PLAY8: NOP ;不是则不点亮CLR P2.6LCALL DELAY2MS ;延时 2 MSSETB P2.6MOV A,SHOW1 ;获得当前位地址MOV DPTR,#TAB_NU ;获得表头MOVC A,@A+DPTR ;查表获得显示数据MOV LED_DATA,A ;显示数据CLR P2.7LCALL DELAY2MS ;延时 2 MSSETB P2.7POP ACCRET;---------------------------------------------------------;延时子程序;---------------------------------------------------------DELAY2MS:MOV R6,#10DEL1:MOV R7,#100DJNZ R7,$DJNZ R6,DEL1RETTAB_NU:DB 0C0H,0DDH,0A1H,89H,9CH,8AH,82H,0D9H,80H,88H,0FFH;---------------------------------------------------------END(注:可编辑下载,若有不当之处,请指正,谢谢!)。
51单片机-数码管显示
} void delay(int x) {
int i,j; for(i=0;i<x;i++)
for(j=1;j<120;j++); }
LED字型显示代码表
段符号
十六进制代码
显示 dp
g
f
e
d
c
b
a 共阴极 共阳极
0
0
1
0
2
0
3
0
4
0
5
0
6
0
7
0
8
0
9
0
A0
b
0
C0
d
0
E0
F
0
H0
P0
0
1
1
1
1
1
1
3FH
C0H
0
0
0
0
1
1
0
06H
F9H
1
0
1
1
0
1
1
5BH
A4H
1
0
0
1
1
1
1
4FH
B0H
1
1
0
0
1
Hale Waihona Puke 1066H
99H
1
1
0
1
1
0
1
6DH 92H
1
1
1
1
1
0
1
7DH
1. 静态显示的特点
静态显示就是单片机将所要显示的数据送出去后,数码管始终显示 该数据(不变),到下一次显示时,再传送一次新的显示数据。
51单片机数码管显示的简单实验
这是关于51单片机数码管显示的简单实验,数码管依次从0计数显示至9,然后再跳回至0重新开始计数,如此反复。
电路中的数码管选用共阳型的,公共端直接接电源,数据端连至89S52的P0口。
电路图和汇编程序详解如下,供初学者参考:
(点击放大)
ORG 0000H ;程序从0开始
START: MOV R3,#0 ;使R3寄存器加载0
LJMP LOOP1 ;跳到LOOP1处执行
LOOP: CJNE R3,#10,LOOP1 ;如果R3不等于10,则跳至LOOP1处执行
LJMP START ;否则跳至START处执行
LOOP1: MOV A,R3 ;将寄存器R3的内容复制到ACC
MOV DPTR,#TABLE ;将DPTR指向编码表位置
MOVC A,@A+DPTR ;根据ACC的值取出编码表中的编码
MOV P0,A;P0口输出ACC的内容
CALL DELAY;调用延时子程序
INC R3 ;将R3寄存器的内容加1
LJMP LOOP ;跳至LOOP处执行
DELAY: ;0.2S延时子程序(12MHz晶振下)
MOV R7,#2 ;R7寄存器加载2次数
D1: MOV R6,#200 ;R6寄存器加载200次数
D2: MOV R5,#250 ;R5寄存器加载250次数
DJNZ R5,$ ;本行执行R5次
DJNZ R6,D2 ;D2执行R6次
DJNZ R7,D1 ;D1执行R7次
RET ;返回主程序
TABLE: ;编码表
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;共阳数码管0~9字形编码END ;程序结束。
51单片机20个实验-代码详细
第一章单片机系统板说明一、概述单片机实验开发系统是一种多功能、高配置、高品质的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芯片实现与电脑的串行通讯,通过接口引出信号。
51单片机数码管c代码集合
51单片机:数码管c代码集合/*点亮第一个数码管,因为板子是自已做的,到电子城买数码管时说好要共阴的,拿来测时才发现是共阳的。
*///------------------------------------------------------------/*#include ;#define uchar unsigned charsbit duan=P2^5 ; //注意,有分号sbit wei=P2^6; //注意,有分号+P是大写的,若你写成小写的则会提示说找不到const unsigned chartable[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E}; //共阳极数码管数组,请注意,我使用的共阳极的数码管,如果你是用买的现成板,一般是使用共阴极的void main(){duan=1;P0=table[1];duan=0;wei=1;P0=0x01;wei=0;while(1);}*///-----------------------------------------------------------------/*//静态显示,第一个数码管显示1#include ;sbit duan=P2^5;sbit wei=P2^6;void main(){duan=1;P0=0xF9; //共阳极数码管显示1的编码值是F9,如果你是买的开发板(共阴的数码管)则为0x06;duan=0;wei=1;P0=0x01; //选中第1个数码管wei=0;while(1); //一直显示,以便我们观察}*///-----------------------------------------------------------------/*//静态显示,全为1#include ;sbit duan=P2^5;sbit wei=P2^6;void main(){duan=1;P0=0xF9; //共阳极数码管显示1的编码值是F9,如果你是买的开发板(共阴的数码管)则为0x06;duan=0;wei=1;P0=0xff; //选中所有的数码管wei=0;while(1); //一直显示,以便我们观察}*///-----------------------------------------------------------------//静态显示:从0到F (所有的数码管)#include ;#define uchar unsigned charsbit duan=P2^5 ; //注意,有分号+P是大写的,若你写成小写的则会提示说找不到sbit wei=P2^6;const unsigned chartable[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E}; //数码管数组void delay(int x){int a,b;for(a=x;a>;0;a--)for(b=110;b>;0;b--);}void main(){while(1){uchar n=0;for(n=0;n;#include ; //LED灯用到移动关键字crol,调用此关键字#define uchar unsigned charconst unsigned chartable[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E}; //数码管数组sbit wei=P2^6;sbit duan=P2^5;void delay(uchar x){uchar a,b;for(a=x;a>;0;a--)for(b=110;b>;0;b--);}void LED(){uchar a,temp;temp=0xfe;for (a=8;a>;0;a--) //循环8次,即流水灯8个循环8次即可点亮8个{P1=temp;temp=_crol_(temp,1); //移动delay(200);}delay(5);temp=0x7f;for (a=8;a>;0;a--) //循环8次,即流水灯8个循环8次即可点亮8个{P1=temp;temp=_crol_(temp,-1); //移动delay(170);}}void scan(){uchar n=0;for(n=0;n。
51单片机实验代码
一、实验目的掌握汇编语言设计和调试方法,熟悉键盘操作。
二、实验内容把2000H~20FFH的内容清零。
三、实验程序框图四、实验步骤用连续或单步的方式运行程序,检查2000~20FF中执行程序前后的内容变化。
五、思考假使把2000H~20FFH中的内容改成FF,如何修改程序。
六、程序清单文件名:SW01.ASMORG 0000HLJMP SE01ORG 0640HSE01: MOV R0,#00HMOV DPTR,#2000H ;(0000H)送DPTRLOO1: CLR AMOVX @DPTR,A ;0送(DPTR)INC DPTR ;DPTR+1INC R0 ;字节数加1CJNE R0,#00H,LOO1 ;不到FF个字节再清LOOP: SJMP LOOPEND一、实验目的掌握汇编语言设计和调试方法二、实验内容把2000H的内容拆开,高位送2001H低位,低位送2002H低位,2001H、2002H高位清零,一般本程序用于把数据送显示缓冲区时用。
三、实验程序框图四、实验步骤用连续或单步方式运行程序,检查2000H~2002H中内容变化情况。
五、思考如何用断点方式调试本程序六、程序清单文件名:SW02.ASMORG 0000HLJMP SE02ORG 0660HSE02: MOV DPTR,#2000HMOVX A,@DPTRMOV B,A ;(2000)→A→BSWAP A ;交换ANL A,#0FH ;屏蔽高位INC DPTRMOVX @DPTR,A ;送2001HINC DPTRMOV A,BANL A,#0FH ;(2000)内容屏蔽高位MOVX @DPTR,A ;送2002HLOOP: JMP LOOPEND实验四数据区传送子程序一、实验目的掌握RAM中的数据操作二、实验内容把R2、R3源RAM区首地址内的R6、R7字节数据传送到R4、R5目的RAM区。
三、实验程序框图四、实验步骤在R2、R3中输入源首址(例如0000H),R4、R5中输入的目的地址(例如2000H),R6、R7中输入字节数(例如1FFFH),运行程序,检查0000H~1FFFH中内容是否和2000H~3FFFH 中内容完全一致。
采用两个数码管显示数字51的编程程序
题目:采用两个数码管显示数字51的编程程序目录:一、概述二、程序设计思路三、程序实现步骤1. 初始化2. 初步设计3. 完善代码四、程序分析与优化五、总结一、概述数码管是一种常见的数字显示设备,通过控制其中的LED灯来显示数字和字母。
在编程中,通过对数码管进行控制可以实现不同的数字和图案显示。
本文将介绍如何使用两个数码管来显示数字51的编程程序设计及实现。
二、程序设计思路1. 了解数码管的工作原理:在设计程序之前,需要深入了解数码管的工作原理,包括使用的控制芯片、引脚定义、显示规则等。
2. 分析数字51的显示规律:数字51可以分解为两位数字5和1,因此需要分别控制两个数码管显示对应的数字。
3. 设计控制程序:根据数码管的工作原理和数字51的显示规律,设计相应的控制程序,实现数字51在两个数码管上的显示。
三、程序实现步骤1. 初始化在编程前,首先需要对使用的数码管进行初始化设置,包括引脚定义、数码管类型、显示模式等。
```// 引入库文件#include <Arduino.h>#include <TM1637.h>// 定义数码管引脚#define CLK 2#define DIO 3// 实例化数码管对象TM1637 tm1637(CLK, DIO);```2. 初步设计根据数码管的排列方式和数字51的显示规律,设计初步的显示程序。
```void setup() {// 初始化数码管tm1637.init();tm1637.set(BRIGHTEST);}void loop() {// 显示数字5tm1637.display(0, 5);delay(1000);// 切换显示位置,显示数字1tm1637.display(1, 1);delay(1000);}```3. 完善代码根据初步设计的程序,进行完善和优化,确保程序能够准确显示数字51。
```void setup() {// 初始化数码管tm1637.init();tm1637.set(BRIGHTEST);}void loop() {// 显示数字5tm1637.display(1, 5);delay(1000);// 切换显示位置,显示数字1tm1637.display(0, 1);delay(1000);}```四、程序分析与优化- 程序设计过程中需要注意数码管的引脚连接,确保接线正确。
单片机-学号显示
学号显示ORG 0000HMOV SP,#30HMOV R0,#77HMOV @R0,#05HINC R0MOV @R0,#01HINC R0MOV @R0,#11HINC R0MOV @R0,#03HINC R0MOV @R0,#00HINC R0MOV @R0,#11HINC R0MOV @R0,#08HINC R0MOV @R0,#00HDLR:MOV R0,#7EHMOV R3,#01HLD0: MOV P2,R3MOV A,@R0MOV DPTR,#DSEG1MOVC A,@A+DPTRMOV P0,AACALL DELAYDEC R0MOV A,R3JB ACC.7,DLRRL AMOV R3,AAJMP LD0DSEG1:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH,0 77HDELAY:MOV R6,#0AHLOOP1:MOV R4,#64HLOOP2:NOPNOPNOPDJNZ R4,LOOP2DJNZ R6,LOOP1RETEND开关控制50MS方波ORG 0000HAJMP MAINORG 0003HAJMP LOOP1MAIN:MOV TCON,#01H SETB EASETB ET0MOV SP,#30H LOOP2:JNB P1.0,LOOPSJMP LOOP2 LOOP:MOV TMOD,#01H MOV TH0,#0CFHMOV TL0,#2CHSETB TR0LOOP3:JNB P1.1,LOOP5JBC TF0,LOOP4AJMP LOOP3 LOOP4:MOV TH0,#0CFHMOV TL0,#2CHCPL P1.2AJMP LOOP3 LOOP5:SETB IE0 LOOP1:CLR P1.2LOOP6:JNB P1.0,LOOPSJMP LOOP6 END双按键控制50MS方波ORG 0000HMOV SP,#30HLOOP2:JNB P1.0,LOOPSJMP LOOP2 LOOP:MOV TMOD,#01H MOV TH0,#0CFHMOV TL0,#2CH LOOP3:LCALL DELAYSETB TR0LOOP6:JNB P1.1,LOOP1JBC TF0,LOOP4AJMP LOOP6 LOOP4:MOV TH0,#0CFHMOV TL0,#2CHCPL P1.2AJMP LOOP6 LOOP1:CLR TR0CLR P1.2LCALL DELAY LOOP5:JNB P1.0,LOOP3SJMP LOOP5DELAY:MOV R6,#0AH LOOP7:MOV R4,#64H LOOP8:NOPNOPNOPDJNZ R4,LOOP8DJNZ R6,LOOP7RETEND双按键控制2:5方波ORG 0000HLJMP MAINORG 0003HLCALL DELAYLJMP LOOPORG 0013HLCALL DELAYLJMP LOOP5MAIN:MOV TMOD,#11H MOV SP,#30HMOV TCON,#00HMOV IE,#85HMOV IP,#05HSJMP $LOOP:MOV IP,#04HCLR EX0SETB EX1LCALL FHMOV TH1,#0B1HMOV TL1,#0E0HSETB TR1LOOP2:JBC TF1,LOOP1AJMP LOOP2 LOOP1:CPL P1.2MOV TH0,#8AHMOV TL0,#0D0HLOOP3:JBC TF0,LOOP4AJMP LOOP3 LOOP4:CPL P1.2AJMP LOOP LOOP5:CLR P1.2MOV IP,#01HSETB EX0CLR EX1LCALL FHSJMP $FH:RETIDELAY:MOV R6,#0AH LOOP7:MOV R4,#64H LOOP8:NOPNOPNOPDJNZ R4,LOOP8DJNZ R6,LOOP7RETEND单按键控制2:5方波ORG 0000HLJMP MAINORG 0003HJC LOOP5LJMP LOOPMAIN:MOV TMOD,#11H MOV SP,#30HMOV TCON,#00HMOV IE,#81HSJMP $LOOP:SETB CLCALL FHLCALL DELAY LOOP6:MOV TH1,#0B1HMOV TL1,#0E0HSETB TR1LOOP2:JBC TF1,LOOP1AJMP LOOP2 LOOP1:CPL P1.2MOV TH0,#8AHMOV TL0,#0D0HLOOP3:JBC TF0,LOOP4AJMP LOOP3LOOP4:CPL P1.2AJMP LOOP6LOOP5:CLR P1.2CLR CLCALL FHLCALL DELAYSJMP $FH:RETIDELAY:MOV R6,#0AHLOOP7:MOV R4,#64HLOOP8:NOPNOPNOPDJNZ R4,LOOP8DJNZ R6,LOOP7RETEND8255的PC口上4按键4数码管ORG 0000HMOV SP,#30HMOV DPTR,#8003HMOV A,#81HMOVX @DPTR,AKEY:ACALL KSJNZ LK1ACALL DELAYAJMP KEYLK1:ACALL DELAYACALL DELAYACALL KSJNZ LK2ACALL DELAYAJMP KEYLK2:MOV DPTR,#8002HMOVX A,@DPTRJNB ACC.0,LOOP0JNB ACC.1,LOOP1JNB ACC.2,LOOP2JNB ACC.3,LOOP3AJMP KEYLOOP0:MOV DPTR,#8002HMOV A,#10HMOVX @DPTR,AAJMP KEYLOOP1:MOV DPTR,#8002HMOV A,#20HMOVX @DPTR,AAJMP KEYLOOP2:MOV DPTR,#8002HMOV A,#40HMOVX @DPTR,AAJMP KEYLOOP3:MOV DPTR,#8002HMOV A,#80HMOVX @DPTR,AAJMP KEYKS:MOV DPTR,#8002HMOVX A,@DPTRCPL AANL A,#0FHRETDELAY:MOV R6,#0AHLOOP7:MOV R4,#64HLOOP8:NOPNOPNOPDJNZ R4,LOOP8DJNZ R6,LOOP7RETEND8255的PA口上输出500us方波ORG 0000HMOV SP,#30HMOV DPTR,#8003HMOV A,#81HMOVX @DPTR,AMOV TMOD,#10HCLR ET1LOOP2:MOV TH1,#0FFHMOV TL1,#90HSETB TR1LOOP:JBC TF1,LOOP1AJMP LOOPLOOP1:MOV DPTR,#8000HMOV A,#01HMOVX @DPTR,AAJMP LOOP3 LOOP3:MOV TH1,#0FFHMOV TL1,#90HSETB TR1LOOP4:JBC TF1,LOOP5AJMP LOOP4LOOP5:MOV DPTR,#8000H MOV A,#00HMOVX @DPTR,AAJMP LOOP2END8255置位与复位应用ORG 0000HMOV SP,#30HMOV DPTR,#8003HMOV A,#80HMOVX @DPTR,ALOOP1:MOV DPTR,#8003H MOV A,#01HMOVX @DPTR,AACALL DELAYMOV A,#03HMOVX @DPTR,AACALL DELAYMOV A,#05HMOVX @DPTR,AACALL DELAYMOV A,#07HMOVX @DPTR,AACALL DELAYMOV A,#09HMOVX @DPTR,AACALL DELAYMOV A,#0BHMOVX @DPTR,AACALL DELAYMOV A,#0DHMOVX @DPTR,AACALL DELAYMOV A,#0FHMOVX @DPTR,AACALL DELAYMOV A,#0EHMOVX @DPTR,A ACALL DELAYMOV A,#0CHMOVX @DPTR,A ACALL DELAYMOV A,#0AHMOVX @DPTR,A ACALL DELAYMOV A,#08HMOVX @DPTR,A ACALL DELAYMOV A,#06HMOVX @DPTR,A ACALL DELAYMOV A,#04HMOVX @DPTR,A ACALL DELAYMOV A,#02HMOVX @DPTR,A ACALL DELAYMOV A,#00HMOVX @DPTR,A ACALL DELAYLJMP LOOP1 DELAY:MOV R6,#64H LOOP6:MOV R5,#0AH LOOP7:MOV R4,#64H LOOP8:NOPNOPNOPDJNZ R4,LOOP8DJNZ R5,LOOP7DJNZ R6,LOOP6RETENDXTAL218XTAL119ALE 30EA31PSEN 29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR 16P3.5/T115U180C51D034D133D232D331D430D529D628D727RD 5WR 36A09A18RESET 35CS6PA04PA13PA22PA31PA440PA539PA638PA737PB018PB119PB220PB321PB422PB523PB624PB725PC014PC115PC216PC317PC413PC512PC611PC710U28255AD03Q02D14Q15D27Q26D38Q39D413Q412D514Q515D617Q616D718Q719OE 1LE 11U374LS373R1470A B C DD1LED-GREEND2LED-GREEND3LED-GREEND4LED-GREEN12U4:A74LS04R2470R3470R4470R5470R6470R7470R8470XTAL218XTAL119ALE 30EA31PSEN 29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR 16P3.5/T115U180C51XTAL218XTAL119ALE 30EA31PSEN 29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR 16P3.5/T115U180C51R1470AB C D R0470XTAL218XTAL119ALE 30EA31PSEN 29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR 16P3.5/T115U180C51R1470AB C D R2470。