資源簡介
89C51單片機程序例 用撥碼盤輸入數據,控制電機轉動,用LCD顯示計數。

代碼片段和文件信息
????#include“lcd1602.h“
#define?uchar?unsigned?char
#define?uint?unsigned?int
????uchar?out[6];
sbit?STAR_KEY?=P3^2;//定義鍵與單片機的連接引腳
sbit?L0=P1^0;??//定義SFR中引腳的位
sbit?L1=P1^1;
sbit?L2=P1^2;
sbit?L3=P1^3;
sbit?L4=P1^4;
sbit?L5=P1^5;
sbit?L6=P1^6;
sbit?L7=P1^7;
sbit?MOTOR=P3^0;
uchar?n[2]={10};
void?delayms(uint?x)???//延時子程序
{
??uchar?y;
??while(x--)
??{
????for(y=0;y<123;y++){;}
??}
}
uchar?Keynum() ?//按鍵子程序1
{
???uchar?key=0;
???STAR_KEY=1;?//置初值
???if(STAR_KEY==0){delayms(10);if(STAR_KEY==0)n[0]=0;n[1]=1;} ?//按下STAR鍵則n[0]=0;n[1]=1
???return?n[1]; ?//返回n值
}
void?xianshi(uint?dispbuf)???//顯示子程序
{?
out[0]=dispbuf/10000+0x30;
out[1]=((dispbuf%10000)/1000)+0x30;
out[2]=((dispbuf%1000)/100)+0x30;
out[3]=((dispbuf%100)/10)+0x30;
out[4]=dispbuf%10+0x30;
out[5]=‘\0‘;?
LCD_Initial();??????????//LCD初始化
LCD_Prints(1?0“The?Speed?Is“);???//LCD輸出
LCD_Prints(10?1“n/min“);
LCD_Prints(4?1out);??????
}
uint?qiuzhi()?//求用撥碼盤所置數的值的子程序
{
???uchar?a;
???uchar?b;
???uchar?c;
???uchar?d;
???uchar?e;
???uchar?f;
???uchar?g;
???uchar?h;
?
???uint?p=0;
???if?(L0==1)?{a=1;}?else?{a=0;} //將電平信號變為數字的值
???if?(L1==1)?{b=1;}?else?{b=0;}
???if?(L2==1)?{c=1;}?else?{c=0;}
???if?(L3==1)?{d=1;}?else?{d=0;}
???if?(L4==1)?{e=1;}?else?{e=0;}
???if?(L5==1)?{f=1;}?else?{f=0;}
???if?(L6==1)?{g=1;}?else?{g=0;}
???if?(L7==1)?{h=1;}?else?{h=0;}
???p=a+b*2+c*2*2+d*2*2*2+e*2*2*2*2+f*2*2*2*2*2+g*2*2*2*2*2*2+h*2*2*2*2*2*2*2;
???return?p;???//?返回所求的P值
}
void?main(void) ??//主程序
{
???uint?q;
???IT0=1; ????//負跳變觸發
???EA=1; ????//開總允許中斷
???EX0=1; ????//開INTO中斷
???????
???TMOD=0X05;? //置T0為計數器????方式1
???TL0=0; //置計數器初值
???TH0=0;
???while(1) //無限循環
???{?
??????q=qiuzhi(); ???//調用求值子程序求出所置的數
??????if?(MOTOR==1)?{xianshi(q);}?else?{xianshi(TL0);Keynum();TR0=n[1];}?//當電動機關閉時顯示用薄碼盤所置的數并停止計數,電機啟動時則開始計數,并顯示計數值
??????if?(TL0==q)?{TR0=0;MOTOR=1;}?else?{Keynum();MOTOR=n[0];} //當計數值與所置數相同時關閉電機,停止計數,當計數值不等時則將電機啟動與關閉交由按鍵控制,所以不存在計數值超過置數值的情況
???}
}
void?Int0(void)?interrupt?0? //中斷服務程序,工作寄存器用0組
{
???TL0=0;TR0=1; ???//重置計數值,重新開始計數
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????12268??2011-10-30?00:02??傳送帶產品計數器的設計(LCD顯示)\gyreyre
?????文件???????2474??2011-10-30?00:02??傳送帶產品計數器的設計(LCD顯示)\gyreyre.c
?????文件?????137174??2011-10-30?00:03??傳送帶產品計數器的設計(LCD顯示)\gyreyre.DSN
?????文件???????2695??2011-10-30?00:02??傳送帶產品計數器的設計(LCD顯示)\gyreyre.hex
?????文件?????????47??2011-10-30?00:02??傳送帶產品計數器的設計(LCD顯示)\gyreyre.lnp
?????文件???????5569??2011-10-30?00:02??傳送帶產品計數器的設計(LCD顯示)\gyreyre.LST
?????文件??????13623??2011-10-30?00:02??傳送帶產品計數器的設計(LCD顯示)\gyreyre.M51
?????文件???????7406??2011-10-30?00:02??傳送帶產品計數器的設計(LCD顯示)\gyreyre.OBJ
?????文件???????1357??2011-10-30?00:02??傳送帶產品計數器的設計(LCD顯示)\gyreyre.Opt
?????文件????????621??2011-10-30?00:02??傳送帶產品計數器的設計(LCD顯示)\gyreyre.plg
?????文件????????768??2011-11-02?13:21??傳送帶產品計數器的設計(LCD顯示)\gyreyre.PWI
?????文件???????2024??2011-10-29?23:59??傳送帶產品計數器的設計(LCD顯示)\gyreyre.Uv2
?????文件???????1348??2011-10-29?23:59??傳送帶產品計數器的設計(LCD顯示)\gyreyre_Opt.Bak
?????文件???????2024??2011-10-29?23:56??傳送帶產品計數器的設計(LCD顯示)\gyreyre_Uv2.Bak
?????文件?????137174??2011-10-29?23:31??傳送帶產品計數器的設計(LCD顯示)\Last?Loaded?gyreyre.DBK
?????文件???????3194??2011-09-16?22:22??傳送帶產品計數器的設計(LCD顯示)\LCD1602.c
?????文件????????857??2011-03-30?18:31??傳送帶產品計數器的設計(LCD顯示)\LCD1602.h
?????文件???????6313??2011-10-30?00:02??傳送帶產品計數器的設計(LCD顯示)\LCD1602.LST
?????文件???????6514??2011-10-30?00:02??傳送帶產品計數器的設計(LCD顯示)\LCD1602.OBJ
?????目錄??????????0??2011-11-04?22:57??傳送帶產品計數器的設計(LCD顯示)
-----------?---------??----------?-----??----
???????????????343450????????????????????20
- 上一篇:全國省市區縣鄉鎮數據庫
- 下一篇:STM32智能家居完整項目代碼
評論
共有 條評論