51单片机常用模板Word文件下载.docx
- 文档编号:22345002
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:35
- 大小:22.31KB
51单片机常用模板Word文件下载.docx
《51单片机常用模板Word文件下载.docx》由会员分享,可在线阅读,更多相关《51单片机常用模板Word文件下载.docx(35页珍藏版)》请在冰豆网上搜索。
LSA=1;
//显示第1位
case
(2):
LSB=1;
//显示第2位
case(3):
//显示第3位
case(4):
LSC=1;
//显示第4位
case(5):
//显示第5位
case(6):
//显示第6位
case(7):
//显示第7位
}
P0=smgduan[i];
//发送段码
delay(100);
//间隔一段时间扫描
P0=0x00;
//消隐
}
}/*******************************************************************************
Int1Init()
设置外部中断1
*输入:
*输出:
voidInt1Init()
//设置INT1
IT1=1;
//跳变沿出发方式(下降沿)
EX1=1;
//打开INT1的中断允许。
EA=1;
//打开总中断
voidInt1()interrupt2//外部中断1的中断函数
delay(1000);
//延时消抖
if(k4==0)
led=~led;
Hc595SendByte(uchardat)
向74HC595发送一个字节的数据
ucharledduan[]={0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00};
ucharledwei[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
voidHc595SendByte(uchardat)
uchara;
SRCLK=0;
RCLK=0;
for(a=0;
a<
a++)
SER=dat>
>
7;
dat<
<
=1;
SRCLK=1;
_nop_();
SRCLK=0;
RCLK=1;
_nop_();
P0=0x7f;
for(i=0;
P0=ledwei[i];
//位选
Hc595SendByte(ledduan[i]);
//发送段选数据
delay(100);
//延时
Hc595SendByte(0x00);
//消隐
}
KeyDown
检测有按键按下并读取键值
voidKeyDown(void)
chara=0;
GPIO_KEY=0x0f;
if(GPIO_KEY!
=0x0f)//读取按键是否按下
delay(1000);
//延时10ms进行消抖
if(GPIO_KEY!
=0x0f)//再次检测键盘是否按下
{
//测试列
GPIO_KEY=0X0F;
switch(GPIO_KEY)
{
case(0X0e):
KeyValue=0;
break;
case(0X0d):
KeyValue=4;
case(0X0b):
KeyValue=8;
case(0X07):
KeyValue=12;
}
//测试行
GPIO_KEY=0XF0;
case(0Xe0):
KeyValue=KeyValue;
case(0Xd0):
KeyValue=KeyValue+1;
case(0Xb0):
KeyValue=KeyValue+2;
case(0X70):
KeyValue=KeyValue+3;
while((a<
50)&
&
(GPIO_KEY!
=0xf0))//检测按键松手检测
delay(1000);
a++;
datapros()
数据处理函数
voiddatapros()
uinttemp;
staticuchari;
if(i==50)
i=0;
temp=Read_AD_Data(0xE4);
//外部ad
i++;
disp[0]=smgduan[temp/1000];
//千位
disp[1]=smgduan[temp%1000/100];
//百位
disp[2]=smgduan[temp%1000%100/10];
//个位
disp[3]=smgduan[temp%1000%100%10];
#include"
XPT2046.h"
/****************************************************************************
*函数名:
TSPI_Start
*输入:
无
*输出:
*功能:
初始化触摸SPI
****************************************************************************/
voidSPI_Start(void)
CLK=0;
CS=1;
DIN=1;
CLK=1;
CS=0;
SPI_Write
dat:
写入数据
使用SPI写入数据
voidSPI_Write(uchardat)
i<
i++)
DIN=dat>
7;
//放置最高位
dat<
=1;
CLK=0;
//上升沿放置数据
CLK=1;
SPI_Read
读取到的数据
使用SPI读取数据
uintSPI_Read(void)
uinti,dat=0;
12;
i++)//接收12位数据
dat|=DOUT;
returndat;
Read_AD_Data
cmd:
读取的X或者Y
endValue:
最终信号处理后返回的值
读取触摸数据
uintRead_AD_Data(ucharcmd)
uintAD_Value;
SPI_Write(cmd);
for(i=6;
i>
0;
i--);
//延时等待转换结果
//发送一个时钟周期,清除BUSY
AD_Value=SPI_Read();
returnAD_Value;
#include"
lcd.h"
//液晶显示
Lcd1602_Delay1ms
延时函数,延时1ms
c
*说名:
该函数是在12MHZ晶振下,12分频单片机的延时。
voidLcd1602_Delay1ms(uintc)//误差0us
uchara,b;
for(;
c>
c--)
for(b=199;
b>
b--)
for(a=1;
a>
a--);
LcdWriteCom
向LCD写入一个字节的命令
com
#ifndefLCD1602_4PINS//当没有定义这个LCD1602_4PINS时
voidLcdWriteCom(ucharcom)//写入命令
LCD1602_E=0;
//使能
LCD1602_RS=0;
//选择发送命令
LCD1602_RW=0;
//选择写入
LCD1602_DATAPINS=com;
//放入命令
Lcd1602_Delay1ms
(1);
//等待数据稳定
LCD1602_E=1;
//写入时序
Lcd1602_Delay1ms(5);
//保持时间
#else
//使能清零
//选择写入命令
//由于4位的接线是接到P0口的高四位,所以传送高四位不用改
LCD1602_DATAPINS=com<
4;
//发送低四位
#endif
LcdWriteData
向LCD写入一个字节的数据
dat
*******************************************************************************/
#ifndefLCD1602_4PINS
voidLcdWriteData(uchardat)//写入数据
LCD1602_RS=1;
//选择输入数据
LCD1602_DATAPINS=dat;
//写入数据
#else
//选择写入数据
LCD1602_DATAPINS=dat<
//写入低四位
LcdInit()
初始化LCD屏
#ifndefLCD1602_4PINS
voidLcdInit()//LCD初始化子程序
LcdWriteCom(0x38);
//开显示
LcdWriteCom(0x0c);
//开显示不显示光标
LcdWriteCom(0x06);
//写一个指针加1
LcdWriteCom(0x01);
//清屏
LcdWriteCom(0x80);
//设置数据指针起点
LcdWriteCom(0x32);
//将8位总线转为4位总线
LcdWriteCom(0x28);
//在四位线下的初始化
intrins.h"
typedefunsignedintuint;
//对数据类型进行声明定义
typedefunsignedcharuchar;
//--定义使用的IO口--//
sbitSRCLK=P3^6;
sbitRCLK=P3^5;
sbitSER=P3^4;
//定义LED点阵的位选,也就是类似于数码管的位选,因为要对其动态扫描操作
//数组前16位和后16位数据正好是相反的,也就是说先让第3个595输出低电平,然后再让第4个595输出低电平
ucharcodeledwei[]=
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,
};
ucharcodeledduan1[]=
/*--文字:
普--*/
/*--宋体12;
此字体下对应的点阵为:
宽x高=16x16--*/
0x40,0x44,0x54,0x64,0x45,0x7E,0x44,0x44,0x44,0x7E,0x45,0x64,0x54,0x44,0x40,0x00,
0x00,0x00,0x00,0xFF,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0xFF,0x00,0x00,0x00,0x00,
ucharcodeledduan2[]=
中--*/
0x00,0x00,0xF0,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x10,0xF0,0x00,0x00,0x00,
0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x0F,0x00,0x00,0x00,
Hc595SendByte(uchardat1,uchardat2,uchardat3,uchardat4)
通过595发送四个字节的数据
dat1:
第4个595输出数值
**dat2:
第3个595输出数值
**dat3:
第2个595输出数值
**dat4:
第1个595输出数值
voidHc595SendByte(uchardat1,uchardat2,uchardat3,uchardat4)
SRCLK=1;
RCLK=1;
a++)//发送8位数
SER=dat1>
//从最高位开始发送
dat1<
SRCLK=0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 单片机 常用 模板
![提示](https://static.bdocx.com/images/bang_tan.gif)