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;
}
| 有奖活动 | |
|---|---|
| 这个春节你犒赏自己什么了?分享你的故事,有奖征集 | |
| 2026年“我要开发板活动”第三季,开始了! | |
| 硬核工程师专属补给计划——填盲盒 | |
| “我踩过的那些坑”主题活动——第002期 | |
| 【EEPW电子工程师创研计划】技术变现通道已开启~ | |
| 发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
| 【EEPW在线】E起听工程师的声音! | |
| 高校联络员开始招募啦!有惊喜!! | |
我要赚赏金打赏帖 |
|
|---|---|
| OK1126B-S开发板下函数构建及步进电机驱动控制被打赏¥25元 | |
| 【S32K3XX】LPI2C 参数配置说明被打赏¥20元 | |
| OK1126B-S开发板的脚本编程及应用设计被打赏¥27元 | |
| 5v升压8.4v两节锂电池充电芯片,针对同步和异步的IC测试被打赏¥35元 | |
| 【S32K3XX】S32DS LPI2C 配置失败问题解决被打赏¥22元 | |
| 【S32K3XX】FLASH 的 DID 保护机制被打赏¥19元 | |
| OK1126B-S开发板串口通信及其使用被打赏¥18元 | |
| 【S32K3XX】多核 CORE ID 获取被打赏¥18元 | |
| OK1126B-S开发板的GPIO资源及其使用被打赏¥20元 | |
| 【分享开发笔记,赚取电动螺丝刀】三分钟快速上手驱动屏幕(Arduino IDE环境)被打赏¥23元 | |

我要赚赏金
