Ⅰ 51單片機最簡單的c語言編程求教
你把裡面的數字轉換成二進制,比如table[0]=0x3f=00111111b;
由於你這個是共陰極數碼管,高電平有效,所以寫一的地方對應的LED都點亮 至於那七根數碼管以及一個小數點和二進制位數對應關系你可以上網上查一下,簡單的說小數點也就是DP是最高位,其他的那七根數碼管從最上面那個開始順時針一共是六根從bit(0)到bit(5),最後橫著那根是bit(6)。希望能幫到你。至於你說的TEMP對應P2口,得有硬體圖才可以知道有什麼作用。
Ⅱ 51單片機如何入門
入門快不快要看你有沒有一定的基礎,比如電子電路知識,0基礎的話確實是有點難。
零基礎的話建議:
1,學習電子元器件基礎
2,學習模擬電子電路基礎
3,學習數字電路基礎
4,熟悉51單片機硬體結構
5,學習編程語言
上面的學完了就入門了 ,我不建議買51單片機開發實驗板來學習,開始學就是要增加自己的動手能力,動手才了解電路,排除故障,得到經驗,製作一個51單片機最小系統是很簡單的,再加個8位流水燈,就可以學了,然後再加按鍵,和流水燈一起學,這樣硬體製作也學會,編程也學會,循序漸進才有進步,不要想著一步登天。
有空和我交流交流,我也在學51單片機。
Ⅲ 51單片機C語言編程
// 51單片機C語言編程,這個時鍾+秒錶可以參考一下。
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit qingling=P1^0; //清零
sbit tiaofen=P1^1; //調分
sbit tiaoshi=P1^2; //調時
sbit sounder=P1^7; //naozhong
uint a,b;
uchar hour,minu,sec, //時鍾
hour0,minu0,sec0,//秒錶
hour1,minu1,sec1;
h1,h2,m1,m2,s1,s2,//顯示位
k,s;//狀態轉換標志
uchar code select[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
uchar code table[]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
/*****************函數聲明***********************/
void keyscan();
void init();
void delay(uchar z);
void display(uchar,uchar,uchar);
void sounde();
/*****************主函數*************************/
void main()
{
init();
while(1)
{
while(TR1)
{
keyscan(); //掃描函數
while(s==1) //s是狀態標志,當s=0時,鬧鍾取消。s=1時,設定鬧鍾時間(也是通過調時,調分函數);
{ //s=2時,鬧鍾工作,時間與設定時刻一致時,鬧鍾響(一分鍾後自動關閉,可手動關閉)。再次切換,s=0.
keyscan(); //s狀態切換(0-》1-》2-》0)通過外部中斷1實現。
display(hour1,minu1,sec1); //鬧鍾時刻顯示
}
display(hour0,minu0,sec0);//時鍾表顯示
while(k) /*k是秒錶狀態(0-》1-》2-》0)通過外部中斷0實現。0秒錶關;1秒錶從零計時;2秒錶停,顯示計時時間*/
{
display(hour,minu,sec); //秒錶顯示
}
}
}
}
/*****************初始化函數***********************/
void init()
{
a=0;
b=0;
k=0;
s=0;
hour0=0;
minu0=0;
sec0=0;
hour=0;
minu=0;
sec=0;
hour1=0;
minu1=0;
sec1=0;
TMOD=0x11; //定時器0,1工作於方式1;賦初值
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
EA=1;
EX0=1; //秒錶中斷
EX1=1; //鬧鍾設定中斷
ET0=1;
ET1=1;
IT0=1; //邊沿觸發方式
IT1=1;
PX0=1;
PX1=1;
TR0=0; //初始,秒錶不工作
TR1=1; //時鍾一開始工作
}
/*****************定時器0中斷*************/
void timer0_int() interrupt 1 //秒錶
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
a++;
if(a==2)
{
a=0;
sec++;
if(sec==100)
{
sec=0; //毫秒級
minu++;
if(minu==60)
{
minu=0; //秒
hour++;
if(hour==60) //分
{
hour=0;
}
}
}
}
}
/*************外部中斷0中斷函數************/
void ex0_int() interrupt 0
{
k++;
if(k==3)
k=0;
if(k==1)
{
TR0=~TR0;
if(TR0==1)
{
hour=0;
minu=0;
sec=0;
}
}
if(k==2)
{
TR0=~TR0;
}
}
/*************外部中斷1中斷函數************/
void ex1_int() interrupt 2
{
s++;
if(s==3)
s=0;
}
/*************定時器1中斷****************/
void timer1_int() interrupt 3 //控制時鍾工作
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
if(s==2)
{
if(hour1==hour0 && minu0==minu1)
sounde();
}
b++;
if(b==20)
{
b=0;
sec0++;
if(sec0==60)
{
sec0=0;
minu0++;
if(minu0==60)
{
minu0=0;
hour0++;
if(hour0==24)
hour0=0;
}
}
}
}
/*************鍵盤掃描****************/
void keyscan()
{
if(s==1)
{
if(qingling==0)
{
delay(10);
if(qingling==0)
{
sec1=0;
minu1=0;
hour1=0;
}
}
if(tiaofen==0)
{
delay(10);
if(tiaofen==0)
{
minu1++;
if(minu1==60)
{
minu1=0;
}
while(!tiaofen);
}
}
if(tiaoshi==0)
{
hour1++;
if(hour1==24)
{
hour1=0;
}
while(!tiaoshi);
}
}
else //調整時鍾時間
{
if(qingling==0)
{
delay(10);
if(qingling==0)
{
sec0=0;
minu0=0;
hour0=0;
}
}
if(tiaofen==0)
{
delay(10);
if(tiaofen==0)
{
minu0++;
if(minu0==60)
{
minu0=0;
}
while(!tiaofen);
}
}
if(tiaoshi==0)
{
hour0++;
if(hour0==24)
{
hour0=0;
}
while(!tiaoshi);
}
}
}
/*************顯示函數****************/
void display(uchar hour,uchar minu,uchar sec)
{
h1=hour/10;
h2=hour%10;
m1=minu/10;
m2=minu%10;
s1=sec/10;
s2=sec%10;
P0=0xff;
P2=table[h1];
P0=select[7];
delay(5);
P0=0xff;
P2=table[h2];
P0=select[6];
delay(5);
P0=0xff;
P2=0x40;;
P0=select[5];
delay(5);
P0=0xff;
P2=table[m1];
P0=select[4];
delay(5);
P0=0xff;
P2=table[m2];
P0=select[3];
delay(5);
P0=0xff;
P2=0x40;
P0=select[2];
delay(5);
P0=0xff;
P2=table[s1];
P0=select[1];
delay(5);
P0=0xff;
P2=table[s2];
P0=select[0];
delay(5);
}
/*************鬧鍾函數****************/
void sounde()
{
sounder=~sounder;
}
/*************延時函數****************/
void delay(uchar z)
{
int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
Ⅳ 新概念51單片機C語言教程.入門、提高、開發.rar
眼睛看東西,越來越不清楚,是老花了?該配老花鏡了?未必如此,健爾馬足療機價格。因為有些眼病也會讓人看不清,冒冒失失去配花鏡,沒准就會耽誤了病。
比如老年人比較容易得的慢性青光眼,症狀開始很輕,可能就是覺得看東西有點模糊,ab收腹運動機怎麼用 久煮火鍋湯底營養過剩 別喝,眼睛酸脹,健爾馬頭頸寶,但休息或睡眠之後,就會緩解,不少人都會把它當做一種年老、體弱和疲勞後的正常現象。
也有些人,可能已經發現視力問題,但卻錯誤地以為就是老花眼了,或者老花度數變大了,於是趕忙去配或換眼鏡。但沒多久,又看不清了,就這樣眼鏡度數越換越深,等到發覺視野變小,這才意識到去醫院檢查,往往已到了青光眼末期。可以說,慢性青光眼就是在不知不覺中「偷去」人們的視力,健爾馬足療機官網。
所以,為了防止「視力小偷」偷走你的視力,一旦覺得看不清了,可別急著去配老花鏡,還是到醫院先確認一下原因更保險。▲
(西安交通大學醫學院第一附屬醫院眼科副主任張林)
《生命時報》 (2010-08-17 第05版)
更多精彩內容請點擊人民網健康衛生頻道
(責任編輯:劉婧婷)
Ⅳ 有51單片機開發板及其零基礎清翔視頻教程和高手進階教程包括機器人,四軸飛行器,c++,stm32怎麼利用起來
你這個板子是學慣用的,電路是集成好的,就是用各種感測器連接晶元,電路可能都是固定的,實際應用要設計電路。
因為你不可能把感測器、蜂鳴器放在同一個板子上啊,可能會熱壞啊,還有放在一起沒什麼意義啊,你還得在廚房等著啊。所以主要就是設計電路,看起來簡單,沒有專業知識會踩很多的坑。接下來就是把電路做出來呀,自己做PCB板,焊接各種器件,需要動手能力。
控制電路的邏輯燒錄在晶元里,主要是C語言。如果溫度過高,斷電。如果邏輯不復雜的話程序可能就二三十行。
Ⅵ 51單片機C語言程序
//你原來的b2,b2都是死循環,這是不行的,只有主函數才可以死循環。
//你的主函數結構也有問題。
//為你增加了一個按鍵檢測的函數。
//下列程序通過了實驗測試。
//b1輸出的周期大約0.9s。
//b2輸出的周期大約0.6s。
//K為觸動開關,reg為紅燈,bice為綠燈,b1、b2 各為一個方波,
//按第一次觸動開關時紅燈亮、b1輸出,
//按第二次綠燈亮、為b2輸出,
//按第三次都關閉.
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
uint a;
void b1();
void b2();
sbit t = P1^0;
sbit k = P3^5;
sbit reg = P3^3;
sbit bice = P3^2;
void delay(uchar z)
{
uint x,y;
for(x = z; x > 0; x--) for(y = 110; y > 0; y--);
}
bit key()
{
bit kkk;
kkk = k; //讀入按鍵.
if(kkk == 1) return 0;//沒有按下.
delay(5); //延時.
if(k == kkk) return 1;//兩次相等.
return 0;
}
void main()
{
while(1) {
P3 = 0xff;
while(!key()); //靜等按下第一次.
reg = 0;
bice = 1;
while(!key()) b1(); //沒有按下第二次就循環等待.
reg = 1;
bice = 0;
while(!key()) b2(); //沒有按下第三次就循環等待.
}
}
void b1()
{
P1 = 0xfe; a = 50000; while(a--);
P1 = 0xff; a = 50000; while(a--);
}
void b2()
{
P1 = 0xfe; a = 30000; while(a--);
P1 = 0xff; a = 30000; while(a--);
}
Ⅶ 51單片機C語言教程
郭天祥 十天學會單片機 http://video..com/v?ct=301989888&rn=20&pn=0&db=0&s=25&word=%B9%F9%CC%EC%CF%E9%20%CA%AE%CC%EC%D1%A7%BB%E1%B5%A5%C6%AC%BB%FA
Ⅷ (1小時學會C語言51單片機)C語言入門教程
51作為學習入門,確實是最最基礎的了,不過至少它可以讓一個新手明白控制是怎麼回事,反饋是怎麼回事,程序是怎麼下載進去運行,又是怎麼控制到io輸入輸出的,如何去訪問寄存器,掌握一套在嵌入式領悟最最基本的開發方法和學習思路。這部分如果有興趣,建議學習時間不要超過兩個月。
1.c語言,及部分匯編代碼
2.用一個月時間看完做完郭天祥的十天學會51單片機
3.買一塊開發板
4.學習能夠看懂看會原理圖
5.掌握搜集資料,datasheet查找閱讀英文手冊的能力
6.自己動手動手動手做一個簡單的功能
最後,我其實不建議51入門,可以直接stm32,雖然他還是單片機。不過十年前我當初也是51入門的,樂此不疲。至於忽悠你什麼協議,內核,我覺得讓一個大一嵌入式新手學這些,無疑沒有基礎就想建高樓,所以踏踏實實從基礎開始,大學就是注重基礎,學習能力!
Ⅸ 如何學習C51系列單片機C語言編程啊
如果樓主有C基礎的話那麼C51隻不過在它的基礎上增加了點東西,很好學,前提是,單片機內部結構要懂(這個很好學,一部分一部分的,搞明白,結構規定,就行拉)要是沒有C基礎,那就先學C把,當然也可以一起學,會難一點