❶ keil寫程序 單片機二位數碼管顯示倒計時
#include<reg52.h>
#define uchar unsigned char
#define an P0 //共陰數碼管的陽極埠
sbit wei1=P2^4; //共陰數碼管的陽極埠,我的是四位的,下面語句中把1,2關了,只用到了3,4。
sbit wei2=P2^5;
sbit wei3=P2^6;
sbit wei4=P2^7;
uchar code num[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共陰數碼管0~9的十六進制碼
void delay(uchar xms) //軟體延時
{
int i,j;
for(i=xms;i>0;i--)
for(j=125;j>0;j--);
}
void display(int tens,ones) //用來顯示數字的函數,顯示此時的十位,個位。
{
int i,j;
for(i=2;i>0;i--)//通過改變i和j的值,可以改變計時時間。
for(j=50;j>0;j--)
{
wei3=1;//掃描原理。
wei4=0;
an=num[tens];
delay(5);
wei3=0;
wei4=1;
an=num[ones];
delay(5);
}
}
void main()
{
int onesp=0,tensp=0;//定義ones place和tens place。
wei1=0;
wei2=0;
while(1)
{
for(tensp=9;tensp>=0;tensp--)
{
for(onesp=9;onesp>=0;onesp--)
{
display(tensp,onesp);//調用函數顯示此時的數字。
}
}
}
}
這個程序測試可用,從99計數到00。只用了比較簡單知識,不涉及定時器和系統中斷。不懂可以追問。
❷ 單片機程序編程(用C51) 2個按鍵控制2位七段LED顯示,每按下一次「+
main()
{
while(1)
{
key=KEY_Scan(0);
if(key=="+")
{
value++;
}
if(key=="-")
{
value--;
}
}
}
u8 KEY_Scan(char mode)
{
static u8 key_up=1;
if(mode)key_up=1;
if(key_up&&(KEYADD==0||KEYRED==0|))
{
delay_ms(10);//去斗
key_up=0;
if(KEY0==0)return 1;
else if(KEY1==0)return 2;
}else if(KEYADD==1&&KEYRED==1)key_up=1;
return 0;
}
value為顯示值,KEYADD、KEYRED為加減的兩個鍵,底層要你自己實現
❸ 單片機中二位數碼管的顯示,怎樣用c語言寫一段從0到99的程序啊
公陽,P0.2,P0.3 分別通過PNP管接個位,十位數碼管公共端,P1口輸出數據,都是低電平有效
#include <reg51.h>
sbit shi=P0^3; //十位公共極
sbit ge=P0^2; //個位公共極
#define Out P1 //數據輸出端
unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共陽
// 實際顯示 0 1 2 3 4 5 6 7 8 9
//延時----------------------------
Delay(unsigned int t)
{
while(t--);
}
//主程序--------------------------
main()
{
unsigned char i=j=0;
while(1) //循環顯示
{
for(i=0;i<200;i++)
{
Out=tab[j%10];
ge=0;
Delay(1000);
ge=1;
Out=tab[j/10];
shi=0;
Delay(1000);
shi=1;
}
j++;
}
}
❹ 用單片機實現2位靜態數碼管(共陽)控制,其中系統還包括4個獨立按鍵(中斷形式),
2位共陽數碼管分別接在P0口和P口。難點是4個按鍵要採用中斷方式,所以,4個按鍵不但接成獨立式按鍵,還要用一個4輸入與門得到一個中斷請信號加到P3.2上,用INT0中斷。右移,左移指定的位,用小數點顯示。模擬圖如下。
❺ 51單片機怎麼把一個2位十進制整數(00-99之間的任意整數)通過串口發送給另一個單片機程序呢!
2位但十進制數就一個位元組的數據,直接發送就可以了。比如X為發送數據那麼程序為:
senddat:
mov SBUF,X
jnb TI,$
clr TI
ret
C語言
senddat()
{
SBUF=X;
while(!TI);
TI=0;
}