把wei=_crol_(wei,1);改為wei=wei1 就可以了。。
古浪網站建設公司創(chuàng)新互聯(lián),古浪網站設計制作,有大型網站制作公司豐富經驗。已為古浪千余家提供企業(yè)網站建設服務。企業(yè)網站搭建\成都外貿網站建設要多少錢,請找那個售后服務好的古浪做網站的公司定做!
我也有個程序 你可以參考下。。
#include reg51.h
sbit P2_0 = P2^0;
sbit P2_1 = P2^1;
sbit P2_2 = P2^2;
sbit P2_3 = P2^3;
sbit P2_4 = P2^4;
sbit P2_5 = P2^5;
sbit P2_6 = P2^6;
sbit P2_7 = P2^7;
/***********************************************************************************************/
const unsigned char led_code[20]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XD8,0X80,0X90,
? ? ?0X40,0X79,0X24,0X30,0X19,0X12,0X02,0X58,0X00,0X10};
? ? ? ? ?//定義0~9以其帶小數點的顯示碼
unsigned char led_reg[8]={1,9,10,11,12,13,14,15}; ?//定義顯示數碼緩存器
/************************************************************************************************
**function:delay(unsigned char i)
**功 ? ?能:延時程序
************************************************************************************************/
void delay(unsigned char i)
{ unsigned char j,k;
for(k=0;ki;k++)
{ for(j=0;j255;j++);
}
}
/************************************************************************************************
**function:led_show()
**功 ? ?能:顯示函數
************************************************************************************************/
void led_show( )
{ static unsigned char led_shift=0x00; //定義靜態(tài)變量
P2=0xFF; //關閉數碼管控制端口
P0=led_code[led_reg[led_shift]]; //把字符代碼送到P0端口
switch(led_shift) //選擇數碼管控制位
{ case 0: P2_0=0;break; //控制左1數碼管
case 1: P2_1=0;break; //控制左2數碼管
case 2: P2_2=0;break; //控制左3數碼管
case 3: P2_3=0;break; //控制左4數碼管
case 4: P2_4=0;break; //控制左5數碼管
case 5: P2_5=0;break; //控制左6數碼管
case 6: P2_6=0;break; //控制左7數碼管
case 7: P2_7=0;break; //控制左8數碼管
default:break;
}
led_shift++; //數碼管控制變量自加
if(led_shift==0x08) //判斷是否掃描一輪
led_shift=0x00; //歸零進行下一輪掃描
}
/************************************************************************************************
mian()
************************************************************************************************/
void main()
{ P0=0X00; //P0端口輸出低電平
P2=0XFF; //P2端口輸出高電平
while(1)
{ led_show(); //調用顯示函數
delay(10); //調用延時函數
}
}
void display(int n)
{
char b3, b2, b1; //定義兩個有符號整形數b3,b2和b1
b3=n/100;
b2=(n/10)%10;//這里應該這樣才對不然會大于10的
b1=n%10;
//百位
P0=seg7[b3]; //
en3=0; //顯示DS2
ms_delay(10); //延時
en3=1; //關閉DS2
//十位
P0=seg7[b2]; //
en2=0; //顯示DS2
ms_delay(10); //延時
en2=1; //關閉DS2
//個位
P0=seg7[b1]; //
en1=0; //顯示DS1
ms_delay(10); //延時
en1=1; //關閉DS1
}
用10個8段數碼管動態(tài)掃描顯示的:
#include
unsigned
char
const
dofly[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//
顯示段碼值0123456789
unsigned
char
code
seg[]={0,1,2,3,4,5,6,7,8,9};//分別對應相應的數碼管點亮,即位碼
/*------------------------------------------------
延時子程序
------------------------------------------------*/
void
delay(unsigned
int
cnt)
{
while(--cnt);
}
/*------------------------------------------------
主函數
------------------------------------------------*/
main()
{
unsigned
char
i;
while(1)
{
P0=dofly[i];//取顯示數據,段碼
P2=seg[i];
//取位碼
delay(20000);
//掃描間隙延時,時間太長會閃爍,太短會造成重影,自己調試
i++;
if(10==i)
//檢測10位掃描完全?
i=0;
}
}
首先,你沒有給出數碼管的相應電路,這里就用Display()函數來代替你的顯示程序。按鍵也沒有給出電路,這里以普通IO按鍵來編寫程序。
unsigned
char
disp_data;
//定義一個用于存儲需要顯示數值的全局變量
void
Display(unsigned
char
disp)
//數碼管顯示函數,輸入參數為要顯示的值。
void
Delay_ms(unsigned
char
disp)
//毫秒級延時函數,用于按鍵去抖動。
void
main()
{
disp_data=50;
Display(disp_data);
//初始顯示"50"
while(1);
//循環(huán)查詢+-按鍵的狀態(tài)
{
if(K+
==
0)
//判斷K+是否被按下(假如按鍵按下時為低電平)
{
Delay_ms(20);
//延時,去抖動
if(k+
==
0)
//再次判斷
{
disp_data++;
//數值+1
if(disp_data80)
//判斷數據是否超出范圍
{
//已經超出
disp_data=80;
//使數據保持在80;
Display(disp_data);
//顯示數據
}
else
//沒有超出
{Display(disp_data);}
//顯示數據
}
}
if(K-
==
0)
//判斷K-是否被按下(假如按鍵按下時為低電平)
{
Delay_ms(20);
//延時,去抖動
if(k-
==
0)
//再次判斷
{
disp_data--;
//數值-1
if(disp_data50)
//判斷數據是否超出范圍
{
//已經超出
disp_data=50;
//使數據保持在50;
Display(disp_data);
//顯示數據
}
else
//沒有超出
{Display(disp_data);}
//顯示數據
}
}
}
}
瀏覽器里直接打的代碼,整體思路應該是對的,需要注意的是K+\K-這樣的變量keil中是非法的,實際程序中請自行改正。