在本课中,我们要用一个按键来实现跑马灯的 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
51控制舵机0度到90度按键切换,自己探究出来的可实现
上传时间: 2017-12-24
上传用户:15735182247
单片机按键输入 在Keil uVision3中进行源程序设计并生成目标代码,参考程序
上传时间: 2018-06-19
上传用户:1076471061
基于51单片机的时间片轮训程序,程序中有五个任务。 1.按键1扫描任务 2.按键2扫描任务 3.led1驱动任务 4.led2驱动任务 5.led3驱动任务
标签: 程序
上传时间: 2019-05-21
上传用户:zhai8765
300个C51单片机设计proteus仿真源码软件源码:100000秒以内的计时程序10秒的秒表12864LCD图形滚动演示128X64LED160128LCD图文演示1602字符液晶滚动演示程序1602液晶显示的DS1302实时时钟16×16点阵(滚动显示)16×16点阵2(滚动显示)2io5键盘模拟音量数码管显示2×20串行字符液晶演示32x16汉字44行列键盘485全双工通信4×4键盘矩阵控制条形LED显示4个独立式按键控制LED开关4个独立式按键控制LED移位4只数码管滚动显示0~3555可调PWM发生器555的应用6264扩展内存6个16×16点阵74HC154译码器应用74HC59574HC595串入并出芯片应用74LS138译码器应用74LS148扩展中断8051双机通信简例8255并行口扩展实例89C51PWM8x8LED汉字显示8x8点阵做的贪吃蛇游戏8×8LED点阵屏显示数字8只数码管同时显示不同字符8只数码管显示多个不同字符8只数码管滚动显示8~F8只数码管滚动显示单个数字8只数码管滚动显示数字串8只数码管闪烁显示8通道自动温度检测系统仿真(含原程序)ADC0808 PWM实验ADC0809模数转换与显示ADC0832模数转换与显示AT89C51对直流电动机的驱动AVR_UartBCD译码数码管显示数字c51 可预设电压的数控电源(功能强大)clockConterCPU控制的独立式键盘扫描实验da、ad。液晶,传递函数模型综合应用的实例DIY51式数控电源DS1621温度传感器实验ds18b20DS18B20温度传感器实验DS18B20温度检测及其液晶显示HorseLightI2CIIC-24C04与数码管IIC-24C04与蜂鸣器INT0与INT1中断计数INT0中断3位计数INT0及INT1中断计数INT0和INT1控制条形LEDINT1中断5位计数IO并行口直接驱动单个数码管K1-K4 分组控制LEDK1-K4 控制LED移位K1-K4 控制数码管加减演示K1-K4 控制数码管移位显示K1-K4 键状态显示key_lcdks0108 液晶12864LCD频率计仿真LED代码查询V1[1].1LED模拟交通灯LED闪烁M16_AN_CompareM16_EEPROMM16_HorseMAX7221控制数码管动态显示my16key_cNT0中断控制LEDNT0中断计数NumberDisplayP3口流水灯PCF8574PCF8583+LCD1602PCF8591模数与数模转换实验proteus ADDC的练习程序PWMPWMLEDPWM控制LED的亮度仿真程序PWM控制马达的方法PWM波输出(可调)PWM电机正反转pwm程序实例PWM调温RAM扩展练习sscom32串口调试TIMER0与TIMER1控制条形LEDTIMER0控制LED二进制计数TIMER0控制单只LED闪烁TIMER0控制四只LED滚动闪烁TIMER0控制流水灯ULN2803usart_t《lcd1602仿真实例》一个数控直流稳压电源一个步进电机的仿真一步一步教你51_PC串口通信万能逻辑电路实验三机通讯串口仿真mcu_pc串口方式1串行数据转换为并行数据交通灯从左到右的流水灯光藕隔离驱动电机内部函数intrins.h应用举例净水控制器仿真电路刚做好的十个字的led屏模拟有程序包含单片机寄存器的头文件单只按键控制单只数码管滚动显示单只数码管循环显示0-9单只数码管循环显示0~F单片机与PC机串口通讯仿真单片机之间双向通信单片机向PC发送数据单片机向主机发送字符串单片机接收PC发出的数据单片机控制的电动自行车驱动系统单片机数据发送程序发一个用定时器做的PWM基于1602+ds12b80+ds1302+音乐+电子书+流水灯的多功能电子表基于ADC0832的数字电压表基于AT24C02的多机通信基于AT89C51+MAX7219的频率计 附带proteus仿真电路图 实际硬件电路测试通过基于DS1302的日历时钟基于yjwpm测试过的DS18B20仿真实例多功能电子钟多点温度测量多路开关状态指示大屏幕仿真子电路做的一个H型电机驱动电路字符串函数string.h应用举例字符函数ctype.h应用举例宏定义应用举例定时器中断控制的独立式键盘扫描实验定时器控制交通指示灯定时器控制数码动态显示定时器控制数码管动管显示对I2C总线上挂接多个AT24C0
上传时间: 2021-10-27
上传用户:wangshoupeng199
单片机应用的核心技术是什么?是按键,数码管,流水灯,串口。是它们的程序框架。按键和数码管是输入是人机界面,把它们的程序框架研究透了,以后做彩屏或者更花销的显示界面,程序框架也可以通用。流水灯是应用程序是 APP,把它的程序框架研究透了,以后控制飞机大炮的程序框架也是一样。串口是通讯是接口,把它的程序框架研究透了,以后搞 SPI,CAN,USB 等通讯项目时,上层的程序框架也可以通用。
标签: 单片机
上传时间: 2021-10-29
上传用户:bluedrops
SH79F1622是一种高速高效率8051兼容单片机。在同样振荡频率下,较之传统的8051芯片具有运行更快速,性能更优越的特性。SH79F1622保留了标准8051芯片的大部分特性,包括内置256字节RAM和3个16位定时器/计数器。此外, SH79F1622还集成了1280字节外部扩展RAM,以及存储程序的16K字节Flash块。SH79F1622还集成双路音频发生模块,低电压复位, TWI通讯功能, 以及触摸按键与LED共享功能来节省引脚,非常适合于触摸按键应用控制。此外, SH79F1622集成了看门狗定时器, EUART等功能。
标签: 音频发生器
上传时间: 2022-02-13
上传用户:得之我幸78
更新记录2020.08.271. 添加例程“45-IO口推挽输出驱动有源蜂鸣器实验程序”;2. 修改例程“43-高级PWM4N驱动蜂鸣器实验程序”名称为“43-高级PWM4N驱动无源蜂鸣器实验程序”;3. 添加例程“46-端口模式设置”;4. 添加例程“47-SPI互为主从-SS设置主从-串口1透传”;5. 添加例程“48-SPI互为主从-主模式忽略SS-串口1透传”。2020.08.201. 例程“31-硬件SPI访问FLASH-PM25LV040-串口1监控”、“32-IO模拟SPI访问FLASH-PM25LV040-串口1监控”兼容华邦W25X40CL型号Flash,并添加W25X40CL规格书。2020.08.181. 添加例程“44-高级PWM输出两路互补SPWM”以及正弦计算表。2020.08.111. 按照8.3版本实验箱图纸修改现有例程;2. 添加例程“43-高级PWM4N驱动蜂鸣器实验程序”。2020.07.301. 在例程01添加注解“当用户使用硬件 USB 对 STC8H8K64U 系列进行 ISP 下载时不能调节内部 IRC 的频率,但用户可用选择内部预置的 16 个频率(分别是 5.5296M、 6M、 11.0592M、 12M、 18.432M、 20M、 22.1184M、 24M、27M、 30M、 33.1776M、 35M、 36.864M、 40M、 44.2368M 和 48M)。下载时用户只能从频率下拉列表中进行选择其中之一,而不能手动输入其他频率。”2. 添加例程“41-软件修改内部RC主频”;3. 添加例程“42-一线制温度传感器 DS18B20 测温”;4. 添加8.2版本实验箱的原理图跟PCB图,现有程序还是基于8.1版本图纸。2020.07.241. 例程“38-2.4寸ILI9325驱动TFT显示屏实验程序-带触摸功能”调整驱动读写代码,使正常显示时的MCU工作主频最高可调至48MHz。2. 修改ADC相关例程关于AD通道参数的注释。3. 修改EEPRO相关例程TPS擦除等待参数与设置主频一致。4. 添加例程“39-通过USB发送命令读取ADC测试程序”以及配套的上位机测试软件;5. 添加例程“40-USB键盘设备通过P0口矩阵按键模拟小键盘功能”以及键盘按键码表。2020.07.091. 添加例程“37-2.4寸ILI9341驱动TFT显示屏实验程序”以及相关工具及规格书;2. 添加例程“38-2.4寸ILI9325驱动TFT显示屏实验程序-带触摸功能”以及相关工具及规格书。2020.06.281. 添加例程“35-板上的32K xdata测试程序”;2. 添加例程“36-LCD128x64显示图形文字-ST7920”以及“ST7920规格书”。2020.06.231. 添加例程“30-红外发射程序(NEC码)-使用PWM4产生38KHz载波”;2. 添加例程“34-IO扫描键红外发射-同时接收数码管显示用户码键值程序”。2020.06.221. 添加例程“31-硬件SPI访问FLASH-PM25LV040-串口1监控”以及“PM25LV040规格书”;2. 添加例程“32-IO模拟SPI访问FLASH-PM25LV040-串口1监控”;3. 添加例程“33-P1.3做ADC-使用内部基准计算外部电压”。2020.06.191. 添加例程“28-I2C主机模式访问PCF8563-RTC时钟程序”以及“PCF8563规格书”;2. 添加例程“29-红外遥控接收程序(NEC码)-数码管显示用户地址和键值”。2020.06.181. 更改文件夹命名,使例程内容更加一目了然;2. 添加例程“04-利用T0,T1做外部计数器”;3. 添加例程“05-利用定时器测量脉冲宽度”;4. 添加例程“13-串口3中断模式与电脑收发测试”;5. 添加例程“14-串口4中断模式与电脑收发测试”;6. 添加例程“20-使用比较器检测低电压时保存数据到EEPROM”;7. 添加例程“25-高级PWM1-PWM2-PWM3-PWM4,驱动P6口呼吸灯实验程序”;8. 添加例程“26-高级PWM5-PWM6-PWM7-PWM8输出测试程序”;9. 修改串口相关例程的主时钟频率为 22.1184MHz,精确计算115200波特率;10.“17-NTC测温度数码管显示”添加“SNDT2012X103F3950FTF R-T对照表”;11.添加“实验箱8问题清单”文件。2020.06.151. 修改所有例程主时钟频率为 24MHz;2. 添加例程“08-双串口中断收发”;3. 添加例程“09-串口1中断收发”;4. 添加例程“10-串口2中断收发”;5. 添加例程“14-通过串口1命令多字节读写EEPROM测试程序”;6. 添加例程“15-内部掉电检测中断保存EEPROM”;7. 添加例程“17-P1.7输出PWM5做DAC_P1.1做ADC读入DAC输出值_串口1设置占空比”;8. 修改例程“比较器”命名为“18-比较器_P3.7做正极输入源”;9. 添加例程“19-比较器_ADC做正极输入源”;10.添加例程“20-I2C从机中断模式与IO口模拟I2C主机进行自发自收”。2020.06.081. 添加例程“16-P1.7输出PWM做DAC_P1.1做ADC读入DAC输出值_串口1设置占空比”;2. 添加例程“比较器”。2020.06.041. 初版发布;2. 发布例程“01-跑马灯”;3. 发布例程“02-Timer0-Timer1-Timer2-Timer3-Timer4测试程序”;4. 发布例程“03-数码管”;5. 发布例程“04-外中断INT0-INT1-INT2-INT3- INT4测试”;6. 发布例程“05-睡眠-外部中断唤醒”;7. 发布例程“06-睡眠-唤醒定时器唤醒”;8. 发布例程“07-看门狗复位测试程序”;9. 发布例程“11-IO行列扫描键盘数码管显示键值和调整时间”;10.发布例程“12-ADC键盘扫描数码管显示键值和调整时间”;11.发布例程“13-NTC测温度数码管显示”;12.发布文件“STC实验箱8-使用说明书.pdf”;13.发布图纸“实验箱8.1_2020-05-11-PCB.pdf”;14.发布图纸“实验箱8.1_2020-05-11-SCH.pdf”。
标签: stc8h
上传时间: 2022-04-18
上传用户:
本程序基于STC15w408as单片机,配合一片sn74hc595芯片扩展IO口驱动4个4个数码管(四个数码管为时间专用数码管,带时间点显示的。用的时候数码管反向安装,这样可以显示温度符号℃)。用DS1302提供精确时间,18B20提供温度。同时两个IO口连接两个按键,可实现调时。程序开始显示时间,同时按K1K2按键,过7秒后激活显示温度,以后每7秒显示温度2秒。本程序为经验学习程序,可能是我电路板焊接质量不好,导致DS1302备用电池无法使用,无法保存时间。希望大神能给出优化意见。
上传时间: 2022-06-13
上传用户:
STM8S001J3M3的原理图硬件电路,带按键防锁功能(这个太重要了!!,防止程序把烧录IO占用),带iic接口,可用于设计参考。
标签: stm8s001j3
上传时间: 2022-06-29
上传用户:trh505