历史上的今天

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

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

发布者:TranquilMind88 来源: 51hei关键字:8位共阳数码管  74HC595芯片  AVR单片机控制 手机看文章 扫描二维码
随时随地手机看文章

刚入门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();



关键字:8位共阳数码管  74HC595芯片  AVR单片机控制 引用地址:8位共阳数码管74HC595芯片AVR单片机控制 proteus仿真及源码

上一篇:Atmega32A驱动LCD1602显示屏
下一篇:基于OV7670摄像头的SCCB总线的实现

推荐阅读

      伴随11月11日24时钟声响起,全民狂欢的双十一迎来了激动人心的时刻,各大电商平台和厂商纷纷公布24小时销售数据。3分50秒销售额破亿,7小时57分突破去年全年销售额,夺得天猫平台安卓销售额第一,这个双十一,华为实力诠释何为中国第一手机品牌。天猫华为官方旗舰店3分50秒销售额破亿  天猫、京东双平台发力,华为手机销量、销售额双双领先...
Altium Designer画的L298N电机驱动器电路原理图和PCB图如下:制作出来的实物图如下:接线说明资料:附件中包含如下单片机控制例程:例一、步进电机正转两相四拍程序例七、四相步进电机正转四拍程序例三、步进电机反转两相四拍程序例九、四相步进电机反转四拍程序例二、步进电机正转两相八拍程序例五、步进电机两相四拍调速程序例八、四相步进电机正转八拍...
11月10日,华为心声社区最新刊发任正非在C9高校校长一行来访座谈会上的讲话全文。 任正非表示,芯片的设计当前中国已经步入世界领先,华为目前积累了很强的芯片设计能力;芯片的制造中国也是世界第一。 在任正非看来,芯片问题的解决不是设计技术能力问题,而是制造设备、化学试剂...
使用的mini2440开发板的详细信息:kernel:linux-2.6.29-mini2440-20090708.tgzgcc:arm-linux-gcc-4.3.2.tgzuboot:bootloader.tgz(该压缩包内含有u-boot-1.1.6)roots:root_qtopia-64M.img问题源于:(1)使用128M NAND Flash mini2440开发板的用户都知道,此时开发板附带的supervivi-64M和supervivi-128M都不再支持“空格”进入supervivi的menu菜...

史海拾趣

问答坊 | AI 解惑

TM6802 TM8712

TM6802 TM8712 芯片简单介绍…

查看全部问答∨

请问,用IWebBrowser控件在窗体里打开网页,怎样获得网页的HTML接口(目的是想获得网页源文件,对网页元素进行分析)

部分代码如下: IWebBrowser2 *m_pBrowser; HRESULT hr; IDispatch* pHtmlDocDispatch = NULL; IHTMLDocument2 * pHtmlDoc = NULL; IHTMLWindow2 * p = NULL;                 hr = m_pBrowser ...…

查看全部问答∨

DirectShow 视频捕捉设备的操作问题

在DirectShow架构中,IPersistPropertyBag::Load 函数可以用来设置视频捕捉设备,其实就是对camera等设备的初始化,即打开camera驱动。那么,请问各位前辈,既然已经打开了camera驱动,就应该会有对应的设备句柄咯,由于在接下来的操作当中还需要 ...…

查看全部问答∨

请问,蓝牙通信是相当于虚拟串口通信吗?

以前一直以为蓝牙通信是网络方面的通信,最近看了一些文档,感觉好像就是一个串口通信一样?请问是吗?…

查看全部问答∨

汇编语言受限于硬件

举个例子,比如PC和MAC的汇编代码就不能互换,是吗? 还有别的例子吗??…

查看全部问答∨

三星A8 UTS5PC100先睹为快

更多详情,敬请关注http://www.urbetter.com …

查看全部问答∨

音视频存储问题

    各位好,本人毕业设计需要实现音视频存储并回放的功能。但是没有经验不知如何下手啊,希望高手可以指点一下。非常感谢! 下面是目前情况和我想要实现思路:      首先,我属于二次开发,目前软件是基于WIN32开 ...…

查看全部问答∨

使用MagicARM2200和ZLG/IP软件包,实现基于以太网接口的WEB服务器应用实验中,访问不了MagicARM2200上运行的网页,怎么办?

小弟在做《ARM嵌入式系统实验教程(三)附加实验》的4.3TCP通讯实验时,程序编译通过,ping连接IP也ping的通,就是访问不了MagicARM2200上运行的网页,那是什么原因啊?…

查看全部问答∨

回归火烧烙铁时代

电烙铁是电子制作和电器维修必不可少的主要工具,但是由于有电源线的缘故所以不适合野外作业,而且电烙铁要外接交直流电源,避免不了要有静电、电流干扰!所以火烙铁又开始回归了! [ 本帖最后由 DIAG 于 2010-10-7 18:38 编辑 ]…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved