一、简述
使用8×8LED点阵显示汉字。向上滚动”中华”两个汉字。
文件打包:链接: https://pan.baidu.com/s/1oHSAIY6qVA7qFFWUvMvJEA 密码: snyg
二、效果
三、工程文件结构
1、Keil工程
2、仿真电路图
四、代码
88led.c文件
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
uchar code led[]={0xEF,0xEF,0x83,0xAB,0xAB,0x83,0xEF,0xEF,0xD5,0x93,0x55,0xC0,0x00,0xEF,0xEF,0xEF};//汉字“中华” 点阵码
uchar code led_w[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//对应1~8行,赋给P2口,控制在哪一行显示
/********************************************************************/
//函数名:delay_1ms(uint x)
//功能:利用定时器0精确定时1ms; 自加 time_t的值为后面时间调整函数服务
//调用函数:
//输入参数:x,1ms计数
//输出参数:
//说明:延时的时间为1ms乘以x
/********************************************************************/
void delay_1ms(uint x)
{
TMOD=0X01;//开定时器0,工作方式为1
TR0=1;//启动定时器0;
while(x--)
{
TH0=0Xfc;//定时1ms初值的高8位装入TH0
TL0=0X18;//定时1ms初值的低8位装入TL0
while(!TF0);//等待,直到TF0为1
TF0=0; //重置溢出位标志
}
TR0=0;//停止定时器0;
}
/**********************************************************/
//函数名:ledplay()
//功能:led点阵显示程序
//调用函数:
//输入参数:
//输出参数:
//说明:
/**********************************************************/
void ledplay()
{
uchar i,y,j;
y=0; //稳定显示电平,平滑滚动,每8行数据显示10次
j=0;//数据偏移,每次偏移1位
while(1)//实现汉字向上滚动效果
{
for(i=0;i<8;i++)//显示8行数据
{
P0=0xFF;//消除上次电平的影响
P2=led_w[i];//控制显示行
P0=led[i+j];//行电平数据
delay_1ms(3);//延时3ms
}
y++;
if(y>9)
{
P0=0xFF;//消除上次电平的影响
delay_1ms(1);//延时,确保消除上次电平的影响
y=0;
j++;
if(j>8) //"中华"二字一共16行电平数据(0~15),i+j要<15
j=0;
}
}
}
/**********************************************************/
//主程序
/**********************************************************/
void main()
{
ledplay();//调用显示程序;
}
五、总结
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/200902.html原文链接:https://javaforall.cn
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有