第7~14脚:D0~D7为8位双向数据端。
第15~16脚:空脚或背灯电源。15脚BLA背光正极,16脚BLK背光负极。
1602 LCD接口信号说明
引脚编号 1 2 3 6 7 15 16 符号 VO E D0 引脚说明 电源地 电源正极 液晶显示对比对调节端 使能信号,下降沿触发 数据口 引脚编号 8 9 10 11 12 13 14 符号 D1 D2 D3 D4 D5 D6 D7 引脚说明 数据口 数据口 数据口 数据口 数据口 数据口 数据口 读写选择端(H/L) 5 高电平:读操作, 低电平:写操作 BLA 背光电源正极 BLK 背光电源负极 数据/命令选择端(H/L) 4 RS 高电平:选择数据寄存器, 低电平:选择命令寄存器
蜂鸣器:蜂鸣器
是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。 ;蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。
晶振:石英晶体振荡器晶体(二氧化硅的结晶体)制成的一种谐振器件,它的致是:从一块石英晶体上按切下薄片(简称为晶片,它
是利用石英的压电效应基本构成大一定方位角可以是正方
形、矩形或圆形等),在它的两个对应面上涂敷银层作为电极,在每个电极上各焊一根引线接到管脚 上,再加上封装外壳就构成了石英晶体谐振器,简称为石英晶体或晶体、晶振[1];而在封装内部添加IC组成振荡电路的晶体元件称为晶体振荡器。其产品一般用金属外壳封装,也有用玻璃壳、陶瓷或塑料封装的。
电解电容:有极性电解电容器通常在电源电路或中频、低频电路中起电源滤波、退耦、
信号耦合及等作用。一路,在直流使用时,其电压的正极与电源电压
接反,否则会损坏电容器。无极性电通常用于音箱分频器电路、电视机S及单相电动机的起动电路。电解电容用于家用电器和各种电子产品中,其较大,一般为1~1000μF,额定工作
时间常数设定、隔直流般不能用于交流电源电电源电路中作滤波电容阳极(正极)应与电源端相连接,阴极(负极)的负极端相连接,不能
解电容器校正电路器广泛应容量范围电压范围
为6.3~450V。其缺点是介质损耗、容量误差较大(最大允许偏差为+100%、-20%),耐高温性较差,存放时间长容易失效。电解电容的极性,注意观察在电解电容的侧面有“—”,是负极,如果电解电容上没有标明正负极,也可以根据它的引脚的长短来判断,长脚为正极,短脚为负极。
实验原理图:
外围电路单片机 电源电路 显示电路 键盘电路 LCD系统设计框图 系统设计流程图:
实验仿真及其显示:
实验代码:
#include
#define uchar unsigned char #define uint unsigned int
#define delayNOP(){_nop_();_nop_();_nop_();_nop_();}
void LCD_Initialize(); void LCD_Set_POS(uchar); void LCD_Write_Data(uchar);
void Display_String(uchar *,uchar);
sbit k1=P1^0; sbit k2=P1^1; sbit BEEP=P3^0; sbit LCD_RS=P2^0; sbit LCD_RW=P2^1; sbit LCD_EN=P2^2; uchar KeyCount=0;
uchar code msg1[]={%uchar code msg2[]={%uchar code Prompts[][16]= {
{\ {\ {\ {\ };
uchar Time_Buffer[] ={0,0,0,0};
uchar LCD_Display_Buffer[]={\void Beep() {
uchar i,j=70;
for(i=0;i<180;i++) {
while(--j);BEEP=~BEEP; }
BEEP=0; }
void DelayX(uint ms) {
uchar i;
while(ms--) for(i=0;i<120;i++); }
void Show_Second() {
uchar i;
LCD_Set_POS(0x45); for(i=3;i!=0xff;i--)
{
LCD_Display_Buffer[2*i+1]=Time_Buffer[i]/10+'0'; LCD_Display_Buffer[2*i]=Time_Buffer[i]+'0'; LCD_Write_Data(LCD_Display_Buffer[2*i+1]); LCD_Write_Data(LCD_Display_Buffer[2*i]); LCD_Write_Data(':'); } }
void Time0() interrupt 1 using 0 {
TH0=-10000/256; TL0=-10000%6; Time_Buffer[0]++;
if(Time_Buffer[0]==100) {
Time_Buffer[0]=0;Time_Buffer[1]++; }
if(Time_Buffer[1]==60) {
Time_Buffer[1]=0;Time_Buffer[2]++; }
if(Time_Buffer[2]==60) {
Time_Buffer[2]=0;Time_Buffer[3]++; }
if(Time_Buffer[3]==24) Time_Buffer[3]=0; }
void main() {
uchar i; IE=0x82; TMOD=0x01;
TH0=-10000/256; TL0=-10000%6; LCD_Initialize();
Display_String(msg1,0x00); Display_String(msg2,0x40); while(1) {
if(k1==0) {
DelayX(100); i=++KeyCount;