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;
}
我要赚赏金打赏帖 |
|
|---|---|
| 给28BYJ-48三自由度机械臂加一个网页控制台被打赏¥32元 | |
| 用28BYJ-48电机从零搭一台三自由度机械臂被打赏¥33元 | |
| 【英飞凌开发经验】ModusToolbox配置EdgeTalk外设被打赏¥27元 | |
| 基于BQ76952PFBR的BMS保护板热插拔损坏的原因和处理措施被打赏¥32元 | |
| 三分钟快速上手搭建nRF Connect SDK开发环境(VSCode)被打赏¥25元 | |
| 告别手动建模:我让AI用FreeCAD画了个开发板外壳被打赏¥30元 | |
| 【瑞萨RA8D1测评】总结收官——从IMU动作识别到LVGL桌宠被打赏¥33元 | |
| 【瑞萨BLE/WIFI模块测评】MPU6050双链路对比被打赏¥30元 | |
| 【瑞萨BLE/WIFI模块测评】DA14531被打赏¥28元 | |
| 【瑞萨BLE/WI-FI模块测评】DA16200被打赏¥28元 | |

我要赚赏金
