• zhaobo
    了解作者
  • C/C++
    开发工具
  • 1KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 2
    下载次数
  • 2018-07-10 16:09
    上传日期
C51按键程序 按下加按键,数值增加直到最大值,按减按键,数值减小,直到最小值
C51 key.rar
  • C51 key.c
    3.4KB
内容介绍
/*----------------------------------------------- 名称:单个独立按键控制led输出状态 论坛:www.doflye.net 编写:shifang 日期:2009.5 修改:无 内容:按下加按键,数值增加直到最大值,按减按键,数值减小,直到最小值 ------------------------------------------------*/ #include<reg52.h> //包含头文件,一般情况不需要改动, //头文件包含特殊功能寄存器的定义 sbit KEY_ADD=P3^2; //定义按键输入端口 sbit KEY_DEC=P3^3; #define DataPort P0 //定义段数据端口 程序中遇到DataPort 则用P0 替换 #define SegPort P2 //定义位数据端口 unsigned char code dofly_DuanMa[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; // 显示段码值0~9 unsigned char code dofly_WeiMa[]={0,1,2,3,4,5,6,7}; //分别对应相应的数码管点亮,即位码 unsigned char TempData[8]; //存储显示值的全局变量 /*------------------------------------------------ 函数声明 ------------------------------------------------*/ void DelayUs2x(unsigned char t);//函数声明 void DelayMs(unsigned char t); void Display(unsigned char FirstBit,unsigned char Num); /*------------------------------------------------ 主函数 ------------------------------------------------*/ void main (void) { unsigned char num=0; KEY_ADD=1; //按键输入端口电平置高 KEY_DEC=1; while (1) //主循环 { if(!KEY_ADD) //如果检测到低电平,说明按键按下 { DelayMs(10); //延时去抖,一般10-20ms if(!KEY_ADD) //再次确认按键是否按下,没有按下则退出 { while(!KEY_ADD);//如果确认按下按键等待按键释放,没有释放则一直等待 { if(num<9) //加操作 num++; } } } if(!KEY_DEC) //如果检测到低电平,说明按键按下 { DelayMs(10); //延时去抖,一般10-20ms if(!KEY_DEC) //再次确认按键是否按下,没有按下则退出 { while(!KEY_DEC);//如果确认按下按键等待按键释放,没有释放则一直等待 { if(num>0) //减操作 num--; } } } TempData[0]=dofly_DuanMa[num%10]; Display(0,1); //主循环中添加其他需要一直工作的程序 } } /*------------------------------------------------ uS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0~255 这里使用晶振12M,精确延时请使用汇编,大致延时 长度如下 T=tx2+5 uS ------------------------------------------------*/ void DelayUs2x(unsigned char t) { while(--t); } /*------------------------------------------------ mS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0~255 这里使用晶振12M,精确延时请使用汇编 ------------------------------------------------*/ void DelayMs(unsigned char t) { while(t--) { //大致延时1mS DelayUs2x(245); DelayUs2x(245); } } /*------------------------------------------------ 显示函数,用于动态扫描数码管 输入参数 FirstBit 表示需要显示的第一位,如赋值2表示从第三个数码管开始显示 如输入0表示从第一个显示。 Num表示需要显示的位数,如需要显示99两位数值则该值输入2 ------------------------------------------------*/ void Display(unsigned char FirstBit,unsigned char Num) { unsigned char i; for(i=0;i<Num;i++) { DataPort=0; //清空数据,防止有交替重影 SegPort=dofly_WeiMa[i+FirstBit]; //取位码 DataPort=TempData[i]; //取显示数据,段码 DelayMs(2); // 扫描间隙延时,时间太长会闪烁,太短会造成重影 } }
评论
    相关推荐
    • c语言测试.rar
      串口触摸屏显示测试,图表闪烁,按键显示资料
    • c51程序集锦
      基本c语言程序,用于学习c语言、单片机。智能化家电控制、软件红外线接收程序、按键扫描驱动程序、串行驱动led显示、显示1616点阵汉字和英文、16进制-10进制互换程序、89C51系列CPU编程器、ACM-12864汉字液晶显示...
    • C51温度时钟.rar
      C51程序,LCD1602显示,C语言 功能实现lcd显示时钟与温度、
    • 22488405tanchishe_C51.rar
      基于8X8led点阵的贪吃蛇C语言程序,含有工程文件 hex等文件
    • 新课程C51单片机C语言课程实验.rar
      独立按键实验 |矩阵键盘实验 | D/A转换实验 | 采用中断的方式,实现数码管计时 | 1602液晶显示实验
    • AD421(C51).rar
      C51下的AD421代码,调试正常,供大家参考使用
    • 51单片机C语言教程
      我看过之后觉得还是很不错的,希望能给大家带来帮助
    • C51 LOCK.rar
      C51模拟密码锁,密码固化到ROM 不能通过按键输入更改
    • C51 KEY SCAN .rar
      C51利用整个端口扫描读取按键值 如计算器输入数据形式相同 从左往右 利用整个端口扫描读取按键值
    • Proteus7.12.rar
      Proteus7.12完美破解版.rar电路仿真软件很好用可以仿真单片数字模拟电路