基于51单片机的键盘盘可调万年历

基于51单片机的键盘盘可调万年历
基于51单片机的键盘盘可调万年历

开放性实验报告

题目: 基于80C51的万年历设计_ 院系:

专业班级:

学号:

姓名:

指导老师:________________________ 时间:2014年9月8号

摘要

电子万年历是一种非常广泛日常计时工具,对现代社会越来越流行。它可以对年、月、日、周、时、分、秒进行计时,还具有闰年补偿等多种功能。本系统选用DALLAS 公司生产的日历时钟芯片DS1302来作为实时时数字万年历采用直观数字显示,可以同时显示年、月、日、周、时、分、秒等信息,还具有键盘时间校准等功能。该电路采用AT89C52单片机作为核心,用以5V电压供电。

本系统硬件部分由AT89C52单片机、DS1302时钟芯片、LCD1602液晶显示环境下以C51语言编写,包括时间设置、时间显示、时间修正等功能。在仿真的时候,以Proteus与Keil uVision4软件为基础,编写了MCS-51单片机对LCD1602显示控制的软件,绘制其原理图,并使用Proteus软件与Keil uVision4软件建立联合仿真。本设计主要论述了原理图各个模块的作用,以及控制软件的各个模块的编程。

关键词:时钟芯片DS1302;单片机AT89C52;液晶显示1602;独立键盘等

目录

第1章绪论.............................................. 错误!未定义书签。

1.1实时万年历的简介.................................... 错误!未定义书签。

1.2系统所实现的功能.................................... 错误!未定义书签。第2章开发工具软件简介. (5)

2.1K EIL U V ISION4软件简介 (5)

2.2P ROTEUS软件简介 (5)

2.3K EIL U V ISION4与P ROTEUS软件联合仿真 (6)

第3章 LCD1602显示控制技术.............................. 错误!未定义书签。

3.11602字符型LCD简介.................................. 错误!未定义书签。

3.2LCD1602功能......................................... 错误!未定义书签。

3.3 LCD1602的指令说明及时序 ............................ 错误!未定义书签。

3.4LCD1602的RAM地址映射及标准字库表................... 错误!未定义书签。

3.5 LCD1602的一般初始化(复位)过程 .................... 错误!未定义书签。第4章系统硬件概况...................................... 错误!未定义书签。

4.1系统概况............................................ 错误!未定义书签。

4.2 MCS-51单片机最小系统模块 ........................... 错误!未定义书签。

4.3 DS1302时钟芯片控制与键盘设置时间模块 ............... 错误!未定义书签。

4.4 LCD1602显示模块 (13)

第5章软件控制系统概况 (14)

5.1程序流程概况 (14)

5.2 流程图 (14)

5.3 源程序代码 (15)

参考文献.................................................. 错误!未定义书签。

第1章绪论

1.1实时万年历的简介

随着电子技术的发展,人类在不断研究的过程中也在不停创造新的纪录。万年历目前已经不再局限于以纸张的形式出现。以电脑软件或者电子产品形式出现的万年历被称为电子万年历。与传统万年历相比,电子万年历得到了越来越得到大众的青睐,采用电子时钟作为时间显示早已成为一种时尚。目前市场上各式各样的电子时钟数不胜数,但多数是只针对时间显示,功能单一不能满足人们多样化的需求。

本文提出了一种基于AT89C51单片机的万年历设计方案,本方案以AT89C51单片机作为主控核心,与时钟芯片DS1302、按键、LED1602显示等模块组成硬件系统。在硬件系统中设有独立按键和LED显示器,能显示丰富的信息,根据使用者的需要可以随时对时间进行校准、选择时间等,综上所述此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点。

1.2 系统所实现的功能

现在所使用的万年历,实际上就是记录一定时间范围内(比如100年或更多)的具体阳历或阴历日期的年历,方便有需要的人查询使用,与原始历法并无直接联系。而随着微电子技术的高速发展,人们发明了更加准确更加便捷的电子万年历。因为这种万年历在日常生活中运用得越来越广泛,在现代社会也越来越流行。它可以对年、月、日、周、时、分、秒进行计时,还具有闰年补偿等多种功能,而且其使用寿命更长,误差更小,有的电子万年历还具有时间以及星期的校准功能。

本文主要包括以下内容:

1.单片机为核心,建立以LCD1602为显示控制系统,编制各控制子程序模块,为操作人员提供灵活、准确的控制信息,实现对LCD1602液晶显示当前时间。2.绘制整个控制系统原理图。

3.配合控制程序软件,完成对整个硬件系统的控制。

4.使用Keil uVision4进行C语言代码的编写。

5.使用Proteus进行仿真。

第2章开发工具软件简介

2.1 Keil uVision4软件简介

Keil是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。在开发大型软件时更能体现高级语言的优势。

Keil 软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows 界面。Keil生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。其次,该软件不但可以进行软件仿真,而且还可以通过其内嵌模块Keil-Monitor-51,实现在不需要连接硬件仿真器的条件下,通过下载线连接硬件系统对项目进行实时仿真。另外,可以与Proteus单片机仿真软件联合实现虚拟硬件仿真。

2.2 Proteus软件简介

目前电子设计手段日新月异,由手工设计阶段到EDA阶段,再到虚拟设计阶段,人们不断提高设计水平与效率。Proteus软件是英国Labcenter electronics 公司出版的EDA工具软件。Proteus嵌入式系统仿真与开发平台是一款可以实现数字电路、模拟电路、微控制器系统仿真及PCB设计等功能的EDA软件。从元件的选取到连线,直至电路的调试、分析和软件的编译,都是在计算机中完成,所有的工作先在虚拟环境下进行。基于这一设计思想开发的Proteus软件,可在原理图设计阶段对所设计的电路进行评估、验证,看是否达到设计要求的技术指标,并可以通过改变元件的参数使整个电路性能达到最优化。这样就避免了传统电子电路设计中方案更换带来的多次重复购买元器件及制板,在节省设计时间与经费的同时,提高了设计效率与质量。

Proteus软件不仅具有其它EDA工具软件的模拟电子和数字电子的仿真功能,而且还具有其他EDA软件所没有的单片机系统硬件仿真功能。它可以仿真MCS-51系列单片机、A VR单片机、PIC单片机和ARM7微处理器,可以直接在电路原理图上实现硬件的虚拟仿真,实现程序的调试,并提供进行测试与分析的虚拟示波器、逻辑分析仪等虚拟仪器及仿真图表。它是目前最好的仿真单片机及外围器件的工具。

Proteus软件主要由实现原理图编辑及仿真的ISIS模块和实现PCB板设计及自动布线的ARES模块组成。Proteus软件提供了三十多个元器件库,数千元器件。元件涉及电阻、电容、二极管、MOS管、变压器、继电器、各种放大器、各种激励源、300多种微处理器、各种门电路和各种终端等。提供的仪表有交直流电压表、电流表、逻辑分析仪、定时/计数器和信号发生器等虚拟仪器,Proteus 作为可视化仿真软件,提供数码管、液晶屏、LED、按钮、键盘等外设。

2.3 Keil uVision4与Proteus软件联合仿真

Proteus软件与Keil uVision4软件之间的联合虚拟仿真,指Keil uVision4软件将Proteus软件打开的单片机系统看成一个虚拟的硬件电路,使用Keil uVision4软件对程序进行编译、调试时自动连接Proteus软件中的虚拟单片机系统,虚拟单片机系统的状态随Keil uVision4软件对程序调试实时变化。这样,可实现用Proteus软件与Keil uVision4软件联合虚拟硬件仿真。

第3章LCD1602液晶显示屏

3.1 1602字符型LCD简介

字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,本设计采用16列*2行的字符型LCD1602带背光的液晶显示屏。

1602LCD主要技术参数:

显示容量:16×2个字符

芯片工作电压:4.5—5.5V

工作电流:2.0mA(5.0V)

模块最佳工作电压:5.0V

字符尺寸:2.95×4.35(W×H)mm

3.2 1602引脚功能

第1脚:VSS为地电源。

第2脚:VDD接5V正电源。

第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位

第4脚:RS为寄存器选择,高电平时选数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS 和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。

第7~14脚:D0~D7为8位双向数据线。

第15脚:背光源正极。

第16脚:背光源负极。

3.3 1602LCD的指令说明及时序

基本操作时序表

读写操作时序如图2-7和2-8所示:

图2-7读操作时序

图2-8 写操作时序

3.4 1602LCD的RAM地址映射及标准字库表

液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认入显示字符地址,也就是告诉模块在哪里显示字符,图2-9是1602的内部显示地址。

图2-9液晶内部显示地址

例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。

是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。

1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。

3.5 1602LCD的一般初始化(复位)过程

延时15mS

写指令38H(不检测忙信号)

延时5mS

写指令38H(不检测忙信号)

延时5mS

写指令38H(不检测忙信号)以后每次写指令、读/写数据操作均要检测忙信号写指令38H:显示模式设置

写指令08H:显示关闭

写指令01H:显示清屏

写指令06H:显示光标移动设置

写指令0CH:显示开及光标设置

第4章系统硬件概况

4.1 系统概况

单片机控制模块是整个设计方案的核心。AT59C51芯片作为该系统的控制部件,它通过DS1302将时间实时通过硬件电路转送入单片机内部,单片机内部将时间转换成字符串然后送入LCD1602模块显示。键盘通过AT59C51还控制LCD1602模块对万年历的显示与调节。其系统原理图如下:

4.2 MCS-51单片机最小系统模块

(1)

晶振电路:在XTALI与XTAL2外

接石英晶体和微调电容等构成时钟电路。

其中,晶体的选择至少必须考虑:谐振频

点,负载电容,激励功率,温度特性,长

期稳定性。选择电容C1,C2:在许可范

围内,C1,C2值越低越好。C值偏大虽

有利于振荡器的稳定,但将会增加起振时

间。应使C2值大于C1值,这样可使上电时,加快晶振起振。

4.3 DS1302时钟芯片控制模块

(1) 时钟芯片DS1302的工作原理:

DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置“0”,接着把RST端置“1”,最后才给予SCLK脉冲;读/写时序如下图所示。为DS1302的控制字,此控制字的位7必须置1,若为0则不能把对DS1302进行读写数据。对于位6,若对程序进行读/写时RAM=1,对时间进行读/写时,CK=0。位1至位5指操作单元的地址。位0是读/写操作位,进行读操作时,该位为1;该位为0则表示进行的是写操作。控制字节总是从最低位开始输入/输出的。表6为DS1302的日历、时间寄存器内容:“CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。“WP”是写保护位,在任何的对时钟和RAM的写操作之前,WP必须为0。当“WP”为1时,写保护位防止对任一寄存器的写操作。

(2) DS1302的控制字节

DS1302的控制字如表-1所示。控制字节的高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出

表-1 DS1302的控制字格式

RAM RD

1 A4 A3 A

2 A1 A0

/ CK /WR

(3) 数据输入输出(I/O)

在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK 脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。如下图1所示

图1 DS1302读/写时序图

(4) DS1302的寄存器

DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表-2。

表-2 DS1302的日历、时间寄存器

此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。

本设计总的用了三个按扭开关

作为调整设置按键,三个中的其中

两个是调整时间增加、减少的键,

第三个是切换年、月、日及时、分、

秒的显示状态并在所切换的显示状

态下配合加减两个键调整时间。

4.4 LCM1602显示模块

单片机P0.0~P0.7分别于lcd模块的D0~D7数据线连接,P2.0~P2.2接到lcd 模块控制信号引脚RS、RW和E,lcd模块的VDD引脚接电源+5v,VSS和VEE 引脚接地。结合LCM1602控制指令,通过AT89C51单片机来控制LCM1602显示相应的时间。

第5章软件控制系统概况

5.1 程序流程概况

该控制系统主要包括单片机对LCM1602液晶温度显示与万年历显示控制两部分。软件控制程序主要有主控程序、电子时钟的时间控制程序和温度显示程序组成。主控程序负责对整个程序进行调用与控制,进行了初始化程序还有键盘功能程序;显示程序和时间控制程序是电子时钟中比较重要的部分,时间控制程序体现了年、月、日、时、分、秒的计算方法。

软件的设计采用模块化设计与混合编程的设计思想实现,编程软件为Keil uVision4软件。

5.2 流程图

时间控制程序主要是定时器0 Array一次当作一个计数,每中断一次则计数加1,

则表示1秒到了,秒变量加1,同理再判断是否

了,再判断是否1小时到了,再判断是否1

断是否1月到了,再判断是否1年到了,若计数

到了则相关变量清除0。先给出一般年份的每月

天数。如果是闰年,第二个月天数不为28天,

而是29天。闰年的判断规则为,如果该年份是4

或100的整数倍或者是400

否则为非闰年。在我们的这个设计中由于只涉及

年范围内,

4来判断就行了。温度的显示主要是靠DS18B20

采集现在的温度数据,CPU读取数据进行显示,

当各自的条件得不到满足时,

状态才变化。

程序流程图如图所示:

5.3 源程序代码

#include

#define uchar unsigned char

#define uint unsigned int

sbit sclk=P3^6;

sbit io=P3^4;

sbit ce=P3^5;

sbit lcdrs=P2^6;

sbit lcdrw=P2^5;

sbit lcden=P2^7;

sbit K0=P3^0;

sbit K1=P3^1;

sbit K2=P3^2;

sbit K3=P3^3;

uchar flag;

uchar nyr[]="2014-01-01";

uchar sfm[]="23:59:50 Mon";

uchar week1[]="Mon";

uchar week2[]="Tue";

uchar week3[]="Wed";

uchar week4[]="Thur";

uchar week5[]="Fri";

uchar week6[]="Sat";

uchar week7[]="Sun";

void write_week();

void delay1(uchar m)

{

uchar x,y;

for(x=m;x>0;x--)

for(y=110;y>0;y--);

}

//以下为DS1302驱动程序

uchar time_data[7]={0x14,0x01,0x01,0x01,0x23,0x59,0x50};//年,周,月,日,时,分,秒

uchar year,week,month,day,hour,minute,second;

uchar write_add[7]={0x8c,0x8a,0x88,0x86,0x84,0x82,0x80};//写地址

uchar read_add[7]={0x8d,0x8b,0x89,0x87,0x85,0x83,0x81}; //读地址

void delay()

{;}

void write_1302_byte(uchar add)

{

uchar i;

for(i=0;i<8;i++)

{

sclk=0;

io=add&0x01;

add=add>>1;

sclk=1;

}

}

void write_1302(uchar add1,uchar dat1)

{

ce=0;

delay();

sclk=0;

delay();

delay();

ce=1;

write_1302_byte(add1);

write_1302_byte(dat1);

delay();

delay();

ce=0;

}

uchar read_1302(uchar addr)

{

uchar j,temp=0x00;

ce=0;

delay();

sclk=0;

delay();

delay();

ce=1;

write_1302_byte(addr);

for(j=0;j<8;j++)

{

if(io)

temp=temp|0x80;

sclk=0;

temp=temp>>1;

delay();

sclk=1;

}

return (temp);

}

void set_rtc()

{

uchar i;

write_1302(0x8E,0x00);

for(i=0;i<7;i++)

{

write_1302(write_add[i],time_data[i]);

}

write_1302(0x8E,0x80);

}

void read_rtc()

{

uchar i;

for(i=0;i<7;i++)

{

time_data[i]=read_1302(read_add[i]);

}

}

///以上为DS1302的驱动程序

//以下为1602液晶显示驱动

void write_1602com(uchar com)

{

lcdrs=0;

lcdrw=0;

P0=com;

delay1(5);

lcden=1;

delay1(5);

lcden=0;

}

void write_1602dat(uchar dat) {

lcdrs=1;

lcdrw=0;

P0=dat;

delay1(5);

lcden=1;

delay1(5);

lcden=0;

}

void init_1602()

{

uchar i;

lcden=0;

write_1602com(0x38);

write_1602com(0x0c);

write_1602com(0x06);

write_1602com(0x01);

write_1602com(0x80+3);

for(i=0;i<10;i++)

{

write_1602dat(nyr[i]);

delay1(5);

}

write_1602com(0x80+0x40+1);

for(i=0;i<13;i++)

{

write_1602dat(sfm[i]);

delay1(5);

}

}

void write_sfm(uchar add,uchar dat) {

uchar shi,ge;

shi=dat/16;

ge=dat%16;

write_1602com(0x80+0x40+add);

write_1602dat(0x30+shi);

write_1602dat(0x30+ge);

}

void write_nyr(uchar add,uchar dat) {

uchar shi,ge;

shi=dat/16;

ge=dat%16;

write_1602com(0x80+add);

write_1602dat(0x30+shi);

write_1602dat(0x30+ge);

}

void deal()

{

year=time_data[0];

write_nyr(5,year);

month=time_data[2];

write_nyr(8,month);

day=time_data[3];

write_nyr(0x0b,day);

hour=time_data[4];

write_sfm(1,hour);

minute=time_data[5];

write_sfm(4,minute);

second=time_data[6];

write_sfm(7,second);

}

void write_week()

{

uchar i;

week=time_data[1]%16;

write_1602com(0x80+0x40+11);

for(i=0;i<3;i++)

{

switch(week)

{

case 1: write_1602dat(week1[i]);break;

case 2: write_1602dat(week2[i]);break;

case 3: write_1602dat(week3[i]);break;

case 4: write_1602dat(week4[i]);break;

case 5: write_1602dat(week5[i]);break;

case 6: write_1602dat(week6[i]);break;

case 7: write_1602dat(week7[i]);break;

}

}

}

void keyscan()

{

uchar add;

if(K0==0)

{

delay1(5);

if(K0==0)

{

add++;

while(!K0);

if(add==1)

{

flag=1;

write_1602com(0x80+0x40+7);

write_1602com(0x0f);

}

if(add==2)

基于51单片机的USB键盘设计与实现

三江学院 本科生毕业设计(论文)题目基于51单片机的USB键盘设计与实现高职院院(系)电气工程及其自动化专业 学生姓名梁邱一学号 G105071013 指导教师孙传峰职称讲师 指导教师工作单位三江学院 起讫日期 2013年12月10日至2014年4月12日

摘要 随着计算机技术的不断更新和多媒体技术的快速发展,传统的计算机外设接口因为存在许多缺点已经不能适应计算机的发展需要。比起传统的AT,PS/2,串口,通用串行总线USB,具有速度快,使用方便灵活,易于扩展,支持即插即用,成本低廉等一系列优点,得到了广泛的应用。 本论文阐述了51系列单片机和USB的相关内容,详细介绍了系统的一些功能设计,包括硬件设计和软件设计。在程序调试期间用简单的串口通信电路,通过串口调试助手掌握了USB指令的传输过程,这对整个方案的设计起到了很大的指导作用。论文以单片机最小系统配合模拟键盘组成的USB键盘硬件系统,通过对D12芯片的学习与探索,在其基本命令接口的支持下,结合硬件进行相应的固件程序设计,使其在USB协议下,实现USB模块与PC的数据通信,完成USB键盘的功能模拟。 总结论文研究工作有阐述USB总线的原理、对本设计的系统要求作出了分析、根据要求选定元件和具体编程方案、针对系统所要实现的功能对相关芯片作了详细介绍以及在硬件部分设计了原理图。 关键词:USB;D12;PC

Abstract With the rapid development of computer technology and multimedia technology constantly updated, traditional computer peripheral interface because there are many shortcomings have been unable to meet the development needs of the https://www.360docs.net/doc/752706933.html,pared to traditional AT, PS / 2, serial, Universal Serial Bus USB, with fast, flexible and easy to use, easy to expand, support Plug and Play, a series of advantages, such as low cost, has been widely used. This paper describes the 51 series and USB related content, detailing some of the features of the system design, including hardware and software design.During debugging a simple serial communication circuit, through the serial port debugging assistant master USB transfer instructions, which designed the entire program has played a significant role in guiding.Thesis smallest single-chip system consisting of analog keyboard with a USB keyboard hardware system, by learning and exploration D12 chips, with the support of its basic command interface, in conjunction with the corresponding hardware firmware design, making it in the USB protocol, USB module data communication with the PC, the USB keyboard to complete the functional simulation. This paper summarizes research work has elaborated the principle of the USB bus, the system is designed to require the analysis, components and solutions based on the specific requirements of the selected programming for the system to achieve the function of the relevant chips are described in detail in the hardware part of the design as well as the principle of Figure. Keywords:USB;D12;PC

C51单片机和电脑串口通信电路图

C51单片机和电脑串口通信电路图与源码 51单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。我们采用了三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。这是最简单的连接方法,但是对我们来说已经足够使用了,电路如下图所示,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,第15脚和单片机的20脚连接。 串口通讯的硬件电路如上图所示 在制作电路前我们先来看看要用的MAX232,这里我们不去具体讨论它,只要知道它是TTL和RS232电平相互转换的芯片和基本的引脚接线功能就行了。通常我会用两个小功率晶体管加少量的电路去替换MAX232,可以省一点,效果也不错,下图就是MAX232的基本接线图。

按图7-3加上MAX232就可以了。这大热天的拿烙铁焊焊,还真的是热气迫人来呀:P串口座用DB9的母头,这样就可以用买来的PC串口延长线进行和电脑相连接,也可以直接接到电脑com口上。

为了能够在电脑端看到单片机发出的数据,我们必须借助一个WINDOWS软件进行观察,这里我们利用一个免费的电脑串口调试软件。本串口软件在本网站https://www.360docs.net/doc/752706933.html,可以找到 软件界面如上图,我们先要设置一下串口通讯的参数,将波特率调整为4800,勾选十六进制显示。串口选择为COM1,当然将网站提供的51单片机实验板的串口也要和电脑的COM1连接,将烧写有以下程序的单片机插入单片机实验板的万能插座中,并接通51单片机实验板的电源。

根据C51单片机的键盘及LCD显示

基于C51单片机的键盘及LCD显示 一、实验目的 1.掌握矩阵式键盘的数字键和功能键的编程方法。 2.掌握LCD的接口技术和编程方法。 3.掌握仪器监控程序设计和调试方法。 二、预习与参考 1. 结合ST7920 控制器系列中文图形液晶模块有关资料手册,详细了解ST7920接口设计技术。 2. 参考资料 1)实验板说明书 2)ST7920 控制器系列中文图形液晶模块资料手册 三、设计指标 利用实验板上提供的键盘电路,LCD显示电路,设计一人机界面,能实现以下功能: 1.LCD上显示“重庆科技学院” 2.按键至少包括0-9的数字键 3.LCD显示按键值 4.电子钟显示:时,分,秒(选作) 四、实验要求 1.以单片机为核心,设计4*4非编码键盘及LCD的硬件电路,画出电路原理图。 2.设计4*4非编码键盘及LCD的控制软件,画出流程图,编写控制程序。

五、实验仪器设备和材料清单 单片机实验板、连接导线、ST7920图形液晶模块、PC机; Keil c51软件 六、实验设计及实施的指导 1.实验课前布置实验任务,提出实验要求,预习相关资料,完成硬件草图设计和软件流程图备查。 2.经指导教师检查,预习达到要求者进入实验室实验。 3.按照设计的电路连线,构建键盘及显示系统,经检查无误方可进入下一步。 4.在指导教师指导下调试LCD显示程序。 5.在指导教师指导下调试按键程序。 6.综合调试直到满足设计要求。 七、实验成绩评定方法 实验成绩包括预习、实验完成质量、实验报告质量4部分组成,各部分所占比例分别为30%、30%、40%。 八、实验报告要求 1.实验报告格式: 一.实验名称 二.实验目的 三.实验内容 四.设计思想 五.硬件设计 六.程序代码

单片机电路图详解

单片机:交通灯课程设计(一) 目录 摘要--------------------------------------------------------- 1 1.概述 -------------------------------------------------------- 2 2.硬件设计----------------------------------------------------- 3 2.1单片机及其外围--------------------------------------------3 2.1.1单片机的选择-----------------------------------------3 2.1.2单片机的特点及其应用范围----------------------------- 3 2.1.3存储器的扩展----------------------------------------- 4 2.1.4内存的扩展------------------------------------------- 6 2.1.5MCS-52的I/O接口扩展--------------------------------- 8 2.2电路部分--------------------------------------------------11 2.2.1元器件选用-------------------------------------------11 2.2.2电路完成功能-----------------------------------------13 3.软件设计------------------------------------------------------15 3.1软件概述-------------------------------------------------15 3.2汇编语言指令说明-----------------------------------------16 3.3定时/计数器的原理----------------------------------------16 3.3.1定时/计数器的概述-----------------------------------16 3.3.2 8255A片选及各端口地址-------------------------------18 3.3.3信号控制码------------------------------------------18 3.3.4工作方式寄存器--------------------------------------19 3.3.5定时/计数器初值及定时器T0的工作方式----------------20

基于51单片机的PS2键盘的单片机编程

PS2键盘的单片机编程 在单片机系统中,经常使用的键盘都是专用键盘.此类键盘为单独设计制作的,成本高、使用硬件连接线多,且可靠性不高,这一状况在那些要求键盘按键较多的应用系统中更为突出.与此相比,在PC系统中广泛使用PS/2键盘具有价格低、通用可靠,且使用连接线少(仅使用2根信号线)的特点,并可满足多种系统的要求.因此在单片机系统中应用PS/2键盘是一种很好的选择. 文中在介绍PS/2协议和PS/2键盘工作原理与特点的基础上,给出了一个在单片机上实现对PS/2键盘支持的硬件连接与驱动程序设计实现.该设计实现了在单 片机系统中对PS/2标准104键盘按键输入的支持.使用Keil C51开发的驱动程序接口和库函数可以方便地移植到其他单片机或嵌入式系统中.所有程序在 Keil uVision2上编译通过,在单片机AT89C51上测试通过. 1 PS/2协议 目前,PC机广泛采用的PS/2接口为mini-DIN 6pin的连接器,如图1所示. PS/2设备有主从之分,主设备采用Female插座,从设备采用Male插头.现在广泛使用的PS/2键盘鼠标均在从设备方式下工作.PS/2接口的时钟 与数据线都是集电极开路结构,必须外接上拉电阻(一般上拉电阻设置在主设备中).主从设备之间数据通信采用双向同步串行方式传输,时钟信号由从设备产生. 1.1 从设备到主设备的通信 当从设备向主设备发送数据时,首先检查时钟线,以确认时钟线是否为高电平.如果是高电平,从设备就可以开始传输数据;反之,从设备要等待获得总线的控制权,才能开始传输数据.传输的每一帧由11位组成,发送时序及每一位的含义如图2 所示. 每一帧数据中开始位总是为0,数据校验采用奇校验方式,停止位始终为1.从设 备到主设备通信时,从设备总是在时钟线为高时改变数据线状态,主设备在时钟 下降沿读人数据线状态.

51单片机独立按键程序查询法和外部中断两种

//以下程序都是在VC++6.0 上调试运行过的程序,没有错误,没有警告。 //单片机是STC89C52RC,但是在所有的51 52单片机上都是通用的。51只是一个学习的基础平台,你懂得。 //程序在关键的位置添加了注释。 //用//11111111111111111代表第一个程序。//2222222222222222222222222代表第二个程序,以此类推 //1111111111111111111111111111111111111111111111111111111111111111111 //1111111111111111111111111111111111111111111111111111111111111111111 /****************************************************************************** * * 实验名: 左右流水灯实验 * 使用的IO : LED使用P2,键盘使用P3.1 * 实验效果: 按下K1键, * 注意: ******************************************************************************* / #include #include #define GPIO_LED P2 sbit K1=P3^1; void Delay10ms( ); //延时10ms /****************************************************************************** * * 函数名: main * 函数功能: 主函数 * 输入: 无 * 输出: 无 ******************************************************************************* / void main(void) { unsigned int i,j; j=0xfe; //1111_1110 while(1) { GPIO_LED=j; if(K1==0) //检测按键K1是否按下 { Delay10ms(); //消除抖动 if(K1==0) {

51单片机AD89电路设计程序+原理图

AD0809在51单片机中的应用 我们在做一个单片机系统时,常常会遇到这样那样的数据采集,在这些被采集的数据中,大部分可以通过我们的I/O口扩展接口电路直接得到,由于51单片机大部分不带AD转换器,所以模拟量的采集就必须靠A/D或V/F实现。下现我们就来了解一下AD0809与51单片机的接口及其程序设计。 1、AD0809的逻辑结构 ADC0809是8位逐次逼近型A/D转换器。它由一个8路模拟开关、一个地址锁存译码器、一个A/D转换器和一个三态输出锁存器组成(见图1)。多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。

2、AD0809的工作原理 IN0-IN7:8条模拟量输入通道 ADC0809对输入模拟量要求:信号单极性,电压围是0-5V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。 地址输入和控制线:4条 ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道

的模拟量进转换器进行转换。A,B和C为地址输入线,用于选通IN0-IN7上的一路模拟量输入。通道选择表如下表所示。 C B A 选择的通道 0 0 0 IN0 0 0 1 IN1 0 1 0 IN2 0 1 1 IN3 1 0 0 IN4 1 0 1 IN5 1 1 0 IN6 1 1 1 IN7 数字量输出及控制线:11条 ST为转换启动信号。当ST上跳沿时,所有部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。EOC为转换结束信号。当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态。D7-D0为数字量输出线。 CLK为时钟输入信号线。因ADC0809的部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ, VREF(+),VREF(-)为参考电压输入。

51单片机按键控制数码管程序

#define uint unsigned int #define uchar unsigned char uchar c; sbit p10=P1^0; sbit p11=P1^1; sbit p12=P1^2; sbit p13=P1^3; sbit p14=P1^4; sbit p15=P1^5; sbit p16=P1^6; sbit p17=P1^7; void delay(uint z); int b[]={0,1,2,3,4,5,6,7};//设置每一位显示的数字 unsigned char code Tab[]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};//共阳极数码管 int a[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; void main() { EA=1; EX0=1; IT0=1; P1=0xff; while(1) { for(c=0;c<8;c++)//数码管扫描显示

P2=a[c]; P0=Tab[b[c]]; delay (1); } } } void delay(uint z) { uint a,b; for(a=z;a>0;a--) for(b=110;b>0;b--); } int_0()interrupt 0 { EA=0; if(p10==0) b[0]=(b[0]+1)%10; if(p11==0) b[1]=(b[1]+1)%10; if(p12==0) b[2]=(b[2]+1)%10; if(p13==0) b[3]=(b[3]+1)%10; if(p14==0) b[4]=(b[4]+1)%10; if(p15==0) b[5]=(b[5]+1)%10; if(p16==0) b[6]=(b[6]+1)%10; if(p17==0) b[7]=(b[7]+1)%10;

51单片机的若干电路原理图

51单片机的若干电路原理图 单片机 2007-10-23 20:36:31 阅读198 评论0 字号:大中小订阅 利用下面这些原理图,就可以自己动手做个简单的实验板啦~~~~ 1 外接电源供电电路及电源指示灯 在单片机实训板上为系统设计了一个外接电源供电电路,这个电源电路具备两种电源供电方式:一种是直接采用PC的USB接口5V直流电源给实训板供电,然后在电源电路中加入一个500mA电流限制的自恢复保险丝给PC的USB电源提供了保护的作用;另一种是采用小型直流稳压电源供电,输出的9V直流电源加入到电源电路中,通过LM7805稳压芯片的降压作用,给实训板提供工作所需的5V电源。 如图2.4所示为采用LM7805稳压芯片进行降压供电的电源电路。 图2.4 外接电源供电电路 同时,为了显示外接电源给实训板提供了电源,在系统中增加了电源指示灯电路,如图2.5。 发光二极管工作在正常工作状态时,流过LED的电流只需要5~10mA左右就行,在电路中采用白发红高亮LED,所以可以取5mA左右

的电流值,通过计算,可知:连接LED的限流电阻的阻值可以采用680Ω。 图2.5 电源指示灯电路 2 系统复位电路 复位是单片机的初始化操作,只要给RESET引脚加上2个机器周期以上的高电平信号,即可使单片机复位。除了进入系统的正常初始化之外,当程序运行出错或是操作错误使系统处于死锁状态时,为了摆脱死锁状态,也需要按复位键重新复位。 在系统中,为了实现上述的两项功能,采用常用的按键电平复位电路,如图2.6所示。 2.6 按键电平复位电路 从途中可以看出,当系统得到工作电压的时候,复位电路工作在上电自动复位状态,通过外部复位电路的电容充电来实现,只要Vcc

51单片机按键控制花样灯

51单片机按键控制花样灯 时间:2018-09-10 13:50:11 来源:51hei 作者: /**************************************************** * 本程序实现用按键控制花样灯。 * * 当K1按下时,灯从0xfe向左跑一遍; * * 当K2按下时,LED灯从0x7f向右跑一遍到了0xfe右跑回到起始位置; * * 当K3键按下时,LED灯从0xfe开始作流水灯形式运行一次,然后再流回来。 * * 当K4键按下时,LED灯先亮前四个,接着再转向亮后四个。 * * 当K5键按下时,结束任意正在进行的程序,使LED灯全部熄灭。 * ******************************************************/ ************************************************* 连接方法:P0接独立按键JP5。P2接LED灯接口JP1 * ***********************************************************/ #include //头文件,函数声明 #include //定义按键所在位 sbit K1=P0^0。 sbit K2=P0^1。 sbit K3=P0^2。 sbit K4=P0^3。 sbit K5=P0^4。 unsigned char led。 unsigned char j。 void delayms(unsigned char ms> // 1ms标准延时 { while(ms--> { for(j=0。j<110。j++>。 //还是无法设置比较标准的延时,如1S等;所以应该用定时器延时才最准确 } } void main(> { //P2=led。 unsigned int i。

51单片机键盘设置

\\\§8.3 键盘接口技术 一、键盘输入应解决的问题 键盘是一组按键的集合,它是最常用的单片机输入设备. 操作人员可以通过键盘输入数据或命令,实现简单的人机通讯。 键是一种常开型按钮开关,平时(常态)键的二个触点处于断开状态,按下键时它们才闭合(短路)。 键盘分编码键盘和非编码键盘。 键盘上闭合键的识别由专用的硬件译码器实现并产生编号或键值的称为编码键盘, 如:ASCⅡ码键盘、BCD码键盘等; 靠软件识别的称为非编码键盘。 在单片机组成的测控系统及智能化仪器中用得最多的是非编码键盘。 本节着重讨论非编码键盘的原理、接口技术和程序设计。 键盘中每个按键都是—个常开关电路,如图所示。

1.按键的确认:P1.7=1 无按键; P1.7=0 有按键; 2.去抖动 去抖动的方法: ①硬件去抖动采用RS触发器: 优点: 速度快,实时, 缺点: 增加了硬件成本 ②软件去抖动采用延时方法 延时5—10ms 延时5—10ms P1.7=0 确认P1.7=0 P1.7=1 (去前沿抖动) (去后沿抖动) 二、独立式键盘

每个I/O口连接一个按,S1 P1.0 S2 P1.1 ………………………. S8 P1.7 软件: START:MOV P1,#0FFH ;置P1口为高电平 JNB P1.0, RS1 ; S1按下,程序去执行RS1 JNB P1.1, RS2 ; S2按下,程序去执行RS2

JNB P1.2, RS3 ; S3按下,程序去执行RS3 JNB P1.3, RS4 ; S4按下,程序去执行RS4 JNB P1.4, RS5 ; S5按下,程序去执行RS5 JNB P1.5, RS6 ; S6按下,程序去执行RS6 JNB P1.6, RS7 ; S7按下,程序去执行RS7 JNB P1.7, RS8 ; S8按下,程序去执行RS8 AJMP START ; 继续扫描按键 …………. RS1: AJMP PK1 ; RS2: AJMP PK2 ; RS3: AJMP PK3 ; RS4: AJMP PK4 ; RS5: AJMP PK5 ; RS6: AJMP PK6 ; RS7: AJMP PK7 ; RS8: AJMP PK8 ; AJMP START ; 无键按下,继续扫描………………… PK1: ……….. ;按键S1功能处理程序 AJMP START ;处理S1按键后, 继续扫描PK2: ……….. ;按键S2功能处理程序

第13讲51单片机按键电路

标题:键盘接口电路 教学目标与要求: 1.键盘去抖动和连接、控制方式 2.独立式按键及其接口电路 3.矩阵式键盘及其接口电路 授课时数:2 教学重点:.矩阵式键盘及其接口电路 教学内容及过程: 一、键盘接口概述 1、按键开关去抖动问题 机械式按键再按下或释放时,由于机械弹性作用的影响,通常伴随有一定时间的触点机械抖动,然后其触点才稳定下来。其抖动过程如图9-11所示,抖动时间的长短与开关的机械特性有关,一般为5 10 ms 在触点抖动期间检测按键的通与断状态,可能导致判断出错,即按键一次按下或释放被错误地认为是多次操作,这种情况是不允许出现的。为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施。这一点可从硬件、软件两方面予以考虑。在键数较少时,可采用硬件去抖,而当键数较多时,采用软件去抖。在硬件上可采用在键输出端加R-S触发器(双稳态触发器)或单稳态触发器构成去抖动电路。图9-12是一种由R-S触发器构成的去抖动电路,当触发器一旦翻转,触点抖动不会对其产生任何影响。 软件上采取的措施是:在检测到有按键按下时,执行一个10 ms左右(具体时间应视所使用的按键进行调整)的延时程序后,再确认该键电平是否仍保持闭合状态电平,若仍保持闭合状态电平,则确认该键处于闭合状态。同理,在检测到该键释放后,也应采用相同的步 骤进行确认,从而可消除抖动的影响。

2.编制键盘程序 一个完善的键盘控制程序应具备以下功能: (1) 检测有无按键按下,并采取硬件或软件措施,消除键盘按键机械触点抖动的影响。 (2) 有可靠的逻辑处理办法。每次只处理一个按键,其间对任何按键的操作对系统不产生影响,且无论一次按键时间有多长,系统仅执行一次按键功能程序。 (3) 准确输出按键值(或键号),以满足跳转指令要求。 二、独立式按键 单片机控制系统中,往往只需要几个功能键,此时,可采用独立式按键结构。 1. 独立式按键结构 独立式按键是直接用I/O口线构成的单个按键电路,其特点是每个按键单独占用一根I/O口线,每个按键的工作不会影响其它I/O口线的状态。独立式按键的典型应用如图7.4所示。 独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口线,因此,在按键较多时,I/O口线浪费较大,不宜采用。 2.矩阵式键盘 I/O端线分为行线和列线,按键跨接在行线和列线上,按键按下时,行线与列线发生短路。特点: ①占用I/O端线较少; ②软件结构教复杂。 适用于按键较多的场合。 3.键盘扫描控制方式 ⑴程序控制扫描方式 键处理程序固定在主程序的某个程序段。 特点:对CPU工作影响小,但应考虑键盘处理程序的运行间隔周期不能太长,否则会影响对键输入响应的及时性。 ⑵定时控制扫描方式 利用定时/计数器每隔一段时间产生定时中断,CPU响应中断后对键盘进行扫描。 特点:与程序控制扫描方式的区别是,在扫描间隔时间内,前者用CPU工作程序填充,后者用定时/计数器定时控制。定时控制扫描方式也应考虑定时时间不能太长,否则会影响对键输入响应的及时性。 ⑶中断控制方式 中断控制方式是利用外部中断源,响应键输入信号。 特点:克服了前两种控制方式可能产生的空扫描和不能及时响应键输入的缺点,既能及时处理键输入,又能提高CPU运行效率,但要占用一个宝贵的中断资源。 三、独立式按键及其接口电路 1、按键直接与I/O口连接

基于某51单片机地键盘盘可调万年历

开放性实验报告 题目: 基于80C51的万年历设计_ 院系:

专业班级: 学号: 姓名: 指导老师:________________________ 时间:2014年9月8号 摘要 电子万年历是一种非常广泛日常计时工具,对现代社会越来越流行。它可以对年、月、日、周、时、分、秒进行计时,还具有闰年补偿等多种功能。本系统选用DALLAS 公司生产的日历时钟芯片DS1302来作为实时时数字万年历采用直观数字显示,可以同时显示年、月、日、周、时、分、秒等信息,还具有键盘时间校准等功能。该电路采用AT89C52单片机作为核心,用以5V电压供电。 本系统硬件部分由AT89C52单片机、DS1302时钟芯片、LCD1602液晶显示环境下以C51语言编写,包括时间设置、时间显示、时间修正等功能。在仿真的时候,以Proteus 与Keil uVision4软件为基础,编写了MCS-51单片机对LCD1602显示控制的软件,绘制其原理图,并使用Proteus软件与Keil uVision4软件建立联合仿真。本设计主要论述了原理图各个模块的作用,以及控制软件的各个模块的编程。

关键词:时钟芯片DS1302;单片机AT89C52;液晶显示1602;独立键盘等

目录 第1章绪论 (1) 1.1实时万年历的简介 (1) 1.2系统所实现的功能 (3) 第2章开发工具软件简介 (4) 2.1K EIL U V ISION4软件简介 (4) 2.2P ROTEUS软件简介 (4)

2.3K EIL U V ISION4与P ROTEUS软件联合仿真 (5) 第3章LCD1602显示控制技术 (6) 3.11602字符型LCD简介 (6) 3.2LCD1602功能 (7) 3.3 LCD1602的指令说明及时序 (8) 3.4LCD1602的RAM地址映射及标准字库表 (7) 3.5 LCD1602的一般初始化(复位)过程 (8) 第4章系统硬件概况 (13) 4.1系统概况 (13) 4.2 MCS-51单片机最小系统模块 (14) 4.3 DS1302时钟芯片控制与键盘设置时间模块 (15) 4.4 LCD1602显示模块 (16) 第5章软件控制系统概况 (18) 5.1程序流程概况 (18) 5.2 流程图 (18) 5.3 源程序代码 (19) 参考文献 (25)

基于C51单片机矩阵键盘控制蜂鸣器的应用

学校代码 10126 学号科研创新训练论文 题目基于C51单片机的蜂鸣器和流水灯的 应用 院系内蒙古大学鄂尔多斯学院 专业名称自动化 年级 2013 级 学生姓名高乐 指导教师高乐奇 2015年06月20日

基于C51单片机的蜂鸣器和流水灯的应用 摘要 当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。本文介绍了单片机的发展及应用,和基于单片机的蜂鸣器和流水灯的知识及应用,还介绍了此次我所设计的课题。 关键词:C-51单片机,控制系统,流水灯,蜂鸣器,程序设计

The application of buzzer and flowing water light based on C51 MCU Author:GaoLe Tutor:GaoLeQi Abstract This age is a new technology emerge in endlessly era, in the electronic field especially automation intelligent control field, the traditional schism components or digital logic circuit, is composed of control system with unprecedented speed was replaced by micro-controller intelligent control system. SCM has small, strong function, low cost, etc, it can be said that wide application, intelligent control and automatic control core is the micro-controller.This article introduces the MCU development and application,the knowledge and application of buzzer and flowing water light based on MCU,then introduces the task I have designed this time. Keyword:C51 micro-controller,control system,flowing water light,buzzer ,programming

51单片机矩阵键盘程序

/*风清云扬*/ # include #define uchar unsigned char #define uint unsigned int void delay(uint i) { uchar x,j; for(j=0;j

} else if(temp0==0x0b) { switch (temp1) { case 0xe0: num=12;break; case 0xd0: num=11;break; case 0xb0: num=10;break; case 0x70: num=9;break; default:num=0;break; } } else if(temp0==0x07) { switch (temp1) { case 0xe0: num=16;break; case 0xd0: num=15;break; case 0xb0: num=14;break; case 0x70: num=13;break; default:num=0;break; } } } } return num; } void main() { char num; while(1) { num=key_scan(); P2=num/10; P3=num%10; } }

单片机电路图详解

单片机:交通灯课程设计(一)(2007-04-21 13:28:54) 目录 摘要--------------------------------------------------------- 1 1.概述 -------------------------------------------------------- 2 2.硬件设计----------------------------------------------------- 3 2.1单片机及其外围--------------------------------------------3 2.1.1单片机的选择-----------------------------------------3 2.1.2单片机的特点及其应用范围----------------------------- 3 2.1.3存储器的扩展----------------------------------------- 4 2.1.4内存的扩展------------------------------------------- 6 2.1.5MCS-52的I/O接口扩展--------------------------------- 8 2.2电路部分--------------------------------------------------11 2.2.1元器件选用-------------------------------------------11 2.2.2电路完成功能-----------------------------------------13 3.软件设计------------------------------------------------------15 3.1软件概述-------------------------------------------------15 3.2汇编语言指令说明-----------------------------------------16 3.3定时/计数器的原理----------------------------------------16 3.3.1定时/计数器的概述-----------------------------------16 3.3.2 8255A片选及各端口地址-------------------------------18 3.3.3信号控制码------------------------------------------18 3.3.4工作方式寄存器--------------------------------------19 3.3.5定时/计数器初值及定时器T0的工作方式----------------20

51单片机按键控制花样灯

51单片机按键控制花样灯 时间:2012-09-10 13:50:11 来源:51hei 作者: /**************************************************** * 本程序实现用按键控制花样灯。 * * 当K1按下时,灯从0xfe向左跑一遍; * * 当K2按下时,LED灯从0x7f向右跑一遍到了0xfe右跑回到起始位置;* * 当K3键按下时,LED灯从0xfe开始作流水灯形式运行一次,然后再流回来。* * 当K4键按下时,LED灯先亮前四个,接着再转向亮后四个。* * 当K5键按下时,结束任意正在进行的程序,使LED灯全部熄灭。* ******************************************************/ ************************************************* 连接方法:P0接独立按键JP5;P2接LED灯接口JP1 * ***********************************************************/ #include //头文件,函数声明 #include //定义按键所在位 sbit K1=P0^0; sbit K2=P0^1; sbit K3=P0^2; 页脚内容1

sbit K4=P0^3; sbit K5=P0^4; unsigned char led; unsigned char j; void delayms(unsigned char ms) // 1ms标准延时 { while(ms--) { for(j=0;j<110;j++); //还是无法设置比较标准的延时,如1S等;所以应该用定时器延时才最准确} } void main() { //P2=led; unsigned int i; while(1) { /********************************************* 页脚内容2

基于AT89C51单片机键盘控制动态显示器设计

基于AT89C51单片机键盘控制动态显示器设计

键盘控制动态显示器 目录 摘要-----------------------------------------------------------------------------------------3 关键字--------------------------------------------------------------------------------------3 第一章绪论-------------------------------------------------------------------------------4 1.1 课题简介---------------------------------------------------------------------------4 1.2 系统功能要求---------------------------------------------------------------------4 1.3技术指标----------------------------------------------------------------------------4 第二章方案论证及硬件设计----------------------------------------------------------5 2.1 方案论证---------------------------------------------------------------------------5 2.2 单片机简介------------------------------------------------------------------------5 2.2.1 MSC-51系列单片机简介-------------------------------------------------------6 2.2.2MSC-51系列单片机内部结构-----------------------------------------------7 2. 2.3 MSC-51系列单片引脚及其功能----------------------------------------------8 2.3 键盘部分--------------------------------------------------------------------------9 2.4 LED显示器简介----------------------------------------------------------------10 2.5 电路工作过程---------------------------------------------------------------------10 第三章键盘控制电路原理图----------------------------------------------------------11 3.1 硬件框图---------------------------------------------------------------------------11 3.2 电路原理图------------------------------------------------------------------------12 第四章软件设计-------------------------------------------------------------------------13 4.1键盘扫描、按键判断程序------------------------------------------------------13 4.2显示子程序------------------------------------------------------------------------13 4.3程序框图----------------------------------------------------------------------------15 4.4 完整的源程序---------------------------------------------------------------------16 第五章检测与调试--------------------------------------------------------19 5.1 硬件调试---------------------------------------------------------------------------19 5.2 软件调试---------------------------------------------------------------------------19 第六章元器件清单----------------------------------------------------------------------20 第七章心得体会-------------------------------------------------------------------------21 第八章参考文献-------------------------------------------------------------------------23

相关文档
最新文档