導航:首頁 > 操作系統 > 單片機led顯示keil

單片機led顯示keil

發布時間:2022-07-29 06:11:09

⑴ 學校的課程設計,用proteus單片機和keil設計一個LED數碼管顯示的秒錶,如下

你的程序有問題,模擬圖不要用三極體驅動,反而不顯示。如下畫法就行,那4個按鍵不變,沒有畫。

程序中的按鍵處理,方法不當。

先改成如下的程序,先調出能顯示,然後你自己再增加按鍵功能。

#include <reg52.h>

#define uchar unsigned char

#define uint unsigned int

sbit START = P1 ^0;

sbit STOP = P1 ^1;

sbit RESET = P1 ^2;

sbit dp = P0 ^7;

sbit w1 = P2 ^6;

sbit w2 = P2 ^7;

uchar aa,temp,STOPFLAG,STARTFLAG,miaoshi,miaoge;

uchar code table[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//段碼表錯誤

void display();

void delay( uint z);

void init();

void main()

{

init();

while(1)

{

display();//不用帶參數

if(aa == 20)

{

aa = 0;

temp ++;

if(temp == 60)

{

temp = 0;

}

}

}

}

void delay(uint z)

{ uchar x,y;

for(x = z; x > 0; x--)

for(y = 110 ; y > 0; y --);//y不能小於110

}

void display()//不用帶參數

{

miaoshi = temp/10;

miaoge = temp%10;

w1 = 1;

P0 = table[miaoshi];

delay(2);

w1 = 0;

w2 = 1;

P0 = table[miaoge];

delay(2);

w2 = 0;

}

void init()

{ TMOD = 0x01;

TH0 = (65536 - 50000)/256;

TL0 = (65536 - 50000)%256;

EA = 1;

ET0 = 1;

TR0 = 1;

}

void timer0() interrupt 1

{ TH0 = (65536 - 50000)/256;

TL0 = (65536 - 50000)%256;

aa ++;

}

⑵ 單片機數碼管的動態顯示問題,求解

我的代碼會有很多bug,不過相當於免費的東西,你也就別期待多麼好了。

可以參考一下。按照我硬體圖來的。

#include<reg51.h>
unsigned char tube1[]={0x5b,0x3f,0x5b,0x3f};//數碼管初始狀態2020 字元碼
unsigned char tube2[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共陰極字元碼
sbit key1=P2^0;
sbit key2=P2^1;
sbit key3=P2^2;
sbit key4=P2^3;
sbit led1=P3^0;
sbit led2=P3^1;
sbit led3=P3^2;
sbit led4=P3^3;
void delay(unsigned int time);
void main()
{
unsigned char i,W;
while(1)
{
if(key1==1&key2==1&key3==1) //初始狀態
{
W=0x01;
P3=0X00;
for(i=0;i<4;i++)
{
P1 =W;
W<<=1;
P0=tube1[i];
delay(10);
P1 =0x00;
}
}
if(key1==0) // 按鍵1按下
{
delay(10);
if(key1==0)
{
led1=1;
led2=0;
led3=0;
led4=0;
W=0x8;
for(i=0;i<10;i++)
{
if(key2==0|key3==0|key4==0)
break;
P1 =W;
P0=tube2[i];
delay(1000);
P1 =0x00;
}
}
while(!key1);
delay(10);
while(!key1);
}
if(key2==0) //按鍵2按下
{
delay(10);
if(key2==0)
{
led1=0;
led3=0;
led2=1;
led4=1;
W=0x4;
for(i=0;i<10;i=i+2)
{
if(key1==0|key3==0|key4==0)
break;
P1 =W;
P0=tube2[i];
delay(1000);
P1 =0x00;
}
}
while(!key2);
delay(10);
while(!key2);
}
if(key3==0) //按鍵3按下
{
delay(10);
if(key3==0)
{
led1=1;
led3=1;
led2=0;
led4=0;
W=0x2;
for(i=1;i<10;i=i+2)
{
if(key2==0|key1==0|key4==0)
break;
P1 =W;
P0=tube2[i];
delay(1000);
P1 =0x00;
}
}
while(!key3);
delay(10);
while(!key3);
}
}
}
void delay(unsigned int time)
{
unsigned int j=0;
for(;time> 0;time--)
for(j=0;j<125;j++);
}

⑶ 51單片機「LED滾動顯示0123456789AbCdEF」 .用keil軟體調試,而且一次八位。

是這樣的六位換八位,還是六段管換七段管???其實兩種都挺簡單的

⑷ 用Keil uVision軟體編一個讓4位LED數碼管顯示數字的程序

#include<reg52.h>

#include<intrins.h>

sbitwei=P1^0;

sbitan=P1^1;

intw[8]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};

inti,tt;

inttemp;


voidmain()

{

TMOD=0X01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;

TR0=1;

tt=0;

i=0;

temp=0xfe;

an=1;

P0=0xfe;

an=0;

wei=1;

P0=0x06;

wei=0;

while(1)

{if(tt==20)

{ tt=0;

i++;

if(i==8)

i=0;

wei=1;

P0=w[i];

wei=0;

an=1;

temp=_crol_(temp,1);

P0=temp;

an=0;

}

}

}


voidtimer()interrupt1

{TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

tt++;

}

這是我的protues電路圖,你可以看看,由於可簡化,我沒畫晶振和復位電路哈

⑸ Keil編程 實現:使用51單片機,實現LED溫度的顯示,同時設定溫度界限,當超過步進電機正轉,低於則反轉

程序還要自己整合,畢竟自己編的才有成就感,我給你提點思路,液晶顯示程序和溫度控製程序都看懂的情況下,你可以在定時中斷中掃描溫度,並判斷是否達到閥值,設置一個Bit型的flag,然後在主程序中一直調用步進電子子程序,同樣,步進電機中的正轉反轉由上面提到的flag進行判斷。有什麼問題繼續追問就行

⑹ 用keil編一個led燈閃爍程序

點亮 小燈的程序我們第二課完成了,就是讓 LED = 0。熄滅小燈的程序也很簡單,就是 LED = 1。點亮和熄滅都會了,那麼如果我們在亮和滅中間加個延時,反復不停的點亮和熄滅小燈,就成了閃爍了。

我們首先復習一下 Keil 寫程序的過程,建立工程-->保存工程-->建立文件-->添加文件到工程-->編寫程序-->編譯-->下載程序。

LED 對於有 C 基礎的同學來說很簡單,那我先寫出來,大家可以先看下。沒有C 語言基礎的同學也可以跟著抄一遍,下節課我會補充部分 C 語言基礎知識,這樣你先抄一遍後,再跟著看 C 語言基礎知識的時候也比較容易理解透徹。

純文本復制

#<reg52.h>

sbit LED = P0^0;

sbit ADDR0 = P1^0;

sbit ADDR1 = P1^1;

sbit ADDR2 = P1^2;

sbit ADDR3 = P1^3;

sbit ENLED = P1^4;

main(){ //void 即函數類型

//以下為聲明語句部分

unsigned int i = 0; //定義一個變數 i,並賦初值 0

//以下為執行語句部分

ENLED = 0; //U3、U4 兩片 74HC138 總使能

ADDR3 = 1; //使能 U3 使之正常輸出

ADDR2 = 1; //經 U3 的 Y6 輸出開啟Q16

ADDR1 = 1;

ADDR0 = 0;

(1){

LED = 0; //點亮小燈

for (i=0; i<30000; i++); //延時一段時間

LED = 1; //熄滅小燈

for (i=0; i<30000; i++); //延時一段時間

}

}

大家把這個程序編譯一下,下載到里,就會發現 LED2 這個小燈會閃爍了。

⑺ Keil四個LED燈點亮程序

keil使用教程編寫第一個led燈程序
1、新建一個空文件夾
2、打開keil-->newuVisionproject
3、選擇目錄,命名文件
4、選擇晶元
5、添加文件
6、編寫C51單片機程序
7、生成可以載入單片機里的hex文件
8、編譯生成hex文件
9、將hex文件導入單片機

⑻ Keil編程:51單片機鍵盤控制LED

剛開始 輸出0X55 或0xAA即可
然後判斷按鍵是否按下
單燈流水 for(i=0;i<8;i++)
{ P1=0x01>>i;delayms(200);}
雙燈流水
for(i=0;i<8;i+=2)
{ P1=0x03>>i;delayms(500);}
呼吸燈不知怎樣呼吸,假如一個燈漸亮漸暗程序如下:
for(i=0;i<100;i++)
{ LED=0;delay100us(i);LED=1;delay100us(100-i);}
假設LED=0是點亮,那麼上面就逐漸變亮過程
一亮一滅是10ms 250次就是2·5S
逐漸變暗過程和上面一樣,只不過把LED=0 LED=1相互顛倒一下就是了

⑼ 單片機軟體keil怎麼用

1.首先,開啟我們的keil軟體,具體的安裝步驟就不做太多的介紹了;
2.開啟後,點擊菜單欄上的Project選項,創建我們的工程,
3.點擊後,在箭頭所指的文本框中輸入你的晶元型號進行查找,...
4.選中晶元點擊Ok即可,在左側的文本框中,選中圖中選項右鍵選擇Add New...選項,...
5.選擇.c的文件,輸入文件名以及文件的存儲目錄,

閱讀全文

與單片機led顯示keil相關的資料

熱點內容
加密門禁卡寫入成功無法開門 瀏覽:449
齒輪傳動pdf 瀏覽:37
alpinelinux 瀏覽:148
手機端app的掃碼功能在哪裡 瀏覽:225
少兒編程中小班英語教案 瀏覽:450
鎖屏密碼加密手機怎麼解除 瀏覽:203
linuxlostfound 瀏覽:132
征途伺服器ip地址 瀏覽:328
git提交代碼命令行 瀏覽:163
什麼叫瀏覽器伺服器結構 瀏覽:155
於謙聊天哪個app 瀏覽:447
小鵬汽車nlp演算法工程師薪資 瀏覽:879
代碼加密與隱藏 瀏覽:647
fordfulkerson演算法 瀏覽:350
京東熱app在哪裡可以下載 瀏覽:874
彩報圖書app哪個好 瀏覽:301
新君威20壓縮比 瀏覽:186
手機php整站 瀏覽:915
windows路由跳轉命令 瀏覽:472
量子遺傳演算法程序 瀏覽:222