求一个简单的89C51单片机系统程序。

使用单片机汇编语言(如MOV A,,55H等),不用C语言,
功能:按4个键分别显示2014四个数字,使用一个7杆8字型LED显示,键盘使用2×2矩形键盘。
键盘接口如下图:

电路图可以参考下图(下图键盘不符合要求):
P0.0 、P1.0 控制数字2;
P0.0 、P1.1 控制数字0;
P0.1 、P1.0 控制数字1;
P0.1 、P1.1 控制数字4;
没有完整程序,告诉我如何显示2014四个数字也行的。

楼主的电路,P0,又是输出数码,又是控制矩阵键盘。


有冲突。


改为如下:


程序如下:

;

    ORG   0000H

;-----------------------

START:

    MOV   P3, #255

    CLR   P3.0

    JNB   P2.0, K0

    JNB   P2.1, K4


    MOV   P3, #255

    CLR   P3.1

    JNB   P2.0, K1

    JNB   P2.1, K2


    SJMP  START

;-----------------------

K0: MOV   A, #0

    SJMP  DISP

    

K1: MOV   A, #1

    SJMP  DISP


K2: MOV   A, #2

    SJMP  DISP


K4: MOV   A, #4

;-----------------------

DISP:

    MOV   DPTR, #TAB

    MOVC  A, @A + DPTR

    MOV   P0, A

    SJMP  START

;---------------------------------------------

TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H

    DB 80H,90H,0BFH,0FFH

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-06-13
两个图片矛盾,图1是4×4键盘,图2是单独按键;
图2,上电复位电容器10uf接反。
一位七段数码管怎么显示2014?
第2个回答  2014-06-13

仿真实例,16个 按键,8个数码管。仿真试试

直接 按 2014 就可以了。

第3个回答  2014-06-13
c语言编好后反汇编就成了

求编程单片机89c51,要求:按key1(P3.4,p3.5)键三次后,P1口的LED灯全部点...
晶振4MHZ,按键key1为P3.4,P3.5接口 功能:按 key1键三次,P1灯亮,再按一次灭,如此重复 \/ include<reg51.h> sbit key1 = P3^4;\/ void delay40us(uint time)输入参数:time 输出参数:无 函数功能:延时程序40us \/ void delay40us(unsigned int time){ unsigned char ks;while(tim...

89C51单片机红绿灯程序是什么?
若亮则转移到黄灯闪烁程序\\x0d\\x0a JNB ACC.1,SS2 ;判断南北方向黄灯是否亮,若亮则转移到黄灯闪烁程序\\x0d\\x0a MOV P1,A\\x0d\\x0a LCALL DY1S\\x0d\\x0aSS:MOV A,R1\\x0d\\x0a INC A\\x0d\\x0a DJNZ R2,F3\\x0d\\x0a SJMP MAIN\\x0d\\x0a\\x0d\\x0a...

求89C51单片机简单中断程序,用C语言编写,题目如图
include<reg51.h>#include "intrins.h"#include "absacc.h"#define uchar unsigned charuchar ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0xff};\/\/0-9uchar num,cnt;bit flag=0;void ext1() interrupt 2{flag=~flag;}void t1isr() interrupt 3\/\/显示{...

急求一个由89C51单片机的代码!要求用4*4矩阵键盘控制LED矩阵输出0~9的...
a4=b%10;\/*取b的个位*\/ if(k==0){shu4=1;shu1=0;shu2=0;shu3=0;P0=yima[a1];} else if(k==1){shu4=0;shu1=1;shu2=0;shu3=0;P0=yima[a4];} else if(k==2){shu4=0;shu1=0;shu2=1;shu3=0;P0=yima[a3];} else if(k==3){shu4=0;shu1=0;shu2=0;shu3...

STC 89C51,单片机C语言程序,P10输出PWM方波
ET0=1;\/\/打开定时器0中断允许 EA=1;\/\/打开总中断 TR0=1;\/\/打开定时器 } void PWM_work() interrupt 1 { TH0=0xff;TL0=0c9c;percent++;if(percent<=Duty_cycle*t\/100){ work_pin=1;if(percent>t) percent=0;} else work_pin=0;} void main(){ Timer0Init();while(1...

用89c51单片机写一个数码管显示HELLO的程序,是在一个七段数码管上依次...
在数码管依次排列好这一句话,首先取模,然后写显示函数,写完函数放置while(1)中无限循环下去 代码如下:include; \/\/用的是单独操作,没有用总线 sbit led1 = P1^0;sbit led2 = P1^1;sbit led3 = P1^2;sbit led4 = P1^3;sbit led5 = P1^4;sbit led6 = P1^5;sbit led7 = P1^6...

求用C语言编写一个单片机89C51电子时钟程序,有时,分,秒,还有电路图_百 ...
\/\/根据选择调整相应项目void Set(uchar sel,uchar sel_1) { uchar address,time; uchar max,min; if(sel==1) {address=0x84; max=23;min=0;} \/\/小时 if(sel==2) {address=0x82; max=59;min=0;} \/\/分钟 if(sel==3) {address=0x88; max=12;min=1;} \/\/月 ...

急求程序,89C51汇编语言写8个按键控制8个LED
程序如下:ORG 0000H LJMP MAIN ORG 000BH LJMP T0_INT ORG 0030H ;--- MAIN:MOV TMOD, #01H MOV TH0, #HIGH(65536 - 10000) ;10ms@12MHz MOV TL0, #LOW(65536 - 10000)SETB TR0 MOV IE, #82H MOV R7, #50 ;500ms LOP:SJMP LOP ;--- T0...

求个89c51单片机 汇编语言设计的LED跑马灯的程序
mov a,#0feh ;每次只亮一个灯。loop: mov p1,a ;输出到p1 lcall delay ; 延时 rl a ;循环左移。ajmp loop ; 跳转main继续循环 delay: mov r5,#20 ;延时子程序1闪烁灯调用 d1:mov r6,#20 d2: mov r7,#250 djnz r7,djnz r6,d2 djnz r5,d1(时间此处可自行设置)...

求一个89C51单片机 控制SIM900(相似的也可以),收发短信的程序!
1,清零USART2_RX_STA;void sim_at_response(u8 mode){ if(USART2_RX_STA&0X8000)\/\/接收到一次数据了 { USART2_RX_BUF[USART2_RX_STA&0X7FFF]=0;\/\/添加结束符 printf("%s",USART2_RX_BUF);\/\/发送到串口 if(mode)USART2_RX_STA=0;} } \/\/\/ \/\/ATK-SIM900A 各项测试(拨号测试、...

相似回答