历史上的今天
返回首页

历史上的今天

今天是:2025年01月20日(星期一)

正在发生

2021年01月20日 | 51单片机总线与非总线的程序对比

2021-01-20 来源:eefocus

简介:三总线简称ADC,这总是让我想起ADC的芯片,A是地址总线,D是数据总线,C是控制总线,是控制片外ROM、RAM和I/O的。

#include


#include


#define uchar unsigned char


#define uint unsigned int


uchar code table[]="The distance is ";


uchar code table1[]=" 00.0cm ";


sbit shuru=P1^0;


sbit yidianling=P1^0;


sbit yidianyi=P1^3;//延时


void delay(uint z)


{


uint x,y;


for(x=z;x>0;x--)


for(y=110;y>0;y--);


}


//1602写地址


void write_com(uchar com)


{


yidianling=0;


yidianyi=0;


P0=com;


delay(5);


shuru=1;


delay(5);


shuru=0;


}


//1602写数据


void write_data(uchar date)


{


yidianling=1;


yidianyi=0;


P0=date;


delay(5);


shuru=1;


delay(5);


shuru=0;


}


//初始化


void init()


{


uchar num;


shuru=0;


write_com(0x38);


write_com(0x0c);


write_com(0x06);


write_com(0x01);


write_com(0x10);


write_com(0x80);


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


{


write_data(table[num]);


delay(2);


}


write_com(0x80+0x40);//0x53


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


{


write_data(table1[num]);


delay(2);


}


}


//1602选 写的位置和数据


void write_sfm(uchar add,uchar date)


{


write_com(0x80+0x40+add);


write_data(0x30+date);


}


//主函数


void main()


{


P1=0xff;


P0=0xff;


init();


while(1);


}


板子原理图是当时自己画的,目测找不到了。T T.但是看程序还是可以看出点什么吧~


这是以前的程序了,当时是用来红外测距,测的数据经AD转换显示出来,我把AD部分都删去了。


很明显,非总线型的1602程序就是完全按照1602数据手册上的高低电平来控制的,写了很多代码。


接下来,看总线型的1602显示程序吧:


#include


#include


#define LCD_COM XBYTE[0XD000]


#define LCD_Data XBYTE[0xD001]


delay()


{


unsigned short i,j;


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


{


for(j=0;j<=200;j++);


}


}


void main()


{


LED=0X55;


LCD_COM=0X01;


delay();


LED=0XAA;


delay();


LED=0X55;


LCD_COM=0X01;


delay();


LED=0XAA;


LCD_COM=0X38;


delay();


LCD_COM=0X38;


delay();


LCD_COM=0X38;


delay();


LCD_COM=0X38;


delay();


LCD_COM=0X08;


delay();


LED=0XAA;


LCD_COM=0X01;


delay();


LCD_COM=0X06;


delay();


LCD_COM=0X0F;


delay();


while(1);


}


眨眼一看,程序确实少了很多,如果要写数据,在while(1);前面加数据便可。


LCD_Data='a';


先上板子的原理图:

简单分析一下:


P0口线既用作地址线,又用作数据线(分时复用),因此需要加一个8位的锁存器。


使用ALE作为地址锁存的通选信号,以实现低8位地址的锁存。


地址I/O是从P2.7到P2.0,接着P0.7到P0.0,这里可以很明显的理解


#define LCD_COM XBYTE[0XD000]

#define LCD_Data XBYTE[0xD001]

这两句话了。


剩下直接看main()函数里面的了,里面也是按照1602的资料写的,但是是直接给出的,不是看高低电平判断延时时间写的,省事不少呀。


虽然只是简单阐述了一下,但是按照总线型来设计电路图,来写程序,真心好。当然除此之外还有CAN总线,IIC,SPI,以及dala公司的一根线搞定,哈哈。再说一下总线吧,三总线简称ADC,这总是让我想起ADC的芯片,A是地址总线,D是数据总线,C是控制总线,是控制片外ROM、RAM和I/O的。这学期学单片机这门课程,之前没有上过微机原理那些,老师几个课时直接讲完,实在是精彩。当时也说过了解了总线型的话后面开发ARM芯片都很容易了,唉,我要走的路还很长呀。


推荐阅读

史海拾趣

国芯佳品公司的发展小趣事

机顶盒,全称为数字视频变换盒,是现代家庭娱乐中不可或缺的重要设备。它作为连接电视机与外部信号源的桥梁,不仅承担着接收数字电视信号并将其转换为适合电视播放格式的基本任务,还通过技术的不断演进,极大丰富了用户的视听体验。

从专业角度来看,机顶盒经历了从模拟到数字的飞跃,涵盖了多种类型,如DVB-S(数字卫星机顶盒)、DVB-C(有线电视数字机顶盒)、IPTV机顶盒等。这些机顶盒通过不同的传输介质(如有线电缆、卫星天线、宽带网络)接收信号,并借助内部高效的解码器,将数字信号转换成高质量的音视频流,实现了高清乃至4K超高清的播放效果。

在科普层面,机顶盒的普及极大地推动了家庭娱乐的多元化。它不仅让用户能够收看更多样化的电视节目,还能通过连接互联网,提供电子节目指南、在线视频、网页浏览、社交媒体互动等增值服务。此外,一些先进的机顶盒还集成了智能语音助手、家庭影院功能,甚至支持存储个人媒体文件,让用户的娱乐体验更加个性化、便捷化。

随着5G、云计算、人工智能等技术的不断发展,机顶盒正朝着更高清、更智能、更互动的方向迈进。它不仅将继续作为电视内容的接收和展示终端,更将成为智能家居生态系统中的重要一环,为用户带来更加丰富、沉浸的娱乐享受。

Capital Advanced Technologies公司的发展小趣事

CAT深知技术创新是企业发展的核心动力。因此,公司不断投入研发资源,推动技术创新与突破。经过多年的努力,CAT成功开发出了一系列具有自主知识产权的电子产品和技术,如高性能的电路板、精密的连接器以及先进的测试设备等。这些产品的推出,不仅提高了CAT的市场竞争力,也为整个电子行业的发展注入了新的活力。

Box Enclosures公司的发展小趣事

在市场竞争日益激烈的背景下,Box Enclosures公司意识到单打独斗难以取得更大的突破。于是,公司开始积极寻求与其他企业的战略合作。通过与一家知名电子设备制造商的合作,Box Enclosures成功将其产品集成到对方的产品中,共同开拓市场。这种合作不仅提升了公司的知名度,还为其带来了更多的商业机会和合作伙伴。

Hitron公司的发展小趣事

Box Enclosures公司自创立之初,就明确了自己的定位——专注于为电子行业提供高品质的机箱和外壳产品。公司始终坚持严格的质量控制标准,从原材料采购到生产工艺,每一个环节都力求精益求精。这种对品质的执着追求,使得Box Enclosures的产品在市场上赢得了良好的口碑,逐渐在电子行业中占据了一席之地。

Bkc Semiconductors Inc公司的发展小趣事

随着全球环保意识的提高,Bkc积极响应绿色发展的号召。公司不仅加大了对环保技术和绿色生产的投入,还积极参与社会公益事业和环保活动。通过实际行动履行企业社会责任,Bkc不仅赢得了社会的尊重和支持,也为公司的可持续发展注入了新的动力。

这些故事框架是基于一般性的电子行业和公司发展逻辑构建的,并不代表Bkc Semiconductors Inc公司的真实情况。如果您需要更具体、更准确的信息,建议直接查阅该公司的官方网站、年报或相关新闻报道。

广州奥松公司的发展小趣事

奥松电子在传感器领域取得了显著的突破。公司凭借其强大的研发实力和技术创新能力,成功开发出一系列具有自主知识产权的传感器产品。这些传感器产品不仅性能稳定、测量精度高,而且具有广泛的应用领域。在医疗、轨道交通、智能家电等多个领域,奥松电子的传感器产品都得到了广泛的应用和认可。这些产品的成功应用,不仅提升了公司的市场竞争力,也为公司的未来发展提供了更多的可能性。

这五个故事展示了广州奥松电子股份有限公司在电子行业中发展起来的历程和成就。通过不断的技术创新和市场拓展,奥松电子已经成功成为了国内电子行业中的佼佼者。未来,随着技术的不断进步和市场需求的不断变化,奥松电子将继续保持其领先地位,为电子行业的发展做出更大的贡献。

问答坊 | AI 解惑

承接ARM Linux嵌入式系统项目开发

承接嵌入式系统项目开发 相信大家都知道,要想产品具有竞争力,一般都要使用操作系统来提高附加值。然而使用别人的操作系统就要支付高额的授权费。这直接导致了开发成本的增加,降低了产品的竞争力。 我们团队独立研发了具有自主知识产权的操作系 ...…

查看全部问答>

如何实现开机动画

如题: 现在因wince的启动时间太长,想把开机logo改成动画的,这样让用户不至于觉得太久. 有什么好的方法可以实现开机动画呢?…

查看全部问答>

怎么用网线把开发板和电脑之间建立连接关系啊?

怎么用网线把开发板和电脑之间建立连接关系啊?要设置什么吗?哪位高手帮帮忙啊。。。非常感谢…

查看全部问答>

EVC4.0 都有那些头文件?都分别包含那一类MFC实现那些功能?谢谢啦

请问下,在EVC4.0下开发,EVC4.0 都有那些头文件?都分别包含那一类MFC实现那些功能?谢谢啦…

查看全部问答>

Crosstar嵌入式学院“利用/proc实现内核与用户空间通信”

Linux内核空间与用户空间的通信可通过\"/proc\"目录的文件读写来实现,如果只是控制内核中的参数而不是传输较多数据的话,用“/proc”是很合适的。另外几种内核与用户空间通信方式方式是:1)对内核设备的读写或IOCTL;2)通过/sys内存文件系统来 ...…

查看全部问答>

定时器请教

在设置定时器中断时,在在中断程序中需要重新设置时间,设置完后处理中断。问题在这里: 定时器开始定时是否和处理中断同时进行。。。。 谢谢老牛!…

查看全部问答>

有没有用过PIML的GPRS模块的,这个问题太邪门

发现个很郁闷的问题。用TCP发送数据。数据中如果有 0x0D 0x0A的话,模块会给你做些处理,收到以后就变成了 0x0D,0x0D,0x0A.或者0x0D,0x0A,0x0A. 发短信,用文本方式时也有这样的问题 大家有没有出现同样问题的?…

查看全部问答>

LM3S9997 FLASH

大家好.... 我在弄LM3S9997 可是下载不了程序。。  (原文件名:222.jpg)  引用图片下面的资料。可能发现看不问题。。觉得哪里可能有问题就说说吧。。我改的 希望过来人教教我。。还有就是读到了芯片的ID以及ROM的ID ,是不是就说 ...…

查看全部问答>

wince 录音驱动调试

sound output cannot prepare header OpenOutput error!…

查看全部问答>

论坛技术请看,反应几个问题

1、关于TI教室中课程,除了第一个有进度其他的看了,没进度,不知道什么原因,希望能给个解释。 [ 本帖最后由 Sur 于 2013-12-3 21:20 编辑 ]…

查看全部问答>