51单片机编程用什么语言8个led灯反复循环三个点亮方式:以1hz频率闪烁,左移逐次点亮,右移单个点亮

如何控制LED灯以每0.5秒的速度闪烁_百度知道
如何控制LED灯以每0.5秒的速度闪烁
我有更好的答案
楼上的方法可以实现,用单片机也可以实现。具体看你怎么用了。单片机的C程序我给你粘一段,你参考下。#include &STC11.H&#define uchar unsigned char#define uint unsigned intsbit p1_6=P1^6;
void delay(uchar delay_time){ for (n=0;n&delay_n++) {
for(m=0;m&10000;m++); }}void main(){
delay(20);
delay(20);
}}程序很简单,明白其中的方法是最重要的。
采纳率:52%
0.5S=1HZ也就是要求1HZ的频率闪烁用单片机实现首先定时500MS,设定一个标志位B_FLASH_500MS,在主程序里你点亮LED,同时在时间子程序里判断是否到了500MS,时间到了B_FLASH_500MS取反,然后在点亮LED的时候判断是否B_FLASH_500MS=1 ,等于1的话就关闭显示,这样就实现了闪烁。以上为系统写法如果你只要实现闪烁的话,就在500MS到的时候对LED驱动口取反就行了。每500MS取反一次。
通过调节R1和R2的阻值可以得到任意的闪烁速度
为您推荐:
其他类似问题
您可能关注的内容
led灯的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。流水灯程序设计_百度知道
流水灯程序设计
1、 采用51单片机驱动16个LED灯。硬件必须具有电源指示灯、上电复位、手动复位电路、4个以上按键。
2、 编程,使得具有以下功能:
A.流水灯方式3次,间隔约0.5秒。
B.逐次点亮所有灯,按...
c语言汇编都可以
我有更好的答案
很简单啊你没有说是用C语言编写还是用汇编啊(汇编我还没学) =======================电路可以这样设计,①P3口接4*4矩阵键盘或是直接接8个按键。②P0口、P2口 合起来共16个I/O口,直接接16个发光二级管。注意I/O口接三极管的负极,三极管正极串上一个1K的保护电阻,然后接+5V。别忘了P2口的上拉电阻,用10*8的排阻就行(排阻公共端接+5V)其他的就是复位电路、晶振、电源、程序下载口了,都比较简单,而且都是固定模式。指示灯直接用发光二级管串分压电阻接到电源就行了。电源可以用7805稳压(输入电压&5V时),或者直接用5V电就行了。=====================================================================写程序方面:数量比较多,流水灯设计宜用位操作,①流水灯for(i=0;i&7;i++){P2=~pow(2,i);delay(500);}这样就是8位流水灯了剩下的8个一样。delay是一个延时函数,就是让单片机空转消耗时间,可以这样delay(int time){int x=0,y=0;for(x=0;x&x++)for(y=0;y&100;y++);}②16灯逐个点亮。P2=0(开始8个灯都灭)for(i=0;i&7;i++){P2=P2--;(每次点亮一盏灯)delay(500);}这样就可以8位的流水灯另外8个接下来一样的方法点亮,这样就是16灯逐个点亮。============ ③逐渐点亮一个灯用延时长短来控制 sbit P20=P2^0;int m=500for(i=0;i&500;i++){P20=1;delay(m);(灭P2.0口的灯)P20=0;delay(500-m);(亮P2.0口的灯)m--;}这样就可以500级渐亮一个灯了。渐灭类似。④ A-D-A循环可以用for()来实现或者直接来有条件跳转。goto就行了=========================说的比较零碎,自己整合一下就OK;
采纳率:39%
为您推荐:
其他类似问题
流水灯的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。51单片机 用1个按键控制8盏灯,进行花样显示_百度知道
51单片机 用1个按键控制8盏灯,进行花样显示
1按键按下第一下,所有灯全亮2按下第二下,流水灯一次,最后灯全灭3按下低三下,8盏灯闪烁3次后,灭,闪烁频率为1HZ三个步骤
3个步骤循环
我有更好的答案
按照你的要求写的,你可以测试一下看看!/* * * * * * * * * * * * * * * * **/#include &REG52.H&/**
按键*/sbit
Key_In1 = P2^0;sbit
Key_In2 = P2^1;sbit
Key_In3 = P2^2;bit
Update_Flag1;bit
Update_Flag2;bit
Update_Flag3;/*
*/unsigned char const TABLE[] = { 0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F};/**
延时1ms*/void Delay_1ms(unsigned int Cnt){ unsigned int x, for(x = C x & 0; x--)
for(y = 110; y & 0; y--);}void KeyScang(void){
*/ if(Key_In1 == 0) {
Delay_1ms(5);
if(Key_In1 == 0)
Update_Flag1 = 1;
while(Key_In1 == 0); } /*
*/ if(Key_In2 == 0) {
Delay_1ms(5);
if(Key_In2 == 0)
Update_Flag2 = 1;
while(Key_In2 == 0); } /*
*/ if(Key_In3 == 0) {
Delay_1ms(5);
if(Key_In3 == 0)
Update_Flag3 = 1;
while(Key_In3 == 0); } //
LED全亮 */
if(Update_Flag1)
Update_Flag1 = 0;
P1 = 0x00;
P1口LED全亮
循环显示最后全灭
if(Update_Flag2)
Update_Flag2 = 0;
for(i = 0; i & 8; i++)
P1 = TABLE[i];
Delay_1ms(500);
P1 = 0xFF;
LED闪烁3次 */
if(Update_Flag3)
Update_Flag3 = 0;
P1 = 0x00;
Delay_1ms(500);
P1 = 0xFF;
Delay_1ms(500);
P1 = 0x00;
Delay_1ms(500);
P1 = 0xFF;
Delay_1ms(500);
P1 = 0x00;
Delay_1ms(500);
P1 = 0xFF;
Delay_1ms(500);
}}/***/int main(void){ P0 = 0xFF; P1 = 0xFF; P2 = 0xFF; P3 = 0xFF;while(1) {
KeyScang(); }}
你端口跟我的端口以不一样
是1个开关。你这个是三个开关呀
我在帮你改成1个键控制void KeyScang(void){
*/ if(Key_In1 == 0) {
Delay_1ms(5);
if(Key_In1 == 0)
if(++Update_Flag1 &= 4)
Update_Flag1 = 0;
while(Key_In1 == 0); } //
LED全亮 */
if(Update_Flag1 == 1)
P1 = 0x00;
P1口LED全亮
循环显示最后全灭
if(Update_Flag1 == 2)
for(i = 0; i & 8; i++)
P1 = TABLE[i];
Delay_1ms(500);
P1 = 0xFF;
LED闪烁3次 */
if(Update_Flag1 == 3)
P1 = 0x00;
Delay_1ms(500);
P1 = 0xFF;
Delay_1ms(500);
P1 = 0x00;
Delay_1ms(500);
P1 = 0xFF;
Delay_1ms(500);
P1 = 0x00;
Delay_1ms(500);
P1 = 0xFF;
Delay_1ms(500);
采纳率:85%
#include&reg51.h&#define uint unsigned int#define uchar unsigned charsbit key=P2^1;//这里看你把按键设置在哪个引脚上void delay(uint z)
for(x=z;x&0;x--)
for(y=110;y&0;y--);}void key1(){
if(key==0)
}void key2(){
if(key==0)
//左移或右移,这个自己试一下
delay(1000);
.//继续移动到最后一个灯亮
if(P1=0x80)
//判断最后一个灯是否亮了,亮了就全部灭
}}void key3(){
if(key==0)
P1=0x00; //全亮
delay(1000);
这里灭亮几次可以用for循环,不过我是直接写的顺序
//亮灭到达三次
//最后全都灭了
}}void main(){
while(key);
while(key);
while(key);
}} 不知道对不,你自己试下然后修改修改吧
是需要编程吗?用什么语言?还检测按下第四下吗?
需要编程 C51语言 要按第四下 跪求啊
#include &REG52.H&sbit Key = P1^0;void Delay_1ms(unsigned int Cnt){
unsigned int x,
for(x = C x & 0; x--)
for(y = 110; y & 0; y--);}bit KeyRead(void){
Delay_1ms(5);
while(!Key);
while (KeyRead());
//等待第一次按键
//全亮
while (KeyRead());
//等待第二次按键
P0 = 0 Delay_1ms(500);//流水
P0 = 0 Delay_1ms(500);
P0 = 0 Delay_1ms(500);
P0 = 0xf7; Delay_1ms(500);
P0 = 0 Delay_1ms(500);
P0 = 0 Delay_1ms(500);
P0 = 0 Delay_1ms(500);
P0 = 0x7f; Delay_1ms(500);
P0 = 0xFF;
//全灭
while (KeyRead());
//等待第三次按键
Delay_1ms(500);
//全亮
P0 = 0xFF; Delay_1ms(500);
//全灭
Delay_1ms(500);
//全亮
P0 = 0xFF; Delay_1ms(500);
//全灭
Delay_1ms(500);
//全亮
P0 = 0xFF; Delay_1ms(500);
//全灭
为您推荐:
其他类似问题
51单片机的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。问:月
患者信息:女
病情描述:问:月经一直不太准确,这个月去排卵监测,医生说卵泡发育不是特别成熟,过了几天又去医院做了B超,排卵后到现在十八天了怎么还不来月经,麻烦医生帮我解答,谢谢!
最佳回答百姓健康网54312位专家为您在线解答
病情分析:你好,正常的成熟卵泡的大小是18-25mm,低于或大于此标准,那都无法正常的排卵,正常的情况下卵泡每天是以0.2CM的生长速度生长的,通过B超检查直到排卵止
回答时间:
Ta帮助了3472人
修仙小猪男
3岁提问时间:
病情描述:3岁的小孩输了10mg的6542出现发热会怎么样呢?会中毒吗?
医生建议:这种情况考虑为药物不良反应可能,为皮肤汗腺收缩所致,一般不会中毒。暂时可予对症处理。
24岁提问时间:
病情描述:粉刺怎么样消除烟,台脸上之前长过痘痘,但是留下了痘印,很明显。
医生建议:你好,根据现在的情况,这种情况建议你可以涂抹阿达帕林凝胶,需要治疗一周左右的时间,这段时间清淡饮食为主,不要吃辛辣刺激性食物。希望我的回答能给你带来帮助,谢谢!
38岁提问时间:
病情描述:前列腺增生最好的治疗方法
医生建议:你好;根据你的描述'前列腺激光治疗的技术很多,早期常用的激光源有两类:钕-钇铝石榴石和钬-钇铝石榴石激光。建议您听从医嘱,祝您健康
So丶灬低调女
44岁提问时间:
病情描述:前列腺炎治疗多少钱,全部费用多少怀疑自己得了前列腺炎,想去阳江仁济男科医院检查下,但是不知道大致费用多少前列腺炎治疗多少钱,全部费用多少
医生建议:男性前列腺炎的治疗费用跟以下几个因素有关:。。1、病症,病症分轻重,轻的自然费用会少很多,若是有其他并发症,治疗的费用也会有所不同。。。2、治疗方法,现在很多大小医院采用的技术不一样,疗效好的技术,设备也会稍微贵些,收费自然也会贵些。。。3、医院收费标准,每个地区的消费水平都会不一样,那么收费标准也会不一样,不同的地区的大小医院收费也会有所不同前列腺炎的治疗费用是他们最为关心的话题,不同的医院会有不同的治疗方式,而针对不同症状的前列腺炎患者,也是需要因人而异,也要看病情而。。。。定,之后在根据患者的不同的病情制定不同的治疗方案,所以说,前列腺炎的治疗费用是不能一概而论的,需要根据患者病情和医院的治疗方法来定。。。。。
18岁提问时间:
病情描述:请问医生我每天吃饭少外加运动每天下午测体重为什么加0.2kg上去很无语
医生建议:我们每天的体重都是在变化的,一般体重在晨起是最轻的,夜晚是最重的,期间波动16到2斤都是属于正常范围LED的闪烁频率设定
(1)1Hz的频率闪烁是指灯泡等发光物体一秒钟闪烁一次。
2Hz的频率闪烁是指灯泡等发光物体一秒钟闪烁两次。
(2)频率是指单位时间(1秒)内变化次数,单位是Hz。
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!

我要回帖

更多关于 单片机图形化编程软件 的文章

 

随机推荐