如何用c51做一个流水灯
答:MOV TMOD,#10H;定时器1工作于方式1,16位定时器 MOV TL1,#0B0H;设置定时初值 MOV TH1,#3CH;定时时间=50mS SETB ET1;使能定时器1中断 SETB TR1;启动定时器1 SETB EA;开总中断 MOV P1,LED;初始化流水灯 ;LOOP:JMP LOOP;循环等待中断 ;;T1INT:PUSH PSW;定时器1中断程序 PUSH ACC;保护现场...
答:这里我们利用Proteus绘制单片机流水灯的电路图,keil c51编写流水灯的程序。仿真既可以帮助我们学习,也可以检验电路是否合理。防止电路已经焊接完成,但设计不合理的情况。我们打开Proteus软件,点击左边菜单栏的P按钮 然后再搜索框里输入80c51,选择第一个就是80c51单片机 同理,我们在搜索框里面输入led 找到...
答:再把第一个灯点亮,再关掉第一个灯,再点亮第二个灯。。。把它放在do循环里就OK了,熟练了后,加个for循环简化一下程序,设几个变量就行了。 1 已赞过 已踩过< 你对这个回答的评价是? 评论 分享 微信扫一扫 网络繁忙请稍后重试 新浪微博 QQ空间 举报 收起 xie0500150326 来自电脑网络类芝麻团 2011-10-...
答:数组可以,直接也可以 数组的话,比如定义个数组,uchar led[]={0xfe,0xfd,0xfb,0x07………};for(i=0;i<8;i++){ P0=led[i];delayms(1000)} 直接的话,同样的道理,只是代码比较多一些,每次重新赋值一次P0都需要延时一下。更简单的程序如下:include<reg51.h> //包含单片机寄存器的头...
答://软件延时,使P1口外接的8个发光二极管,以每秒1位的速度,轮流发光。//发光顺序:0123,1234,2345,3456,4567,5670,6701,7012。循环。//--- include<reg52.h> include<intrins.h> unsigned char a;void main(){ unsigned char i, j, k;a = 0x0f;while(1) { P1 = a; //...
答:0xaa = 1010_1010移位7次以后变成0000_0000,你在while(1)循环里面直接这么写,移位7次是瞬间的事,时间不到20uS,你觉得有哪个人可以感觉得到这个时间?
答:一般每一个流水灯通过1位来控制,该位为0则点亮,为1则灭。软件中可能用到:1、操作符<<或>>,比如8位流水灯,初始全灭,然后顺序点亮 uchar x=0xFF,i for(i=0;i<8;i++){ x<<=1; //左移1位,最低位补0 P1 = x; //输出,假设LED接在P1口的8个脚上 delay300ms();//...
答://假设有8个LED通过上拉电阻接到P1端口, 高电平灯灭,低电平灯亮,逐个循环点亮 include <reg51.h> unsigned char data tab1[9]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00};void delay(){ unsigned int data n;for (n=0;n<40000;n++){ ;} } void main(){ unsigned char...
答:单片机原理流水灯实验报告: 一、实验目的:进一步熟习keil仿真软件、proteus仿真软件的使用。认识并熟习单片机I/O口和LED灯的电路构造,学会建立简单的流水灯电路。掌握C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项。二、实验原理:MCS-51系列单片机有四组8位并行I/O口,记作P0、P1、P2...
答:while(1);} void T0_INT() interrupt 1 { TH0 = (65536 - 1000) / 256;TL0 = (65536 - 1000) % 256;n++;if(n >= 1000) { n = 0;m++;if (m == 8) {m = 0; temp = 254;} else {temp <<= 1; temp += 1;} } if(n < 500) {SPK = ~SPK; P2 = temp;}...
网友评论:
宿进13225143651:
C51单片机编程,按键控制流水灯 -
2694法蓉
: #include "reg51.h" unsigned char led[]={0xfe,0xfd,0xfb,0xf7}; //LED灯的花样数据 void delay(unsigned char time){ //延时函数unsigned int j=15000;for(;time>0;time--)for(;j>0;j--); } void main(){bit dir=0,run=0; //标志位定义及初始化char i;...
宿进13225143651:
c51单片机怎样利用中断程序写一个流水灯 -
2694法蓉
: 设置定时器初值并开启中断,在中断服务函数中重新载入初值并写入将要循环运行的流水灯程序即可,主函数中完成初始化后进入while(1);死循环.
宿进13225143651:
c51单片机中如何用汇编语言编写流水灯 -
2694法蓉
: 51单片机用汇编语言编写流水灯程序,就是控制多个LED ,使其在特定时间间隔内,只有一个LED 发光,其他熄灭,用这种方式顺序移动点亮LED的位置,就形成了流水灯的效果.以下是程序: ;假设晶振12MHZ,P1控制8个LED低电平亮 ;...
宿进13225143651:
c51单片机流水灯编程 -
2694法蓉
: 注意共地 #include <REGX51.H> #define uchar unsigned char #define uint unsigned intunsigned long cnt1 = 0; uint htime=1000; uint ltime=1000; uchar X = 0x01;void delay_ms(unsigned long timer_cnt) { cnt1=0; while(cnt1 < timer_cnt); }void ...
宿进13225143651:
c51单片机怎样利用中断程序写一个流水灯程序要求:先是8盏灯全亮
2694法蓉
: #include unsigned int LED; unsigned int a,i,m; void yiwei(); void delay(unsigned int b);... LED = LED 0; b--) //机器在这里执行需要一段时间 也就达到了延时效果 for(j = 255; ...
宿进13225143651:
C51流水灯编程 -
2694法蓉
: 呵呵,你那样写第一个while跳不出,误以为是两段代码同时工作吧?帮你改了你那个程序,但是那样的话效果不是同时往中间亮,而是一边先亮到中间,再是另一边亮到中间 while(1) { loop: while(1) { P1=output; delay(); output>>=1; output&=0xf0; ...
宿进13225143651:
用c51程序编写8个流水灯程序低电平灯亮 高电平灯灭 -
2694法蓉
: #include<reg52.h> unsigned char MAIN_Buf[] = {0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F, }; void Delay_1ms(unsigned int Time) {unsigned int x,y;for(x = Time; x > 0; x--)for(y = 120; y > 0; y--); } int main(void) {unsigned char i;...
宿进13225143651:
用c51单片机设计花样流水灯.8个发光二极管在p1口. 1:用左向右流动,然后全部闪烁两次 2:由右向左流动,然后全部闪烁两次 3:由左向右1,3,5,7,流动闪烁,由右向左2,4,6,8流动闪烁 4:有中间4,5向中间流动,然后由两边向中间流动. 急求 求完整程序 老师留的作业 -
2694法蓉
: 授鱼于人不如授渔于人! 可以将这些花样方式写成一个数组,如Tab = {0x7f,0x3f,……},然后用for循环调用即可,当然还有其他的方法!如果想学习可以找我
宿进13225143651:
急求:C51单片机,做一个流水线的小灯! -
2694法蓉
: C语言:#includenbsp;amp;lt;reg52.hamp;gt;#definenbsp;ucharnbsp;unsignednbsp;char#definenbsp;uintnbsp;unsignednbsp;int//延时子程序voidnbsp;mDelay(ucharnbsp;Delay){nbsp;nbsp;nbsp;ucharnbsp;i;nbsp;nbsp;nbsp;nbsp;for(;Delayamp;gt;...
宿进13225143651:
我想用C51做一个流水灯 -
2694法蓉
: 单片机这东西你得有电路,你的LED是装在那个IO口的,我的这个程序是放在P1口的. #include <reg51.h>#include <intrins.h>unsigned char a,b,k,j;void delay() { for(a=100;a>0;a--) for(b=225;b>0;b--); }void main(){ k=0xfe; while(1) { for(a=8;a>0;a--) { j=_crol_(k,1); k=j; P1=j; delay(); } for(a=8;a>0;a--) { j=_cror_(k,1); k=j; P1=j; delay(); } }}