資源簡介
使用C51語言進行在51單片機的設計
代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
#define?uint?unsigned?int?
#define?uchar?unsigned?char
sbit?pinRS=P2^0;
sbit?pinRW=P2^1;
sbit?pinE=P2^2;
#define?pindata?P0
#define?clearscreen()?writeinstruc(0x01)
#define?cursorreturn()?writeinstruc(0x02)
#define?inputmode(temp)?writeinstruc(temp)
//temp取值如下:
//0x04:減量方式,不移位
//0x05:減量方式,移位
//0x06:增量方式,不移位
//0x07:增量方式,移位
#define?dispcontrol(temp)?writeinstruc(temp)
//temp取值如下:
//0x08:顯示關,光標關,閃爍關
//0x0c:顯示關,光標關,閃爍關
//0x0d:顯示開,光標關,閃爍開
//0x0e:顯示開,光標開,閃爍關
//0x0f:顯示開,光標開,閃爍開
#define?dispshift(temp)?writeinstruc(temp)
//temp取值如下:
//0x10:光標左移
//0x14:光標右移
//0x18:顯示整體左移
//0x1c:顯示整體右移
#define?functionset(temp)?writeinstruc(temp)
//temp取值如下:
//0x20:4位,1行,5*7
//0x24:4位,1行,5*10
//0x28:4位,2行,5*7
//0x2c:4位,2行,5*10
//0x30:8位,1行,5*7
//0x34:8位,1行,5*10
//0x38:8位,2行,5*7
//0x3c:8位,2行,5*10
#define?setCGRAM_Add(address)?writeinstruc(0x40|address)
#define?setDDRAM_Add(address)?writeinstruc(0x80|address)//短延時
//void?shortdelay(uchar?i);
//長延時
//void?longdelay(uint?i);
//P2口初始化
//void?initP2(bit?i);
//寄存器選擇信號
//void?setRS(bit?i);
//讀寫操作控制
//void?setRW(bit?i);
//使能信號
//void?setE(bit?i);
//讀BF以及AC的值
//uint?read_BF_AC();
//判忙
//bit?statuscheck();
//寫指令函數
//void?writeinstruc(uint?instruc);
//寫數據到RAM
//void?writedata(uint?data1);
//從RAM中讀數據函數
//uint?readdata(void);
//顯示程序?X為行號,Y為列號,date為要顯示的數據
//void?dispcharacter(int?xuint?yuint?data1);
//LCD復位函數
//void?LCDreset();
#define?uchar?unsigned?char
uchar?k=0result1;
void?shortdelay(uchar?i)//短延時
{
for(;i>0;i--);
}
//長延時
void?longdelay(uint?i)
{
uint?j;
for(;i>0;i--)
{for(j=100;j>0;j--);}
}
//延時程序
void?delay(int?i)
{int?j;
for(;i>0;i--)
???for(j=0;j<100;j++);
}
//初試狀態
void?io_init()
{P1=0xff;
}
//?---------------------------鍵盤掃描部分-----------------------------//
unsigned?char?key_scan()
{?unsigned?char?key;
??unsigned?char?temp;
??uint?flag;
??io_init();
???P1=0xf0;
???flag=0;
loop:?temp=P1^0xf0;
???while(temp)
????{
?????P1=0xfe;
?????delay(1);
?????if((P1&0xfe)!=0xfe)
?????switch(P1)
?????{
?????case?0xee:?key=0x11;flag=1;break;//讀7鍵和值
?????case?0xde:?key=0x12;flag=1;break;
?????case?0xbe:?key=0x13;flag=1;break;
?????case?0x7e:?key=0x14;flag=1;break;//讀除鍵的值
?????}
??if(flag)
??goto?exit;
??else
?????P1=0xfd;
?????delay(1);
?????if((P1&0xfd)!=0xfd)
?????switch(P1)
?????{
?????case?0xed:?key=0x21;flag=1;break;
?????case?0xdd:?key=0x22;flag=1;break;
?????case?0xbd:?key=0x23;flag=1;break;
?????case?0x7d:?key=0x24;flag=1;break;?//讀4到乘的鍵值
?????}
?????if(flag)
??goto?exit;
??else
?????P1=0xfb;
?????delay(1);
?????if((P1&0xfb)!=0xfb)
?????switch(P1)
?????{
?????case?0xeb:?key=0x31;flag=1;break;
?????case?0xdb:?key=0x32;flag=1;break;
?????case?0xbb:?key=0x33;flag=1;break;
?????case?0x7b:?key=0x34;flag=1;break;//讀1到減的鍵值
?????}
?????if(flag)
??goto?exit;
??else
??P1=0xf7;
?????delay(1);
?????if((P1&0xf7
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-06-14?16:18??簡易計算器\
?????文件????????9306??2012-10-14?22:10??簡易計算器\0
?????文件????????8704??2012-10-14?22:10??簡易計算器\0.c
?????文件?????????157??2012-10-14?22:11??簡易計算器\0.cfg
?????文件???????11859??2012-10-14?22:10??簡易計算器\0.hex
?????文件??????????31??2012-10-14?22:10??簡易計算器\0.lnp
?????文件???????27044??2012-10-14?22:10??簡易計算器\0.M51
?????文件??????152953??2012-10-14?22:11??簡易計算器\000.png
?????文件?????????958??2018-06-14?16:18??簡易計算器\2.0.Opt
?????文件?????????163??2018-06-14?16:13??簡易計算器\2.0.plg
?????文件????????2070??2018-06-14?15:54??簡易計算器\2.0.Uv2
?????文件????????1196??2018-06-14?15:50??簡易計算器\2_0_Opt.Bak
?????文件???????????0??2018-06-14?15:50??簡易計算器\2_0_Uv2.Bak
?????文件???????90223??2018-06-14?09:25??簡易計算器\Last?Loaded?計算器.DBK
?????文件????????5115??2002-04-16?15:32??簡易計算器\STARTUP.A51
?????文件???????11760??2018-06-14?15:54??簡易計算器\STARTUP.lst
?????文件?????????856??2018-06-14?15:54??簡易計算器\STARTUP.obj
?????文件???????90223??2018-06-14?09:28??簡易計算器\計算器.DSN
?????文件?????????768??2018-06-14?15:47??簡易計算器\計算器.PWI
- 上一篇:步進電機控制(源碼+文檔)
- 下一篇:51單片機交通燈設計
評論
共有 條評論