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;
}
我要赚赏金打赏帖 |
|
|---|---|
| 片外存储Flash使用方法(Arduino IDE环境)被打赏¥22元 | |
| 三分钟快速上手ESP-NOW(ArduinoIDE环境)被打赏¥23元 | |
| 【S32K3XX】LPSPI参数配置说明被打赏¥21元 | |
| 在WT9932C61-TINY上实现超声波测距被打赏¥22元 | |
| 基于WT9932C61-TINY的环境构建及OLED屏驱动测试被打赏¥20元 | |
| 【S32K3XX】Core-to-Core 中断使用被打赏¥21元 | |
| 「AI编程记录--含源码」用一晚上的时间写一个esp32的示波器被打赏¥19元 | |
| STM32C0116DK开发探索记(3)被打赏¥30元 | |
| STM32C0116DK开发探索记(2)被打赏¥24元 | |
| STM32C0116DK开发探索记(1)被打赏¥29元 | |

我要赚赏金
