SOGO論壇
標題:
8051 數字進位問題
[列印本頁]
作者:
grass0423
時間:
2014-2-20 11:30:15
標題:
8051 數字進位問題
大家好!
我想請問我用4位共陽顯示器最左邊二位當(個位、捨位)來控制
但是在進位顯示方面一直沒有成功,二位數都一直顯示同一個字型碼,而且有些字型碼不完全
請幫我看一下
2014-2-20 11:25:33 上傳
下載附件
(122.08 KB)
電數圖
#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;
}
}
}
附件: [電數圖]
螢幕快照 2014-02-20 上午11.30.47.jpg
(2014-2-20 11:25:33, 122.08 KB) / 下載次數 3
https://oursogo.com/forum.php?mod=attachment&aid=NzY5MTMwMnw5MWZiNzU0MXwxNzMyNTE4Mzk5fDB8MA%3D%3D
作者:
乂羽人乂
時間:
2014-3-12 22:39:53
首先,
我看到大大您說字型問題
0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x67
看看是否正確
if(OP==0){ //按下
one=number[i++]; //顯示個位
if(i==10){ // 10進位
i=0; //個位再以10增加
ten=number[j++];
one=number[i]; //顯示個位
不知道這樣是否正確
錯了請不要責怪我
歡迎光臨 SOGO論壇 (https://oursogo.com/)
Powered by OURSOGO.COM