單片機c語言課程設計
⑴ 求51單片機C語言程序編程思路
#include<AT89X51.H>
//假定繼電器是安裝在P3.5,按鍵分別安裝在P3.6,P3.7,時鍾頻率12MHz
sbitsw1=P3^6;
sbitsw2=P3^7;
sbitrelay=P3^5;
voidSetupTimer0()
{
TMOD&=0XF0;//僅保留T1信息
TMOD|=0X02;//設置T0:定時功能,方式2,自動重載8位定時器/計數器
TH0=256-250;//定時每0.25ms中斷一次
TL0=256-250;
TR0=1;//開啟定時器
ET0=1;//定時器0中斷打開
}
dataunsignedcharus250;
dataunsignedintrelay_timer;
voidTimer0_ISR()interrupt1//定時中斷服務程序,為按鍵消抖服務
{
//如果一個動作過程剛剛開始,則設定繼電器延時3000ms,並打開繼電器
if(0==relay_timer&&0==sw1){relay_timer=3000;relay=1;}
if(++us250>=4)//250us中斷一次,每四次得到1ms
{
us250=0;
if(relay_timer==0)relay=0;//如繼電器延時為0,則關繼電器
else--relay_timer;//否則繼電器延時遞減
}
//如果當前正處於一個動作過程且有sw2按下,則修改繼電器延時為1000ms
if(relay_timer&&0==sw2)relay_timer=1000;
}
voidmain()
{
us250=0;
relay_timer=0;
relay=0;
SetupTimer0();
EA=1;//全局中斷打開
while(1);//所有的動作均在中斷函數內完成
}
⑵ 單片機課程設計用c語言SPK是什麼
單片機課程設計用c語言與SPK貌似沒有直接聯系,從字面上來理解,SPK應該是Speaker的意思,也就是揚聲器,所以題目就是用單片機控制揚聲器發聲或者播放音樂。
⑶ 89c51單片機c語言課程設計新年倒計時電腦時鍾的設計(4個數碼管,我急需程序)!!!
==========================
推薦一個電子技術導航網站你吧!------ 電子世家網址導航 。它分類收錄了很多優秀的電子技術網站,你可以去逛逛的;特別是它裡面的那些網站的論壇,有很多大蝦分享的資料,希望能對在日後從事電子技術的工作中有幫助啦
======================
⑷ 怎麼設計基於51單片機的八位搶答器課程設計用c語言
你的描述不詳:下面我給出方法,自已參考:
1:主持人端有一個單片機設備 且設備有一個或多個按鍵,單個按鍵,那麼就做成按鍵復用,如果是多個按鍵,那就可以按要求設置按鍵功能和數量。參賽隊每隊一個設備,如果不方便能過連線來通訊,就採用無線通訊,搶答端只需一個按鍵按鍵,同時在按鍵里或邊上用指示燈來指示狀誠。
2:邏輯,當主持人按下搶答鍵時,主持人端設備向8個參賽隊發送搶答開始信號數據,參賽隊8個設備向主持端應答,判斷收到應答後,開始計時10秒,某一隊按下按鍵時,這隊會向主持端發送本隊的編號即可,說到這里,後面的基本上都是一樣的原理,就是收發數據,應答,判斷數據類型和功能。即可達到你的要求。
⑸ 單片機課程設計 廣告燈 求C語言的
#include<reg52.h>
void delayMs(unsigned char m); //函數聲明void delayUs2x(unsigned char t);
void delay1s(unsigned int r);
/*------------------------------------------------
主函數
------------------------------------------------*/
void main (void)
{
unsigned char i;
unsigned char temp;//臨時轉換變數
while (1)
{
for(i=0;i<4;i++) //for循環,執行4次
{ P1=0xff; //LED全滅
delay1s(1);
P1=0x00; //LED全亮
delay1s(1);
}
temp=0xfc; //11111100
P1=temp;
for(i=0;i<7;i++) //for循環,執行7次
{
delay1s(1); //調用延時程序
temp<<=1; //移位
temp=temp|0x01;
}
}}
/*------------------------------------------------
μs級延時函數
------------------------------------------------*/
void delayUs2x(unsigned char t)
{
while(--t);
}
/*------------------------------------------------
mS級延時函數
------------------------------------------------*/
void delayMs(unsigned char m)
{
while(m--)
{
//大致延時1mS
delayUs2x(245);
delayUs2x(245);
}
}
/*------------------------------------------------
s級延時函數
-------------------------------------------------*/
void delay1s(unsigned int r)
{
while(r--)
{
//大致延時1s
delayMs(1000);
delayMs(1000);
}
}
⑹ 單片機課程設計:用c語言做簡易時鍾
^#include<reg52.h>
#include<intrins.h>
#include<math.h>
#define uchar unsigned char
#define uint unsigned int
#define rst573 P2&=0X1F
#define y4 P2|=0X80
#define y5 P2|=0XA0
#define y6 P2|=0XC0
#define y7 P2|=0XE0
sbit s5=P3^2;
sbit s4=P3^3;
sbit s6=P3^1;
sbit s7=P3^0;
sbit scl=P1^7;
sbit IO=P2^3;
sbit rst1302=P1^3;
uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar code chu[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
uchar time[8]={0xa4,0xb0,0xbf,0x90,0x90,0xbf,0xc0,0xc0};
uchar miao1,miao2,fen1,fen2,shi1,shi2,shi,fen;
void delay(uint z)
{
uint i,j;
for(i=z;i>0;i--)
for(j=120;j>0;j--);
}
void writebyte(uchar add,uchar date)
{
uchar i;
scl=0;
IO=0;
rst1302=1;
for(i=0;i<8;i++)
{
scl=0;
IO=add&0x01;
scl=1;
add>>=1;
}
for(i=0;i<8;i++)
{
scl=0;
IO=date&0x01;
scl=1;
date>>=1;
}
rst1302=0;
}
uchar readbyte(uchar add)
{
uchar i,temp;
scl=0;
IO=0;
rst1302=1;
for(i=0;i<8;i++)
{
scl=0;
IO=add&0x01;
scl=1;
add>>=1;
}
for(i=0;i<8;i++)
{
scl=1;
temp>>=1;
scl=0;
if(IO)
temp|=0x80;
}
return temp;
}
void set1302()
{
writebyte(0x8e,0x00);
writebyte(0x84,0x00);
writebyte(0x82,0x00);
writebyte(0x80,0x00);
writebyte(0x8e,0x80);
}
void read1302(uchar *p)
{
p[0]=readbyte(0x85);
writebyte(0x84,0x00);
p[1]=readbyte(0x83);
writebyte(0x82,0x00);
p[2]=readbyte(0x81);
writebyte(0x00,0x00);
}
void zhuanghuan()
{
shi=time[0];
fen=time[1];
miao1=(time[2]/16)%10;
miao2=(time[2]%16)%10;
}
void display()
{
rst573;
P0=chu[0];
y6;
rst573;
P0=tab[shi>>4];
y7;
delay(2);
rst573;
P0=chu[1];
y6;
rst573;
P0=tab[shi&0x0f];
y7;
delay(2);
rst573;
P0=chu[3];
y6;
rst573;
P0=tab[fen>>4];
y7;
delay(2);
rst573;
rst573;
P0=chu[4];
y6;
rst573;
P0=tab[fen&0x0f];
y7;
delay(2);
rst573;
P0=chu[6];
y6;
rst573;
P0=tab[miao1];
y7;
delay(2);
rst573;
P0=chu[7];
y6;
rst573;
P0=tab[miao2];
y7;
delay(2);
rst573;
P0=chu[2];
y6;
rst573;
P0=0xbf;
y7;
delay(2);
rst573;
P0=chu[5];
y6;
rst573;
P0=0xbf;
y7;
rst573;
delay(1);
read1302(time);
zhuanghuan();
}
void jian()
{
if(s4==0)
{
delay(5);
if(s4==0)
{
while(!s4)
display();
writebyte(0x8e,0x00);
shi++;
if(shi==10) //對應BCD的0~9
shi=16;
if(shi==26) //對應BCD的10~19
shi=32;
if(shi==36) //對應BCD的19~23
shi=0;
writebyte(0x84,shi);
}
}
if(s5==0)
{
delay(5);
if(s5==0)
{
while(!s5)
display();
writebyte(0x8e,0x00);
shi--;
if(shi==-1) //對應BCD的23~20
shi=35;
if(shi==31) //對應BCD的19~10
shi=25;
if(shi==15) //對應BCD的9~0
shi=9;
writebyte(0x84,shi);
}
}
if(s6==0)
{
delay(5);
if(s6==0)
{
while(!s6)
display();
writebyte(0x8e,0x00);
fen++;
if(fen==10) //對應BCD的0~9
fen=16;
if(fen==26) //對應BCD的10~19
fen=32;
if(fen==42) //對應BCD的20~29
fen=48;
if(fen==58) //對應BCD的30~39
fen=64;
if(fen==74) //對應BCD的40~49
fen=80;
if(fen==90) //對應BCD的50~59
fen=0;
writebyte(0x82,fen);
}
}
if(s7==0)
{
delay(5);
if(s7==0)
{
while(!s7)
display();
writebyte(0x8e,0x00);
fen--;
if(fen==-1) //對應BCD的59~50
fen=89;
if(fen==79) //對應BCD的49~40
fen=73;
if(fen==63) //對應BCD的39~30
fen=57;
if(fen==47) //對應BCD的29~20
fen=41;
if(fen==31) //對應BCD的19~10
fen=25;
if(fen==15) //對應BCD的9~0
fen=9;
writebyte(0x82,fen);
}
}
}
void main()
{
set1302();
while(1)
{
jian();
display();
}
}
⑺ 80c51單片機交通燈課程設計,c語言編程
交通燈.rar proteus模擬C語言供參考
⑻ 單片機課程設計的內容。最好用匯編語言,實在不行,C語言也可以。需要大家快速點。
keil2編程 用了Atmel 89c52 ,鎖存器74hc573兩片,LED
時間長都忘記了,沒有硬體,你調試看看吧
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit la=P2^6;
sbit wela=P2^7;
void delay(uint z);
void main()
{
while(1)
{
wela=1;
P0=0xd7;//東西
wela=0;
la=1;
P0=0x40;//綠
la=0;
delay(60000);//延時60s
wela=1;
P0=0xeb;//南北
wela=0;
la=1;
P0=0x01;//紅
la=0;
delay(60000);
wela=1;
P0=0x3a;//東西南北
wela=0;
la=1;
P0=0x08;//黃
la=0;
delay(2000);
wela=1;
P0=0x3a;
wela=0;
la=1;
P0=0x00;//滅
la=0;
delay(2000);
wela=1;
P0=0x3a;
wela=0;
la=1;
P0=0x08;//黃
la=0;
delay(2000);
wela=1;
P0=0xd7;//東西
wela=0;
la=1;
P0=0x01;//紅
la=0;
delay(60000);
wela=1;
P0=0xeb;//南北
wela=0;
la=1;
P0=0x40;//綠
la=0;
delay(60000);
}
}
void delay(uint z)//1ms
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
⑼ c語言單片機課程設計
給你給出關鍵代碼吧,你看懂了才有寫的
srand((unsigned)time(null));
while(1)
{
int value = rand()%13;
int k = getValue(); //得到用戶輸入的值,這部分沒法幫你弄
while(1)
{
int k = getValue();
if(k>value)
{
/*點亮綠燈*/
continue;
}
if(k<value)
{
/*點亮紅燈*/
continue;
}
if(k==value)
{
/*點亮紅、綠燈燈*/
break;
}
}
}