標題:
這個單片機程序 為什么數(shù)碼管不亮?
[打印本頁]
作者:
jdlover
時間:
2020-11-24 22:04
標題:
這個單片機程序 為什么數(shù)碼管不亮?
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
uchar time;
uint count=0; //定義占空比,并初始占空比為0%
sbit PWM=P2^0; //P2^0口輸出PWM
sbit key_add=P3^4; //電機加速的按鍵 的I/O口
sbit key_dec=P3^5; //電機減速的按鍵 的I/O口
sbit led0 = P2^1;
sbit led1 = P2^2;
unsigned char code table[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
uint i=0,j;
/************函數(shù)聲明**************/
void delayxms(uint z); //延時
void Motor_add(); //電機加速,即增加占空比
void Motor_dec(); //電機減速,即減少占空比
void timer0_init(); //定時器0初始化
void display(uint count);
/*********主函數(shù)********************/
void main()
{
timer0_init();
delayxms(2);
while(1)
{
Motor_add();
Motor_dec();
display(count);
}
}
/****************延時處理**********************/
void delayxms(uint z) //延時xms程序
{
uint x,y;
for(y=z;x>0;x--)
for(y=110;y>0;y--);
}
void Motor_add() //電機加速
{
if(key_add==0)
{
delayxms(2); //此處時間不能太長,否者會的中斷產生沖突
if(key_add==0)
{
count+=1; //每按一次加速按鍵占空比加1
if(count>=99) //限定占空比上限
{
count=99;
}
}
while(!key_add);
}
}
void Motor_dec()//電機減速
{
if(key_dec==0)
{
delayxms(2);//此處時間不能太長,否者會的中斷產生沖突
if(key_dec==0)
{
count-=1; //每按一次減速按鍵占空比減1
if(count<=0) //限定占空比下限
{
count=0;
}
}
while(!key_dec);
}
}
/***********定時器0初始化***********/
void timer0_init()
{
TMOD=0x01; //定時器0工作于方式1
TH0=(65536-10)/256;
TL0=(65536-10)%256;
TR0=1;
ET0=1;
EA=1;
}
/**************定時0中斷處理******************/
void timer0_int() interrupt 1
{
TR0=0; //設置定時器初值期間,關閉定時器
TH0=(65536-10)/256;
TL0=(65536-10)%256;
TR0=1;
time++;
if(time<count) //count為占空比
{
PWM=1; //輸出高電平
}
else
PWM=0;
if(time>=100)
{
time=0;
}
}
void display(uint count) //顯示函數(shù)
{
i = count/10;
j = count-i*10;
led1=0;
P0=table[i];
led0=1;
delayxms(5);
led0=0;
P0=table[j];
led1=1;
delayxms(5);
}
復制代碼
作者:
csmyldl
時間:
2020-11-25 00:33
接了一位數(shù)碼管,要顯示count計數(shù)值的低兩位,而且這兩位各只顯示5ms,人的眼睛無法觀察到這短時間的顯示
作者:
hukangjaki1
時間:
2020-11-25 10:37
led0=0;led1=0;這兩個語句去除
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1