PA(阳极)为公共端;(控制行)
P0(阴极)控制绿灯; (控制列)
P2(阴极)控制红灯; (控制列)
/*
*程序名:双色点阵*
*简介:在mini80e实验板上实现跳动的心
*/
#include<reg52.h>
typedef unsigned char uint8;
typedef unsigned int uint16;
//函数的声明:
void time0_init();
void T0_init();
void delayms(uint16);
//常量的定义:
uint8 code line_table[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
uint8 code lat_table[]={0xFF,0x99,0x00,0x00,0x00,0x81,0xC3,0xE7,0xFF};
//变量的定义:
sbit button=P3^7;
bit true=1;
uint8 num0=0;
uint8 num=0;
char top=0;
void main()
{
time0_init();
T0_init();
while(1);
}
//点阵显示函数:
void lattice_play()
{
uint8 linenum=1;
for(;linenum<=8;linenum++)
{
button=1;
P0=line_table[linenum-1];
button=0;
P0=0xff;
P2=lat_table[top+linenum-1];
delayms(1);
}
}
//定时器0初始化函数的定义:
void time0_init()
{
TMOD|=0x01;
TH0=0xfc;
TL0=0x18;
TR0=1;
}
//中断T0初始化函数的定义:
void T0_init()
{
EA=1;
ET0=1;
}
//中断T0的服务函数的定义:
void interrupt_T0() interrupt 1
{
TH0=0xfc;
TL0=0x18;
num0++;
num++;
if(10==num0)
{
num0=0;
lattice_play();
}
if(200==num && true)
{
num=0;
top++;
if(1==top)
{
true=0;
}
}
if(200== num && !true)
{
num=0;
top--;
if(0==top)
{
true=1;
}
打赏帖 | |
---|---|
VOFA+波形显示+JYD-31蓝牙发送和解析不定长数据被打赏10分 | |
宏定义和const关键字定义被打赏5分 | |
换取逻辑分析仪】STM32G4从入门到大师之五:ADC中断方式单路采集电压被打赏16分 | |
【换取逻辑分析仪】STM32G4从入门到大师之四:ADC查询方式单路采集电压被打赏14分 | |
【分享开发笔记,赚取电动螺丝刀】几个单片机I2S外设的BLCK时钟对比被打赏20分 | |
【功率监测与控制系统DIY活动成果贴】DIY功率计与LabVIEW数据采集被打赏100分 | |
【分享开发笔记,赚取电动螺丝刀】使用ESP32S3调试I2S音频模块MAX98357被打赏22分 | |
【Freertos】任务管理被打赏10分 | |
分享博世的两种不同的喷射系统模式被打赏5分 | |
汽车+开路实验与短路实验被打赏10分 |