历史上的今天
返回首页

历史上的今天

今天是:2024年11月12日(星期二)

正在发生

2019年11月12日 | 8位共阳数码管74HC595芯片AVR单片机控制 proteus仿真及源码

2019-11-12 来源:51hei

刚入门AVR单片机一段时间,感觉资料很少,所以进度很慢,刚才百度到这里来,现上传一个数码管的程序来和大家分享,高手就跳过吧,初学可以下载来做参考

proteus仿真原理图:

单片机源程序:

/*

* smg8_avr.h

*

* Created: 2017/3/16 1:54:20

*  Author: lyl

*/ 


#ifndef SMG8_AVR_H_ 

#define SMG8_AVR_H_ 


#include "lyl_avr.h"

//数码管端口定义

#define smgPORT PORTA

#define smgPORT_DDR DDRA


#define DS PA5//串行数据输入端口

#define SHCP PA6//为移位寄存器的时钟脉冲输入口

#define STCP PA7//为存储寄存器的时钟脉冲输入口

//OE为输出使能端口,低电平有效,已直接接地


void smgPortInit(void);//数码管端口初始化

void smg74HC595_WriteByte(uchar ucData);        //向74HC595发送一个数据

void smgDisplay(uchar bitCode,uchar segCode,uchar dp);        //在数码管的某一位上显示某一个字符


//共阳数码管的编码,并将数据定义在CODE区

const uchar SMG_SEG_CODE[18]={//共阳数码管的段码编码,并将数据定义在CODE区

                                                        0xc0,/*0*/

                                                        0xF9,/*1*/

                                                        0xA4,/*2*/

                                                        0xB0,/*3*/

                                                        0x99,/*4*/

                                                        0x92,/*5*/

                                                        0x82,/*6*/

                                                        0xF8,/*7*/

                                                        0x80,/*8*/

                                                        0x90,/*9*/

                                                        0x88,/*A=10*/

                                                        0x83,/*b=11*/

                                                        0xC6,/*C=12*/

                                                        0xA1,/*d=13*/

                                                        0x86,/*E=14*/

                                                        0x8E,/*F=15*/

                                                        0xFF,/*不显示=16*/

                                                        0xBF,/*横杆“-”=17*/

                                                        };

//数码管的位选择编码

const uchar SMG_BIT_CODE[10]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};


#define SMG8_SetDS()        setbit(smgPORT,DS)

#define SMG8_ClrDS()        clrbit(smgPORT,DS)        //数据引脚


#define smgSTCP_SET()        setbit(smgPORT,STCP)

#define smgSTCP_CLR()        clrbit(smgPORT,STCP)        //上升沿更新数据


#define smgSHCP_SET()        setbit(smgPORT,SHCP)

#define smgSHCP_CLR()        clrbit(smgPORT,SHCP)        //上升沿移入数据


#define smgDS_SET()        setbit(smgPORT,DS)

#define smgDS_CLR()        clrbit(smgPORT,DS)        //数据引脚



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

/* 函数名称:smgPortInit

   函数功能:初始化8位共阳数码管的数据端口

   入口参数:无

   返回值:无                                                            */

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

void smgPortInit(void){

    smgPORT|=((1<    smgPORT_DDR|=((1<}


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

/*函数名称:smg74HC595_WriteByte

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

  入口参数:ucData-要发送的数据

  返回值:无                                                             */

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

void smg74HC595_WriteByte(uchar ucData){

    for(uchar i = 0 ;i < 8;i++){//高位在前低位在后

        if((ucData & (0x80>>i)) != 0) smgDS_SET(); else smgDS_CLR();

        

        smgSHCP_CLR();

        smgSHCP_SET();//SHCP引脚的上升沿移入数据

                _delay_us(10);

    }

}


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

/*函数名称:smgDisplay

  函数功能:在8位共阳数码管的指定位置上显示一个字符

  入口参数:bitCode-位选择码,即选择要在哪位数码管上显示数据

                 :segCode-数据段码选择,即要显示什么数据

                 :dp-当dp取值不等于0时,数码管将显示后面的小圆点

  返回值:无                                                             */

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

void smgDisplay(uchar bitCode,uchar segCode,uchar dp){//在数码管的某一位上显示某一个字符

    uchar a;

        if(dp==0) a=0x00; else a=0x80;

        smg74HC595_WriteByte(SMG_BIT_CODE[bitCode]);  //显示在哪一个数码管上

    smg74HC595_WriteByte(SMG_SEG_CODE[segCode]-a);  //显示的数据

    smgSTCP_CLR();



推荐阅读

史海拾趣

Amphenol Aerospace公司的发展小趣事

Amphenol Aerospace 是一家在电子行业中知名的公司,专注于设计、制造和销售航空航天领域的连接器和电缆组件。以下是关于 Amphenol Aerospace 公司发展的五个相关故事:

  1. 创立与早期发展:Amphenol Aerospace 公司的历史可以追溯到1932年,当时在美国新泽西州的Linden市成立了Amphenol公司。最初,该公司主要致力于生产无线电连接器和电缆组件。随着航空航天行业的发展和壮大,Amphenol Aerospace 公司开始专注于航空航天领域,成为该行业的关键供应商之一。

  2. 技术创新与产品多样化:Amphenol Aerospace 公司不断进行技术创新,推出了一系列先进的连接器和电缆组件产品。这些产品具有高可靠性、高耐用性和优良的性能特点,广泛应用于航空航天领域的飞机、卫星、导弹、航天器等设备中。Amphenol Aerospace 公司的产品包括圆形连接器、矩形连接器、光纤连接器等,满足了不同客户的需求。

  3. 客户合作与定制化解决方案:Amphenol Aerospace 公司与航空航天领域的客户建立了紧密的合作关系,共同开发定制化的连接器和电缆组件解决方案。公司的工程团队与客户密切合作,根据客户的需求和规格要求,设计和制造符合特定应用要求的产品。这种定制化解决方案为客户提供了更加个性化和专业化的服务。

  4. 质量控制与认证标准:Amphenol Aerospace 公司注重产品质量控制,并严格遵循行业标准和认证要求。公司的生产工艺和质量管理体系符合ISO 9001质量管理体系认证标准,以确保产品质量稳定可靠。此外,Amphenol Aerospace 公司的产品还通过了航空航天领域的相关认证,如AS9100质量管理体系认证等,确保产品符合行业标准和规定。

  5. 全球布局与市场拓展:除了在美国的生产基地外,Amphenol Aerospace 公司还在全球范围内设有多个生产工厂和销售办事处,为客户提供全面的服务和支持。公司在欧洲、亚洲和其他地区建立了广泛的销售网络,拓展了国际市场份额。通过全球布局和市场拓展,Amphenol Aerospace 公司不断扩大业务规模,增强了在航空航天领域的市场竞争力。

这些故事展示了 Amphenol Aerospace 公司从成立初期到如今在技术创新、产品多样化、客户合作与定制化解决方案、质量控制与认证标准以及全球布局与市场拓展等方面取得的重要进展。

泰科天润(GPT)公司的发展小趣事

机顶盒,全称数字视频变换盒,是连接电视与外部信号源的重要设备,其专业性与科普性均不容忽视。从广义上讲,任何与电视机连接的网络终端设备均可视为机顶盒,它们承担着将各种信号源转换为电视可识别并播放的格式的重要任务。

机顶盒的核心功能在于接收、解码和显示。它能接收来自有线电缆、卫星天线、宽带网络及地面广播等多种传输介质的数字电视信号,并通过内置的解调器和解码器,将这些信号转换为电视能够播放的视频和音频流。这一过程中,机顶盒展现了其强大的技术实力,确保用户能够享受到高质量的视听体验。

随着技术的发展,机顶盒不断进化。从最初的模拟频道增补器、解码器,到如今支持高清、4K乃至8K超高清播放的智能网络机顶盒,机顶盒的每一次升级都带来了更加丰富的内容选择和更加便捷的使用体验。同时,网络机顶盒的出现更是将电视与互联网紧密相连,使得用户能够通过电视屏幕浏览网页、观看在线视频、下载应用程序、享受交互式娱乐等多元化服务。

此外,机顶盒还具备强大的扩展性和可定制性。通过搭载不同的软件和硬件设备,机顶盒可以满足不同用户的个性化需求,如家庭影院功能、社交媒体互动、语音控制等。这些功能的加入不仅提升了机顶盒的实用性,也使其成为了现代家庭娱乐的重要组成部分。

综上所述,机顶盒作为连接电视与外部世界的桥梁,其专业性与科普性在不断提升中。随着技术的不断进步和市场的不断扩大,机顶盒将继续为用户带来更加优质、便捷、智能的视听体验。

Aborn Electronics Inc公司的发展小趣事

Aborn Electronics Inc公司创立之初,面临着资金短缺、市场竞争激烈和技术壁垒等多重挑战。创始人凭借对电子技术的深厚理解和对市场需求的敏锐洞察,带领团队攻克了一个又一个技术难关。公司最初的产品线集中在电子元器件的生产和供应上,通过优化生产流程和降低成本,逐渐在市场上站稳了脚跟。同时,Aborn Electronics积极与各大电子厂商建立合作关系,为公司的长远发展奠定了坚实的基础。

福斯特半导体(Foster)公司的发展小趣事

随着电子行业的快速发展,Aborn Electronics意识到只有不断创新才能在竞争中保持领先。公司加大了对研发的投入,引进了一批高素质的研发人才,并在多个技术领域取得了重要突破。其中,一项关于高效能电源管理技术的创新成果,不仅提高了产品的能效比,还为公司带来了可观的经济效益。这一技术的成功应用,进一步提升了Aborn Electronics在行业内的影响力。

安谱隆(Ampleon)公司的发展小趣事

2022年,无锡锡产微芯半导体有限公司完成了对安谱隆的收购。这一交易金额超过百亿元,是当年中国最大的半导体并购交易事件之一。锡产微芯的收购不仅为安谱隆提供了更广阔的发展平台,也为其在半导体行业中的进一步发展注入了新的活力。在锡产微芯的支持下,安谱隆开启了新的发展阶段,继续在全球射频市场中发挥着重要作用。

这五个故事展示了安谱隆从恩智浦剥离出来到被锡产微芯收购的发展历程。在这个过程中,安谱隆不仅展现了其强大的技术实力和市场潜力,也经历了资本市场的波折与挑战。然而,正是这些经历使得安谱隆更加成熟和稳健,为其未来的发展奠定了坚实的基础。

Fenghua (HK) Electronics Ltd公司的发展小趣事

人才是企业发展的重要保障。Fenghua (HK) Electronics Ltd高度重视人才队伍建设,通过校园招聘、社会招聘等多种渠道吸引优秀人才加入公司。公司提供了完善的培训体系和晋升机会,激发了员工的积极性和创造力。同时,公司注重营造良好的企业文化氛围,让员工在工作中感受到归属感和成就感。

问答坊 | AI 解惑

关于视频系统处理器选择的建议

关于视频系统处理器选择的建议基于ARM核心的Freescale的i.MX系列芯片是视频应用的佼佼者。 比如i.MX27和i.MX31 i.MX27嵌入式开发板是高清视频输入输出的首选,i.mx27芯片提供了更高的灵活性和更强大的多媒体处理能力,成为IP视频和语音(V2IP)、移 ...…

查看全部问答>

关于7行5列LED键盘指示灯的编程,请高手解惑!十万火急!万分感谢!

7行5列的LED键盘指示灯,键按下时相应的LED指示灯也会亮! 灯亮的原则:列为高电平,行为低电平。 我想问的是,如果我知道了第0行第0列的键按下了,想要第0行第0列的灯亮,那么是不是应该让列所在的存储器第0位置1,其余列置0!即将0x01输入到相 ...…

查看全部问答>

自制超级流水灯演示板

单片机的用途非常广阔,各种智能控制的产品中都少不了它的身影,前景看好,因此引起了一阵阵学习单片机的热潮。   相信很多初学单片机的朋友都是从做流水灯开始的,因为流水灯的电路较为简单。看着按照自己的设想做成的流水灯变幻着不同的花样, ...…

查看全部问答>

ARM板上如何增加显卡芯片

如题, 望版主推荐 一直以来,因ARM开发板每次换屏的时候都要重新生成NK,有没人做过在板子上驱动一个显卡IC来驱动LCD? 如果有,IC型号大家了解的有哪些? 如果增加了这个显卡IC,那么原来的Display驱动还要不要? 大家一起讨论讨论,突然想 ...…

查看全部问答>

谁能详细讲讲 uboot smdk2410.h 里面配置信息的含义?

谢谢! 我是初学者,不明白里面都在配置些什么,不明白哪些是最重要的。…

查看全部问答>

关于vs2005开发windows ce 5程序部署到机器的问题

1:首先非常感谢您的帮助,同时我找遍了google和baidu,没有找到,或许是关键字搜索的不好。所以来此提问。 2:问题描述如下    机器是广州市微嵌计算机科技的Arm9 的硬件系统,采用的是windows ce 5.0。该设备有一个特点是会将hwDir目 ...…

查看全部问答>

如何使程序某个功能运行时不响应其它操作

小弟要实现如下功能: 当我点击打印操作时,程序弹出一个对话框,显示正在打印,在打印的过程中,必须使程序无法响应用户的其它任何操作。当打印结束时,显示打印成功或打印失败,然后才让程序可以继续响应用户其它操作。 请问这个如何解决哈? …

查看全部问答>

讨论: 用fread, fwrite存取结构数据安全吗?

同样的软件,平时都用的好好的,但有半天fread出来的数据都不对。于是才产生这个疑问.…

查看全部问答>

压力传感器在汽车空调系统中是如何应用的?

在汽车空调系统中,压力传感器都应用在那部分,又是给那里提供数据,这些数据的作用。请各位大侠指点指点。谢谢!…

查看全部问答>