基于C51单片机的键盘及LCD显示
基于AT89C51单片机键盘控制和LCD显示
}
else if(num==11) //如果按下的是'-'
{
flag=1;
fuhao=2; //2表示减号已按
}
i=table[num];
write_dat(0x30+i);
}
P3=0xfe;
if(P3!=0xfe)
{
delay(5);
if(P3!=0xfe)
{
temp=P3&0xf0;
switch(temp)
系统硬件设计框图如图1
图1
2AT89S52是一种带4kB闪烁可编程课擦除只读存储器的低电压、高性能CMOS型8位微处理器,俗称单片机。它是一个低功耗、高性能的8位CMOS微控制器。由片内可反复
擦拭的FLASH只读程序存储器(ROM)、片外程序存储器内部硬件资源,P0P3 4×8 32位输入\输出总线(I\O)接口,其中P1、P3作为普通的接口,并有第二功能。P0可作为地址数据总线用于外接电路的扩展端口。其引脚如图2
判断被按下键的位置:
依次将所有的行线Y4~Y7置为低电平,在判断4根列线的电平状态,当遇到某一列的电平
键盘扫描流程图
为低时表示此键按下。
5LCD1602液晶显示屏
液晶显示器具有显示质量高、发光恒定、不会刷新亮点和闪烁、体积小、电流小、字迹清晰以及功耗低的特点。本实验才用了16×2个字符,5×7点阵,8位数据接口的液晶显示。
break;
case 0x70:num=7;
break;
}
}
while(P3!=0xfb);
if(num==4||num==5||num==6&&num!=7) //如果按下的是'4','5'或'6'
C51实验程序(流水灯、矩阵键盘、动态显示、串行口、1602液晶)
switch(SBUF)//根据收到的数据决定模式
{ case 'A':LED1=~LED1,LED2=1;break;
case 'B':LED2=~LED2,LED1=1;break;
case 'C': LED1=~LED1,LED2=~LED2;break;
}
}
else
LED1=LED2=1;
TMOD=0x20;
PCON=0x00;
TH1=0xfd;
TL1=0xfd;
TI=0;
TR1=1;
while(1)
{ if(K1==0)
{ while(K1==0);
Operation_NO=(Operation_NO+1)%4; //计按键次数决定模式
}
switch(Operation_NO)
{ case 0:LED1=LED2=1;break;
{uchar t;
while(ms--)
{
for(t=0;t<120;t++);
}
}
void main()//主函数
{SCON=0x50;//以下为串行口初始化
TMOD=0x20;
PCON=0x00;
TH1=0xfd;
TL1=0xfd;
RI=0;
TR1=1;
LED1=LED2=1;
while(1)
{ if(RI)
DelayMS(10);
}}
#include<reg52.h>(LCD1602)
#define uint unsigned int
#define uchar unsigned char
基于C51单片机的键盘及LCD显示
}
}
}
1.实验报告格式:
一.实验名称
二.实验目的
三.实验内容
四.设计思想
五.硬件设计
六.程序代码
七.参考文献
2.硬件电路原理图用PROTEL等软件画出。
附录:程序源代码:
附录1
#include "reg51.h"
#include "intrins.h"
#define THCO 0xee
#define TLCO 0x0
i_data&=0xf0;
for(i=0;i<8;i++)
{
SID=(bit)(i_data&0x80);
SCLK=0;
SCLK=1;
i_data=i_data<<1;
}
CS=0;
}
void InitLCD() //液晶初始化
{
send_command(0x30); //功能设置:一次送8位数据,基本指令集
2)ST7920控制器系列中文图形液晶模块资料手册
三、设计指标
利用实验板上提供的键盘电路,LCD显示电路,设计一人机界面,能实现以下功能:
1.LCD上显示“重庆科技学院”
2.按键至少包括0-9的数字键
3.LCD显示按键值
4.电子钟显示:时,分,秒(选作)
四、实验要求
1.以单片机为核心,设计4*4非编码键盘及LCD的硬件电路,画出电路原理图。
{
unsigned char hi=0;//汉字显示
if(x==0) send_command(0x80+y);//
else if(x==1) send_command(0x90+y);
基于51单片机的数字LCD显示
基于51单片机的数字LCD显示摘要:基于89 C51单片机的数字显示标题硬件实现和软件设计,阐述了它的工作原理。
介绍了研制过程中遇到的问题和解决办法。
通过实验和运行,那头性能可靠,满足设计指标参数,LCD显示具有广阔的市场前景,然后是成熟和普及。
在显示领域,LED显示装置系列微电子技术、计算机技术和信息处理于一体,以其色彩鲜艳、动态范围、高亮度、清晰度高,低电压操作,能耗低、使用寿命长、耐冲击、色彩艳丽、工作可靠、稳定的优势,成为新一代的显示媒体,目前,LED显示屏已被广泛应用于大型广场,商业广告、信息传播、新闻发布、证券交易,能满足不同环境的需要。
由单片机外围电路系统,显示电路、单片机、最小的系统构成。
该系统的安装是容易的检测、软件功能完善、工作可靠、精度高的优点。
论述了单片机控制的液晶数字显示系统,阐述了软件的基本原理,实现您的系统使用的设计及模拟和系统的应用领域。
关键词: 单片机AT89C51、液晶数字显示, 凯尔软件ⅰBased on 51 SCM LCD digital displayAbstract Based on the 89 C51 SCM's digital display header hardware realization and the software design, expounds its principle of work. Introduces the developing process of the multiplier encounter problems and solving methods. Through the test and operation, that the header reliable performance, to meet the design index parameters, and has a broad market prospect, and then the mature and popularity. As in the display field, LED display set series microelectronics technology, computer technology and information processing in the integral whole, with its colourful, dynamic range, high brightness, high-definition, low voltage operation, low consumption, long service life, impact resistance, gorgeous colour and stable and reliable work, become the advantage of a new generation of show media, at present, the LED display has been widely used in large square, commercial advertising, information dissemination, press conference, securities trading, can satisfy the need of different environment. By single-chip microcomputer system, peripheral circuit and single-chip microcomputer and show circuit smallest system formed. This system is easy to install detection, software function is perfect, reliable operation, the advantages of high accuracy.This paper discusses the single-chip microcomputer control by the LCD digital display system, and expounds the basic principle of the Keil software to realize the system using design and simulation and the system applied fields.Keywords: single-chip microcomputer AT89C51, LCD digital display, Keil softwareii目录引言 (1)第一章初识系统 (2)1.1设计过程及工艺要求 (2)1.2设计的重点与难点 (2)第二章系统的设计 (3)2.1系统设计 (3)2.2芯片AT89C51介绍 (3)2.3 AT89S51单片机特性 (6)2.4 LCD显示屏介绍 (6)2.4.1 LCD的定义及作用 (6)2.4.2 LCD显示器的工作原理及主要参数 (6)2.4.3 LCD的分类 (10)2.4.4 LCD的特点 (10)第三章系统调试 (11)3.1 硬件的设计 (11)3.2原理分析 (13)3.3程序的调试与运行 (14)3.3.1 HEX文件的生成 (14)3.3.2 调试与仿真 (14)结论 (15)致谢 (16)参考文献 (17)iii引言目前,控制仪表经常使用的显示面板主要有LCD和LED两种类型,其中LCD比较美观,省电,显示方式灵活,但是价格比较昂贵,最重要的是它的醒目程度较低,可视角度也比较小;而LED数码管虽然功耗较大,但它亮度高,用作工业现场指示时更醒目,而且价格低。
单片机键盘及显示
根据显示器件的不同,显示输出可分为LED显示 、LCD显示、LED点阵显示等多种形式。
3
显示输出的特点
显示输出具有直观、清晰、易于理解等优点,同 时也有功耗低、寿命长等特性。
LED显示
LED显示原理
LED(发光二极管)是一种能够 发出可见光的半导体器件,通过 控制电流的大小可以调节亮度。
单片机键盘及显示应 用案例
应用案例一:智能家居控制系统
智能家居控制系统的应用
通过单片机键盘及显示模块,实现对家居设备的远程控制,如灯光、空调、电 视等。
实现方式
通过单片机接收键盘输入,控制家居设备的开关和调节,并通过显示模块显示 当前设备的状态和操作信息。
应用案例二:工业自动化控制系统
工业自动化控制系统的应用
存储器
存储器是单片机内部用于存储程 序和数据的部件,分为程序存储 器和数据存储器。
输入/输出接口
输入/输出接口是单片机与外部设 备进行通信的桥梁,可以实现数 据的输入和输出。
单片机工作原理
工作过程
单片机的工作过程一般包括取指 、执行、存回三个步骤。首先从 程序存储器中取出指令,然后由 中央处理器执行该指令,最后将 结果存回数据存储器或通过输入/ 输出接口输出到外部设备。
单片机键盘及显示
汇报人: 202X-12-20
目录
• 引言 • 单片机基础知识 • 键盘输入技术 • 显示输出技术 • 单片机键盘及显示接口设计 • 单片机键盘及显示应用案例
01
引言
主题介绍
单片机
单片机是一种集成电路芯片,具有计 算机的基本功能,常用于控制和智能 化设备。
键盘及显示
键盘是用户与单片机交互的主要输入 设备,用于输入数据和命令;显示则 是单片机向用户反馈信息的主要输出 设备,用于显示数据和状态。
普中51单片机按键-数码管显示
普中51单⽚机按键-数码管显⽰基于普中单⽚机按键-数码管显⽰简介1.硬件部分普中单⽚机开发板 数码管 独⽴按键2.软件部分keil软件硬件部分普中单⽚机开发板数码管独⽴按键(这些都是开发板的最基本的配置)软件部分#include "reg52.h" //此⽂件中定义了单⽚机的⼀些特殊功能寄存器typedef unsigned int u16; //对数据类型进⾏声明定义typedef unsigned char u8;/*端⼝引脚定义*/sbit LSA=P2^2;sbit LSB=P2^3;sbit LSC=P2^4;sbit KEY1 = P3^0;sbit KEY2 = P3^1;/*变量定义*/int number;unsigned char KeyNum=0; //被触发的按键编号unsigned char KeyLock1=0;unsigned char KeyLock2=0;unsigned int cnt;/*函数声明部分*/void KEY_Scan();void KEY_Action();void Light_Scan();void delay(u16 i);void Display();void Time0Iint();/*数码管码表*/unsigned char code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//共阴数码管显⽰0~F的值unsigned char LightBuf[]={0xFF,0xFF,0xFF,0xFF,0XFF};/******************************************************************************** 函数名 : delay* 函数功能 : 延时函数,i=1时,⼤约延时10us*******************************************************************************/void delay(u16 i){while(i--);}/******************************************************************************** 函数名 : Display* 函数功能 : 数码管显⽰部分*******************************************************************************/void Display(){LightBuf[0]=smgduan[number%10];LightBuf[1]=smgduan[number/10%10];LightBuf[2]=smgduan[number/100%10];LightBuf[3]=smgduan[number/1000%10];LightBuf[4]=smgduan[number/10000%10];}/******************************************************************************** 函数名 : Light_Scan()* 函数功能 : 数码管扫描函数,选择显⽰的位置*******************************************************************************/void Light_Scan(){u8 i;for(i=0;i<8;i++){switch(i) //位选,选择点亮的数码管,{case(0):LSA=0;LSB=0;LSC=0;P0=LightBuf[4];break;//显⽰第0位case(1):LSA=1;LSB=0;LSC=0;P0=LightBuf[3];break;//显⽰第1位case(2):LSA=0;LSB=1;LSC=0;P0=LightBuf[2];break;//显⽰第2位case(3):LSA=1;LSB=1;LSC=0;P0=LightBuf[1];break;//显⽰第3位case(4):LSA=0;LSB=0;LSC=1;P0=LightBuf[0];break;//显⽰第4位default: break;}delay(100); //间隔⼀段时间扫描P0=0x00;//消隐}}/******************************************************************************* * 函数名 : KEY_Scan()* 函数功能 : 按键扫描函数*******************************************************************************/ void KEY_Scan(){static unsigned char cnt1 = 0xFF;static unsigned char cnt2 = 0xFF;cnt1 =(cnt1<<1)|KEY1;cnt2 =(cnt2<<1)|KEY2;if(cnt1 != 0x00){KeyLock1 = 0;}else if(KeyLock1==0){KeyNum = 1;KeyLock1 = 1;}if(cnt2 != 0x00){KeyLock2 = 0;}else if(KeyLock2==0){KeyNum = 2;KeyLock2 = 1;}}/******************************************************************************* * 函数名 : KEY_Action()* 函数功能 : 按键执⾏操作部分*******************************************************************************/ void KEY_Action(){switch(KeyNum){case 1:number++; KeyNum = 0; break;case 2:number--; KeyNum = 0; break;default:break;}}/******************************************************************************* * 函数名 :Time0Iint* 函数功能 :定时器0配置,定时器初始化函数*******************************************************************************/ void Time0Iint(){EA=1;TH0 = (65536-2000)/256;//定时2msTL0 = (65536-2000)%256;TMOD &= 0xFC;TMOD = 0x01;ET0 = 1;TR0 = 1;}/******************************************************************************* * 函数名 :void InterruptT0() interrupt 1* 函数功能 : 定时器0中断执⾏部分*******************************************************************************/ void InterruptT0() interrupt 1{TH0 = (65536-2000)/256;//定时2msTL0 = (65536-2000)%256;Light_Scan();KEY_Scan();}/******************************************************************************* * 函数名 : main* 函数功能 : 主函数* 输⼊ : ⽆* 输出 : ⽆*******************************************************************************/ void main(){Time0Iint();while(1){Display();KEY_Action();}}参考资料。
51单片机键盘显示
键盘与显示方案
一、简介
键盘与显示实验板有三种显示方式分别为LED显示、数码管显示、LCD1602显示,按键有三种方式分别是直扩按键、164外扩2*8扫描按键、红外遥控,通过硬件设计、制作,软件编程仿真,能够让我们深入理解与学习基本的显示与按键输入,为以后单片机系统的设计打下坚实基础
二、方案
1、方案简介
(1)LED显示简单实用可以用来玩各种花样流水灯,大量的LED灯可以显示字
符、汉字等各种符号,由于本实验板i/o口有限,故在P1口连接八个LED,制作一个简单的跑马灯
(2)数码管显示为静态显示,用两片164外扩(由于i/o较少)protuse仿真连接图如下(数码管为共阳极)
(3)、LCD1602为液晶显示带有字库,可以方便的显示数字、字符、一些特殊符号,故本实验板用1602做一个菜单显示和一个时钟系统,从中熟悉和理解1602的使用,由于1602显示速度较慢故采用数据从P0口并行输入,仿真连接图如下所示
(4)、按键2*8扫描用164扩展,硬件连接如图
二、原理图
1、硬件连接图(由于连线复杂故大多采用标号连接)
1、PCB图
2、软件流程图
(1)、跑马灯(八个LED+四个直扩按键)
(2)、键值显示0~16(数码管+2*8扫描)
(3)、时钟系统(1602+四个直扩按键)
(4)、红外遥控(模拟四个直扩按键)
(5)、菜单显示(1602+三个个直扩)
三、元件列表
名称规格数量备注
89C51 1
LCD1602 1
数码管 2 共阳
74HC164 3
晶振12MHZ 1
按键开关21
电源开关 1
发光二极管 2.2V/1MA 8 白色蓝光电阻若干
电位器1K 1
电容若干。
51单片机之LCD1602液晶显示与4×4矩阵键盘
51单片机之LCD1602液晶显示与4×4矩阵键盘一、要求:液晶显示器第一行显示“Hello World!”;第二行显示键值和按键次数,且按键时间大于1.5秒时,识别为2次按键。
单片机型号:STC--12C5A16AD二、程序代码:#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intunsigned char code dis[]={"Hello World!"};unsigned char code dis1[]={"KEY:"};unsigned char code dis2[]={"TIME:"};ucharkey_val[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G'};uchar code key_code[]={0x77,0x7B,0x7D,0x7E,0xB7,0xBB,0xBD,0xBE,0xD7,0x DB,0xDD,0xDE,0xE7,0xEB,0xED,0xEE};uchar key,x,count;uint time=0;sbit U3_DS=P1^5;sbit U3_STCP=P1^4;sbit U3_SHCP=P1^3;sbit U4_DS=P1^2;sbit U4_STCP=P1^1;sbit U4_SHCP=P1^0;void delay(unsigned int n);//74HC595void U3_595(unsigned char num){unsigned char count1;for (count1=0;count1<=7;count1++){if ((num&0x80)==0x80)//最高位为1,则向SDATA_595发送1 {U3_DS=1;}else{U3_DS=0;}U3_SHCP=0;U3_SHCP=1;num<<=1;//左移}U3_STCP=0;U3_STCP=1;}void U4_595(unsigned char num)//发送指令到RS,RW,E(4,5,6位){unsigned char count2;for (count2=0;count2<=7;count2++){if((num&0x80)==0x80){U4_DS=1;}else{U4_DS=0;}U4_SHCP=0;U4_SHCP=1;num<<=1;}U4_STCP=0;U4_STCP=1;}//LCD延时子程序 n=1时延时1ms void delay(unsigned int n){unsigned int i;for(;n>0;n--)for(i=0;i<255;i++)_nop_();}//写指令到LCDvoid wcmd(unsigned char cmd) {U4_595(0x00);U3_595(cmd);U4_595(0x40);U4_595(0x00);}//写要显示的数据到LCDvoid wdat(unsigned char dat) {U4_595(0x10);U3_595(dat);U4_595(0x50);U4_595(0x10);}//初始化LCDvoid init(){wcmd(0x38);//设置8位总线双行显示,5*7点阵delay(20);wcmd(0x0C);//开显示,开光标,不闪烁delay(20);wcmd(0x06);//读写字符时地址加1delay(20);wcmd(0x01);//清屏delay(20);wcmd(0x80+2);for(x=0;x<12;x++) //第一行显示hello world! wdat(dis[x]);delay(20);wcmd(0xC2);for(x=0;x<4;x++)//第二行显示按键和次数wdat(dis1[x]);wcmd(0xC8);for(x=0;x<5;x++)wdat(dis2[x]);TMOD=0x01;//中断设置TH0=0x3C;//定时初值设置TL0=0xB0;EA=1;//开中断ET0=1;//定时器0中断允许}//键盘扫描子程序uchar keyscan(void){unsigned char hang,lie,keycode;char i;P0=0xf0;hang=P0;if((hang&0xf0)!=0xf0) //有键按下?{delay(50); //去抖动hang=P0;if((hang&0xf0)!=0xf0) //有键按下{P0=0x0f;lie=P0;keycode=hang|lie; //获得键码for(i=15;i>=0;i--){if(keycode==key_code[i]) //查找键码{key=i;return(key);}}}}else{P0=0xff; //按键弹起则关闭定时器TR0=0;count=0;return (16);}}void keydown() //判断按键按下和显示程序{P0=0xf0;if((P0&0xf0)!=0xf0){TR0=1; //开启定时器while(P0!=0xf0)keyscan(); //获得键码if(count<30){time++;count=0;}else //超过1.5秒计数2次{time+=2;count=0;}wcmd(0xC6); //设置键值显示位置wdat(key_val[16-key]);wcmd(0xCD); //设置次数显示位置if(time<10)wdat(0x30+time);if(time>9&&time<100){wdat(0x30+time/10);wdat(0x30+time%10);}if(time>99&&time<1000){wdat(0x30+time/100);wdat(0x30+time/10-(time/100)*10); wdat(0x30+time%10);}}}//中断函数void timer() interrupt 1{TH0=0x3C;TL0=0xB0;count++;}void main(void){init();for(;;){keydown();}}。
基于AT89C51单片机键盘控制和LCD显示
(R\S)接P1.0。
系统硬件设计框图如图1
AT89S52单片机
4× 4非 编码行 列式矩 阵
图1
1 AT89S52是一种带4kB闪烁可编程课擦除只读存储器的低电压、高性能CMOS型8位微
处理器,俗称单片机。它是一个低功耗、高性能的8位CMo微控制器。由片内可反复
(一)硬件电路组成及工作原理
该系统采用AT89S52单片机为核心芯片的电路实现,主要由AT89S52芯片、时钟 电路、复位电路、4 × 4行列式键盘电路以及16 × 2字符的LCD1602电路。
4× 4非编码矩阵行线分别接P3.0〜P3.3、列线接单片机的P3.4〜P3.7。LCD显示
接口电路的传送命令和数据的高8位双向并行总线分别接于单片机的输入输出接口
机的外部晶振电路如图3
键盘电路的设计原理
首先行列式键盘中的键实际上就是一个机械开关,该开关位于行线和列线的交点处,通
过按键加以连接。当按下某个键时,该交点的行线和列线接通,相应行线或列线上的的
电平发生变化,从而可以确定被按下的功能键。4行× 4列的行列式键盘如图2.
→ m c-4
CO
⅛⅛
'图5
其次运用线翻转法判断有无键按下:
基于
摘要:提出一种基于单片机AT89S52的键盘输入和液晶显示系统的原理、器件、电路和
编程设计。输入和显示部分是单片机的外围电路,同时也是人机交流的重要接口。从C51
程序上实现键盘的消抖、按键识别、按键内容的液晶显示以及按键功能的液晶显示。
关键词:AT89S524×4行列式键盘 接口电路LCD显示 计算器
擦拭的FLASH只读程序存储器(ROM、片外程序存储器内部硬件资源,POP3 4 × 8 32
用C51实现对LCD显示屏M12864—7A7的显示驱动
一
6
7 8 9
E
DO B DI B D2 B
HH . L
HL / aL / HL /
片使 能信 号
数据位 0 数据位 l 数据位 2
1 0 M 6- A L D液 晶显示屏介绍 18 4 7 7C 2
1 1 1 2 1 3
D3 B
D4 B D5 B D6 B
HL /
HL / HL / HL /
数据位 3
数据位 4 数据位 5 数据位 6
、
显示角度 :6点钟直视 ;
SN正 视 反射 模 式 ; T 显 示颜 色 :黄 绿 底 兰 字 ;
点 阵 : 18点 X 4点 ; 2 6
1 4
C2C3 S , S
读写使 能 在 E下降沿 , 数据被锁存
E 输入 信 号 ( )入 K O 0 : 在 E 写 S18 高电平期 间, 数据被读出
l 互 7基量
一 :
招 亚 塑 j c i
I 9 坠连 . —
2坠 c 0 )
M 6 - A 18 4 7 7管脚 图 2 接 口引脚
中囹分类号 :T 7 +9 N83 . 3
文献标 识码 : A
文章编号 :1 0 — 5 9 ( 0 0 0 — 0 6 0 07 99 2 1 ) 3 09— 2
LCD s a t C51t e lz hed s l y drv rM 1 8 4l A7 dipl ywih o r a iet ip a i e 2 6 -7
1
2
VS s
V 曲
O V
5O .V
接地 G D N
电源 电压
基于51单片机的液晶显示电子琴设计
基于51单片机的液晶显示电子琴设计摘要单片机是一种集成电路芯片,是把中央处理器CPU、随机存储器RAM、只读存储器ROM、I/O接口、中断系统和定时器/计数器等集成到一块硅片上构成一个小而完善的微型计算机系统。
单片机具有体积小、功耗低、速度快、控制能力强、扩展灵活和使用方便等优点,已渗透到我们生活的各个领域,广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制的领域。
音乐现在也成了人们生活的一部分,生活的压力,学习的压力,工作的压力,一切的不顺利可以在音乐声中放松下来,让人们心情舒畅,听着音乐放松心情,让我们提高生活质量。
本次课程设计是基于51单片机的简易电子琴系统设计。
电子琴是现代电子科技与音乐结合的产物,是一种键盘乐器。
本系统以STC89C52为主芯片,4*4矩阵键盘、1602液晶显示屏、扬声器等电路组成,完成显示输入信息、播放相应音符等基本功能。
关键词:STC89C52;LCD1602;电子琴系统Design Of Liquid Crystal Display Keyboard Based On51Single-chip MicrocomputerABSTRACTMCU is an integrated circuit chip,is the CPU,RAM,ROM,I/O interface, interrupt system and timer/counter,etc.integrated into a silicon chip to form a small and perfect micro-computer system.SCM has a small size,low power consumption,speed,control,strong,flexible and easy to expand and other advantages,has infiltrated all areas of our lives,widely used in instrumen -tation,household appliances,medical equipment,aerospace,special equipment of the intelligent management and process control areas.Music is now also a part of people's lives,the pressure of life,the pressure of learning,work pressure,everything is not smooth can relax in the music,let people feel comfortable,listening to music relax,let us improve the quality of life.This course design is based on the 51 single-chip simple keyboard system design.Keyboard is a combination of modern electronic technology and music products,is a keyboard instrument.This system is mainly composed of STC89C52 chip, 4*4 matrix keyboard,1602 LCD screen,speaker and other circuits to complete the display input information,play the corresponding notes and other basic functions.Keyword: STC89C52, LCD1602, keyboard system目录第一章引言 ........................................................................................................... - 1 -1.1 课题设计目的及其意义 ......................................................................... - 1 -1.2 课题设计的任务与主要内容 ................................................................. - 2 - 第二章系统总体方案设计.................................................................................. - 3 -2.1 系统设计要求 ......................................................................................... - 3 -2.2 系统电路框图 ......................................................................................... - 3 - 第三章硬件设计.................................................................................................. - 5 -3.1 STC89C52芯片 ....................................................................................... - 5 -3.2 1602LCD .................................................................................................. - 6 -3.3 矩阵键盘 ................................................................................................. - 7 -3.4 振荡电路 ................................................................................................. - 8 -3.5 复位电路 ................................................................................................. - 9 -3.6 扬声器模块 ........................................................................................... - 10 - 第四章软件设计与调试.................................................................................... - 11 -4.1 使用AltiumDesigner绘制电路图........................................................ - 11 -4.2 程序调试 ............................................................................................... - 11 - 第五章总结与致谢............................................................................................ - 13 -5.1 总结 ....................................................................................................... - 13 -5.2 致谢 ....................................................................................................... - 14 - 参考文献................................................................................................................ - 15 - 附录........................................................................................................................ - 17 - 附录A 实物图............................................................................................. - 17 - 附录B 程序代码......................................................................................... - 18 -第一章引言1.1 课题设计目的及其意义单片机(单片微型计算机)是大规模集成电路技术发展的产物,具有高性能、高速度、体积小、价格低廉、稳定可靠等特点。
单片机原理及接口技术(C51编程)单片机的开关检测、键盘输入 与显示的接口设计
5.2.1 开关检测案例1
图5-3 开关、LED发光二极管与P1口的连接
5.2.1 开关检测案例1
参考程序如下: #include <reg51.h> #define uchar unsigned char void delay( ) {
uchar i,j; for(i=0; i<255; i++) for(j=0; j<255; j++); }
5.1.2 I/O端口的编程举例
03 用循环左、右移位函数实现
OPTION
使用C51提供的库函数,即循环左移n位函数和循环右
移n位函数,控制发光二极管点亮。参考程序:
#include <reg51.h> #include <intrins.h> 函数的头文件 #define uchar unsigned char void delay( ) {
5.1.2 I/O端口的编程举例
#include <reg51.h> #define uchar unsigned char uchar tab[ ]={ 0xfe , 0xfd , 0xfb , 0xf7 , 0xef , 0xdf , 0xbf , 0x7f , 0x7f , 0xbf , 0xdf , 0xef , 0xf7 , 0xfb , 0xfd , 0xfe }; /*前8个数据为左移点亮 数据,后8个为右移点亮数据*/ void delay( ) {
// P1口为输入 // 读入P1口的状态,送入state // 屏蔽P1口的高6位
5.2.2 开关检测案例2
switch (state) {
// 判P1口低2位开关状态
基于C51单片机4按键4花样流水灯4种LCD显示的设计
按下K1,LCD显示一种内容同时显示一种花样流水灯,按下K2, K3,K4也有不同的花样和内容。 代码如下: /**************************************************/ #include <reg52.h> #include <intrins.h> #define uchar unsigned char #define uint unsigned int #define out P0 #define LED P3 uchar i,flag1,flag2,flag3,flag4; /*****定义端口******/ sbit rs=P2^0; sbit rw=P2^1; sbit e=P2^2; sbit k1=P2^4; sbit k2=P2^5; sbit k3=P2^6; sbit k4=P2^7; //////////子函数/////////////// void check_busy(void); void write_command(uchar com); void write_data(uchar dat); void LCD_initial(void); void string(uchar ad ,uchar *s); void lcd_test(void); void delay(uint); /************************流水灯花样设计********************/ uchar table1[]= {0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};/** 从右到左点亮再灭之**/ uchar table2[]={0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff};/****两头分开 点亮再靠拢熄灭****/ uchar table3[]= {0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0x9f,0xcf,0xe7,0xf3,0xf9};/****两灯 左右循环****/ uchar table4[]=
基于C51单片机智能车LCD显示系统控....
摘要本课题以单片机为基础,以C语言为编程语言,以STC12C5608AD单片机芯片为核心。
本智能车显示系统分为手持端和服务端,手持端负责解析用户的操作,发送信息到服务端,并用LCD1602以友好的界面显示,显示内容涉及时间,当前车速,当前车子方向及当前温度等。
服务端负责响应手持端的消息,执行指定操作,如控制车子方向,速度等。
本设计对智能车进行仿真,对其速度,方向等进行模拟,然后进行本次设计的研制。
关键词STC12C5608AD;智能车;液晶显示ABSTRACT This topic to micro-based programming language C language to STC12C5608AD micro chip as the core. The smart car system is divided into the operation of the handheld client and server, the handheld terminal is responsible for parsing user to send a message to the server, and use Lcd1602 friendly interface, the display with respect to time, the current speed, the current direction of the car and the current temperature. . The server is responsible for responding to the handheld end of the message, perform the specified operation, such as control car direction, speed. The design of intelligent vehicle simulation, simulation of its speed, direction, and then proceed to the development of the design.KEY WORDS STC12C5608AD; Smart car;LCD目录1前言 (1)2系统总体设计 (3)2.1 设计思路 (3)2.2 主控芯片的选取 (4)2.2.1 单片机的特点 (4)3硬件电路设计 (7)3.1结构框图 (7)3.2服务端电路 (8)3.2.1驱动电路 (8)3.2.2传输电路 (9)3.2.3基础外围电路 (9)3.2.4速度模块 (11)3.3手持端模块 (12)3.3.1时钟模块 (12)3.3.2温度模块 (14)3.3.3显示模块 (15)3.3.4按键控制模块 (15)4软件系统设计方案 (16)4.1 手持端系统工作流程图: (16)4.2手持端系统代码分析: (17)4.3 服务端系统工作流程图: (22)4.3.1服务端系统代码分析: (23)5系统测试分析及改进 (26)5.1手持端测试分析: (26)5.1.1时钟模块测试: (26)5.1.2 Lcd1602显示模块测试: (26)5.1.3 NRF24L01无线传输模块测试: (26)5.1.4 DS18B20温度模块测试: (27)5.1.5按键扫描模块测试: (27)5.2 服务端测试分析: (27)5.2.1 PWM控速模块测试: (27)5.2.3 NRF24L01无线传输模块测试: (27)5.2.2 L298N电机驱动模块测试: (28)6总结 (29)参考文献 (30)致谢 (31)1前言智能作为现代的新发明,是以后的发展方向,他可以按照预先设定的模式在一个环境里自动的运作,不需要人为的管理,可应用于科学勘探等等的用途。
基于C51单片机的智能计算器、矩阵键盘、lcd1602
基于C51单⽚机的智能计算器、矩阵键盘、lcd1602⽬录1绪论 (1)1.1选题背景 (1)1.2起源与发展 (1)1.3研究的⽬的和意义 (2)2项⽬总体设计框架 (2)2.1芯⽚STC89C52 (2)2.2采⽤矩阵式键盘作为输⼊模块 (2)2.3显⽰模块 (3)2.4硬件资源分配 (3)3计算器硬件设计 (4)3.1系统组成及硬件框图 (4)3.2元器件简介 (4)3.2.1 STC89C52的特点 (4)3.2.2 LCD1602 液晶显⽰屏 (5)4系统电路设计 (6)4.1键盘电路设计 (7)4.2显⽰电路设计 (8)4.3其他电路部分 (8)4.3.1 蜂鸣器模块 (8)4.3.2 电源模块 (9)4.3.3 单⽚机最⼩系统 (9)5计算器软件设计 (10)5.1整体设计结构 (10)5.2液晶屏读写函数 (10)5.2.1 初始化函数 (10)5.2.2 写命令函数 (11)5.2.3 写数据函数 (11)5.3接收矩阵键盘输⼊函数 (12)5.4调试和运⾏程序 (13)5.4.1 Proteus仿真运⾏程序 (13)5.4.2 在实验箱上运⾏程序 (13)6总结 (14)基于51单⽚机的简易计算器摘要:近⼏年单⽚机技术的发展很快,其中,电⼦产品的更新速度迅猛。
计算器是⽇常⽣活中⽐较常见的电⼦产品之⼀。
如何才能使计算器技术更加的成熟,充分利⽤已有的硬件和软件条件,设计出更出⾊的计算器。
本设计是以STC89C52单⽚机为核⼼的计算器模拟系统设计,输⼊采⽤4*4矩阵键盘,可以进⾏加、减、乘、除带符号数字运算(六位整数或两位⼩数点点),并在液晶显⽰屏LCD1602上静态显⽰操作过程及结果。
对字符液晶显⽰模块的⼯作原理,如初始化、清屏、显⽰、调⽤及外特性有较清楚的认识,并会使⽤LCD(液晶显⽰模块)实现计算结果的显⽰;掌握液晶显⽰模块的驱动和编程,设计LCD和单⽚机的接⼝电路,以及利⽤单⽚机对液晶显⽰模块的驱动和操作;在充分分析内部逻辑的概念,进⾏软件和调试,学会使⽤,并能够以其为平台设计出具有四则运算能⼒简易计算器的硬件电路和软件程序。
基于单片机的液晶显示和键盘实现
——当要实现多电压输出时,既可以直接选用具备相应功能的电源稳压变换器件,也可以充分利用电路中已有器件的辅助电压输出,达到简化外围电路的目的。
随着半导体工艺技术的发展及系统设计水平的提高,单片机还会不断产生新的变化和进步,最终人们可能发现:单片机与微机系统之间的距离越来越小,甚至难以辨认。单片机的发展日新月异,鉴于本人水平有限,加之时间仓促,因此此次的毕业设计论文缺点在所难免,敬请各位老师同学批评指正。、
本次的毕业设计是基于单片机的知识作便携式设备的液晶显示与键盘输入,便携式设备有着广泛的用途,如远程监控,无损检测等,目前大部分的数字便携式设备是基于单片机系统开发的,在单片机系统中,除了需要特定的功能算法和传感器等器件外,还需要输入,输出装置,在便携式仪表中,输入装置一般是键盘,而输出装置一般是液晶显示模块。主要完成以下内容实现按键内容的液晶显示,实现按键功能的液晶显示[14],实现便携式设备的结果输出。
关键词:单片机;便携式设备;液晶显示;键盘
LCD and keyboard development based on single chip
Abstract
For the development of microelectronics technology and the demand of the industrial measurements, portable instruments have a bright future. Portable instruments are small in size, but flexible in use. Its design is quite different from other equipment, according their special requirements of single voltage input and multi voltage output. By analyzing the typical hardware structure and the different requirements of different modules, a general method is given to solve such problems.
键盘显示的C51编程
第6章MCS-51系列单片机键盘/显示的C51编程 (2)6.1 七段数码显示器的C51编程 (2)6.1.1 7段LED显示器基础知识 (2)6.1.2 七段数码静态显示的C51编程 (3)6.1.3 七段数码动态显示的C51编程 (6)6.1.4 串行口控制的LED显示的C51编程 (10)6.2 键盘接口的C51编程 (11)6.2.1 键盘的基础知识 (11)6.2.2 独立式键盘接口的C51编程 (12)6.2.3 矩阵键盘的C51编程 (14)6.3 点阵LED显示器接口的C51编程 (20)6.3.1 点阵LED显示器基础知识 (20)6.3.2 一个5×7点阵字符显示的C51编程 (21)6.3.3 一个8×8点阵字符串显示的C51编程 (22)6.3.4 两个8×8点阵字符串显示的C51编程 (24)6.4 液晶显示器的C51编程 (26)6.4.1 LCD基础知识 (26)6.4.2 字符型LCD1602应用的C51编程 (27)本章小结 (36)习题 (37)第6章MCS-51系列单片机键盘/显示的C51编程在单片机应用系统中,除了完成基本的功能外,另一个最重要的任务是设计优秀的人机交互接口。
人机交互接口用来实现控制命令及数据的输入,并且将系统运行信息反映给操作者。
系统运行信息的反映是通过各种显示器来完成的,主要包括八段数码显示、液晶显示、点阵显示等;控制命令及数据的输入时通过键盘来实现的。
本章主要介绍键盘及显示的C51编程技术。
6.1 七段数码显示器的C51编程在单片机应用系统中,七段LED显示器的应用非常广泛。
6.1.1 七段LED显示器基础知识1.结构与原理通常的七段LED显示器中有8个发光二极管,管脚如图6-1(a)所示。
a、b、c、d、e、f、g、dp称为LED的段,公共端com称为LED的位。
从管脚a~dp输入不同的8位二进制数,可显示不同的数字或字符。
基于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键盘控制动态显示器摘要随着现代化信息,技术的飞速发展和传统工业改造的逐步实现,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益的更新。
基于C51单片机对液晶显示的实验设计
}
for(num=0;num《16;num++)
{
write_com(0x18);//整个屏幕左移
delay(20);
}
while(1);//停止
}
//在液晶屏上显示一串字符
#include
#define uchar unsigned char
#define uint unsigned int
uchar code table[]=“I LIKE MCU!”;
uchar code table1[]=“TAO XIAO SHOU”;
//端口设置
sbit lcden=P3_;
lcden=1;//启动使能,向存储器写
delay(5);
lcden=0;//写完关闭使能
}
//写数据
void write_data(uchar date)
{
lcdrs=1;//写数据
P0=date;
delay(5);
lcden=1;//启动使能
delay(5);
lcden=0;
}
//初始化子程序
void init()
sbit lcdrs=P3_;
uchar num;
//延时函数
void delay(uint z)
{
uint x,y;
for(x=z;x》0;x--)
for(y=110;y》0;y--);
}
//写命令
void write_com(uchar com){lcdrFra bibliotek=0;//写命令
P0=com;
delay(5);
write_com(0x0e);//显示开关与光标设置
基于51单片机的12864LCD显示驱动
基于51单片机的12864LCD显示驱动摘要:利用51单片机对12864LCD显示屏进行驱动,并令其显示动态及静态图像。
可使用4位/8位并行、2线或3线串行多种接口方式,拥有多种字库的点阵图形液晶显示模块;接口方式灵活,操作指令简单、方便,可构成全中文人机交互图形界面。
可以显示汉字,也可完成图形显示;电压、功耗较低;硬件电路结构与显示程序都要简洁,同时价格也略低于相同点阵的图形液晶模块。
关键词:51单片机12864LCD 显示屏动态静态图像引言带中文字库的TS128X64(图1)具有4位/8位并行、2线或3线串行多种接口方式,引脚功能见图2。
其内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集。
图1 TS12864液晶实物图该模块接口方式灵活和操作指令简单、方便,可构成全中文人机交互图形界面。
可以显示8×4行16×16点阵的汉字。
也可完成图形显示,有低电压低功耗的特点。
由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构还是显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。
本设计讲采用STC89C52对TS128X64进行驱动,设计并制作LCD驱动电路,使其可通过按键切换LCD的显示内容,并且实现对数字,汉字,英文以及图片的显示,滚屏,以及动画功能。
1.硬件设备STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash存储器。
STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。
在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
具有以下标准功能:8k字节Flash,512字节RAM,32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
unsigned char hi=0;uchar temp_pin;//字母显示
if(x==0) send_command(0x80+y);
else if(x==1) send_command(0x90+y);
else if(x==2) send_command(0x88+y);
else if(x==3) send_command(0x98+y);
count++;
if(count>=200)//秒计时,定时器定时5ms,计200次为一秒
{
count=0;
Sec++; flag=1;
if(Sec>=60)//分计时
{
Sec=0;
Min++;
if(Min>=60)//时计时
{
Min=0; Hour++;
if(Hour>=24)Hour=0;
}
}
}
{
P0=0xfe;
temp_pin=(P0&0xf0);
switch (temp_pin)//对按下的键进行判断
{
case 0xe0:tab[0]='F';break;
case 0xd0:tab[0]='E';break;
case 0xb0:tab[0]='D';break;
case 0x70:tab[0]='C';break;
default:break;
}
P0=0xf7;
temp_pin=(P0&0xf0);
switch (temp_pin)
{
case 0xe0:tab[0]='3';break;
case 0xd0:tab[0]='2';break;
case 0xb0:tab[0]='1';break;
case 0x70:tab[0]='0';break;
void delay(unsigned int j)
{
unsigned char i;
do{
for(i=0;i<100;i++);
}while(j--);
}
void send_command(unsigned char command_data) //发送命令
{
unsigned char i;
unsigned char i_data,temp_data1,temp_data2;
i_data&=0xf0;
for(i=0;i<8;i++)
{
SID=(bit)(i_data&0x80);
SCLK=0;
SCLK=1;
i_data=i_data<<1;
}
CS=0;
}
void InitLCD() //液晶初始化
{
send_command(0x30); //功能设置:一次送8位数据,基本指令集
temp_data2<<=4;
//i_data=temp_data1|temp_data2;
i_data=temp_data2;
i_data&=0xf0;
for(i=0;i<8;i++)
{
SID=(bit)(i_data&0x80);
SCLK=0;
SCLK=1;
i_data=i_data<<1;
}
CS=0;
for(i=0;i<8;i++)
{
SID=(bit)(i_data&0x80);
SCLK=0;
SCLK=1;
i_data=i_data<<1;
}
i_data=command_data;//送低
//temp_data1=i_data&0xf0;
temp_data2=i_data&0x0f;
//temp_data1>>=4;
time[4]=Min%10+0x30;
time[6]=Sec/10+0x30;
time[7]=Sec%10+0x30;
DispZimu(3,2,8,time);
}
}
}
void timer0() interrupt 1
{
static unsigned char count=0 ;
TH0=THCO;
TL0=TLCO;
default:break;
}
P0=0xfd;
temp_pin=(P0&0xf0);
switch (temp_pin)
{
case 0xe0:tab[0]='B';break;
case 0xd0:tab[0]='A';break;
case 0xb0:tab[0]='9';break;
case 0x70:tab[0]='8';break;
基于C51单片机的键盘及LCD显示
一、实验目的
1.掌握矩阵式键盘的数字键和功能键的编程方法。
2.掌握LCD的接口技术和编程方法。
3.掌握仪器监控程序设计和调试方法。
二、预习与参考
1.结合ST7920控制器系列中文图形液晶模块有关资料手册,详细了解ST7920接口设计技术。
2. 参考资料
1)实验板说明书
2.设计4*4非编码键盘及LCD的控制软件,画出流程图,编写控制程序。
五、实验仪器设备和材料清单
单片机实验板、连接导线、ST7920图形液晶模块、PC机;
Keil c51软件
六、实验设计及实施的指导
1.实验课前布置实验任务,提出实验要求,预习相关资料,完成硬件草图设计和软件流程图备查。
2.经指导教师检查,预习达到要求者进入实验室实验。
send_command(0x02); //DDRAM地址归位
send_command(0x80); //把显示地址设为0X80,即为第一行的首位
}
void DispHanzi(unsigned char x,unsigned char y,unsigned char how,unsigned char *stri)
DispZimu(3,2,8,time);
while(1)
{key();
DispZimu(1,4,1,tab);
if(flag==1)
{
flag=0;
time[0]=Hour/10+0x30;//数字转为ASCCII值进行显示
time[1]=Hour%10+0x30;
time[3]=Min/10+0x30;
default:break;
}
}
}
}
main()
{unsigned char time[8]={"00:00:00"};
TMOD=0x1ቤተ መጻሕፍቲ ባይዱ;
TH0=THCO;
TL0=TLCO;
TR0=1;
ET0=1;
EA=1;
InitLCD();
B_light=0;
DispHanzi(0,1,6,"重庆");
DispHanzi(2,2,4,"北京时间");
1.实验报告格式:
一.实验名称
二.实验目的
三.实验内容
四.设计思想
五.硬件设计
六.程序代码
七.参考文献
2.硬件电路原理图用PROTEL等软件画出。
附录:程序源代码:
附录1
#include "reg51.h"
#include "intrins.h"
#define THCO 0xee
#define TLCO 0x0
}
i_data=command_data;
//temp_data1=i_data&0xf0;
temp_data2=i_data&0x0f;
//temp_data1>>=4;
temp_data2<<=4;
//i_data=temp_data1|temp_data2;
i_data= temp_data2;
i_data=0xf8;//操作命令,控制指令
delay(10);
CS=1;
SCLK=0;
for(i=0;i<8;i++)
{
SID=(bit)(i_data&0x80);
SCLK=0;
SCLK=1;
i_data=i_data<<1;
}
i_data=command_data;
i_data&=0xf0;//送高
default:break;
}
P0=0xfb;
temp_pin=(P0&0xf0);
switch (temp_pin)
{
case 0xe0:tab[0]='7';break;
case 0xd0:tab[0]='6';break;
case 0xb0:tab[0]='5';break;
case 0x70:tab[0]='4';break;
}
2)ST7920控制器系列中文图形液晶模块资料手册
三、 设计指标
利用实验板上提供的键盘电路,LCD显示电路,设计一人机界面,能实现以下功能: