推荐阅读最新更新时间:2024-03-16 13:10
STC51-数码管显示
1 数码管显示原理 我们先来看几个数码管的图片, 左图为单位数码管、中图为双位数码管、右图为四位数码管, 另外还有右下角不带点的数码管,最右图还有“米”字数码管等。 不管将几位数码管连在一起,数码管的显示原理都是一样的,都是靠点亮内部的发光二极管来发光,下面就来我们讲解一个数码管是如何亮起来的。数码管内部电路如下图所示,从图(a)可看出,一位数码管的引脚是10个,显示一个8字需要7个小段,另外还有一个小数点,所以其内部一共有8个小的发光二极管,最后还有一个公共端,生产商为了封装统一,单位数码管都封装10个引脚,其中第3和第8引脚是连接在一起的。而它们的公共端又可分为共阳极和共阴极,图(b)为共阴极内部原理图,图
[单片机]
51单片机动态数码管显示(新字符串思路)
新思路 对于数码管的动态显示,已经有了很多的基础教学,教学中多用数组的形式储存数据来进行动态显示,便于理解。对于纯数据来说,数组是一个很好的选择,但是如果有的特殊符号或者字母,数组似乎就没这么方便,总是需要记忆特殊字符所对应的数组下标。如果一定要用数组显示,也可以通过宏定义或枚举来减轻记忆的负担,但是总觉得没这么流畅。倘若能把所有需要显示的内容写成一个字符串,再对字符串进行处理,那么应该能够使程序更加可读,并可以简化操作。 字符串的处理 若想对字符串进行处理,那么第一步就是将字符串中的内容转化成数码管的段码。这里展示共阳极数码管的转化函数代码: #ifndef U8 #define U8 typedef unsigned
[单片机]
51单片机做的音乐盒,带八段数码管显示程序+Proteus仿真
#include reg52.h #define uchar unsigned char #define uint unsigned int sbit key1=P3^2;//按key1可以暂停播放 sbit key2=P3^3;//按key2可切换歌曲 sbit fm=P3^7;//蜂鸣器连续的IO口 uchar code shuzi0=0x3f; uchar code shuzi1=0x06;//数字1 uchar code shuzi2=0x5b;//数字2 uchar code shuzi3=0x4f; uchar code shuzi4=0x66; uchar code shuzi5=0x6d; uchar code
[单片机]
数码管显示1314-520(普中51-单核-A2)
#include reg52.h #include intrins.h typedef unsigned int uint; typedef unsigned char uchar; #define LED P0 sbit tube2=P2^2; sbit tube3=P2^3; sbit tube4=P2^4; uint code num ={0x3f , 0x06 , 0x5b , 0x4f , 0x66 , //高电平控制亮 //显示数字 0x6d , 0x7d , 0x07 , 0x7f , 0x6f }; void delay(uint i); void run(); void main(){ whi
[单片机]
74HC164控制数码管显示
刚开始的时候把74HC164当成了74HC573使了,还看了原理图,半天摸不出个所以然,然后上网查了资料,才知道原来74HC164是串入并出的,此时才知道思考方向出错了。于是再看原理图再分析示例代码方有所获。 原来164只有一个输入端sda(P10),一个控制位clk(P11),还有四个位选:dig1~dig4分别与P13~P15相连,我们可以通过控制dig来达到选位的目的,然后再用sda来向164里传数。而164共有8个输出端,刚好对应了数码管的一个字节(a,b,c,d,,e,f,g,dp),从而显示出不同的数。 还有我写的一个例子程序发现了一个小问题,现在想不通,放到这以后再想:为164送数的时候不能用wh
[单片机]
键盘扫描-数码管递增显示程序
/* 程序效果:51单片机按键扫描数码管显示输入,数码管为递增显示,即像 手机打电话时输入号码一样,程序简单紧凑 理解相对困难,但只要把上一程序弄懂,本程序 即可理解。 程序设计者:http://www.51hei.com转载请保留版权. 注意:如果无法在keil里编译,请删除每一行的所有前导空白, */ #include reg52.h //头文件 #include intrins.h #define uchar unsigned char //宏定义 #define uint unsigned int sbit jdq=P3^5; //位声明,驱动继电器管脚 sbit fmq=P3^4; //位声
[单片机]
对单片机数码管显示段选位选的理解
在51单片机的数码管的应用开发中一些小的细节还是应该注意到的。 其中位选信号应该在段选之前打开,下面是一段示例代码(我用的是国信长天开发板): #include reg51.h // 包含51单片机寄存器定义的头文件 #include intrins.h #define uint unsigned int sbit buzz=P0^6; /************************************************** 函数功能:d延时函数,延时一段时间 ***************************************************/ void dela
[单片机]
STM8 一位共阳数码管0至F数码显示
思修电子小王子开发板一位共阳数码管0至F数码显示。 #define LED PC_ODR //1位数码管段码连接端口组 u8 tableB ={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E}; //共阳数码管段码0至F int main(void) { u8 num;//定义for循环控制变量“num” PC_DDR=0xFF;//配置PC端口为输出模式 PC_CR1=0xFF;//配置PC端口为推挽输出模式 PC_CR2=0x00;//配置PC端口低速率输出 while(1) { for(n
[单片机]