急急急!!!越快越好!!求数码管显示的循环计数器设计的C语言程序!
发布网友
发布时间:2022-04-30 03:05
我来回答
共3个回答
热心网友
时间:2023-10-09 06:45
#include "reg52.h"
#define uchar unsigned char
uchar display_code[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
uchar display_data[8]={0,0,0,0,0,0,0,0};
uchar time[]={9999,0,0};//设初始值
void delay(void)//显示程序
{
uchar i;
for(i=250;i>0;i--);
}
void display()
{
uchar i,k;
k=0x80;
for(i=0;i<8;i++)
{
P2=0;
P0=display_code[display_data[i]];
P2=k;
k=k>>1;
delay();
}
P2=0;
}
void calc()//减1
{
time[0]--;
if(time[0]==-1)
time[0]=9999;
}
void convert()
{
display_data[0]=time[0]/1000;//千位
display_data[1]=time[0]%1000/100;//百位
display_data[2]=time[0]%1000%100/10;//十位
display_data[3]=time[0]%1000%100%10;//个位
}
void main(void)
{
uchar i;
while(1)
{
for(i=0;i<250;i++)
{
display();
}
calc();
convert();
}
}追问能再详细点吗,就是在每一句程序的后面写清这句是什么意思,我是菜鸟啊,刚刚接触到C语言!!
热心网友
时间:2023-10-09 06:45
/////////////////////////////////////////////////////////////////////////////////////////////////
//程序功能:0到9999加一显示
//MCU:STC89C52
//硬件连接:P0接数据口,P1.0接段码锁存信号,P1.1接位码锁存信号。位码口和段码口分别有一片573做驱动!
//晶振大小:12MHZ
///////////////////////////////////////////////////////////////////////////////////////////////
#include<reg52.h>
#defineuintunsignedint
#defineucharunsignedchar
sbitwei=P1^0;//位码锁存控制端
sbitan=P1^1;//段码锁存控制端
uintcont,qian,,shi,ge,bt;//bt为一秒内循环次数标志位
ucharcodetab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67};//共ying的代码
voidinit()
{
cont=9987;//数码管开机显示值,可更改
//qian=3;//最左一位的数码管显示值,用于调试!
//=2;
//shi=1;
//ge=0;
}
/////////////////////////延时函数/////////////////////////////////////////////////////////
voiddelay(ucharz)
{
ucharx,y;
for(x=0;x<=z;x++)
for(y=0;y<=110;y++);
}
////////////////////////消影函数/////////////////////////////////////////////////////
voidxiaoying()
{
P2=0x00;
an=1;
an=0;
}
///////////////显示函数//////////////////////////////////////////////////////////////
voiddisplay()
{
P2=0x7f; //显示个位
wei=1;
wei=0;
P2=tab[ge];
an=1;
an=0;
delay(2);
xiaoying(); //调用消影函数
P2=0xbf; //显示十位
wei=1;
wei=0;
P2=tab[shi];
an=1;
an=0;
delay(2);
xiaoying(); //调用消影函数
P2=0xdf; //显示百位
wei=1;
wei=0;
P2=tab[];
an=1;
an=0;
delay(2);
xiaoying(); //调用消影函数
P2=0xef; //显示千位
wei=1;
wei=0;
P2=tab[qian];
an=1;
an=0;
delay(2);
xiaoying();//调用消影函数
}
/////////////////////////数据处理函数/////////////////////////////////////////////
voidchuli()
{
qian=cont/1000;
=cont/100%10;
shi=cont/10%10;
ge=cont%10;
}
/////////////////////主函数///////////////////////////////////////////////////////////
voidmain()
{
init();
while(1)
{
while(bt!=250)//延时执行250次时,大约为1秒
{
chuli();//数据分离处理
display();//显示
bt++;
}
bt=0;//清零
cont++;//数码管显示值加1
if(cont==10000)//如果数码管显示的值为10000时,清零
cont=0;
}
}追问程序功能怎么是0到9999加一显示,我要的是从9999减1啊,减到0是再回到9999继续循环!还有能不能解释一下调用消影函数,没接触过这个函数!
热心网友
时间:2023-10-09 06:46
有两位朋友已经发了,
急急急!!!越快越好!!求数码管显示的循环计数器设计的C语言程序!
f为队首指针,指向队首,删除元素的位置,r为队尾指针,指向队尾,为下一个要插入元素的位置,初始状态,都指向同一个地址,初始分配的地址 插入元素,f不变,r=(r+!)%n,n为队列大小 最终状态,r指向预留的那个空间,但这个空间是变化的,因为是循环队列,所以如果删除过元素,预留空间同样会循环...
电池加速度试验机
电池加速度试验机是东莞市立人仪器设备有限公司研发的一款高精度测试设备。它专为模拟电池在实际应用中可能遇到的冲击环境而设计,能够精确施加一定加速度的冲击力,以评估电池的抗冲击性能。该试验机操作简便,通过触摸屏即可轻松控制,且具备高度的重复性和低能耗特性。同时,我们严格按照国际测试规范进行设计,确保测试结果的准确性和可靠性。东莞市立人仪器设备有限公司始终致力于为客户提供优质的产品和服务,电池加速度试验机就是我们在电池测试领域的又一力作,为电池的安全性能评估提供了有力保障。东莞市立人仪器设备有限公司是一家集制造、销售校正、测试技术培训及产品开发于一体的科技型企业,专业生产销售各种精密仪器设备。我们长期致力于运动健身器材、模拟环境、拉力试验、纸品包装、橡胶、塑胶、箱包、家居、家具、五金电子、胶粘带...
51单片机,8个数码管循环显示1-9的C语言程序。
假设8个数码管公共端均接地,同时显示1-9\x0d\x0a#include\x0d\x0a#include\x0d\x0a#defineucharunsignedchar\x0d\x0a#defineuintunsignedint\x0d\x0aucharcodeDSY_CODE[]=\x0d\x0a{\x0d\x0a0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x82,0xf8,0x80,0x90,0xff\x0d\x0a}...
...400mS数字跳变,花出图标注元件参数,编写C语言程序
程序如下:include<reg52.h> define uchar unsigned char define uint unsigned int int temp;char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};void delay(int n){ int i,j;for(i=0;i<n;i++)for(j=0;j<100;j++);} void main(){ for(temp=0;temp<=8;temp+...
求C51 的两个数码管显示0~99的C语言程序,越简单越好。希望是有for循环...
看这个例子,两个数码管,从0到99,时间0.1S include <reg52.h> define uchar unsigned char define uint unsigned int sbit K1 = P3^7;uchar i,Second_Counts,Key_Flag_Idx;bit Key_State;uchar DSY_CODE[]= { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f };void DelayMS...
用C语言编写一个在八个数码管上轮流显示1-8的程序
shs100968 采纳率:41% 来自:芝麻团 擅长: 棋牌麻将 C/C++ 为您推荐: 数码管显示原理 数码管闪烁显示 数码管程序讲解 数码管显示实验报告 verilog数码管闪烁 用汇编语言显示数码管 让数码管显示数字 单片机数码管显示程序 共阴极数码管引脚图 单片机数码管显示0到9 其他...
用51帮忙写个c语言程序,按键计数,按一下键显示数字加一,两个按键控制...
include <reg51.h>sbit k1=P3^0;sbit k2=P3^1;unsigned char shi,ge;unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳极数码管void delay(unsigned int z){unsigned int x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void display...
求数码管静态显示程序,显示“12345678“,汇编的,C语言的都可。
uchar code duma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00}; //共阴的数码管段选,P2口要取的数值 uchar code wema[]={0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff}; //P1口的片选位 void delay(uint x){ uint a,b;for(a=x;a>0;a--)for(b...
求用单片机驱动数码二级管的C语言程序,要求二级管显示00~99_百度知 ...
两位数码管显示00~99,无需采用数码管扫描,通常采用静态显示。给你提供一个两位数码管00~99循环加法计数的CC语言程序。程序中,采用了软件延时的方法,每半秒自动加1。include<reg52.h> unsigned char count=0;unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,...
用C语言编写AT89C51单片机程序,设计一个智能数字钟。
这是我的课程设计,6个数码管,显示时分秒,三个按钮P0.0、P0.1、P0.2可以调时,有8个彩灯(可以不要),没闹钟、倒计时之类的。呵呵。include<AT89X52.H> define uchar unsigned char int i;//***时钟的 uchar one[10]={0xbf,0xb0,0xdb,0xcf,0xe6,0xed,0xfd,0x07,0xff,0xef}...
51单片机c语言设计,按键控制数码管,依次按下显示0到9循环?
假设你的是共阳极数码管,P0接数码。按键接P2^0;include<reg52.h> typedef unsinged int uint;sbit key=P2^0;unsigned char tab[]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void denay(uint x){ uint i,j;for(i=x;i>0;i--)for(j=110;j>0;j--)} void main(){ u...