求用单片机驱动数码二级管的C语言程序,要求二级管显示00~99

求用单片机驱动数码二级管的C语言程序,要求二级管显示00~99,第1张

两位数码管显示00~99,无需采用数码管扫描,通常采用静态显示。

给你提供一个两位数码管00~99循环加法计数的CC语言程序

程序中,采用了软件延时的方法,每半秒自动加1。

#include<reg52h>

unsigned char count=0;

unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//段码

void delay500ms(); //延时子程序声明

void display(unsigned char X); //显示子程序声明

void main()

{

while(1)

{

delay500ms();

count++;

if(count>=100)count=0;

display(count);

}

}

void delay500ms()

{

unsigned char i,j,k;

for(i=5;i>0;i--)

for(j=200;j>0;j--)

for(k=248;k>0;k--);

}

void display(unsigned char X)

{

P0=table[X/10];

P2=table[X%10];

}

不管是写什么程序,首先要掌握控制原理,是通过什么来控制设备的。这些都要非常的熟悉,才能写程序。

所以,这种事情,决不是一两话,就能说明白怎么写程序,这不可能说应该怎么写。

如果这是大学里的毕业设计题目,或者是什么作业,就上网随便找个程序就行,也没有人真的去运行程序对不对,也不会有人去看程序的。

这个很简单,我教你怎么玩,下面是思路和方式

思路:有三个输入,分别是一个按钮、两个霍尔传感器(也就是接近开关),我用P00到P02来代替;输出2个或以上(这看你接什么显示器,如果是PC的话,就不用数字量输出,直接串口就可以了)控制正反转的继电器管脚用P10、P11;

PS:显示那块我不知道你怎么处理,但是需要与一个全局变量转动次数k连接起来,另外两个输入接近开关选用NPN传感器或用光电隔离,总之有效信号能把管脚电压拉低就可以了,具体硬件要注意什么,有需要就问我

现在我们来写程序:

#include <reg51h> //选用晶振110592MHz

unsigned char k=0; //k表示正反转次数

sbit X0=P3^2; //调节按钮

sbit X1=P1^1; //上限位接近开关信号

sbit X2=P1^2; //下限位接近开关信号

sbit Y1=P0^0; //电机上升(注意:我使用的是管脚输出为0时候,电机运动,这样可以避免启动时候,单片机自复位对电机点动的影响)

sbit Y2=P0^1; //电机下降

void delay50ms(unsigned int i)

{

unsigned int j;

for (i;i>0;i--)

for(j=46078;j>0;j--);

}

main()

{

IT0=1; //下降沿触发

EX0=1; //开P32外部中断

EA=1; //总中断开

while(1)

while(k)

{

Y1=0; //正转

while(X1==1); //等待正转接近开关反应

Y1=1; //正转停

delay50ms(1); //停止时间50ms

Y2=0; //反转

while(X2==1); //等待反转接近开关反应

Y2=1; //反转停

k--; //圈数减一

}

}

void counter0(void) interrupt 0

{

k++; //外部中断控制圈数加一

//这个位置可以加你显示程序

}

程序已经通过测试,放上去就能用,很好玩哟,呵呵

以上就是关于求用单片机驱动数码二级管的C语言程序,要求二级管显示00~99全部的内容,包括:求用单片机驱动数码二级管的C语言程序,要求二级管显示00~99、怎样用单片机的C语言编写直流电机两轴联动驱动程序、C语言编程:电机的正反驱动程序已经具备,想通过按键添加新功能,已写程序及新添加功能如下等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9449972.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存