用单片机c51,c语言编0-9计数器程序!谢谢!!!
硬件电路有问题。, , 替换以下的答案是#包括
51单片机c语言设计,按键控制数码管,依次按下显示0到9循环
#include参考来源:微控制器Baidu百科全书-5 1
51单片机c语言设计,按键控制数码管,依次按下显示0到9循环
5 1 个微控制器是具有强大功能和兼容性的微控制器。它可以模拟6 3 K程序空间,1 6 位地址空间接近6 4 k和6 4 kxdata空间,并实现所有6 4 K 1 6 位地址空间。
该微控制器支持3 2 个IO引脚,并且与调试KEILC5 1 UV2 环境一致。
用户可以使用C5 1 或ASM安装语言进行调试。
5 1 微控制器支持0-4 0MHz晶体振荡器的频率,并且在芯片上具有7 6 8 XDATA字节,用户可以在模拟过程中选择使用。
它还可以模拟双DPTR指示器,删除ALE信号输出,并适应3 00-3 8 4 00bps的所有Baud Rate Communications。
5 1 个微控制器的大小很小,易于插入用户板,靠近用户板,并且没有连接电缆来减少操作过程中的干扰并防止模拟过程中的故障。
仿真引脚使用高质量的镀金引脚来防止随着时间的推移生锈。
在模拟过程中分离监视和用户代码时,将不会有无法模拟的软错误。
RS-2 3 2 接口采用Max2 02 集成电路,以确保串行通信的稳定性和可靠性,远远超出了正常晶体管的简单电路。
在5 1 个MicroController应用程序中,设计人员可以使用其强大功能与C语言结合编写程序以实现各种控制功能。
例如,在使用主控制数字管的项目中,可以顺序实现周期显示0至9 代码的示例如下:#incressionbitk1 = p1 ^0; 1 000临时(i-); 控制数字管的闪烁速度。
在主要函数中,首先建立端口P2 和P1 ,然后插入无限环。
当检测到要按下K1 键时,将增加n个显示编号。
该代码显示了如何通过按键来控制数字管周期以显示数字0到9
c51 实验板 编写8个按键控制程序,按下8个键,在数码管上分别显示1-8
当编写一个使用C5 1 微控制器来控制数字管以显示8 个键的程序时,可以使用多种方法。这里提供了两个简明的代码实现。
第一种方法涉及使用密钥扫描功能来检测密钥状态并根据键值更新数字管显示。
第二种方法使用位移操作通过简化逻辑来确定钥匙值。
第一个方法的代码如下:#include#defineucharunSignedChar#defineUintunSignedInt#defineKeyKeydown1 //按下按#defineKeyPeR0 //按键弹出键#defineled_datep0 // dendect_datep0 // ucharkey_value; //键值codeucharled [] = {0xc0,0xf9 ,0xa4 ,0xB0,0x9 9 ,0x9 2 ,9 2 ,0x8 2 ,0x8 2 ,0xf8 ,0x8 0,0x9 0,}; // voidmain(void); voidkey_scan(void); voidkey_scan(){ucharkey_buff,key_date; key_date = p1 &0xff; 如果(key_date!= 0xff){if(key_state! = keydown){if(key_first == 1 ){key_buff = key_date; key_first = 0;} else {if(key_date == key_buff){key_value = 〜ke y_date; key_state = keydown;}}}}} else {key_first = 1 ; key_state = keyup;}} voidmain(){while(1 ){key_scan(); swit ch(key_value){case0x01 :{led_date = led [1 ];} break; case0x02 :{led_date = led [2 ];} break; case0x04 :{led_date = LED [3 ];}断裂; case0x08 :{led_date = led [4 ];} break; case0x1 0:{led_date = led [5 ];} break; case0x2 0:{led_date = l ED[6 ];}break;case0x4 0:{led_date=LED[7 ];}break;case0x8 0:{led_date=LED[8 ];}break;default:break;}}}The code of the second method is as follows: #include#defineucharunsignedchar#defineuintunsignedint#defineKEYDOWN1 //Press the key to #defineKEYUP0//Press 键弹出#dendeleled_datep0 // LED数据端口bitkey_first = 1 ; //首次键pre ss pre ss bitkey_state = keyup; //键状态ucharkey_value; //键值 codeucharled [] = {0xc0,0xf9 ,0xa4 ,0xB0,0x9 9 ,0x9 9 2 ,0x9 2 ,0x8 2 ,0xf8 ,0x8 0x8 0,0x9 0; // // LED片段代码常见的正极阳性管voidmain(void voidmain) an(void); voidkey_scan(){uchari,key_buff,key_date; key_date = p1 &0xff; if(key_date!= 0xff){if(key_state!= keydown){if(key_first == 1 ){key_buff = key_date; key_first = 0;} else {if(key_date == key_buff){for(i = 0; i <8 ; i <8 ; i ++ for) ){如果(! key_first = 1 ; key_state = keyup;}} voidmain(){while(1 ){key_scan(); led_date = key_value;}}} 这两种方法都有效地实现了使用8 个键控制数字管以显示数字1 至8 的功能。
第一种方法使用案例语句来确定键值一,而第二种方法使用位移操作来简化逻辑,从而使程序更加紧凑。
可以根据实际需求选择和使用这两种方法。