历史上的今天
返回首页

历史上的今天

今天是:2025年04月01日(星期二)

正在发生

2020年04月01日 | 51_单片机_点阵深度分析

2020-04-01 来源:eefocus

感谢 大熙熙 的代码解析 


网址 http://www.cnblogs.com/one-meter/p/4188277.html  


他对具体的代码做了形象的解释 


由于部分代码解析还不够具体  融入了 个人对该代码的理解


网上类似的源码很多, 可以自己找个合适的进行学习和验证


我是参考普中单片机的源码(注释函数太少)


代码如下:

#include


 #include


//重定义 函数变量

#define uchar unsigned char

#define uint unsigned int

#define ulong unsigned long

 //spi 所使用的 3个管脚 并进行定义


sbit MOSIO =P3^4;

sbit R_CLK =P3^5;

sbit S_CLK =P3^6;


//--点阵显示数组--//

uchar code tab0[] = {0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08,

 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80,

 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00,

 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x00}; 

//--10字模--//

uchar code tab1[] = 

{0, 0, 0, 0, 0, 0, 8, 24, 14, 36, 8, 66, 8, 66, 8, 66, 

 8, 66, 8, 66, 8, 66, 8, 36, 62, 24, 0, 0, 0, 0, 0, 0};


//--09字模--//

uchar code tab2[] = 

{0, 0, 0, 0, 0, 0, 24, 24, 36, 36, 66, 66, 66, 66, 66,

 66, 66, 100, 66, 88, 66, 64, 66, 64, 36, 36, 24, 28, 0, 0, 0, 0} ;


//--08字模--//

uchar code tab3[] = 

{0, 0, 0, 0, 0, 0, 24, 60, 36, 66, 66, 66, 66, 66, 66, 36,

66, 24, 66, 36, 66, 66, 66, 66, 36, 66, 24, 60, 0, 0, 0, 0};


//--07字模--//

uchar code tab4[] = 

{0, 0, 0, 0, 0, 0, 24, 126, 36, 34, 66, 34, 66, 16, 66, 16,

 66, 8, 66, 8, 66, 8, 66, 8, 36, 8, 24, 8, 0, 0, 0, 0};


//--06字模--//

uchar code tab5[] = 

{0, 0, 0, 0, 0, 0, 24, 56, 36, 36, 66, 2, 66, 2, 66, 26, 66,

 38, 66, 66, 66, 66, 66, 66, 36, 36, 24, 24, 0, 0, 0, 0};


//--05字模--//

uchar code tab6[] = 

{0, 0, 0, 0, 0, 0, 24, 126, 36, 2, 66, 2, 66, 2, 66, 26, 66,

 38, 66, 64, 66, 64, 66, 66, 36, 34, 24, 28, 0, 0, 0, 0};


//--04字模--//

uchar code tab7[] = 

{0, 0, 0, 0, 0, 0, 24, 32, 36, 48, 66, 40, 66, 36, 66, 36, 66,

34, 66, 34, 66, 126, 66, 32, 36, 32, 24, 120, 0, 0, 0, 0};


//--03字模--//

uchar code tab8[] = 

{0, 0, 0, 0, 0, 0, 24, 60, 36, 66, 66, 66, 66, 32, 66, 24, 66,

 32, 66, 64, 66, 64, 66, 66, 36, 34, 24, 28, 0, 0, 0, 0};


//--02字模--//

uchar code tab9[] = 

{0, 0, 0, 0, 0, 0, 24, 60, 36, 66, 66, 66, 66, 66, 66, 32, 66,

 32, 66, 16, 66, 8, 66, 4, 36, 66, 24, 126, 0, 0, 0, 0};


//--01字模--//

uchar code tab10[] = 

{0, 0, 0, 0, 0, 0, 24, 8, 36, 14, 66, 8, 66, 8, 66, 8, 66, 8, 66,

8, 66, 8, 66, 8, 36, 8, 24, 62, 0, 0, 0, 0};


//--00字模--//

uchar code tab11[] = 

{0, 0, 0, 0, 0, 0, 24, 24, 36, 36, 66, 66, 66, 66, 66, 66, 66, 66,

66, 66, 66, 66, 66, 66, 36, 36, 24, 24, 0, 0, 0, 0};


//--GO--//

uchar code tab12[] = 

{0, 0, 0, 0, 0, 0, 60, 28, 34, 34, 34, 65, 1, 65, 1, 65, 1, 65, 113,

 65, 33, 65, 34, 65, 34, 34, 28, 28, 0, 0, 0, 0};


//全局变量 


ulong column; //列

ulong row; //行

ulong dt;


//具体分析 查看 函数实现方法

void HC595_data(uchar BT3,uchar BT2,uchar BT1,uchar BT0);


void main()

{

int  k=0;


while(1)

{

 //for()   this is used by  how long 


for(k=0;k<16;k++)

{

HC595_data(~tab12[2*k+1],~tab12[2*k],tab0[2*k],tab0[2*k+1]);

}

   HC595_data(0xff,0xff,0,0);

}

}


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

 BT3 是第2列    。。。。。。。 因此

 输入为   列2 列1   行1(值是行2的值)  行2(值是行1的值)   

 然而 实际不是这样  

 原因是  74h595 是4个并联的 相当于 8个 8*8

 而且只有一个输入  当输入值时 会进行进位操作

 可以理解为 压栈 

 所以变成了 行2(值是行1的值) 行 1 (值是行2的值) 列 2  列 1   

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

void HC595_data(uchar BT3,uchar BT2,uchar BT1,uchar BT0)

{

uchar i;

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

{

MOSIO=BT3>>7;   //BT 右移7位  即是得到最高位的值

BT3<<=1; //左移1位  最高为溢出,第7位变成最高位,达到按位输入的功能

S_CLK=0; //开始累加

S_CLK=1; //关闭

}


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

{

MOSIO=BT2>>7;   //BT 右移7位  即是得到最高位的值

BT2<<=1; //左移1位  最高为溢出,第7位变成最高位,达到按位输入的功能

S_CLK=0; //开始累加

S_CLK=1; //关闭

}


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

{

MOSIO=BT1>>7;   //BT 右移7位  即是得到最高位的值

BT1<<=1; //左移1位  最高为溢出,第7位变成最高位,达到按位输入的功能

S_CLK=0; //开始累加

S_CLK=1; //关闭

}


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

{

MOSIO=BT0>>7;   //BT 右移7位  即是得到最高位的值

BT0<<=1; //左移1位  最高为溢出,第7位变成最高位,达到按位输入的功能

S_CLK=0; //开始累加

S_CLK=1; //关闭

}

R_CLK = 0; //set dataline low

R_CLK = 1; //片选

R_CLK = 0; //set dataline low

}

推荐阅读

史海拾趣

Helium公司的发展小趣事

2017年,随着区块链技术的兴起,Helium团队看到了新的机遇。他们意识到区块链的透明性和自确认性可以为物联网网络的建设带来革命性变化。于是,Helium决定将网络建设“去中心化”,并借助区块链技术重新定义激励机制。这一决策标志着Helium从单纯的物联网项目转变为融合区块链技术的创新企业。通过去中心化的方式,Helium降低了网络建设和维护的成本,加速了网络覆盖的速度,为物联网设备提供了更加便捷和经济的连接方案。

HANA Micron公司的发展小趣事

在电子配件领域,Hama始终保持着对技术创新的追求。公司不断投入研发资源,推出了一系列具有自主知识产权的高精度、高可靠性的检测仪表产品,如激光测距仪、激光柜位计等,广泛应用于钢铁、矿山、化工等行业。这些创新产品不仅满足了客户的多样化需求,也提升了生产效率和产品质量,赢得了市场的广泛认可。同时,Hama还积极拓展国际市场,产品出口到欧洲、美洲、亚洲等多个国家和地区,进一步提升了其国际影响力。

Delphi Connection Systems公司的发展小趣事

随着市场的不断发展,Delphi Connection Systems公司意识到单靠自身的力量难以在激烈的市场竞争中立足。于是,公司积极寻求与其他企业的战略合作,通过资源共享、优势互补,共同开拓市场。公司与一家知名的汽车制造商建立了战略合作关系,为其提供高质量的连接器产品,从而成功进入了汽车电子行业市场。

HSMC公司的发展小趣事

HSMC的发展离不开巨额的资金投入。公司项目总投资额达到约200亿美元(另一说法为1280亿元人民币),这一庞大的投资规模使得HSMC能够迅速构建起先进的生产设施。项目规划包括建设14纳米及7纳米以下节点的逻辑工艺生产线,以及晶圆级先进封装生产线。这些生产线预计月产能可达数万片,为市场提供高质量的芯片产品。

First Switchtech公司的发展小趣事

随着物联网、智能家居等新兴技术的兴起,First Switchtech公司(或类似公司)看到了跨界合作的新机遇。公司积极与智能家居厂商、物联网平台等合作伙伴开展深度合作,共同研发具有创新性的智能开关产品。这些产品不仅实现了开关的远程控制、智能联动等功能,还为用户提供了更加便捷、舒适的智能生活体验。通过跨界合作,First Switchtech公司成功拓展了业务领域,并在智能家居市场中占据了重要位置。

富芯森美(FUXINSEMI)公司的发展小趣事

随着新能源汽车产业的快速发展,富芯森美敏锐地捕捉到了这一市场机遇。公司投入大量资源研发车规级功率半导体器件,产品设计遵循APQP标准,制造管理符合IATF 16949要求,质量检验则严格遵循AEC-Q101标准。这些举措使得富芯森美的车规级产品能够满足汽车行业的严苛要求,成功打入新能源汽车供应链体系,为公司带来了新的增长点。

问答坊 | AI 解惑

发一个<<DSP易学通>>书籍所带源码

发一个书籍所带源码,供学习者参考!…

查看全部问答>

单片机工具自制系列2

自制K149BC PIC专用USB接口编程器的完整资料…

查看全部问答>

安装ActiveSync4.5时,总出现问题

安装到,复制新文件的时候,出现 错误。写入文件C:\\WINDOWS\\system32\\rapi.dll 时出错。 请验证您有权访问该目录。 之前也装过 ActiveSync4.5 但是没有出现问题,该怎么解决啊?? 谢谢大家了!!…

查看全部问答>

有谁divxdec.ax组建??

请问:在WINCE里能否用divxdec.ax组建,如果可以那么该怎么在WINCE里注册???谢谢~~…

查看全部问答>

十万火急,,哪个点下????原因

ORG 0000H AJMP START ORG 30H START: MOV R1,#01HMOV P1,#0FFH ;关所 灯 MOV TMOD,#00000001B ;定时/计数器0工作于方式1 MOV TH0,#15H MOV TL0,#0A0H ;即数5536 SETB TR0 ;定时/计数器0开始运行 LOOP:JBC TF0,NEXT ;如果TF0等于1,则清TF ...…

查看全部问答>

使用STM32关于电压基准的选择问题?

                                 使用100脚的STM32封装,本来使用REF2930做电压基准,近来拿来报价明细一看,原来REF2930一直要二十多块,价格过高 ...…

查看全部问答>

通过模拟开关或者继电器导通电流信号,现有问题,请大家指教

通过模拟开关或者继电器导通电流信号,现有问题,请大家指教 1,如果是模拟开关,漏电流不能恒定,会随着信号的大小变化。以至于信号本来是线性的,结果就非线性了。2,如果是继电器,有声音。有无声的继电器吗? 那种光电转换的继电器也会有漏电 ...…

查看全部问答>

求C2000Lauchpad的规格

现在lauchpad不在身边,要画PCB需要相应参数。最好有文档神马的,原来用游标卡尺测过,数据没有带来……就是J1排针和J5排针,以及J6排针和J5排针之间的距离…

查看全部问答>

软件开发经典书籍推荐(一)---软件开发的科学与艺术

本帖最后由 tiankai001 于 2015-2-27 17:20 编辑 你在自己的学习工作中,能不能跟和你意见不一致的人一起工作,能不能保持一种宽容的心态。因为人与人的思维方式是不一样的,你在你的工作中肯定会遇到与你意见不一致的人,这一点是毫 ...…

查看全部问答>