- 註冊時間
- 2012-8-11
- 最後登錄
- 2020-11-29
- 主題
- 查看
- 積分
- 12
- 閱讀權限
- 20
- 文章
- 77
- 相冊
- 0
- 日誌
- 0
狀態︰
離線
|
大家好!
我想請問我用4位共陽顯示器最左邊二位當(個位、捨位)來控制
但是在進位顯示方面一直沒有成功,二位數都一直顯示同一個字型碼,而且有些字型碼不完全
請幫我看一下
#include<reg51.h>
#define uchar unsigned char
#define delay_ms
sbit led1 = P2^1;
sbit led2 = P2^0;
sbit led3 = P2^2;
sbit led4 = P2^3;
#define dig1 led1=0;led2=1;led3=1;led4=1;//點亮 拾位
#define dig2 led1=1;led2=0;led3=1;led4=1;//點亮 個位
#define dig3 led1=0;led2=1;led3=0;led4=1;//點亮 點數
#define dig4 led1=0;led2=1;led3=1;led4=0;//點亮 倍位
sbit OP=P3^0; //投幣
sbit ST=P3^1; //停止
sbit PA=P3^2; //退幣 馬達 開關
sbit PAM=P3^3; //退幣 馬達
#define show P0//定?P0口?所?示段?的控制
uchar number[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98};//??0~9
uchar one; //個位
uchar ten; //拾位
uchar point; //點數
uchar Double; //倍位
void delay1ms(unsigned int time) { //(????) ?? 1m
unsigned int i,j;
for (i = time; i > 0; i--) {
for (j = 112; j > 0; j--)
{;}
}
}
void T0_init(void) {
TMOD=0x01;//??工作方式1
TL0=0x66;//每6ms中?一次
TH0=0xea;
TF0=0;//中??志位清零
ET0=1;//允?定?器0中?
EA=1;//允??中?
TR0=1;//??定?器
}
void main(void){ //主程式
uchar i,j,k,l;
T0_init();//定?器0初始化
i=0;//控制 個位 ??
j=0;//控制 拾位 ??
k=0;//控制 點數 ??
l=0;//控制 倍位 ??
one=number[0]; //上??三位??管都?示?0000
ten=number[0];
point=number[0];
Double=number[0];
while(1){ //無限循迴
if(OP==0)//判?是否有按?被按下
{
delay1ms(120);
if(OP==0){ //按下
i++; //個位增加
one=number; //顯示個位
if(i==10){ // 10進位
i=0; //個位再以10增加
j++; //捨位增加
one=number; //顯示個位
ten=number[j]; //顯示捨位
}
}
}
} //循環結束
}//結束主程式
void time_display(void) interrupt 1 { //展示分數
static uchar show_bit=1;
TL0=0x66;//定?器?初始
TH0=0xea;
switch(show_bit){
case 1:
{
dig1
show=ten; //個位
show_bit=2; //
break;
}
case 2:
{
dig2
show=one; //
show_bit=1; //
break;
}
}
}
|
|