C51单片机实验程序

大神们,帮我用C语言写个程序。要求,在51单片机中用3个开关K1,K2,K3分别控制流水灯的流水速度。
尽量简单点,并且能留注释最好。谢谢

用中断模块和定时模块,当然还要加主程序和头文件,输出口定义等,看你的硬件连接方式,下面是延时子程序和一个中断程序,可类别编程。

  /*延时子程序*/
void delay( tm_N )

unsigned char i,j;     //无符号字符
for(i=tm_N;i>0;i--)
   for(j=248;j>0;j--);
  }
/*中断程序,一个开关的中断*/
void ledstatic(void) interrupt 0 using 1 {  // 中断源的编号0,指外部中断ex0,下降沿触发
 unsigned char i;
  delay(50);    //排除抖动影响的误触发
   if( KEY1 == 0 )   // 按键依然按下,说明不是意外触发,是真实的按键动作,开始按键的处理
  {
  P1=0xe0;
for(i=0; i<8; i++)   //执行慢扫描,p2.0逐列置低,
 { 
 P2=0xff;  //行全部高
  delay(1000);    //延迟时间
  P1=P1+1;     
   P1=P1&0xff;
    }   
}     
 KEY1=1;  // 如果是误触发,仍然将按键引脚置高,将IO口切换为输入状态

}

温馨提示:内容为网友见解,仅供参考
无其他回答

求大神在keil上帮写51单片机C语言程序
\/\/第一个实验:\/\/假设8个LED阴极指向单片机,D11连接P0.1,D12连接P0.2 ... D18连接P0.7\/\/假设K1按键在P2.3引脚#include<reg51.h>#include<intrins.h>sbit k1=P2^3;\/\/假设K1按键在P2.3引脚void main(){P0=0xfe;while(1){if(k1==0){while(k1==0);P0=_crol_(P0,1);}}}...

c51流水灯单片机程序
\/\/假设有8个LED通过上拉电阻接到P1端口, 高电平灯灭,低电平灯亮,逐个循环点亮 include <reg51.h> unsigned char data tab1[9]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00};void delay(){ unsigned int data n;for (n=0;n<40000;n++){ ;} } void main(){ unsigned char...

C51单片机程序
TH0 = 0xf6;TL0 = 0xff;上两行是定时器\/计数器T0的初值,因为T0是16位的,所以用TH0表示高八位,TL0表示低八位 TH1 = 0xfd;TL1 = 0xfd;T1初值 TMOD = 0x21;定时器\/计数器模式控制寄存器 如图 GATE=1时,由外部中断引脚INT0、INT1来启动定时器T0、T1 GATE=0时,仅由TR0,TR1置位分...

c51单片机c语言交通灯的程序
使用C语言为C51单片机编写交通灯控制程序是完全可行的,通过合理地设置定时器、I\/O端口以及逻辑控制,可以实现交通灯的定时切换和状态显示。接下来,我将详细解释如何为C51单片机使用C语言编写交通灯控制程序。首先,我们需要了解C51单片机的基本结构和资源,包括其I\/O端口、定时器\/计数器等。通常,交通灯系...

试用单片机keil c51写出一条把片内RAM 50H~59H单元清零的程序.
正确程序如下:CLR A MOV R0, #50H LOOP: MOV @R0, A INC R0 CJNE R0, #5AH, LOOP SJMP END

设单片机系统如何编写一个完整的C51程序使P1.6和P1?
设单片机系统编写一个完整的C51程序使P1.6和P1,可以使用正确编码加上解压即可。一、过程:1、TMOD = 0X02;\/\/工作方式寄存器;2、TH0 = 56;\/\/8位的用TH;3、TL0 = 0;\/\/16位跟13位两个都用;4、EA = 1;\/\/开总中断;5、TR0 = 1;\/\/定时器开始计数,return。二、单片机简介:1、...

MCS-51单片机应用实验教程图书目录
1.1 实验系统构成 1.2 实验系统的三种运行模式第2章 2.1 创建KeilC51调试环境 2.2 新建工程项目 2.3 程序文件的编译和链接第3章 3.1 在线调试仿真功能特点 3.2 如何进入调试状态 3.3 调试前的准备工作 3.4 实例应用演示第4章 4.1 脱机Flash运行模式介绍 4.2 存储器配置步骤 ...

如何用C51单片机做出以下程序 “秒表是倒计时,从100秒开始倒计时 用数...
假设P0 P2接数码管,静态驱动,程序如下:include<reg52.h> define uchar unsigned char define uint unsigned int uchar num=100;uchar time=0;\/\/共阴数码管七段码 uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77};void Delay1ms(uint i) \/\/1ms延时...

求单片机(c51)外部中断实验的c语言代码或者思路,要求在补充
include<reg51.h>#define uchar unsigned charvoid delay(void){uchar i,j;for(i=0;i<200;i++)for(j=0;j<120;j++);}void ext0() interrupt 0{uchar i;for(i=0;i<8;i++) { P2=0x00; delay(); P2=0xff; delay(); }}main(){uchar i;EX0=1;IT0=1;EA...

跪求单片机c51用汇编语言写的程序,功能为:8只发光二极管依次点亮,从...
void delay_nms(unsigned int n) \/\/延时n ms { n=n+1;while(--n)delay_nus(900); \/\/延时 1ms,同时进行补偿 } void main(){ unsigned int i;while(1){ for(i=8;i>0;i--){ if(i==8)P1=~0x01;\/\/P1_0所接二极管亮,下面依次是P1_1到P1_7(电路连接时二极管一端连P1_...

相似回答
大家正在搜