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;
}
打赏帖 | |
---|---|
分享一种检测按键状态的方法被打赏20分 | |
周末总结一下,STM32C0系列的开发经验被打赏50分 | |
【换取手持数字示波器】MicrochipMPLABHarmony框架下定时器配置被打赏20分 | |
【换取手持数字示波器】MicrochipMPLABHarmony框架下PWM配置被打赏20分 | |
【Cortex-M】Systick Timer使用被打赏10分 | |
分享汽车防盗系统的组成与分类(一)被打赏5分 | |
VOFA+波形显示+JYD-31蓝牙发送和解析不定长数据被打赏10分 | |
【换取手持数字示波器】-STM32F4PWM控制LED灯管亮度被打赏22分 | |
【换取手持数字示波器】STM32F4驱动RPR-0521RS照度、接近一体型传感器被打赏23分 | |
宏定义和const关键字定义被打赏5分 |