8051单片机驱动TM1620任意字符循环显示程序(详细注释版)

news/2024/11/1 20:32:03/

8051单片机驱动TM1620任意字符循环显示程序

本人亲写,亲测可用
在这里插入图片描述
时序图

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

  • 名称:STC51驱动TM1620 4位数码管显示
  • MCU: STC11F06
  • 主频:11.0592晶振
    *************************************************/

#include<REG52.h>

#include<stdio.h>
#include<intrins.h>

#define dissetmode 0x02 //显示模式设置 6位8段显示
#define writedatamode_z 0x40 //自动加一方式显存 写数据到显示寄存器
#define writeledmode_z 0x41 //自动加一方式写LED显存命令
#define readkeymode 0x42 //读按键命令
#define readswmode 0x43 //读SW命令
//#define writedatamode_g 0x40 //固定模式
//#define writeledmote_g 0x45 //固定模式写LED显存命令
#define startaddress 0xc0 //自动加1显示的起始地址设置,为00H
#define disconmode 0x8F //显示控制,显示开

#define uchar unsigned char
#define uint unsigned int

uchar code a[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F

unsigned long TmData; // 定义无符号长整型变量TmData
uint i; // 定义无符号整形变量 I
uchar vol; // 定义无符号字符变量 vol

sbit   STB=P3^7;         //定义端口 3个位声明
sbit   CLK=P1^2;
sbit   DIN=P1^5;

void delay(uint z) // 定义延时函数
{
uint x,y;
for(x=1000;x>0;x–)
for(y=z;y>0;y–);
}

void indate(uchar x) //送八位数据 高位先传
{
uchar i; // 这个I是传送数据个数变量
STB=0;
for(i=0;i<8;i++) //先求解I=0(只求解一次),在求解I<8为真,然后执行下列语句,,共八次 0110 0101
{
CLK=0; // 上升沿传送数据
DIN=(bit)(x&0x01); // 求最右位然后赋值给DIN,对计算结果取位,只取最右边的一位
CLK=1; // 时钟准备下降,传送第一个数据位完毕
x>>=1; // 将传送数据转为二进制后,整体向右移动一位
}
CLK=0; // 准备在上升沿传送数据
}

void display() // 定义显示函数
{
uchar temp[4]; //定义四个变量,即要显示的四个数字
temp[0]=TmData%10000/1000; //先把TmData求余数后再求商,最后在赋值给temp[0],即取出TmData的千位数
temp[1]=TmData%1000/100; //同上
temp[2]=TmData%100/10;
temp[3]=TmData%10;

			DIN=1;CLK=1;STB=1;     //初始化indate(dissetmode);       //设置显示模式STB=1;indate(writedatamode_z);  //自动模式 自动加1模式STB=1;    				  //准备传输数据for(i=0;i<4;i++)    	    //此处I变量为地址,相当于打开四个位选{		indate(startaddress+i*2); //传地址indate(a[temp[i]]);       //传数据STB=1;    	              // 数据传输完毕,STB被拉高 }	indate(disconmode);       //显示控制命令STB=1;

}

void main()

{

  while(1){   for(vol=0;vol<9;vol++){    TmData=vol;display();delay(1000);} }

}

最后,如果有什么意见或者建议欢迎您留言给我,让我们共同学习一起进步,
如果需要 程序完整源代码和 设计文件,请在下方留言或者私信我,看到后会第一时间回复。

谢谢!


http://www.ppmy.cn/news/132336.html

相关文章

debian 10 安装 oracle 11g-11.2.0.1

debian 10 安装 oracle 11g-11.2.0.1 1、写在前面&#xff1a;这篇文章最后安装失败了。这是一次失败的尝试&#xff0c;仅做记录。结论是Debian不支持Oracle数据库安装。后续再尝试吧。1、下载oracle 11g (11.2.0.1.0)1.1、Oracle Database 11.2.0.1.01.2、Oracle Database Gr…

SYSU_1620

省赛前最后一场练习赛 J题: 水题,左右互相打求剩余数 水题不猜题. C题 给出n,求sigma( A(2,n) A(3,n) …A(n,n)) 高精度.错了很多次的缘故是没有检查最小加数(longlong)的合理性 E题 反密码…按照要求走一遍 G题 求比给出数大的 最小的 数 1.从右往左扫得到第一个可…

第25期:Codeforces-Educational Codeforces Round 119 (Rated for Div. 2) (1620 A-G)

目录 ​​​​​​​A. Equal or Not Equal B. Triangles on a Rectangle C. BA-String D. Exact Change&#xff08;贪心枚举&#xff09; E. Replace the Numbers F. Bipartite Array(待补) G. Subsequences Galore&#xff08;待补&#xff09; A. Equal or Not Equa…

cpu第几代计算机,赛扬G系列有几代cpu分别是

中央处理器(CentralProcessingUnit)的缩写,即CPU,CPU是电脑中的核心配件,只有火柴盒那么大,几十张纸那么厚,但它却是一台计算机的运算核心和控制核心。下面是学习啦小编带来的关于赛扬G系列有几代cpu分别是的内容,欢迎阅读! 赛扬G系列有几代cpu分别是: 1、第一代赛扬G,采用L…

黑苹果efi引导文件大全_经历了无数次失败以后,我终于“吃”上了黑苹果,经验分享...

最近两天,在家闲来无事,我终于对家里那台古董机子“下手了”,听说苹果电脑可以安装windows系统,我就想为什么普通电脑不能安装苹果系统呢?之前我也研究过安装系统,那些都仅限于windows系统或者linux系统,苹果系统我真的是第一次安装。 前天,我看了一天的视频和下载整理…

TM1620使用

TM1620使用 uint8_t HexCode[]={ 0x3F, //"0"0x06, //"1"0x5B, //"2"0x4F, //"3"0x66, //"4"0x6D, //"5"0x7D, //"6"0x07, //"7"0x7F, //"8"0x6F, //"9"0x77,…

问题解决:cmd中创建文件夹被拒绝访问。

问题&#xff1a; 在cmd中准备创建一个B盘node.js文件夹下的一个node_global文件被拒绝访问出错。 Microsoft Windows [版本 10.0.19045.2965] (c) Microsoft Corporation。保留所有权利。C:\Users\SueMagic>md B:\nodejs\node_global 拒绝访问。C:\Users\SueMagic>原因…

自定义视频播放器

1.本次实例涉及的相关属性介绍 &#xff08;1&#xff09;涉及视频的相关属性介绍 volume&#xff1a; 设置或返回音频/视频的音量(规定音频/视频的当前音量。必须是介于 0.0 与 1.0 之间的数字,默认值&#xff1a;1.0。) playbackRate: 设置或返回音频/视频播放的速度(示例&…