单片机实验报告-史昊卿杨 - 图文(5)

2019-08-03 13:49

//测试列

GPIO_KEY=0X0F; switch(GPIO_KEY) {

case(0X07):

检测 }

void Delay10ms(unsigned int c) //误差 0us {

unsigned char a, b;

//--c已经在传递过来的时候已经 }

}

{ }

Delay10ms(1); a++;

KeyValue=0;break;

case(0X0b):

KeyValue=4;break;

case(0X0d):

KeyValue=8;break;

case(0X0e):

KeyValue=12;break;

} //测试行

GPIO_KEY=0XF0; switch(GPIO_KEY) {

case(0X70):

赋值了,所以在for语句第一句就不用赋值了--// for (;c>0;c--) }

附1:lcd.c(包含main函数中lcdinit

&&

函数) #include\

20

{

for (b=38;b>0;b--) {

for (a=130;a>0;a--);

KeyValue=KeyValue+3;break;

case(0Xb0):

KeyValue=KeyValue+2;break;

case(0Xd0):

}

KeyValue=KeyValue+1;break;

case(0Xe0):

}

KeyValue=KeyValue;break;

}

while((a<50)

(GPIO_KEY!=0xf0)) //检测按键松手

void Lcd1602_Delay1ms(uint c) //误差 0us {

uchar a,b; }

#ifndef LCD1602_4PINS

//当没有

for (; c>0; c--) { }

for (b=199;b>0;b--) {

for(a=1;a>0;a--); }

LCD1602_E = 1; //写入

时序

Lcd1602_Delay1ms(5); //保持

时间 } #else

void LcdWriteCom(uchar com) 写入命令 {

LCD1602_E = 0; //使能清零 LCD1602_RS = 0; //选择写入

//

LCD1602_E = 0;

命令

LCD1602_RW = 0; //选择写入 LCD1602_DATAPINS = com;

定义这个LCD1602_4PINS时 void LcdWriteCom(uchar com) 写入命令 {

LCD1602_E = 0; //使能 LCD1602_RS = 0; //选择发

//

//由于4位的接线是接到P0口的高四位,所以传送高四位不用改

LCD1602_E = 1; //写入时序 Lcd1602_Delay1ms(5); LCD1602_E = 0; Lcd1602_Delay1ms(1);

LCD1602_DATAPINS = com << 4; Lcd1602_Delay1ms(1);

送命令 入

LCD1602_DATAPINS

=

LCD1602_RW = 0; //选择写

com;

//放入命令

Lcd1602_Delay1ms(1);

//等

//发送低四位

21

Lcd1602_Delay1ms(1);

待数据稳定

LCD1602_E = 1; //写入时序

}

Lcd1602_Delay1ms(5); LCD1602_E = 0;

数据

//

LCD1602_DATAPINS = dat; //因4LCD1602_RW = 0; //选择写入

#endif

#ifndef LCD1602_4PINS

位的接线是接到P0口的高四位,传送高四位不用改

Lcd1602_Delay1ms(1);

void LcdWriteData(uchar dat) 写入数据 { 据

LCD1602_E = 0; //使能清零

LCD1602_E = 1; //写入时序 Lcd1602_Delay1ms(5); LCD1602_E = 0;

LCD1602_RS = 1; //选择输入数

LCD1602_RW = 0; //选择写入

LCD1602_DATAPINS = dat << 4;

LCD1602_DATAPINS = dat; //写入//写入低四位

LCD1602_E = 1; //写入时序 Lcd1602_Delay1ms(5); LCD1602_E = 0; Lcd1602_Delay1ms(1);

数据 间 } #else

void LcdWriteData(uchar dat) 写入数据 {

Lcd1602_Delay1ms(1);

LCD1602_E = 1; //写入时序 Lcd1602_Delay1ms(5); //保持时

}

LCD1602_E = 0; #endif #ifndef

LCD1602_4PINS

void LcdInit()

//

//LCD初始化子程序 {

LcdWriteCom(0x38); //开显示 LcdWriteCom(0x0c); //开显示不

LCD1602_E = 0; //使能清零 LCD1602_RS = 1; //选择写入

22

显示光标

LcdWriteCom(0x06); //写一个指/**当使用的是4位数据传输的时候定义,使用8位取消这个定义**/ #define LCD1602_4PINS /**包含头文件**/ #include //---重定义关键词---// #ifndef uchar

针加1

LcdWriteCom(0x01); //清屏 LcdWriteCom(0x80); //设置数据

指针起点 } #else void LcdInit()

#define uchar unsigned char #endif

//LCD初始化子程序 {

LcdWriteCom(0x32); //将8位总线

#ifndef uint

#define uint unsigned int #endif

#define LCD1602_DATAPINS P0 sbit LCD1602_E=P2^7; sbit LCD1602_RW=P2^5; sbit LCD1602_RS=P2^6;

void Lcd1602_Delay1ms(uint c); //误差 0us

/*LCD1602写入8位命令子函数*/ void LcdWriteCom(uchar com); /*LCD1602写入8位数据子函数*/ void LcdWriteData(uchar dat) ; /*LCD1602初始化子程序*/ void LcdInit(); #endif

转为4位总线

LcdWriteCom(0x28); //在四位线

下的初始化

LcdWriteCom(0x0c); //开显示不

显示光标

LcdWriteCom(0x06); //写一个指

针加1

LcdWriteCom(0x01); //清屏 LcdWriteCom(0x80); //设置数据

指针起点 } #endif

附2:lcd.h(上述两个程序引用的头文件)

#ifndef __LCD_H_ #define __LCD_H_

23

3、 实验连线

将程序下载到单片机中,连接液晶显示器,可以看到按下不同键,1602显示出不同的键值,实验完成。

矩阵键盘实验


单片机实验报告-史昊卿杨 - 图文(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:苏州工业园区参保员工基本养老保险关系转移接续申请表

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: