独立键盘动态显示接口电路Word下载.docx
- 文档编号:16815276
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:24
- 大小:168.40KB
独立键盘动态显示接口电路Word下载.docx
《独立键盘动态显示接口电路Word下载.docx》由会员分享,可在线阅读,更多相关《独立键盘动态显示接口电路Word下载.docx(24页珍藏版)》请在冰豆网上搜索。
SHCP=0;
_nop_();
SHCP=1;
d<
<
=1;
j++;
}}
voidOUT_595(void)
{STCP=0;
_nop_();
STCP=1;
//上升沿将数据送到输出锁存器
STCP=0;
}
main()
{uchari,mask=0xef;
while
(1)
{for(i=0;
i<
10;
i++)
{shift(ledk[i]);
OUT_595();
P1=(mask&
0xf0)|(P1&
0x0f);
mask=_crol_(mask,1);
if(mask==0xfe)mask=0xef;
delay(200);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
程序274595_8位LED
sbitSDATA=P1^0;
sbitSCLK=P1^1;
sbitRCK=P1^2;
uchartemp;
=0)SDATA=1;
elseSDATA=0;
SCLK=0;
SCLK=1;
{RCK=0;
RCK=1;
RCK=0;
{uchari,mask=0xfe;
P2=mask;
程序3LCD
#include<
lcd_1602.h>
voidmain(void)
{unsignedchari,a[5]={5,4,3,2,1};
lcd_init();
while
(1){wr_comd(0x80);
5;
i++)wr_data(0x30+a[i]);
wr_comd(0x8E);
wr_data(0x37);
wr_data(0x38);
wr_comd(0xC0);
wr_data(0x41);
wr_data(0x42);
wr_comd(0xC8);
wr_data(0x43);
wr_data(0x44);
程序3.1LCD头文件
voiddelay_ms(unsignedintt)
{unsignedintj;
for(;
t>
0;
t--)
for(j=125;
j>
j--){;
}}
voidwr_comd(unsignedcharx)
{P0=x;
rs=0;
rw=0;
e=1;
delay_ms
(1);
e=0;
voidwr_data(unsignedcharx)
rs=1;
voidlcd_init(void)
{wr_comd(0x01);
delay_ms(5);
wr_comd(0x38);
wr_comd(0x38);
wr_comd(0x06);
wr_comd(0x0c);
程序4按键功能1
REG51.H>
#include"
LCD1602.h"
unsignedintCount,Count1;
unsignedchara[5],b[5];
unsignedchardispbuf[6],key,dispbuf1[6];
sbitP10=P1^0;
sbitP11=P1^1;
sbitP12=P1^2;
sbitP13=P1^3;
//本程序与按键直接输入_共阴程序不同之处是--本程序不允许两个或以上键按下,否则,不承认
voidhextodec(unsignedintt)
{a[0]=(t/10000)%10+'
0'
;
//取得整数值到数组,转成ASCII码
a[1]=(t/1000)%10+'
a[2]=(t/100)%10+'
a[3]=(t/10)%10+'
a[4]=(t/1)%10+'
}
voidhextodec1(unsignedintt)
{b[0]=(t/10000)%10+'
b[1]=(t/1000)%10+'
b[2]=(t/100)%10+'
b[3]=(t/10)%10+'
b[4]=(t/1)%10+'
voidDelay1ms(unsignedintcount)
count;
120;
unsignedcharget_key(void)
{unsignedcharkey_code;
unsignedcharmask=0x01,low_num=0,i;
4;
{if(!
(mask&
P1))low_num++;
mask=mask<
1;
}//mask,low_num都必须设为局部变量,不能是全局变量
hextodec1(low_num);
//显示按键按下数
if(low_num==1){if(P10==0)key_code=0;
elseif(P11==0)key_code=1;
elseif(P12==0)key_code=2;
elseif(P13==0)key_code=3;
elsekey_code=0xff;
return(key_code);
{unsignedinti;
LCD_Initial();
GotoXY(2,0);
Print("
1602LCDDisp"
);
EA=1;
EX0=1;
IT0=1,EX1=1;
IT1=1;
TMOD=0x05;
while
(1)
{key=get_key();
hextodec(key);
i++)dispbuf[i]=a[i];
dispbuf[5]='
\0'
GotoXY(1,1);
Print(&
dispbuf[0]);
for(i=0;
i++)dispbuf1[i]=b[i];
dispbuf1[5]='
GotoXY(10,1);
dispbuf1[0]);
Delay1ms(100);
程序4.1LCD1602头文件
#ifndefLCD_CHAR_1602_2005_4_9
#defineLCD_CHAR_1602_2005_4_9
sbitLcdRs=P2^0;
//口定义
sbitLcdRw=P2^1;
sbitLcdEn=P2^2;
sfrDBPort=0x80;
//P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口
unsignedcharLCD_Wait(void)//内部等待函数
{LcdRs=0;
LcdRw=1;
LcdEn=1;
LcdEn=0;
returnDBPort;
//向LCD写入命令或数据
#defineLCD_COMMAND0//Command
#defineLCD_DATA1//Data
#defineLCD_CLEAR_SCREEN0x01//清屏
#defineLCD_HOMING0x02//光标返回原点
voidLCD_Write(bitstyle,unsignedcharinput)
{
LcdRs=style;
LcdRw=0;
_nop_();
DBPort=input;
//注意顺序
LCD_Wait();
//设置显示模式
#defineLCD_SHOW0x04//显示开
#defineLCD_HIDE0x00//显示关
#defineLCD_CURSOR0x02//显示光标
#defineLCD_NO_CURSOR0x00//无光标
#defineLCD_FLASH0x01//光标闪动
#defineLCD_NO_FLASH0x00//光标不闪动
voidLCD_SetDisplay(unsignedcharDisplayMode)
LCD_Write(LCD_COMMAND,0x08|DisplayMode);
//设置输入模式************************************************************
#defineLCD_AC_UP0x02
#defineLCD_AC_DOWN0x00//default
#defineLCD_MOVE0x01//画面可平移
#defineLCD_NO_MOVE0x00//default
voidLCD_SetInput(unsignedcharInputMode)
LCD_Write(LCD_COMMAND,0x04|InputMode);
//初始化LCD
voidLCD_Initial()
LCD_Write(LCD_COMMAND,0x38);
//8位数据端口,2行显示,5*7点阵
LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);
//开启显示,无光标
LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);
//清屏
LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);
//AC递增,画面不动
//*******
voidGotoXY(unsignedcharx,unsignedchary)
if(y==0)
LCD_Write(LCD_COMMAND,0x80|x);
if(y==1)
LCD_Write(LCD_COMMAND,0x80|(x-0x40));
voidPrint(unsignedchar*str)
while(*str!
='
)
{
LCD_Write(LCD_DATA,*str);
str++;
#endif
程序5按键直接输入共阴
unsignedcharlow_num,ledk[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
if(P10==0)key_code=0;
elseif(P13==0)key_code=3;
//当没有按键按下
voidkey_func(key)
{switch(key)
{case0:
P2=ledk[0];
break;
case1:
P2=ledk[1];
case2:
P2=ledk[2];
case3:
P2=ledk[3];
default:
P2=ledk[10];
}//当没有按键按下,不显示
{unsignedcharkey;
{key=get_key();
key_func(key);
}
程序6按键_74165
lcd.h>
sbitsh_ld=P1^0;
sbitclk=P1^1;
sbitin=P1^2;
unsignedchardisp[8],xx;
voiddelay(unsignedintn)
;
hextobin(xx)
{disp[0]=xx/128;
disp[1]=(xx%128)/64;
disp[2]=(xx%64)/32;
disp[3]=(xx%32)/16;
disp[4]=(xx%16)/8;
disp[5]=(xx%8)/4;
disp[6]=(xx%4)/2;
disp[7]=xx%2;
unsignedcharshift165()
{unsignedcharj=0,d=0;
sh_ld=1;
delay
(2);
sh_ld=0;
sh_ld=1;
while(j<
{if(in==1)d=d*2+1;
elsed=d*2;
clk=0;
clk=1;
j++;
returnd;
{unsignedchari;
while
(1)
{xx=shift165();
hextobin(xx);
wr_comd(0xc4);
8;
i++)wr_data(0x30+disp[i]);
delay(500);
程序6.1LCD头文件
sbite=P2^2;
sbitrs=P2^0;
sbitrw=P2^1;
程序7点阵
//unsignedcharcodea[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
{unsignedinti,mask=0xfe,mask1=0x01;
{for(i=0;
{P1=0XFF;
mask=_crol_(mask,1);
{P2=0;
P1=mask1;
mask1=_crol_(mask1,1);
程序8点阵_74595
{uchari,mask=0xfe,mask1=0x01;
{shift(0xff);
P2=mask;
delay(100);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 独立 键盘 动态 显示 接口 电路