实现功能:天翔1c单片机用定时器1以间隔500MS在数码管上依次显示0、1、2、3….C、D、E、F,重复,6位数码管同时显示。
主要涉及知识:
1、数码管动态扫描
2、定时器的配置
// written by WWD 2021/12/3
//天翔1c单片机用定时器1以间隔500MS在数码管上依次显示0、1、2、3….C、D、E、F,重复,6位数码管同时显示。
// 修改指南
/*
首先删除所有注释
变量;num\numt0 可以更换名称
1、将init()函数直接拆到主函数中去、将display函数拆到while循环中去
2、各个函数的名字都可以修改,但是调用时要注意对应
3、欢迎关注CSDN博客:孤独的MOS管
*/
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6; //锁存器控制端定义
sbit wela=P2^7;
uchar num=0,numt0=0;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//数码管数表
void init()//初始化函数
{
TMOD=0x11;
TH1=(65536-45872)/256;
TL1=(65536-45872)%256;
EA=1;
ET1=1;
TR1=1;
}
void display(num) //显示函数
{
dula=1;
P0=table[num]; //显示数字
dula=0;
//P0=0xff;
}//亮 5ms
void main()//主函数
{
init();//初始化定时器1
wela=1;
P0=0xc0;//选中六位数码管
wela=0;
while(1)
{
display(num);
}
}
void T1_time() interrupt 3//
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
numt0++;
if (numt0==10) //时间基准值 0.5s
{
numt0=0;
num++;
}
if(num==16)
num=0;
display(num);
}
各位同学作业切记不要交雷同代码,多少动手改点,当然能看懂并且自己写最好。