在本课中,我们要用一个按键来实现跑马灯的 10 级调速。这又会涉及到键的去抖的问 题。 本课的试验结果是,每按一次按键,跑马速度就降低一级,共 10 级。 这里我们又增加了一个变量 speedlever,来保存当前的速度档次。 在按键里的处理中,多了当前档次的延时值的设置。 请看程序: ―――――――――――――――― #define uchar unsigned char //定义一下方便使用 #define uint unsigned int #define ulong unsigned long #include <reg52.h> //包括一个 52 标准内核的头文件 sbit P10 = P1^0; //头文件中没有定义的 IO 就要自己来定义了 sbit P11 = P1^1; sbit P12 = P1^2; sbit P13 = P1^3; sbit K1= P3^2; bit ldelay=0; //长定时溢出标记,预置是 0 uchar speed=10; //设置一个变量保存默认的跑马灯的移动速度 uchar speedlever=0; //保存当前的速度档次 char code dx516[3] _at_ 0x003b;//这是为了仿真设置的 //一个按键控制的 10 级变速跑马灯试验 void main(void) // 主程序 { uchar code ledp[4]={0xfe,0xfd,0xfb,0xf7};//预定的写入 P1 的值 uchar ledi; //用来指示显示顺序 uint n; RCAP2H =0x10; //赋 T2 的预置值 0x1000,溢出 30 次就是 1 秒钟 RCAP2L =0x00; TR2=1; //启动定时器 ET2=1; //打开定时器 2 中断 EA=1; //打开总中断 while(1) //主程序循环 { if(ldelay) //发现有时间溢出标记,进入处理 { ldelay=0; //清除标记 P1=ledp[ledi]; //读出一个值送到 P1 口 ledi++; //指向下一个 if(ledi==4) { ledi=0; //到了最后一个灯就换到第一个 } } if(!K1) //如果读到 K1 为 0 { for(n=0;n<1000;n++); //等待按键稳定 while(!K1); //等待按键松开 for(n=0;n<1000;n++); //等待按键稳定松开 speedlever++; if(speedlever==10)speedlever=0; speed=speedlever*3; //档次和延时之间的预算法则,也可以用查表方法,做出 不规则的法则 } } } //定时器 2 中断 timer2() interrupt 5 { static uchar t; TF2=0; t++; if((t==speed)||(t>30)) //比较一个变化的数值,以实现变化的时间溢出,同时限制了最慢速 度为 1 秒 { t=0; ldelay=1;//每次长时间的溢出,就置一个标记,以便主程序处理 } } ―――――――――――――――――――――― 请打开 lesson11 目录的工程,编译,运行,看结果: 按 K1,速度则降低一次,总共 10 个档次。
上传时间: 2017-11-06
上传用户:szcyclone
RC5编码格式的遥控器解码、PCA9633器件控制代码示例、串口通信程序示例、IIC通信示例
标签: 9633 RC5 PCA IIC 编码 器件 代码 串口通信 控制 程序
上传时间: 2019-07-03
上传用户:zqy1818
控制器局域网(CAN)为串行通讯协议,能有效地支持具有很高安全等级的分布实时控制。CAN 的应用范围很广,从高速的网络到低价位的多路接线都可以使用CAN。在汽车电子行业里,使用CAN 连接发动机控制单元、传感器、防刹车系统、等等,其传输速度可达1 Mbit/s。同时,可以将CAN 安装在卡车本体的电子控制系统里,诸如车灯组、电气车窗等等,用以代替接线配线装置。
上传时间: 2021-11-30
上传用户:xsr1983
该文档为单片机串口通信控制步进电机总结文档,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看………………
标签: 单片机
上传时间: 2022-05-01
上传用户:shjgzh
RS485串口接收数据控制LED.zip
上传时间: 2022-05-03
上传用户:wangshoupeng199
stm32移植FreeRTOS操作系统,写了个例程,通过串口中断收发数据控制LED亮灭
上传时间: 2022-05-21
上传用户:
08 串口通讯简单实现【单片机控制】AVR 单片机程序08 串口通讯简单实现【单片机控制】【第6节 超时实验】.vep - 66.64MB09 串口通讯详细实现【单片机控制】【第6节】.vep - 46.72MB09 串口通讯详细实现【单片机控制】【第5节】.vep - 67.90MB09 串口通讯详细实现【单片机控制】【第4节】.vep - 41.87MB09 串口通讯详细实现【单片机控制】【第3节】.vep - 51.16MB09 串口通讯详细实现【单片机控制】【第2节】.vep - 51.10MB09 串口通讯详细实现【单片机控制】【第1节】.vep - 1.91MB......
上传时间: 2022-05-26
上传用户:bluedrops
说明:Microchip Technology Inc.采用存储容量为1 Kb至1Mb的低电压串行电可擦除PROM(Electrically Erasable PROM,EEPROM),支持兼容串行外设接口(Serial Peripheral Interface,SPI)的串行总线架构,该系列器件支持字节级和页级功能,存储容量为512 Kb和1Mb的器件还通常与基于闪存的产品结合使用,具有扇区和芯片擦除功能。所需的总线信号为时钟输入(SCK)线、独立的数据输入(S1)线和数据输出(SO)线。通过片选(CS)输入信号控制对器件的访问。可通过保持引脚(HOLD)暂停与器件的通信。器件被暂停后,除片选信号外的所有输入信号的变化都将被忽略,允许主机响应优先级更高的中断。整个SPI兼容系列器件都具有标准的8引脚PDIP和SOIC封装,以及更高级的封装,如8引脚TSSOP,MSOP.2x3DFN,5x6 DFN和6引脚SOT-23封装形式。所有封装均为符合RoHS标准的无铅(雾锡)封装。引脚图(未按比例绘制)
上传时间: 2022-06-20
上传用户:fliang
51单片机控制多路舵机,用定时器产生PWM波,可以用串口给它发数据控制.zip
上传时间: 2022-06-28
上传用户:slq1234567890
瑞萨开发板设计例程 具体的ADC转换、pwm控制、串口通信
上传时间: 2022-07-06
上传用户: