历史上的今天
返回首页

历史上的今天

今天是:2025年02月07日(星期五)

正在发生

2020年02月07日 | 单片机8*8LED点阵—显示汉字实验

2020-02-07 来源:51hei

一、读懂代码

因为自身C语言基础比较差,所以决定先把代码看懂然后再在源代码的基础上修改写成自己的点阵显示。


自己对代码的简短理解都写成注释附在下面的源代码中了,有不对的地方请指正


实现现象:下载程序后点阵上显示数字0

            

注意事项:一定要将JOE短接片短接到GND端,如果不需要595后面的小灯点亮可以拔掉JP595短接片。                                                                               

***************************************************************************************/


#include "reg51.h"           //此文件中定义了单片机的一些特殊功能寄存器

#include


typedef unsigned int u16;     //对数据类型进行声明定义

typedef unsigned char u8;


sbit SRCLK=P3^6;//用SRCLK来表示P3口的第六位

sbit RCLK=P3^5;//用RCLK来表示P3口的第五位

sbit SER=P3^4;//用SER来表示P3口的第四位

//SRCLK、RCLK、SER都是下面程序用到的的芯片74hc595中的引脚的名称,想对芯片进一步了解的同学可以看一下代码后面附的链接


u8 ledduan[]={0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00};

u8 ledwei[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};

//二极管点亮的的条件是对应行列分别为高低电平使得电流产生。

//对应本实验实验板即为列线为高电平,行线为低电平时二极管被点亮

//第一行代码控制哪列为高电平即为需要此列是否点亮,第二行控制哪一行为低电平,即某一行被点亮,行列共同点亮时交叉处LED亮灯

//实验板的原理图因为自己看不懂所以这里的行列可能混了【手动狗头】对这个比较清楚的同学可以帮给我指正一下,谢谢。

/*******************************************************************************

* 函 数 名         : delay

* 函数功能         : 延时函数,i=1时,大约延时10us

死循环实现延时功能

*******************************************************************************/

void delay(u16 i)

{

    while(i--); 

}


/*******************************************************************************

* 函数名         : Hc595SendByte(u8 dat)

* 函数功能         : 向74HC595发送一个字节的数据

* 输入           : 无

* 输出             : 无

将一个字节的信息串行输入给74HC595以后由芯片并行输出

*******************************************************************************/

void Hc595SendByte(u8 dat)

{

    u8 a;

    SRCLK=0;

    RCLK=0;

    for(a=0;a<8;a++)

    {

        SER=dat>>7;

        dat<<=1;


        SRCLK=1;

        _nop_();

        _nop_();

        SRCLK=0;    

    }


    RCLK=1;

    _nop_();

    _nop_();

    RCLK=0;

}


/*******************************************************************************

* 函 数 名       : main

* 函数功能       : 主函数

* 输    入       : 无

* 输    出         : 无

*******************************************************************************/

void main()

{           

    u8 i;

    while(1)//轮回点亮循环体

    {

        P0=0x7f;

        for(i=0;i<8;i++)

        {

            P0=ledwei[i];         //位选

            Hc595SendByte(ledduan[i]);  //发送段选数据

            delay(100);        //延时

            Hc595SendByte(0x00);  //消隐,如果的话点阵显示时会出现重影现象

        }   

    }       

}


74HC595芯片资料:http://www.51hei.com/chip/3978.html


二、修改代码


理解代码以后我们对代码进行修改来实现自己的点阵显示。

因为对亮度和别的指标没有要求,所以只需要修改和字符显示的这一段就可以啦


u8 ledduan[]={0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00};


我要显示的是佐字,对应的代码经过推断

 


所以代码修改为


u8 ledduan[]={0x20,0x7f,0xd0,0x71,0x51,0xdf,0x51,0x51};


三、烧录

将代码编译形成新的hex文件后下载到实验板上就OK啦,当然前提是你没有像我一样忘记JOE短接片短接到GND端

推荐阅读

史海拾趣

珠海艾派克(APEXMIC)公司的发展小趣事

近年来,艾派克通过一系列战略性并购,实现了公司的国际化发展。其中最为引人注目的是艾派克科技股份有限公司与太盟投资集团共同牵头收购利盟公司的案例。这次收购不仅使艾派克获得了先进的技术、国际化的品牌和团队,还进一步拓宽了公司的业务范围和市场渠道。通过并购,艾派克成功跻身真正意义上的国际化打印公司,为全球打印行业的未来发展打开了新的想象空间。

Antex公司的发展小趣事

Antex公司始于1917年,当时它主要从事锻件的制造和销售。这一时期的Antex,凭借着对锻造技术的深入研究和不断创新,逐渐在电子行业中崭露头角。公司注重产品质量和客户需求,通过设计、锻造、机械加工、装配的一站式服务,赢得了客户的信赖。

Flamar公司的发展小趣事

随着电子行业的全球化趋势日益明显,Flamar公司积极实施国际化战略,通过设立海外研发中心、生产基地和销售网络,不断拓展全球市场。公司先后在欧洲、亚洲等地建立分支机构,与当地企业建立紧密的合作关系,共同推动电子技术的创新与应用。通过国际市场的开拓,Flamar公司不仅实现了业务规模的快速增长,还进一步提升了品牌的国际知名度和影响力。

振宝佳(DMBJ)公司的发展小趣事

振宝佳(DMBJ)公司自成立之初,就专注于贴片铝电解电容的研发与生产。在1998年之前,公司一直在台湾深耕细作,积累了丰富的技术实力和市场资源。进入21世纪,随着电子产业的快速发展,振宝佳意识到技术突破的重要性。于是,公司投入大量资源,研发出多项专利技术,这些技术不仅提升了产品的性能,也增强了公司的市场竞争力。

世纪金光(CENGOL)公司的发展小趣事

世纪金光(CENGOL)公司自创立之初,就立志要在半导体领域实现自主创新。经过无数次的实验与尝试,公司的研发团队成功攻克了高纯碳化硅粉料提纯技术。这一突破不仅使世纪金光在碳化硅材料领域取得了领先地位,更为后续产品的研发奠定了坚实基础。随着技术的不断完善,世纪金光成功推出了6英寸碳化硅单晶,并实现了量产,这一成就标志着公司在碳化硅材料领域取得了重要进展。

Amprobe公司的发展小趣事

2020年,新冠疫情对全球经济造成了巨大冲击,半导体行业也受到了严重影响。面对这一挑战,世纪金光迅速调整战略,加强内部管理,优化生产流程,确保生产线的稳定运行。同时,公司积极寻找新的市场机遇,加大在新能源汽车、光伏等领域的投入力度。在抗击疫情的过程中,世纪金光不仅保持了业务的稳定增长,还成功抓住了新的发展机遇,为公司的未来发展奠定了坚实基础。

问答坊 | AI 解惑

超宽带无线通信:蓝牙终结者?

如今,无线技术在日益增长的无线应用中扮演着越发重要的角色。   如今,无线技术在日益增长的无线应用中扮演着越发重要的角色。无论是有着美好远景却迟迟难产的3G无线网络,还是让人们开始质疑是否需要3G的无线技术WiMAX,无线技术的应用确然使人 ...…

查看全部问答>

ARM嵌入式软件编程经验谈

A R M 系列处理器是R I S C(R e d u c d e d I n s t r u c t i o n S e t Computing)处理器。很多基于ARM的高效代码的程序设计策略都源于RIS C处理器。和很多R I S C处理器一样,A R M系列处理器的内存访问,也要求数据对齐,即存取“字(Wo r ...…

查看全部问答>

北京千家悦网络科技有限公司招聘信息

公司简介: 北京千家悦网络科技有限公司是一家专门从事嵌入式浏览器开发的高科技企业,公司07年在北京成立,处在中关村繁华的商业地带,已经稳步发展到成长阶段,公司拥有一批技术精湛的研究浏览器精英,造就了“千家悦系列浏览器”各方面的优势, ...…

查看全部问答>

获取机器序列号,非imei码、KernelIoControl返回码

比如我有7台机器码(或者是出厂编号或者是设备码,厂商不同)如下(是商品码,就是一般超市的那种条形码差不多)。 可以在打开电源后,imei码下面找到(我的是联想et690)一行,063056031403     (12位)(显然不是imei的15 ...…

查看全部问答>

关于初学者使用C语言还是汇编语言

严格来讲430的C是ANSI C的一个子集,与汇编的差别主要有: 1、C有if、(do)while、switch等流程控制语句 2、C有有限的数据格式,如char、int、float、dou××e等 3、对430最有特色的R0--R15的使用,C不如汇编 4、430的C不易进行RAM管理 5、43 ...…

查看全部问答>

什么时候触摸板可以来哟?

弱弱的问下大家:都受到触摸板捏吗? 小弟我等着板子玩呢。。下一次发触摸板是什么时候呢?…

查看全部问答>

为什么我的fclose不能关闭文件流呢 大家帮看看呗 我在k40上运行的

void Main_Task(uint_32 data) {     uchar data_test[] = \"K40!\";    uchar data_error[] = \"error\";    uchar data_ok[] = \"OK\";     MQX_FILE_PTR dispfd;     uint_32 param,s ...…

查看全部问答>

请问这篇乘法鉴相器论文的实际作法

大家好: 我找到一篇用 AD633 乘法器做鑑相器的文章,但是我一直看不懂它的實際電路圖要如何接? 文章請在最下面下載。 據我所知,自由軸法的基本原理是這樣子: 對照圖1的伏安法測量原理,Ux為電壓向量,Us為電流向量。 對照圖2,分別測出 ...…

查看全部问答>

基于RL78G14的双轮自平衡小车进度贴--板载小灯点亮

说来惭愧啊,莎莎姐催了我好几次了,到现在才开始进度 进入正题 首先得把CN6、7、8、11跳到1-2上如图 然后装好suitcube+,点击tool如图开启codegenerator plug-in 然后 在主函数上写P7.7=1; 修改 点击下载就ok了 [ 本帖最后由 辉Se天 ...…

查看全部问答>