• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

高山云教你之一----自学单片机--所有(C,汇编)程序更新OK,请下载

看帖请一定跟帖,你的跟帖就是我更新的动力!!!!!! 

 



高山云系列教程之三:高山云教你----单片机玩转太阳能逆变系统

http://www.dianyuan.com/bbs/1488289.html   

高山云系列教程之二:高山云教你----单片机控制全彩LED入门到精通

http://www.dianyuan.com/bbs/1485719.html





 部分电友反应帖子太长,由于受网络影响,很多程序看的时候不方便,以下是所有的程序,分卷压缩后上传在此次,欢迎下载!

高山云教你学单片机全部程序包.part01.rar

高山云教你学单片机全部程序包.part02.rar

高山云教你学单片机全部程序包.part03.rar

高山云教你学单片机全部程序包.part04.rar

高山云教你学单片机全部程序包.part05.rar  






 

        程序中有什么疑惑的请一定留言,本人将一一解答,本人能力有限不足之处请留言批评!


 高山云先生来自某知名高校,凭着对电子技术的爱好和自己的不懈努力,在微控制器领域拥有良好的口碑,在近10年的时间里先后服务于国内多家知名大型企业和教育机构。在此期间高山云先生当过老师、做过设计、带过团队等也帮助了不少的有志青年。精通数款主流微控制器,在工业控制、电源管理、新型节能产品中有自己的独到见解和独特设计思路。

 

根据你个人的实际情况选择一种你认为能学会的语言学习,有什么问题或是好的建议请跟帖留言,我会慢慢更新后面的程序和实例程序,后面教程目录还没有更新完整,有什么好的项目适合新人学习的也可以提出,我在后面加上相应的目录。(个人建议如果你是半路出家并且学历较低但又想学单片机的最好先学学汇编语言,汇编语言是一门让你能很清楚了解单片机的运行顺序的语言,很直观但是很啰嗦,累赘!入门容易点,记住111条指令就OK,C语言太灵活了,100个人可以有100种不同的风格和写法,对半路出家的人来说还是有难度)

 

    以下为本人授课的目录:   应网友要求一下课程将做适当调整

【项目一】多效果速度可变LED项目:   

1.点亮一个LED       (点亮一个LED、LED按一定延时闪烁)  

2.LED跑马灯         (直接赋值、左右移循环、查表法)  

3.按键控制LED      (按键实现LED左移)  

4.单个数码管的使用  (单个数码管显示0-9)  

5.数码管动态扫描     (8个数码管分别显示0-9)

6.按键控制数码管    (篮球计分器的实现) 

7.简易电梯显示程序实现 

8【终极项目】多效果速度可变LED控制系统(用数码管显示LED循环模式,显示LED变化速度,按键可以修改速度和模式)

 

【项目二】点阵显示屏

9.8X8点阵点亮一个点

10.8X8点阵点亮全屏点亮

11.8x8点亮一条斜线

12.8X8点阵静态显示一个简易汉字或图形

13.8x8点阵动态显示一个简易汉字或图形

14.16X16静态显示一个汉字

15.【终极项目】16X16动态显示多个汉字

 

【项目三】带闹钟电子钟

16.定时器的使用              (让单个LED每秒钟闪烁一次) 

17.倒计时显示器              (59秒倒计时) 

18.电子钟设计                 (简易电子钟) 

19.可调时间电子钟设计    (一般电子钟) 

10.带闹钟电子钟设计      (中级电子钟) 

 

我的授课主要以项目方式进行描述也是按本人在工作中的一贯设计风格进行,授课目录先暂定这么多,后续的再更新!

 

发点福利:

先上一个个人的工程项目,程序为DEMO版,有小BUG,初学完全够了!这个项目以前发在LED照明版块了没有人理!这次转移过来希望有识货的来批评指正!  其实可以用一个8脚的小芯片,我手头没有,就用了这个QFP44的大单片机!如果有兴趣的可以去改改!

  压缩文件目录:

                        1->hongwai.hex                           

                         2->Sheet1.Sch                           

                        3->yaok_led(eerom+wdt).c                           

                        4->soft_Lamp_controller(VER1).pcb                           

                        5->遥控器.bmp 

C程序里有一个头文件,自己去STC单片机官方网上下载,把名字重命名为:STC90.h要不然编译的时候会报错!

 

程序地址:1388104588-37493.rar

 

 

 

12864液晶屏显示动画:

 


 

 

 

 

 

程序地址:12864液晶屏显示动画.rar

    

全部回复(406)
正序查看
倒序查看
2014-04-08 09:59
先描述一下我在编程中使用到的软件:Keil Uvision 4 (汇编\C均用次软件),仿真 Proteus 7.8 破解版  SP2
0
回复
2014-04-08 10:45
@yueyunno1
先描述一下我在编程中使用到的软件:KeilUvision4 (汇编\C均用次软件),仿真Proteus7.8 破解版 SP2

【第一个程序---点亮一个LED灯】

      仿真图

以上是C语言

以上是汇编语言

以上是仿真

 

下载链接:点亮一个LED灯.rar

 

0
回复
2014-04-08 10:47
@yueyunno1
【第一个程序---点亮一个LED灯】      仿真图[图片]以上是C语言[图片]以上是汇编语言[图片]以上是仿真 下载链接:点亮一个LED灯.rar 
以上是第一个程序和以后的程序风格,如果有什么异议可以提出,我也做适当修改
0
回复
2014-04-08 11:03
@yueyunno1
先描述一下我在编程中使用到的软件:KeilUvision4 (汇编\C均用次软件),仿真Proteus7.8 破解版 SP2

Keil_uvision_4 基本使用教程.pdf

            

0
回复
2014-04-08 11:05
@yueyunno1
Keil_uvision_4基本使用教程.pdf            
0
回复
2014-04-08 12:49
@yueyunno1
以上是第一个程序和以后的程序风格,如果有什么异议可以提出,我也做适当修改
不错
0
回复
2014-04-08 13:07
@SKY丶辉煌
不错
0
回复
2014-04-08 13:45

【第二个程序---一个LED每秒闪烁一次】

 

/////////////////////////////////////////////////////////////////////////

汇编版

/////////////////////////////////////////////////////////////////////////

/***********************************************************************/
/***名称:LED灯每秒闪烁1次     ********************************************/
/***功能:LED灯每秒闪烁1次**********************************************/
/*********************************************************************
/*---------------------------------------------------------------------*/
/*--   端口定义                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
LED_GREEN	EQU P2.0
PORT_2	EQU P2
DEL_TEMP1	EQU R7
DEL_TEMP2	EQU R6
DEL_TEMP3	EQU R5		
/*---------------------------------------------------------------------*/
/*--   程序开始                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
	ORG 0000H
	SJMP MAIN
	ORG 0030H
/*---------------------------------------------------------------------*/
/*--   主程序                   ---------------------------------------*/
/*---------------------------------------------------------------------*/
MAIN:	MOV PORT_2,#00H	 //端口初始化
LOOP:	SETB LED_GREEN	 //开灯
	CALL DELAY_1S	 //延时1S
	CLR  LED_GREEN	 //关灯
	CALL DELAY_1S	 //延时1S
	SJMP LOOP
/*---------------------------------------------------------------------*/
/*--   延时程序                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
DELAY_1S:	MOV DEL_TEMP1,#8
DEL1:	MOV DEL_TEMP2,#250
DEL2:	MOV DEL_TEMP3,#248
DEL3:	DJNZ DEL_TEMP3,DEL3
	DJNZ DEL_TEMP2,DEL2
	DJNZ DEL_TEMP1,DEL1
	RET
/*---------------------------------------------------------------------*/
/*--   程序结束                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
	END

	

 

 

 

/////////////////////////////////////////////////////////////////////////

C语言版

/////////////////////////////////////////////////////////////////////////

/***********************************************************************/
/***名称:LED灯每秒闪烁一次    ********************************************/
/***功能:LED灯每秒闪烁一次    ********************************************/
/***********************************************************************/
#include
typedef unsigned char U8;
typedef unsigned int  U16;
/*---------------------------------------------------------------------*/
/*--   端口定义                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
#define PORT_2 P2
#define HIGH 1
#define LOW	 0
sbit LED_GREEN = P2^0;

/*---------------------------------------------------------------------*/
/*--   延时子程序               ---------------------------------------*/
/*---------------------------------------------------------------------*/
void DELAY_1MS(U16 z)
{
	U16 x,y;
	for(x=z;x>0;x--)
		for(y=123;y>0;y--); 
}

/*---------------------------------------------------------------------*/
/*--   主程序                   ---------------------------------------*/
/*---------------------------------------------------------------------*/
void main()
{
	PORT_2=0X00;
	while(1)
	{
		LED_GREEN=HIGH;
		DELAY_1MS(1000);
		LED_GREEN=LOW;
		DELAY_1MS(1000);
	}
}
/*---------------------------------------------------------------------*/
/*--   程序结束                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
程序包下载地址:一个LED灯闪烁.rar  (包含汇编语言,C语言)

 

0
回复
2014-04-08 14:03

【第三个程序 LED跑马灯】

 

贴一个自己用EXCEL2003编写的LED流水灯效果自动生成代码的软件   下载地址:LED流水灯效果自动计算表格.xls

如果不能正常显示请按以下操作即可:点击菜单栏:工具----->加载宏----->勾选上分析工具库   点确定即可正常显示

 

 

直接赋值版汇编程序

/***********************************************************************/
/***名称:LED跑马灯         ********************************************/
/***功能:流水效果          ********************************************/
/***********************************************************************/

/*---------------------------------------------------------------------*/
/*--   端口定义                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
PORT_2	EQU P2
DEL_TEMP1	EQU R7
DEL_TEMP2	EQU R6
DEL_TEMP3	EQU R5		
/*---------------------------------------------------------------------*/
/*--   程序开始                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
	ORG 0000H
	SJMP MAIN
	ORG 0030H
/*---------------------------------------------------------------------*/
/*--   主程序                   ---------------------------------------*/
/*---------------------------------------------------------------------*/
MAIN:	MOV PORT_2,#00H	 //端口初始化
LOOP:	MOV PORT_2,#01H
	CALL DELAY_1S	 //延时1S
	MOV PORT_2,#02H
	CALL DELAY_1S	 //延时1S
	MOV PORT_2,#04H
	CALL DELAY_1S	 //延时1S
	MOV PORT_2,#08H
	CALL DELAY_1S	 //延时1S
	MOV PORT_2,#10H
	CALL DELAY_1S	 //延时1S
	MOV PORT_2,#20H
	CALL DELAY_1S	 //延时1S
	MOV PORT_2,#40H
	CALL DELAY_1S	 //延时1S
	MOV PORT_2,#80H
	CALL DELAY_1S	 //延时1S
	SJMP LOOP
/*---------------------------------------------------------------------*/
/*--   延时程序                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
DELAY_1S:	MOV DEL_TEMP1,#8
DEL1:	MOV DEL_TEMP2,#250
DEL2:	MOV DEL_TEMP3,#248
DEL3:	DJNZ DEL_TEMP3,DEL3
	DJNZ DEL_TEMP2,DEL2
	DJNZ DEL_TEMP1,DEL1
	RET
/*---------------------------------------------------------------------*/
/*--   程序结束                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
	END
直接赋值版--C程序
/***********************************************************************/
/***名称:LED跑马灯         ********************************************/
/***功能:流水效果          ********************************************/
/***********************************************************************/
#include
typedef unsigned char U8;
typedef unsigned int  U16;
/*---------------------------------------------------------------------*/
/*--   端口定义                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
#define PORT_2 P2
/*---------------------------------------------------------------------*/
/*--   延时子程序               ---------------------------------------*/
/*---------------------------------------------------------------------*/
void DELAY_1MS(U16 z)
{
	U16 x,y;
	for(x=z;x>0;x--)
		for(y=123;y>0;y--); 
}

/*---------------------------------------------------------------------*/
/*--   主程序                   ---------------------------------------*/
/*---------------------------------------------------------------------*/
void main()
{
	PORT_2=0X00;
	while(1)
	{
		PORT_2=0x01;
		DELAY_1MS(1000);
		PORT_2=0x02;
		DELAY_1MS(1000);
		PORT_2=0x04;
		DELAY_1MS(1000);
		PORT_2=0x08;
		DELAY_1MS(1000);
		PORT_2=0x10;
		DELAY_1MS(1000);
		PORT_2=0x20;
		DELAY_1MS(1000);
		PORT_2=0x40;
		DELAY_1MS(1000);
		PORT_2=0x80;
		DELAY_1MS(1000);
	}
}
/*---------------------------------------------------------------------*/
/*--   程序结束                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
 
0
回复
2014-04-08 14:22

【第四个程序 LED跑马灯-循环移位版】

//////////////////////////////////////////////////

汇编程序

//////////////////////////////////////////////////

/***********************************************************************/
/***名称:LED跑马灯         ********************************************/
/***功能:流水效果          ********************************************/
/***********************************************************************/

/*---------------------------------------------------------------------*/
/*--   端口定义                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
PORT_2	EQU P2

DEL_TEMP1	EQU R7
DEL_TEMP2	EQU R6
DEL_TEMP3	EQU R5
		
/*---------------------------------------------------------------------*/
/*--   程序开始                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
	ORG 0000H
	SJMP MAIN
	ORG 0030H
/*---------------------------------------------------------------------*/
/*--   主程序                   ---------------------------------------*/
/*---------------------------------------------------------------------*/
MAIN:	MOV PORT_2,#00H	 //端口初始化
	MOV A,#01H
LOOP:	MOV PORT_2,A
	CALL DELAY_1S	 //延时1S
	RL A
	SJMP LOOP 
/*---------------------------------------------------------------------*/
/*--   延时程序                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
DELAY_1S:MOV DEL_TEMP1,#8
DEL1:	MOV DEL_TEMP2,#250
DEL2:	MOV DEL_TEMP3,#248
DEL3:	DJNZ DEL_TEMP3,DEL3
	DJNZ DEL_TEMP2,DEL2
	DJNZ DEL_TEMP1,DEL1
	RET
/*---------------------------------------------------------------------*/
/*--   程序结束                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
	END

/*//////////////////////////////////////////////////

c程序

//////////////////////////////////////////////////

/***********************************************************************/
/***名称:LED跑马灯         ********************************************/
/***功能:流水效果          ********************************************/
/***********************************************************************/
#include
typedef unsigned char U8;
typedef unsigned int  U16;
/*---------------------------------------------------------------------*/
/*--   端口定义                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
#define PORT_2 P2
/*---------------------------------------------------------------------*/
/*--   延时子程序               ---------------------------------------*/
/*---------------------------------------------------------------------*/
void DELAY_1MS(U16 z)
{
	U16 x,y;
	for(x=z;x>0;x--)
		for(y=123;y>0;y--); 
}

/*---------------------------------------------------------------------*/
/*--   主程序                   ---------------------------------------*/
/*---------------------------------------------------------------------*/
void main()
{
	U8 i,j;
	PORT_2=0X00;
	while(1)
	{
		i=0x01;
		for(j=0;j<8;j++)
		{
			PORT_2=i;
			DELAY_1MS(1000);
			i=i<<1;
		}
	}
}
/*---------------------------------------------------------------------*/
/*--   程序结束                 ---------------------------------------*/
/*---------------------------------------------------------------------*/

 

 

 

0
回复
2014-04-08 14:39

【第五个程序 LED跑马灯-查表法】

/////////////////////////////////////////////

汇编程序

/////////////////////////////////////////////

/***********************************************************************/
/***名称:LED跑马灯         ********************************************/
/***功能:流水效果          ********************************************/
/***********************************************************************/

/*---------------------------------------------------------------------*/
/*--   端口定义                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
PORT_2	EQU P2

DEL_TEMP1	EQU R7
DEL_TEMP2	EQU R6
DEL_TEMP3	EQU R5

LOOP_TEMP	EQU R4
LOOP_TEMP1       EQU R3		
/*---------------------------------------------------------------------*/
/*--   程序开始                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
	ORG 0000H
	SJMP MAIN
	ORG 0030H
/*---------------------------------------------------------------------*/
/*--   主程序                   ---------------------------------------*/
/*---------------------------------------------------------------------*/
MAIN:	MOV PORT_2,#00H	 //端口初始化
	MOV LOOP_TEMP,#8
	MOV LOOP_TEMP1,#0
LOOP:	MOV A,LOOP_TEMP1
	MOV DPTR,#LED_TAB
	MOVC A,@A+DPTR
	MOV PORT_2,A
	CALL DELAY_1S	 //延时1S
	INC LOOP_TEMP1
	DJNZ LOOP_TEMP,LOOP
	SJMP MAIN 
/*---------------------------------------------------------------------*/
/*--   延时程序                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
DELAY_1S:MOV DEL_TEMP1,#8
DEL1:	MOV DEL_TEMP2,#250
DEL2:	MOV DEL_TEMP3,#248
DEL3:	DJNZ DEL_TEMP3,DEL3
	DJNZ DEL_TEMP2,DEL2
	DJNZ DEL_TEMP1,DEL1
	RET
/*---------------------------------------------------------------------*/
/*--   LED显示数组              ---------------------------------------*/
/*---------------------------------------------------------------------*/
LED_TAB:
	DB 01H,02H,04H,08H,10H,20H,40H,80H

/*---------------------------------------------------------------------*/
/*--   程序结束                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
	END

/////////////////////////////////////////////

C语言程序

/////////////////////////////////////////////

/***********************************************************************/
/***名称:LED跑马灯         ********************************************/
/***功能:流水效果          ********************************************/
/***********************************************************************/
#include
typedef unsigned char U8;
typedef unsigned int  U16;
/*---------------------------------------------------------------------*/
/*--   端口定义                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
#define PORT_2 P2

/*---------------------------------------------------------------------*/
/*--   其他定义                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
U8 code LED_TEB[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};	 //LED数组

/*---------------------------------------------------------------------*/
/*--   延时子程序               ---------------------------------------*/
/*---------------------------------------------------------------------*/
void DELAY_1MS(U16 z)
{
	U16 x,y;
	for(x=z;x>0;x--)
		for(y=123;y>0;y--); 
}

/*---------------------------------------------------------------------*/
/*--   主程序                   ---------------------------------------*/
/*---------------------------------------------------------------------*/
void main()
{
	U8 j;
	PORT_2=0X00;
	while(1)
	{
		for(j=0;j<8;j++)
		{
			PORT_2=LED_TEB[j];
			DELAY_1MS(1000);
		}
	}
}
/*---------------------------------------------------------------------*/
/*--   程序结束                 ---------------------------------------*/
/*---------------------------------------------------------------------*/

 

 

0
回复
2014-04-08 15:17
@yueyunno1
【第五个程序LED跑马灯-查表法】/////////////////////////////////////////////汇编程序//////////////////////////////////////////////***********************************************************************//***名称:LED跑马灯********************************************//***功能:流水效果********************************************//***********************************************************************//*---------------------------------------------------------------------*//*--端口定义---------------------------------------*//*---------------------------------------------------------------------*/PORT_2EQUP2DEL_TEMP1EQUR7DEL_TEMP2EQUR6DEL_TEMP3EQUR5LOOP_TEMPEQUR4LOOP_TEMP1EQUR3/*---------------------------------------------------------------------*//*--程序开始---------------------------------------*//*---------------------------------------------------------------------*/ORG0000HSJMPMAINORG0030H/*---------------------------------------------------------------------*//*--主程序---------------------------------------*//*---------------------------------------------------------------------*/MAIN:MOVPORT_2,#00H//端口初始化MOVLOOP_TEMP,#8MOVLOOP_TEMP1,#0LOOP:MOVA,LOOP_TEMP1MOVDPTR,#LED_TABMOVCA,@A+DPTRMOVPORT_2,ACALLDELAY_1S//延时1SINCLOOP_TEMP1DJNZLOOP_TEMP,LOOPSJMPMAIN/*---------------------------------------------------------------------*//*--延时程序---------------------------------------*//*---------------------------------------------------------------------*/DELAY_1S:MOVDEL_TEMP1,#8DEL1:MOVDEL_TEMP2,#250DEL2:MOVDEL_TEMP3,#248DEL3:DJNZDEL_TEMP3,DEL3DJNZDEL_TEMP2,DEL2DJNZDEL_TEMP1,DEL1RET/*---------------------------------------------------------------------*//*--LED显示数组---------------------------------------*//*---------------------------------------------------------------------*/LED_TAB:DB01H,02H,04H,08H,10H,20H,40H,80H/*---------------------------------------------------------------------*//*--程序结束---------------------------------------*//*---------------------------------------------------------------------*/END/////////////////////////////////////////////C语言程序//////////////////////////////////////////////***********************************************************************//***名称:LED跑马灯********************************************//***功能:流水效果********************************************//***********************************************************************/#includetypedefunsignedcharU8;typedefunsignedintU16;/*---------------------------------------------------------------------*//*--端口定义---------------------------------------*//*---------------------------------------------------------------------*/#definePORT_2P2/*---------------------------------------------------------------------*//*--其他定义---------------------------------------*//*---------------------------------------------------------------------*/U8codeLED_TEB[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//LED数组/*---------------------------------------------------------------------*//*--延时子程序---------------------------------------*//*---------------------------------------------------------------------*/voidDELAY_1MS(U16z){U16x,y;for(x=z;x>0;x--)for(y=123;y>0;y--);}/*---------------------------------------------------------------------*//*--主程序---------------------------------------*//*---------------------------------------------------------------------*/voidmain(){U8j;PORT_2=0X00;while(1){for(j=0;j

最近在学这个51的,可以跟楼主一起学习下

好贴一定要顶

0
回复
2014-04-08 16:17

【第六个程序-单个按键控制LED移位】

 

////////////////////////////////////

汇编程序

////////////////////////////////////

/***********************************************************************/
/***名称:按键控制LED       ********************************************/
/***功能:按一下按键LED移动一位*****************************************/
/***********************************************************************/

/*---------------------------------------------------------------------*/
/*--   端口定义                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
PORT_1	EQU P1
PORT_3	EQU P3

DEL_TEMP1	EQU R7
DEL_TEMP2	EQU R6
DEL_TEMP3	EQU R5

LOOP_TEMP	EQU R4
LOOP_TEMP1       EQU R3

IN_KEY	EQU P3.0		
/*---------------------------------------------------------------------*/
/*--   程序开始                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
	ORG 0000H
	SJMP MAIN
	ORG 0030H
/*---------------------------------------------------------------------*/
/*--   主程序                   ---------------------------------------*/
/*---------------------------------------------------------------------*/
MAIN:	MOV PORT_1,#00H	 //端口初始化
	MOV PORT_3,#0FFH
	MOV LOOP_TEMP,#0
LOOP:	CALL DISPLAY
	CALL KEY
	SJMP LOOP

/*---------------------------------------------------------------------*/
/*--   显示只程序               ---------------------------------------*/
/*---------------------------------------------------------------------*/
DISPLAY:	MOV DPTR,#LED_TAB
	MOV A,LOOP_TEMP
	MOVC A,@A+DPTR
	MOV PORT_1,A 
	RET
/*---------------------------------------------------------------------*/
/*--   按键子程序               ---------------------------------------*/
/*---------------------------------------------------------------------*/	
KEY:	JNB IN_KEY,KEY1
	SJMP EXIT

KEY1:	CALL DELAY_MS
	JNB IN_KEY,KEY2
	SJMP EXIT

KEY2:	JNB IN_KEY,KEY2
	CJNE LOOP_TEMP,#7,CALC
         MOV LOOP_TEMP,#0
	SJMP EXIT

CALC:	INC LOOP_TEMP

EXIT:	RET
/*---------------------------------------------------------------------*/
/*--   延时程序                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
DELAY_1S:MOV DEL_TEMP1,#8
DEL1:	MOV DEL_TEMP2,#250
DEL2:	MOV DEL_TEMP3,#248
DEL3:	DJNZ DEL_TEMP3,DEL3
	DJNZ DEL_TEMP2,DEL2
	DJNZ DEL_TEMP1,DEL1
	RET

DELAY_MS:MOV DEL_TEMP1,#25
DEL22:	MOV DEL_TEMP3,#25
DEL23:	DJNZ DEL_TEMP3,DEL23
	DJNZ DEL_TEMP2,DEL22
	RET
/*---------------------------------------------------------------------*/
/*--   LED显示数组              ---------------------------------------*/
/*---------------------------------------------------------------------*/
LED_TAB:
	DB 01H,02H,04H,08H,10H,20H,40H,80H

/*---------------------------------------------------------------------*/
/*--   程序结束                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
	END

////////////////////////////////////

C语言

////////////////////////////////////

/***********************************************************************/
/***名称:按键控制LED       ********************************************/
/***功能:按一下按键LED移动一位*****************************************/
/***********************************************************************/
#include
typedef unsigned char U8;
typedef unsigned int  U16;
/*---------------------------------------------------------------------*/
/*--   端口定义                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
#define PORT_1 P1
sbit IN_KEY =P3^0;
/*---------------------------------------------------------------------*/			   `
/*--   其他定义                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
U8 code LED_TEB[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};	 //LED数组
U8 LOOP_TEMP=0;
/*---------------------------------------------------------------------*/
/*--   延时子程序               ---------------------------------------*/
/*---------------------------------------------------------------------*/
void DELAY_1MS(U16 z)
{
	U16 x,y;
	for(x=z;x>0;x--)
		for(y=123;y>0;y--); 
}

/*---------------------------------------------------------------------*/
/*--   显示子程序               ---------------------------------------*/
/*---------------------------------------------------------------------*/
void Dislay()
{
	PORT_1=LED_TEB[LOOP_TEMP];
}
/*---------------------------------------------------------------------*/
/*--   按键子程序               ---------------------------------------*/
/*---------------------------------------------------------------------*/
void Key()
{
	if(IN_KEY==0)
	{
		DELAY_1MS(20);
		if(IN_KEY==0)
		{
			while(!IN_KEY);
			if(LOOP_TEMP<7)
				LOOP_TEMP++;
			else
				LOOP_TEMP=0;
		}	
	
	}

}
/*---------------------------------------------------------------------*/
/*--   主程序                   ---------------------------------------*/
/*---------------------------------------------------------------------*/
void main()
{
	PORT_1=0X00;
	while(1)
	{
		Dislay();
		Key();
	}
}
/*---------------------------------------------------------------------*/
/*--   程序结束                 ---------------------------------------*/
/*---------------------------------------------------------------------*/

程序和仿真下载地址:按键控制LED.rar

 

0
回复
2014-04-08 16:25
@yueyunno1
【第三个程序LED跑马灯】[图片] 贴一个自己用EXCEL2003编写的LED流水灯效果自动生成代码的软件  下载地址:LED流水灯效果自动计算表格.xls如果不能正常显示请按以下操作即可:点击菜单栏:工具----->加载宏----->勾选上分析工具库  点确定即可正常显示 [图片] 直接赋值版汇编程序/***********************************************************************//***名称:LED跑马灯********************************************//***功能:流水效果********************************************//***********************************************************************//*---------------------------------------------------------------------*//*--端口定义---------------------------------------*//*---------------------------------------------------------------------*/PORT_2EQUP2DEL_TEMP1EQUR7DEL_TEMP2EQUR6DEL_TEMP3EQUR5/*---------------------------------------------------------------------*//*--程序开始---------------------------------------*//*---------------------------------------------------------------------*/ORG0000HSJMPMAINORG0030H/*---------------------------------------------------------------------*//*--主程序---------------------------------------*//*---------------------------------------------------------------------*/MAIN:MOVPORT_2,#00H//端口初始化LOOP:MOVPORT_2,#01HCALLDELAY_1S//延时1SMOVPORT_2,#02HCALLDELAY_1S//延时1SMOVPORT_2,#04HCALLDELAY_1S//延时1SMOVPORT_2,#08HCALLDELAY_1S//延时1SMOVPORT_2,#10HCALLDELAY_1S//延时1SMOVPORT_2,#20HCALLDELAY_1S//延时1SMOVPORT_2,#40HCALLDELAY_1S//延时1SMOVPORT_2,#80HCALLDELAY_1S//延时1SSJMPLOOP/*---------------------------------------------------------------------*//*--延时程序---------------------------------------*//*---------------------------------------------------------------------*/DELAY_1S:MOVDEL_TEMP1,#8DEL1:MOVDEL_TEMP2,#250DEL2:MOVDEL_TEMP3,#248DEL3:DJNZDEL_TEMP3,DEL3DJNZDEL_TEMP2,DEL2DJNZDEL_TEMP1,DEL1RET/*---------------------------------------------------------------------*//*--程序结束---------------------------------------*//*---------------------------------------------------------------------*/END直接赋值版--C程序/***********************************************************************//***名称:LED跑马灯********************************************//***功能:流水效果********************************************//***********************************************************************/#includetypedefunsignedcharU8;typedefunsignedintU16;/*---------------------------------------------------------------------*//*--端口定义---------------------------------------*//*---------------------------------------------------------------------*/#definePORT_2P2/*---------------------------------------------------------------------*//*--延时子程序---------------------------------------*//*---------------------------------------------------------------------*/voidDELAY_1MS(U16z){U16x,y;for(x=z;x>0;x--)for(y=123;y>0;y--);}/*---------------------------------------------------------------------*//*--主程序---------------------------------------*//*---------------------------------------------------------------------*/voidmain(){PORT_2=0X00;while(1){PORT_2=0x01;DELAY_1MS(1000);PORT_2=0x02;DELAY_1MS(1000);PORT_2=0x04;DELAY_1MS(1000);PORT_2=0x08;DELAY_1MS(1000);PORT_2=0x10;DELAY_1MS(1000);PORT_2=0x20;DELAY_1MS(1000);PORT_2=0x40;DELAY_1MS(1000);PORT_2=0x80;DELAY_1MS(1000);}}/*---------------------------------------------------------------------*//*--程序结束---------------------------------------*//*---------------------------------------------------------------------*/ 

都是从最基础开始,正和我们初学者 

0
回复
2014-04-08 16:44

【第七个程序-1位数码管循环显示0-9】

 

贴一个自己用EXCEL2003编写的数码管段码生成软件    下载地址:数码管段码自动计算表格.xls

 

如果不能正常显示请按以下操作即可:点击菜单栏:工具----->加载宏----->勾选上分析工具库   点确定即可正常显示

 

仿真图片:

//////////////////////////////////////////

汇编程序

//////////////////////////////////////////

/***********************************************************************/
/***名称:1位数码管         ********************************************/
/***功能:循环显示0-9       ********************************************/
/***********************************************************************/

/*---------------------------------------------------------------------*/
/*--   端口定义                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
PORT_2	EQU P2
PORT_1	EQU P1
DEL_TEMP1	EQU R7
DEL_TEMP2	EQU R6
DEL_TEMP3	EQU R5

LOOP_TEMP	EQU R4
LOOP_TEMP1       EQU R3		
/*---------------------------------------------------------------------*/
/*--   程序开始                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
	ORG 0000H
	SJMP MAIN
	ORG 0030H
/*---------------------------------------------------------------------*/
/*--   主程序                   ---------------------------------------*/
/*---------------------------------------------------------------------*/
MAIN:	MOV PORT_2,#00H	 //端口初始化
	MOV PORT_1,#00H
	MOV LOOP_TEMP,#10
	MOV LOOP_TEMP1,#0
LOOP:	MOV A,LOOP_TEMP1
	MOV DPTR,#LED_TAB
	MOVC A,@A+DPTR
	MOV PORT_2,A
	CALL DELAY_1S	 //延时1S
	INC LOOP_TEMP1
	DJNZ LOOP_TEMP,LOOP
	SJMP MAIN 
/*---------------------------------------------------------------------*/
/*--   延时程序                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
DELAY_1S:MOV DEL_TEMP1,#8
DEL1:	MOV DEL_TEMP2,#250
DEL2:	MOV DEL_TEMP3,#248
DEL3:	DJNZ DEL_TEMP3,DEL3
	DJNZ DEL_TEMP2,DEL2
	DJNZ DEL_TEMP1,DEL1
	RET
/*---------------------------------------------------------------------*/
/*--   LED显示数组              ---------------------------------------*/
/*---------------------------------------------------------------------*/
LED_TAB:
	DB 3Fh,06h,5Bh,4Fh,66h,6Dh,7Dh,07h,7Fh,6Fh,77h,7Ch,39h,5Eh,79h,71h

/*---------------------------------------------------------------------*/
/*--   程序结束                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
	END

//////////////////////////////////////////

C语言程序

//////////////////////////////////////////

/***********************************************************************/
/***名称:1位数码管         ********************************************/
/***功能:循环显示0-9       ********************************************/
/***********************************************************************/
/***********************************************************************/
#include
typedef unsigned char U8;
typedef unsigned int  U16;
/*---------------------------------------------------------------------*/
/*--   端口定义                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
#define PORT_2 P2
#define PORT_1 P1

/*---------------------------------------------------------------------*/
/*--   其他定义                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
U8 code LED_TEB[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};	//LED数组

/*---------------------------------------------------------------------*/
/*--   延时子程序               ---------------------------------------*/
/*---------------------------------------------------------------------*/
void DELAY_1MS(U16 z)
{
	U16 x,y;
	for(x=z;x>0;x--)
		for(y=123;y>0;y--); 
}

/*---------------------------------------------------------------------*/
/*--   主程序                   ---------------------------------------*/
/*---------------------------------------------------------------------*/
void main()
{
	U8 j;
	PORT_2=0X00;
	PORT_1=0X00;
	while(1)
	{
		for(j=0;j<10;j++)
		{
			PORT_2=LED_TEB[j];
			DELAY_1MS(1000);
		}
	}
}
/*---------------------------------------------------------------------*/
/*--   程序结束                 ---------------------------------------*/
/*---------------------------------------------------------------------*/

程序及仿真下载地址:1个数码管显示0-9.rar

 

0
回复
2014-04-08 16:47
@liguohong327
都是从最基础开始,正和我们初学者 

我会陆续更新!!!!

0
回复
2014-04-09 09:18

【第八个程序-8位数码管动态显示0-7】

 

////////////////////////////////////

汇编程序

////////////////////////////////////

/***********************************************************************/
/***名称:8位数码管         ********************************************/
/***功能:依次显示0-7       ********************************************/
/***********************************************************************/

/*---------------------------------------------------------------------*/
/*--   端口定义                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
PORT_2	EQU P2
PORT_1	EQU P1
PORT_0	EQU P0
DEL_TEMP1	EQU R7
DEL_TEMP2	EQU R6
DEL_TEMP3	EQU R5
LOOP_TEMP	EQU R4
LOOP_TEMP1        EQU R3
MOVE_NUM	         EQU R2		
/*---------------------------------------------------------------------*/
/*--   程序开始                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
	ORG 0000H
	SJMP MAIN
	ORG 0030H
/*---------------------------------------------------------------------*/
/*--   主程序                   ---------------------------------------*/
/*---------------------------------------------------------------------*/
MAIN:	MOV PORT_2,#0FFH	 //端口初始化
	MOV PORT_1,#00H
	MOV PORT_0,#00H
	MOV LOOP_TEMP,#8
	MOV LOOP_TEMP1,#0
	MOV MOVE_NUM,#0FEH
	MOV DPTR,#LED_TAB
LOOP:	MOV A,LOOP_TEMP1
	MOVC A,@A+DPTR
	MOV PORT_0,A
	MOV PORT_2,MOVE_NUM
	CALL DELAY_MS	 //延时1S
	MOV PORT_0,#00H	 //消鬼影
	MOV PORT_2,#0FFH	 //消鬼影
	MOV A,MOVE_NUM
	RL A
	MOV MOVE_NUM,A
	INC LOOP_TEMP1
	DJNZ LOOP_TEMP,LOOP
	SJMP MAIN 
/*---------------------------------------------------------------------*/
/*--   1s延时程序               ---------------------------------------*/
/*---------------------------------------------------------------------*/
DELAY_1S:MOV DEL_TEMP1,#8
DEL1:	MOV DEL_TEMP2,#250
DEL2:	MOV DEL_TEMP3,#248
DEL3:	DJNZ DEL_TEMP3,DEL3
	DJNZ DEL_TEMP2,DEL2
	DJNZ DEL_TEMP1,DEL1
	RET
/*---------------------------------------------------------------------*/
/*--   MS延时程序               ---------------------------------------*/
/*---------------------------------------------------------------------*/
DELAY_MS:MOV DEL_TEMP1,#10
DEL22:	MOV DEL_TEMP3,#10
	DJNZ DEL_TEMP3,$
	DJNZ DEL_TEMP2,DEL22
	RET
/*---------------------------------------------------------------------*/
/*--   LED显示数组              ---------------------------------------*/
/*---------------------------------------------------------------------*/
LED_TAB:
	DB 3Fh,06h,5Bh,4Fh,66h,6Dh,7Dh,07h,7Fh,6Fh,77h,7Ch,39h,5Eh,79h,71h

/*---------------------------------------------------------------------*/
/*--   程序结束                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
	END

////////////////////////////////////

C程序

////////////////////////////////////

/***********************************************************************/
/***名称:8位数码管         ********************************************/
/***功能:依次显示0-7       ********************************************/
/***********************************************************************/
#include
typedef unsigned char U8;
typedef unsigned int  U16;
/*---------------------------------------------------------------------*/
/*--   端口定义                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
#define PORT_2 P2
#define PORT_1 P1
#define PORT_0 P0
/*---------------------------------------------------------------------*/
/*--   其他定义                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
U8 code LED_TEB[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};	//LED数组

/*---------------------------------------------------------------------*/
/*--   延时子程序               ---------------------------------------*/
/*---------------------------------------------------------------------*/
void DELAY_1MS(U16 z)
{
	U16 x,y;
	for(x=z;x>0;x--)
		for(y=123;y>0;y--); 
}

/*---------------------------------------------------------------------*/
/*--   主程序                   ---------------------------------------*/
/*---------------------------------------------------------------------*/
void main()
{
	U8 i,j;
	PORT_2=0XFF;
	PORT_1=0X00;
	PORT_0=0X00;
	while(1)
	{
		i=0x01;
		for(j=0;j<8;j++)
		{
			PORT_0=LED_TEB[j];
			PORT_2=~i;
			DELAY_1MS(5);
			PORT_0=0X00;
			PORT_2=0XFF;
			i=i<<1;
		}
	}
}
/*---------------------------------------------------------------------*/
/*--   程序结束                 ---------------------------------------*/
/*---------------------------------------------------------------------*/

 

 

0
回复
amwcel
LV.4
19
2014-04-09 10:26
@yueyunno1
【第八个程序-8位数码管动态显示0-7】[图片] ////////////////////////////////////汇编程序/////////////////////////////////////***********************************************************************//***名称:8位数码管********************************************//***功能:依次显示0-7********************************************//***********************************************************************//*---------------------------------------------------------------------*//*--端口定义---------------------------------------*//*---------------------------------------------------------------------*/PORT_2EQUP2PORT_1EQUP1PORT_0EQUP0DEL_TEMP1EQUR7DEL_TEMP2EQUR6DEL_TEMP3EQUR5LOOP_TEMPEQUR4LOOP_TEMP1EQUR3MOVE_NUMEQUR2/*---------------------------------------------------------------------*//*--程序开始---------------------------------------*//*---------------------------------------------------------------------*/ORG0000HSJMPMAINORG0030H/*---------------------------------------------------------------------*//*--主程序---------------------------------------*//*---------------------------------------------------------------------*/MAIN:MOVPORT_2,#0FFH//端口初始化MOVPORT_1,#00HMOVPORT_0,#00HMOVLOOP_TEMP,#8MOVLOOP_TEMP1,#0MOVMOVE_NUM,#0FEHMOVDPTR,#LED_TABLOOP:MOVA,LOOP_TEMP1MOVCA,@A+DPTRMOVPORT_0,AMOVPORT_2,MOVE_NUMCALLDELAY_MS//延时1SMOVPORT_0,#00H//消鬼影MOVPORT_2,#0FFH//消鬼影MOVA,MOVE_NUMRLAMOVMOVE_NUM,AINCLOOP_TEMP1DJNZLOOP_TEMP,LOOPSJMPMAIN/*---------------------------------------------------------------------*//*--1s延时程序---------------------------------------*//*---------------------------------------------------------------------*/DELAY_1S:MOVDEL_TEMP1,#8DEL1:MOVDEL_TEMP2,#250DEL2:MOVDEL_TEMP3,#248DEL3:DJNZDEL_TEMP3,DEL3DJNZDEL_TEMP2,DEL2DJNZDEL_TEMP1,DEL1RET/*---------------------------------------------------------------------*//*--MS延时程序---------------------------------------*//*---------------------------------------------------------------------*/DELAY_MS:MOVDEL_TEMP1,#10DEL22:MOVDEL_TEMP3,#10DJNZDEL_TEMP3,$DJNZDEL_TEMP2,DEL22RET/*---------------------------------------------------------------------*//*--LED显示数组---------------------------------------*//*---------------------------------------------------------------------*/LED_TAB:DB3Fh,06h,5Bh,4Fh,66h,6Dh,7Dh,07h,7Fh,6Fh,77h,7Ch,39h,5Eh,79h,71h/*---------------------------------------------------------------------*//*--程序结束---------------------------------------*//*---------------------------------------------------------------------*/END////////////////////////////////////C程序/////////////////////////////////////***********************************************************************//***名称:8位数码管********************************************//***功能:依次显示0-7********************************************//***********************************************************************/#includetypedefunsignedcharU8;typedefunsignedintU16;/*---------------------------------------------------------------------*//*--端口定义---------------------------------------*//*---------------------------------------------------------------------*/#definePORT_2P2#definePORT_1P1#definePORT_0P0/*---------------------------------------------------------------------*//*--其他定义---------------------------------------*//*---------------------------------------------------------------------*/U8codeLED_TEB[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//LED数组/*---------------------------------------------------------------------*//*--延时子程序---------------------------------------*//*---------------------------------------------------------------------*/voidDELAY_1MS(U16z){U16x,y;for(x=z;x>0;x--)for(y=123;y>0;y--);}/*---------------------------------------------------------------------*//*--主程序---------------------------------------*//*---------------------------------------------------------------------*/voidmain(){U8i,j;PORT_2=0XFF;PORT_1=0X00;PORT_0=0X00;while(1){i=0x01;for(j=0;j
我是半路出家..天天在看您的贴,希望您不要断了更新....谢谢!!!!
0
回复
2014-04-09 10:45
@amwcel
我是半路出家..天天在看您的贴,希望您不要断了更新....谢谢!!!!

哈哈!谢谢支持,我一定继续努力!绝对都是自己写的,不清楚的留言我一一回答

0
回复
amwcel
LV.4
21
2014-04-09 10:49
@yueyunno1
哈哈!谢谢支持,我一定继续努力!绝对都是自己写的,不清楚的留言我一一回答
一定.因为身边没有一个能带我的人.只希望多几个您这样的人.我也少走些弯路..
0
回复
2014-04-09 10:51

【第九个程序-篮球计分器】

/////////////////////////////////////////////

汇编语言程序

/////////////////////////////////////////////

/***********************************************************************/
/***名称:8位数码管         ********************************************/
/***功能:依次显示0-7       ********************************************/
/***********************************************************************/

/*---------------------------------------------------------------------*/
/*--   端口定义                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
PORT_3	EQU P3
PORT_2	EQU P2
PORT_1	EQU P1
PORT_0	EQU P0

KEY1	EQU P3.0
KEY2	EQU P3.1
KEY3	EQU P3.2
KEY4	EQU P3.3

/*---------------------------------------------------------------------*/
/*--   变量定义                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
DEL_TEMP1	EQU R7
DEL_TEMP2	EQU R6
DEL_TEMP3	EQU R5

LOOP_TEMP	EQU R4
LOOP_TEMP1        EQU R3
MOVE_NUM	         EQU R2

DISP_NUM1  EQU 30H
DISP_TEMP  EQU 31H
DISP_TEMP1 EQU 32H
	 		
/*---------------------------------------------------------------------*/
/*--   程序开始                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
	ORG 0000H
	SJMP MAIN
	ORG 0030H
/*---------------------------------------------------------------------*/
/*--   主程序                   ---------------------------------------*/
/*---------------------------------------------------------------------*/
MAIN:	MOV PORT_3,#0FFH	 //端口初始化
	MOV PORT_2,#0FFH	 //端口初始化
	MOV PORT_1,#00H
	MOV PORT_0,#00H
          MOV DISP_NUM1,#0
WORK:	CALL DISPLAY
	CALL KEY
	SJMP WORK 
/*---------------------------------------------------------------------*/
/*--   按键子程序               ---------------------------------------*/ 
/*--入口地址:                  - -------------------------------------*/
/*---------------------------------------------------------------------*/
KEY:	MOV A,PORT_3
	CJNE A,#0FFH,KEY21
	SJMP EXIT

KEY21:	CALL DELAY_MS
	CALL DELAY_MS	
	MOV A,PORT_3
	CJNE A,#0FFH,KEY22
	SJMP EXIT

KEY22:	JNB KEY1,ADD1
	JNB KEY2,ADD2
	JNB KEY3,ADD3
	JNB KEY4,SUBB1
	SJMP EXIT

ADD1:  	CALL DISPLAY
	JNB KEY1,ADD1
	MOV A,DISP_NUM1 
	ADD A,#1
	MOV DISP_NUM1,A
	SJMP EXIT	

ADD2:	CALL DISPLAY
	JNB KEY2,ADD2
	MOV A,DISP_NUM1 
	ADD A,#2
	MOV DISP_NUM1,A
	SJMP EXIT	

ADD3:     CALL DISPLAY
	JNB KEY3,ADD3
	MOV A,DISP_NUM1 
	ADD A,#3
	MOV DISP_NUM1,A
	SJMP EXIT	

SUBB1:	CALL DISPLAY
	JNB KEY4,SUBB1
	MOV A,DISP_NUM1 
	CJNE A,#0,SUBB2
	MOV DISP_NUM1,#0
	SJMP EXIT
	
SUBB2:	SUBB A,#1
	MOV DISP_NUM1,A
	SJMP EXIT	

EXIT:	RET


/*---------------------------------------------------------------------*/
/*--   显示子程序               ---------------------------------------*/ 
/*--入口地址:DISP_NUM1         - -------------------------------------*/
/*---------------------------------------------------------------------*/
DISPLAY: MOV LOOP_TEMP,#4
	MOV LOOP_TEMP1,#0
	MOV MOVE_NUM,#0F7H
	MOV DPTR,#LED_TAB
	MOV DISP_TEMP1,DISP_NUM1
LOOP:	MOV A,DISP_TEMP1
	MOV B,#10
	DIV AB
	MOV DISP_TEMP,A
	MOV A,B 
	MOVC A,@A+DPTR
	MOV PORT_0,A
	MOV PORT_2,MOVE_NUM
	CALL DELAY_MS	 //延时1S
	MOV PORT_0,#00H	 //消鬼影
	MOV PORT_2,#0FFH	 //消鬼影
	MOV A,MOVE_NUM
	RR A
	MOV MOVE_NUM,A
	INC LOOP_TEMP1
	MOV DISP_TEMP1,DISP_TEMP
	DJNZ LOOP_TEMP,LOOP
	RET

/*---------------------------------------------------------------------*/
/*--   1s延时程序               ---------------------------------------*/
/*---------------------------------------------------------------------*/
DELAY_1S:MOV DEL_TEMP1,#8
DEL1:	MOV DEL_TEMP2,#250
DEL2:	MOV DEL_TEMP3,#248
DEL3:	DJNZ DEL_TEMP3,DEL3
	DJNZ DEL_TEMP2,DEL2
	DJNZ DEL_TEMP1,DEL1
	RET
/*---------------------------------------------------------------------*/
/*--   MS延时程序               ---------------------------------------*/
/*---------------------------------------------------------------------*/
DELAY_MS:MOV DEL_TEMP1,#10
DEL22:	MOV DEL_TEMP3,#10
	DJNZ DEL_TEMP3,$
	DJNZ DEL_TEMP2,DEL22
	RET
/*---------------------------------------------------------------------*/
/*--   LED显示数组              ---------------------------------------*/
/*---------------------------------------------------------------------*/
LED_TAB:
	DB 3Fh,06h,5Bh,4Fh,66h,6Dh,7Dh,07h,7Fh,6Fh,77h,7Ch,39h,5Eh,79h,71h

/*---------------------------------------------------------------------*/
/*--   程序结束                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
	END

/////////////////////////////////////////////

C语言程序

/////////////////////////////////////////////

/***********************************************************************/
/***名称:篮球计分器        ********************************************/
/***功能: 按《加1分》显示数字加1  按《加2分》显示数字加2           ****/
/*按《加3分》显示数字加3 按《减1分》显示数字减1                     ****/
/***********************************************************************/
#include
typedef unsigned char U8;
typedef unsigned int  U16;
/*---------------------------------------------------------------------*/
/*--   端口定义                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
#define PORT_3 P3
#define PORT_2 P2
#define PORT_1 P1
#define PORT_0 P0

sbit KEY1=P3^0;
sbit KEY2=P3^1;
sbit KEY3=P3^2;
sbit KEY4=P3^3;
/*---------------------------------------------------------------------*/
/*--   其他定义                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
U8 code LED_TEB[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};	//LED数组
U16 DISP_NUM1;
/*---------------------------------------------------------------------*/
/*--   延时子程序               ---------------------------------------*/
/*---------------------------------------------------------------------*/
void DELAY_1MS(U16 z)
{
	U16 x,y;
	for(x=z;x>0;x--)
		for(y=123;y>0;y--); 
}

/*---------------------------------------------------------------------*/
/*--   显示子程序               ---------------------------------------*/
/*---------------------------------------------------------------------*/
void display(U16 DISP_NUM)
{
	U8 i,j;
	i=0x08;
	for(j=0;j<4;j++)
	{
		PORT_0=LED_TEB[DISP_NUM%10];
		PORT_2=~i;
		DELAY_1MS(5);
		PORT_0=0X00;
		PORT_2=0XFF;
		i=i>>1;
		DISP_NUM/=10;
	}
}
/*---------------------------------------------------------------------*/
/*--   按键子程序               ---------------------------------------*/
/*---------------------------------------------------------------------*/
void KEY()
{
	if(PORT_3!=0xff)
	{
	 	DELAY_1MS(20);
		if(PORT_3!=0xff)
		{
		 	if(KEY1==0)
			{
			 	while(!KEY1)
				{
					display(DISP_NUM1);
				}
				DISP_NUM1+=1;
			}
			
			if(KEY2==0)
			{
			 	while(!KEY2)
				{
					display(DISP_NUM1);
				}
				DISP_NUM1+=2;
			}

			if(KEY3==0)
			{
			 	while(!KEY3)
				{
					display(DISP_NUM1);
				}
				DISP_NUM1+=3;
			}

			if(KEY4==0)
			{
			 	while(!KEY4)
				{
					display(DISP_NUM1);
				}
				if(DISP_NUM1>0)
					DISP_NUM1-=1;
				else
					DISP_NUM1=0;
			}			
		}	
	}
}
/*---------------------------------------------------------------------*/
/*--   主程序                   ---------------------------------------*/
/*---------------------------------------------------------------------*/
void main()
{
	PORT_3=0XFF;
	PORT_2=0XFF;
	PORT_1=0X00;
	PORT_0=0X00;
	DISP_NUM1=0;
	while(1)
	{
		display(DISP_NUM1);
		KEY();	
	}
}
/*---------------------------------------------------------------------*/
/*--   程序结束                 ---------------------------------------*/
/*---------------------------------------------------------------------*/

 

0
回复
2014-04-09 10:52
@amwcel
一定.因为身边没有一个能带我的人.只希望多几个您这样的人.我也少走些弯路..

没事有电源网这样好的平台我们都能共同进步

0
回复
amwcel
LV.4
24
2014-04-09 10:56
@yueyunno1
没事有电源网这样好的平台我们都能共同进步
麻烦推荐一本基础点的书..电脑看书眼太累了..还是看实体书习惯.谢谢!!
0
回复
2014-04-09 11:05
@amwcel
麻烦推荐一本基础点的书..电脑看书眼太累了..还是看实体书习惯.谢谢!!

你想学汇编还是C语言

 

0
回复
amwcel
LV.4
26
2014-04-09 11:11
@yueyunno1
你想学汇编还是C语言 
汇编..您开头就已经提醒我了...谢谢!!
0
回复
2014-04-09 11:19
@amwcel
汇编..您开头就已经提醒我了...谢谢!!

单片机应用技术(汇编) 红色外壳的,这个书便宜实惠,还行!

 

 

 

0
回复
amwcel
LV.4
28
2014-04-09 11:22
@yueyunno1
单片机应用技术(汇编)红色外壳的,这个书便宜实惠,还行![图片] [图片]  
收到.马上买回来...谢谢您!!我两本都一起买回了...
0
回复
2014-04-09 13:40
@yueyunno1
没事有电源网这样好的平台我们都能共同进步
yueyunno1你好,我是电源网(现拓展为电子信息网)论坛的负责人,我姓何,也感谢您写的原创帖子,帮助到很多对单片机感兴趣的朋友,期待您的更新,我会一直关注的。谢谢您。
0
回复
2014-04-09 13:55

【第十个程序-电梯显示程序实现】

/////////////////////////////////////////////////

 汇编程序

/////////////////////////////////////////////////

 

/************************************************/
/****这个程序是以前写的,故风格不一样         **********/
/************************************************/

        ORG 0000H
        SJMP MAIN
        ORG 0003H
        SJMP INT
        ORG 0030H
MAIN:
        CLR IT0
        SETB EX0
        SETB EA
        MOV 40H,#1
        MOV R0,#1
       ; MOV R1,#1
LOOP:   ACALL DISPLAY1
        SJMP LOOP

INT:    CLR EA
        PUSH PSW
        PUSH ACC
        JNB P1.0,S1
        JNB P1.1,S2
        JNB P1.2,S3
        JNB P1.3,S4
        JNB P1.4,S5
        JNB P1.5,S6
        JNB P1.6,S7
        JNB P1.7,S8
RETUP:  POP ACC
        POP PSW
        ;CLR IT0
        ;SETB EX0
        SETB EA
        RETI

S1:     MOV R0,#1
        ACALL DISPLAY
        AJMP RETUP

S2:     MOV R0,#2
        ACALL DISPLAY
        AJMP RETUP

S3:     MOV R0,#3
        ACALL DISPLAY
        AJMP RETUP

S4:     MOV R0,#4
        ACALL DISPLAY
        AJMP RETUP

S5:     MOV R0,#5
        ACALL DISPLAY
        AJMP RETUP

S6:     MOV R0,#6
        ACALL DISPLAY
        AJMP RETUP

S7:     MOV R0,#7
        ACALL DISPLAY
        AJMP RETUP

S8:     MOV R0,#8
        ACALL DISPLAY
        AJMP RETUP

DISPLAY:
        MOV 30H,40H
        MOV 40H,R0
        MOV R0,30H

DISPLAY1:
        MOV P2,#00H
        CLR P3.0
        CLR P3.1
        MOV DPTR,#TAB
LOOP11: MOV A,R0
        MOV 42H,A
        MOVC A,@A+DPTR
        MOV P2,A
        SETB P3.1
        CALL DELAY
        CLR P3.1
        MOV A,42H
        CJNE A,40H,QQ
        RET

QQ:     JNC QQ1
        INC R0
        SJMP LOOP11

QQ1:    DEC R0
        SJMP LOOP11

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

DELAY:  MOV R7,#250
DEL1:   MOV R6,#250
DEL2:   MOV R5,#4
DEL3:   DJNZ R5,DEL3
        DJNZ R6,DEL2
        DJNZ R7,DEL1
        RET
        END

/////////////////////////////////////////////////

C语言程序

/////////////////////////////////////////////////

/***********************************************************************/
/***名称:电梯显示程序      ********************************************/
/***功能:                  ********************************************/                          
/***********************************************************************/
#include
typedef unsigned char U8;
typedef unsigned int  U16;
/*---------------------------------------------------------------------*/
/*--   端口定义                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
#define PORT_3 P3
#define PORT_2 P2
#define PORT_1 P1
#define PORT_0 P0

#define HIGH 1
#define LOW  0

#define		INT0_VECTOR		0
#define		TIMER0_VECTOR	1
#define		INT1_VECTOR		2
#define		TIMER1_VECTOR	3
#define		UART1_VECTOR	4

sbit SHI=P3^0;
sbit GE =P3^1;

sbit KEY1=P1^0;
sbit KEY2=P1^1;
sbit KEY3=P1^2;
sbit KEY4=P1^3;

sbit KEY5=P1^4;
sbit KEY6=P1^5;	
sbit KEY7=P1^6;
sbit KEY8=P1^7;

/*---------------------------------------------------------------------*/
/*--   其他定义                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
U8 code LED_TEB[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};	//LED数组
U8 DISP_NUM3,DISP_NUM4;
/*---------------------------------------------------------------------*/
/*--   延时子程序               ---------------------------------------*/
/*---------------------------------------------------------------------*/
void DELAY_1MS(U16 z)
{
	U16 x,y;
	for(x=z;x>0;x--)
		for(y=123;y>0;y--); 
}

/*---------------------------------------------------------------------*/
/*--   显示子程序               ---------------------------------------*/
/*---------------------------------------------------------------------*/
void display(U8 DISP_NUM)
{
	U8 i;
	for(i=0;i<50;i++)
	{
	 	PORT_2=LED_TEB[DISP_NUM/10];
		SHI=HIGH;
		GE =LOW;
		DELAY_1MS(5);
		SHI=LOW;
		PORT_2=LED_TEB[DISP_NUM%10];
		GE=HIGH;
		SHI=LOW;
		DELAY_1MS(5);	
		GE =LOW;
	}
}
/*---------------------------------------------------------------------*/
/*--   初始化程序               ---------------------------------------*/
/*---------------------------------------------------------------------*/
void init()
{
	PORT_3=0XFF;
	PORT_2=0XFF;
	PORT_1=0Xff;
	PORT_0=0X00;
	IT0=LOW;
	EX0=HIGH;
	EA=HIGH;
}

/*---------------------------------------------------------------------*/
/*--   主程序                   ---------------------------------------*/
/*---------------------------------------------------------------------*/
void main()
{
	init();
	DISP_NUM3=5;	//当前层
	DISP_NUM4=1;    //按键受控层
	while(1)
	{
		display(DISP_NUM3);
		if(DISP_NUM4DISP_NUM3)
		{
			DISP_NUM3++;
		}		
	}
}
/*---------------------------------------------------------------------*/
/*--   外部中断0                ---------------------------------------*/
/*---------------------------------------------------------------------*/
void INT_0 (void) interrupt INT0_VECTOR
{
	EA=LOW;
	
    if(PORT_1!=0xff)
	{
		DELAY_1MS(5);
		if(PORT_1!=0xff)
		{
			if(KEY1==0)
				DISP_NUM4=1;
			if(KEY2==0)
				DISP_NUM4=2;
			if(KEY3==0)
				DISP_NUM4=3;
			if(KEY4==0)
				DISP_NUM4=4;
			if(KEY5==0)
				DISP_NUM4=5;
			if(KEY6==0)
				DISP_NUM4=6;
			if(KEY7==0)
				DISP_NUM4=7;
			if(KEY8==0)
				DISP_NUM4=8;
		}
	}
	EA=HIGH;
}

/*---------------------------------------------------------------------*/
/*--   程序结束                 ---------------------------------------*/
/*---------------------------------------------------------------------*/

 

 

0
回复
2014-04-09 13:57
@电源网-娜娜姐
yueyunno1你好,我是电源网(现拓展为电子信息网)论坛的负责人,我姓何,也感谢您写的原创帖子,帮助到很多对单片机感兴趣的朋友,期待您的更新,我会一直关注的。谢谢您。

谢谢!我会一直持续更新的!

0
回复