① 用c語言寫51單片機
#include<reg51.h>
#defineucharunsignedchar
sbitkey1=P1^0;
sbitkey2=P1^1;
sbitkey3=P1^2;
sbitkey4=P1^3;
sbitled1=P1^4;
sbitled2=P1^5;
main()
{
if(key1==0)
{
while(key1==0);
led1=0;
led2=1;
}
if(key2==0)
{
while(key2==0);
led1=1;
led2=0;
}
if(key3==0)
{
while(key3==0);
led1=0;
led2=0;
}
if(key4==0)
{
while(key4==0);
led1=1;
led2=1;
}
}
② 自學51單片機的書籍
如下:
《51單片機工程師是怎樣煉成的:基於C語言+Proteus模擬》老楊 電子工業出版社
《單片機C語言程序設計實訓100例——基於8051+Proteus模擬》彭偉 電子工業出版社
《新概念51單片機C語言教程——入門、提高、開發、拓展》 郭天祥 電子工業出版社
《實例解讀51單片機完全學習與應用》 電子工業出版社
《手把手教你學單片機》 北航
《單片機基礎》李廣弟 北航
《單片機原理及介面技術》李朝青 北航
《51單片機應用從零開始》匯編 楊欣 清華出版社
《愛上單片機》 杜洋 人民郵電出版社
《例說51單片機(C語言版)》 張義和 人民郵電出版社
《單片機原理與技術》
《51單片機開發與應用技術詳解》
《單片機技術與原理教材》
《匠人手記》
《手把手教你學單片機》
《8051單片機》
《單片機原理及應用》 張毅剛
《51單片機原理與實踐》
《單片機應用技術》 哈爾濱工業大學出版社
《8051單片機教程》 平凡
《單片機輕松入門》平凡
《單片機原理與應用》 西安電子科技大學
③ 求51單片機P1口輸入實驗C語言版程序。
//P2接74ls273
D0~7
//P3.0
接
74ls273
clk
引腳
//P3.0
接
WR
#include
<reg52.h>
//52系列單片機頭文件
sbit
CLK=P3^0;
sbit
WR=P3^1;
void
main()
//主函數
{
CLK=0;
WR=1;
while(1)
//大循環
{
unsigned
int
time=10;
P2=P1;
//P2直接
讀取
P1數值
CLK=1;
while(time--);
CLK=0
}
}
試試
估計差不多
④ 學51單片機推薦書籍,要求是入門的
單片機入門書籍,推薦3本書給你吧。
1.《新型單片開關電源設計與應用技術》
⑤ 51單片機項目教程 C語言版 高清帶書簽(吳險峰)pdf,哪裡可以下載
《51單片機項目教程C語言版 贈單片機開發板.pdf》(選擇普通下載即可!)
1、找到這本資料,美中不足就是沒有書簽,湊合看吧;
2、手機瀏覽器網頁端登 陸 或 PC電腦端登 陸,即可查看、下載;
3、文件有時效性,若失效或下載問題,留言;
⑥ 急需基於51單片機的紅外遙控開關的設計原理圖和程序(c語言版)
/*------------------------------------------------*/
#include<reg52.h> //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義
sbit IR=P3^2; //紅外介面標志
#define DataPort P0 //定義數據埠 程序中遇到DataPort 則用P0 替換
sbit DUAN=P2^6;//定義鎖存使能埠 段鎖存
sbit WEI=P2^7;// 位鎖存
/*------------------------------------------------
全局變數聲明
------------------------------------------------*/
unsigned char code dofly_DuanMa[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};// 顯示段碼值0~F
unsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分別對應相應的數碼管點亮,即位碼
unsigned char TempData[8]; //存儲顯示值的全局變數
unsigned char irtime;//紅外用全局變數
bit irpro_ok,irok;
unsigned char IRcord[4];
unsigned char irdata[33];
/*------------------------------------------------
函數聲明
------------------------------------------------*/
void Ir_work(void);
void Ircordpro(void);
/*------------------------------------------------
顯示函數,用於動態掃描數碼管
輸入參數 FirstBit 表示需要顯示的第一位,如賦值2表示從第三個數碼管開始顯示
如輸入0表示從第一個顯示。
Num表示需要顯示的位數,如需要顯示99兩位數值則該值輸入2
------------------------------------------------*/
void Display(unsigned char FirstBit,unsigned char Num)
{
static unsigned char i=0;
DataPort=0; //清空數據,防止有交替重影
DUAN=1; //段鎖存
DUAN=0;
DataPort=dofly_WeiMa[i+FirstBit]; //取位碼
WEI=1; //位鎖存
WEI=0;
DataPort=TempData[i]; //取顯示數據,段碼
DUAN=1; //段鎖存
DUAN=0;
i++;
if(i==Num)
i=0;
}
/*------------------------------------------------
定時器0中斷處理
------------------------------------------------*/
void tim0_isr (void) interrupt 1 using 1
{
irtime++; //用於計數2個下降沿之間的時間
}
/*------------------------------------------------
定時器中斷子程序
------------------------------------------------*/
void Timer1_isr(void) interrupt 3
{
TH1=(65536-2000)/256; //重新賦值 2ms
TL1=(65536-2000)%256;
Display(0,8); // 調用數碼管掃描
}
/*------------------------------------------------
外部中斷0中斷處理
------------------------------------------------*/
void EX0_ISR (void) interrupt 0 //外部中斷0服務函數
{
static unsigned char i; //接收紅外信號處理
static bit startflag; //是否開始處理標志位
if(startflag)
{
if(irtime<63&&irtime>=33)//引導碼 TC9012的頭碼,9ms+4.5ms
i=0;
irdata[i]=irtime;//存儲每個電平的持續時間,用於以後判斷是0還是1
irtime=0;
i++;
if(i==33)
{
irok=1;
i=0;
}
}
else
{
irtime=0;
startflag=1;
}
}
/*------------------------------------------------
定時器0初始化
------------------------------------------------*/
void TIM0init(void)//定時器0初始化
{
TMOD=0x02;//定時器0工作方式2,TH0是重裝值,TL0是初值
TH0=0x00; //重載值
TL0=0x00; //初始化值
ET0=1; //開中斷
TR0=1;
}
/*------------------------------------------------
定時器初始化子程序
------------------------------------------------*/
void Init_Timer1(void)
{
TMOD |= 0x01; //使用模式1,16位定時器,使用"|"符號可以在使用多個定時器時不受影響
//TH1=0x00; //給定初值
//TL1=0x00;
EA=1; //總中斷打開
ET1=1; //定時器中斷打開
TR1=1; //定時器開關打開
}
/*------------------------------------------------
外部中斷0初始化
------------------------------------------------*/
void EX0init(void)
{
IT0 = 1; //指定外部中斷0下降沿觸發,INT0 (P3.2)
EX0 = 1; //使能外部中斷
EA = 1; //開總中斷
}
/*------------------------------------------------
鍵值處理
------------------------------------------------*/
void Ir_work(void)//紅外鍵值散轉程序
{
TempData[0]=dofly_DuanMa[IRcord[0]/16];
TempData[1]=dofly_DuanMa[IRcord[0]%16];
TempData[2]=dofly_DuanMa[IRcord[1]/16];
TempData[3]=dofly_DuanMa[IRcord[1]%16];
TempData[4]=dofly_DuanMa[IRcord[2]/16];
TempData[5]=dofly_DuanMa[IRcord[2]%16];
TempData[6]=dofly_DuanMa[IRcord[3]/16];
TempData[7]=dofly_DuanMa[IRcord[3]%16];
//Display(0,8); // 調用數碼管掃描
irpro_ok=0;//處理完成標志
}
/*------------------------------------------------
紅外碼值處理
------------------------------------------------*/
void Ircordpro(void)//紅外碼值處理函數
{
unsigned char i, j, k;
unsigned char cord,value;
k=1;
for(i=0;i<4;i++) //處理4個位元組
{
for(j=1;j<=8;j++) //處理1個位元組8位
{
cord=irdata[k];
if(cord>7)//大於某值為1,這個和晶振有絕對關系,這里使用12M計算,此值可以有一定誤差
value|=0x80;
if(j<8)
{
value>>=1;
}
k++;
}
IRcord[i]=value;
value=0;
}
irpro_ok=1;//處理完畢標志位置1
}
/*------------------------------------------------
主函數
------------------------------------------------*/
void main(void)
{
EX0init(); //初始化外部中斷
TIM0init();//初始化定時器
Init_Timer1();
while(1)//主循環
{
if(irok) //如果接收好了進行紅外處理
{
Ircordpro();
irok=0;
}
if(irpro_ok) //如果處理好後進行工作處理,如按對應的按鍵後顯示對應的數字等
{
Ir_work();
}
}
}
51P3^2是外部中斷,紅外接收管接這個引腳就能接收到數據然後顯示在數碼管上
⑦ 急求簡單51單片機控制電路C語言程序
【2011-3-8已更新,有結果吱一下】
磚頭如下:
#inlcude <reg51.h>
sbit OUT=P2^0;
sbit Key=P3^3;
#define DELAYCONST 50000//
#define DELAYCONST2 20//簡單的定時參數設定。
void Delay(char j)
{
unsigned int k,l;
for(j=0;j<60;j++)
for(k=0;k<DELAYCONST2;k++)
for(l=0;l<DELAYCONST;l++)
;
}
main()
{
char i=3;
while(1)
{
while(i==3)
{
OUT=!Key;
i=P1&3;
}
if(i==2)
{
OUT=0;Delay(1);OUT=1;
}
else
{
OUT=0;Delay(5);OUT=1;
}
while(P1&3==3);//此後按任意鍵,還可以復位重來。
OUT=0;
i=3;//【補充】
}
}
希望能對你入門編程有所幫助。如有錯誤,自行調試。謝謝!
⑧ 51單片機c語言版,編寫程序:單片機控制八位LED數碼管顯示20220204間隔兩秒後顯示2022
摘要 顯示程序和硬體關聯,如驅動方式、位數等,所以沒有統一的程序,假定動態顯示,大概思路如下:
⑨ 51單片機C語言開發與實例的內容提要
書中列舉了大量應用實例,著重介紹了51單片機的一些新技術及其應用方法,同時還介紹了幾款簡易編程器的編制和使用方法,使讀者盡快、盡可能容易地掌握利用C51對MCS-51單片機進行開發的方法。
系統全面、突出重點、由淺入深、通俗易懂、學用結合、軟硬兼備、實例豐富是本書的主要特色,因此,本書適用於具備一定電子技術基礎和具有一定的單片機基礎知識的學生、教師、單片機愛好者、電子製作愛好者、電器維修人員、電子產品開發設計者、工程技術人員閱讀參考。
⑩ 單片機初學者該看什麼書
《51單片機工程師是怎樣煉成的:基於C語言+Proteus模擬》老楊 電子工業出版社
《單片機C語言程序設計實訓100例——基於8051+Proteus模擬》彭偉 電子工業出版社
《新概念51單片機C語言教程——入門、提高、開發、拓展》 郭天祥 電子工業出版社
《實例解讀51單片機完全學習與應用》 電子工業出版社
《手把手教你學單片機》 北航
《單片機基礎》李廣弟 北航
《單片機原理及介面技術》李朝青 北航
《51單片機應用從零開始》匯編 楊欣 清華出版社
《愛上單片機》 杜洋 人民郵電出版社
《例說51單片機(C語言版)》 張義和 人民郵電出版社
《單片機原理與技術》
《51單片機開發與應用技術詳解》
《單片機技術與原理教材》
《匠人手記》
《手把手教你學單片機》
《8051單片機》
《單片機原理及應用》 張毅剛
《51單片機原理與實踐》
《單片機應用技術》 哈爾濱工業大學出版社
《8051單片機教程》 平凡
《單片機輕松入門》平凡