⑴ 學校的課程設計,用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的文件,輸入文件名以及文件的存儲目錄,