天翔1c单片机用delay函数控制流水灯循环,定时时间自拟;用定时器0控制数码管从1到F循环,重复,六位数码管同时显示。
主要设计知识:
1、数码管动态扫描
2、定时器配置
3、IO口输入输出
// written by WWD 2021/12/3
//天翔1c单片机用delay函数控制流水灯循环,定时时间自拟;用定时器0控制数码管从1到F循环,重复,六位数码管同时显示。
// 修改指南
/*
首先删除所有注释
变量;num\numt0\ i,j,k可以更换名称
1、将init()函数直接拆到主函数中去、将display函数拆到while循环中去
2、各个函数的名字都可以修改,但是调用时要注意对应
3、delayms()的传入参数x可以自定
4、欢迎关注CSDN博客:孤独的MOS管
*/
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6; //锁存器控制端定义
sbit wela=P2^7;
uchar num=0,numt0=0,i,j,k;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//数码管数表
void init()//初始化函数
{
TMOD=0x11;
TH0=0x4c00;
TL0=0x4c00;
EA=1;
ET0=1;
TR0=1;
}
void delayms(int x)//延时函数
{
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void display(num) //显示函数
{
dula=1;
P0=table[num]; //显示数字
dula=0;
}
void main()//主函数
{
init();//初始化定时器1
wela=1;
P0=0xc0;//选中六位数码管
wela=0;
while(1)
{
for(k=0;k<8;k++)
{
P1=_crol_(0xfe,k);
delayms(500);
}
}
}
void T0_time() interrupt 1//
{
TH0=0x4c00;
TL0=0x4c00;
numt0++;
if (numt0==10) //时间基准值 0.5s
{
numt0=0;
num++;
}
if(num==16)
num=0;
display(num);
}
各位同学作业切记不要交雷同代码,多少动手改点,当然能看懂并且自己写最好。