作业帮 > 综合 > 作业

《单片机的原理与应用》节日彩灯的设计

来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/05/24 01:24:39
《单片机的原理与应用》节日彩灯的设计
要求用单片机控制8只小彩灯(发光二级管),使小彩灯按照其要求亮灭.第一秒:二极管D1、D3亮,其他灭;第二秒钟二级管D2、D4亮,其他灭;第三秒D5、D7亮,其他灭;第四秒D6、D7亮,其他灭;第五秒D1、D3、D5、D7亮,其他灭;第六秒D2、D4、D6、D8、亮,其他灭;第七秒全亮;第八秒全灭,如此循环.
我到现在还没弄出来 再做不完我就要留校了
《单片机的原理与应用》节日彩灯的设计
程序如下,P0口改为P1、P2或P3口可以省略电路图中的上拉电阻.
注意:无论选择哪组I/O,每个LED都要串联一个220Ω或470Ω的电阻.
#include "reg51.h"
#define uint unsigned int
#define uchar unsigned char
uchar code tab[]={0xfa,0xf5,0xaf,0x5f,0xaa,0x55,0x00,0xff};//分别为1和3亮、2和4亮、5和7亮、6和8亮、奇数位亮、偶数位亮、全亮、全灭
uchar t,num;
void InitUART  (void)
{
TMOD=0x01; //定时器0 工作方式1即16位定时
TH0=0x3c; //装入初值,定时50ms
TL0=0xb0;
TR0=1;
ET0=1;                     
    EA    = 1;                  //打开总中断
}
main()
{
InitUART  ();
P0=tab[num];   //先让等处于第一种状态
while(1)
{;}
}
Timer0() interrupt 1
{
TH0=0x3c;   //手动重装初值,定时50ms
TL0=0xb0;
t++;
if(t==20)

t=0;  //够20次,即计数时间为20*50ms=1s.计时次数清零,准备下一秒的计时
num++;  //num指向下一种状态
if(num==8) num=0;
P0=tab[num];  //则切换至相应的状态
}
}


纯手打,望采纳···
再问: 用汇编语言编写程序怎么弄,老师说用汇编语言 帮帮忙谢谢了
再答: ORG 0000H LJMP MAIN ORG 002bH ljmp timer0_1 ORG 0033h MAIN: MOV R0,#20 MOV R1,#0 MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H SETB TR0 SETB ET0 SETB EA CLR A MOV DPTR,#TAB MOVC A,@A+DPTR MOV P0,A SJMP $ timer0_1: MOV TH0,#3CH MOV TL0,#0B0H DJNZ R0,NEXT MOV R0,#20 INC R1 CJNE R1,#8,DISTAB MOV R1,#0 DISTAB: MOV A,R1 MOVC A,@A+DPTR mov P0,A NEXT: RETI TAB: DB 0FAH,0F5H,0AFH,05FH,0AAH,55H,00H,0FFH END 好了,汇编水平差了些