06 12864LCD显示计算器键盘按键实验

合集下载

实验(二十一)PS2键盘控制LCD12864显示

实验(二十一)PS2键盘控制LCD12864显示

华南理工大学无线电爱好者协会F D R 工作室实验二十一:PS2键盘控制LCD12864实验一. 实验目的:1. 认识ps2键盘协议2. 掌握12864液晶模块的使用方法。

3. 学会利用12864实现小型可视化图形界面 二. 实验原理:12864与单片机连接原理图12864跟ps2键盘的底层通讯较为复杂,我们在文件夹里提供了相应的资料给读者。

在此不再累述。

提醒读者一下:12864 驱动电流加大,使用时请先调lcd 座旁的蓝色可调电阻,使lcd 上能显示一个一个的小方格。

然后才能正常显示。

12864有并行跟串行两种通讯方式。

当psb 脚为高平时是并行,反之为串行。

华南理工大学F D R 工作室华南理工大学无线电爱好者协会F D R 工作室键盘要注意通码(按下键盘时发出)跟断码(松开键盘时发出)之间的联系。

三.硬件链接图:12864连线:如图所示的红线排针连到单片机各IO口,12864的几个控制脚都是连接在P0口上,从右到左依次是RS、RW、E、PSB、NC(我们提供的12864用不到该引脚)、RST,依次连接到P0^0,P0^1,P0^2,P0^3,P0^4,P0^5; 而数据线则直接接到P1口。

键盘连线:键盘的两条控制线在排针P7靠近红外接收头的两根上,最后一根是时钟线sclk,上边一根是数据线dat,将数据线接到单片机P3^2上靠近单片机一侧的排针上,将时钟线接到单片机INT1上。

12864连线图四.实验程序:#include<AT89X52.h>#include"led.h" //该头文件包含数码管显示数字驱动 #include"tg12864p.h"//该头文件包含lcd12864驱动sbit dat =P3^2;//DATA IN华南理工大学F D R 工作室华南理工大学无线电爱好者协会F D R 工作室#define uchar unsigned char // 即 uchar 等同与unsigned char #define uint unsigned int uchar sp2key_scan();/*****************常量声明区******************************************/ uchar code key_table[47]={'0','1','2','3','4','5','6','7','8','9', 'a','b','c','d','e','f','g','h','i','j', 'k','l','m','n','o','p','q','r','s','t', //说明:存放键盘上按键的as2码值 'u','v','w','x','y','z',' ','-','=',']', ';','"',',','.','/','[',' ' //作用:方便日后传值到液晶上 };/****************全局变量声明区************************************/ uchar key=0; //用于存放键盘解码函数的解码结果 uchar key_temp=0; bit BF=0; //接收到通码的标志位uchar key_count=0; //记录键盘传任一个数据时传来时钟脉冲个数 uchar key_buffer[5]={0,0,0,0,0};//接收键盘传来数据的缓冲区uchar key_num=0;//一个按键动作,键盘会发出通码,段吗,这用于记录收到编码个数。

实验三 LCD12864液晶显示

实验三  LCD12864液晶显示

实验三 LCD12864液晶显示参赛序号实验题目LCD12864液晶显示实验成组员左虎博杨颂王志鹏指导教师赵勇报告日期2014年7月16日-2014年7月18日摘要:本设计以超低功耗MSP430单片机为微控制器,以4位/8位并行,2线或3线串行多种接口方式的LCD12864为输出显示器。

通过对MSP430单片机进行编程,在LCD12864上显示8×4行16×16点阵的汉字。

关键字:MSP430 LCD12864目录一.方案论证 (4)液晶显示器的论证与选择 (4)二.LCD12864的工作原理 (4)1.引脚功能说明 (4)LCD12864采用20接口,各引脚接口说明如表3所示: (4)2. 指令说明 (5)三.实验框图和电路图 (7)1. 系统框图 (7)2. 电路原理图 (7)四.实验程序设计 (7)五.系统测试 (11)1. 测试方案 (11)2. 测试结果 (11)3. 测试分析与结论 (12)一.方案论证液晶显示器的论证与选择方案一:采用带中文字库的LCD12864。

LCD12864具有4 位/8 位并行、2 线或3 线串行多种接口方式,可以显示8×4 行16×16 点阵的汉字。

也可完成图形显示。

低电压低功耗是其一显著特点。

方案二:采用LCD1602。

LCD1602显示内容为16X2,即可以显示两行,每行16个字符液晶模块,只能显示字符和数字。

通过论证可知LCD12864显示内容多,功能多,低电压低功耗,因此选用方案一。

二.LCD12864的工作原理1.引脚功能说明LCD12864采用20接口,各引脚接口说明如表1所示:表1 引脚说明表管脚号管脚名称电平管脚功能描述1 VSS 0V 电源地2 VCC 3.0+5V 电源正3 V0 - 对比度(亮度)调整4 RS(CS)H/LRS=“H”,表示DB7——DB0为显示数据RS=“L”,表示DB7——DB0为显示指令数据5 R/W(SID)H/LR/W=“H”,E=“H”,数据被读到DB7——DB0R/W=“L”,E=“H→L”, DB7——DB0的数据被写到IR或DR6 E(SCLK) H/L 使能信号7 DB0 H/L 三态数据线表1 引脚说明表注释1:如在实际应用中仅使用串口通讯模式,可将PSB 接固定低电平,也可以将模块上的J8和“GND”用焊锡短接。

(完整版)12864lcd显示部分试验总结报告

(完整版)12864lcd显示部分试验总结报告

12864lcd显示部分试验总结报告管岱2014.12.19【实验目的】在12864液晶显示屏上能够显示出在4×4小键盘上输入的激励源频率值,如输入“789HZ”、“8MHZ”、“2.3KHZ”,显示出“789H”、“8M”、“2.3K”。

并且要求此部分程序有较好的可移植性,在最后对电阻率值的显示上能够较好的应用。

【实验原理】12864-3A接口说明表:在12864液晶显示原理的基础上,通过在ise上编写vhdl语言,使之能够在fpga学习板上顺利显示数据。

【实验内容】12864的显示原理并不难理解,并且在以前也用汇编语言实现过,所以本次实验的难点不在于显示原理的理解,而在于VHDL语言的编写。

在实验初期,由于对vhdl语言的不熟练,我们“类比”汇编语言的显示程序,编写出如下的程序:发现编译时就出现了问题,出现如“multi-source in unit <*> on signal <*>”的报错。

在仔细调试检查后发现,我们错误的原因在于:在不同的进程中对同一个信号赋值。

例如,在写指令的进程中,将rs信号置‘0’,而在后面写数据的进程中又将rs置‘1’,由于在vhdl中各进程之间是并行的关系,因此这样编写程序会出现在同一时刻对同一个引脚赋高电平和低电平,从而出现矛盾。

虽然在程序实际运行中,写指令进程在系统一上电就会完成,远早于写数据进程,但是在逻辑上这样编写是不符合VHDL语言的规则的。

因此,我们利用状态机的思想,将写指令和写数据的两个进程合二为一。

程序片段如下:利用状态机,将写指令和写数据的各个步骤分为一个一个分立的状态,顺序执行。

这样编写将对同一个引脚信号的变化放在一个进程中,很好的解决了之前存在的问题。

并且受此启发,在写数据的程序段,对百位、十位、个位以及单位的译码程序中,将原本分别对各自数位信号敏感的四个单独进程改成了受一个的时钟上升沿敏感的一个进程,从而较好的保证了程序的时序性和同步性,经实验验证效果良好。

按键显示电路实验报告(3篇)

按键显示电路实验报告(3篇)

第1篇一、实验目的1. 熟悉按键电路的基本原理和设计方法。

2. 掌握按键电路的搭建和调试方法。

3. 了解按键电路在实际应用中的重要性。

4. 提高动手实践能力和电路分析能力。

二、实验原理按键显示电路是一种将按键输入转换为数字信号,并通过显示设备进行显示的电路。

本实验主要涉及以下原理:1. 按键原理:按键通过机械触点实现电路的通断,当按键被按下时,电路接通,产生一个低电平信号;当按键释放时,电路断开,产生一个高电平信号。

2. 译码电路:将按键输入的信号转换为相应的数字信号,以便后续处理。

3. 显示电路:将数字信号转换为可视化的信息,如LED灯、数码管等。

三、实验器材1. 电路板2. 按键3. 电阻4. LED灯5. 数码管6. 电源7. 基本工具四、实验步骤1. 按键电路搭建(1)根据电路原理图,在电路板上焊接按键、电阻、LED灯等元器件。

(2)连接电源,确保电路板供电正常。

2. 译码电路搭建(1)根据电路原理图,在电路板上焊接译码电路所需的元器件。

(2)连接译码电路与按键电路,确保信号传输正常。

3. 显示电路搭建(1)根据电路原理图,在电路板上焊接显示电路所需的元器件。

(2)连接显示电路与译码电路,确保信号传输正常。

4. 电路调试(1)检查电路连接是否正确,确保无短路、断路等问题。

(2)按下按键,观察LED灯或数码管显示是否正常。

(3)根据需要调整电路参数,如电阻阻值、电源电压等,以达到最佳显示效果。

五、实验结果与分析1. 实验结果通过实验,成功搭建了一个按键显示电路,按下按键后,LED灯或数码管能够正确显示数字信号。

2. 结果分析(1)按键电路能够正常工作,实现电路通断。

(2)译码电路能够将按键输入转换为相应的数字信号。

(3)显示电路能够将数字信号转换为可视化的信息。

六、实验总结1. 通过本次实验,掌握了按键电路的基本原理和设计方法。

2. 提高了动手实践能力和电路分析能力。

3. 了解了按键电路在实际应用中的重要性。

06 12864LCD显示计算器键盘按键实验

06 12864LCD显示计算器键盘按键实验

目录1 课程设计概述和要求 (1)1.1 课程设计要求与任务 (2)1.2 课程设计思路 (2)1.3 课程设计需要配置的环境 (3)2 系统设计 (3)2.1 设计框图 (3)2.2 元件解析 (3)2.2.1 LCD12864芯片……………………………………………………………42.2.2 AT89C51芯片 (5)2.2.3 其他部件 (6)2.2.4 电路分析 (7)3 软件设计 (12)3.1 程序流程图 (12)3.2 程序代码 (12)4 系统的仿真与调试 (13)4.1 硬件调试 (13)4.2 软件调试 (14)4.3 软硬件调试 (14)5 总结 (14)附录1:程序代码附录2:12864LCD显示计算器键盘按键实验Proteus仿真图1 课程设计概述和要求1.1 课程设计任务与要求设计任务:利用AT89C51单片机结合12864LCD显示器设计计算器键盘按键。

设计要求1:本设计实现一个12864LCD显示12864LCD显示器设计计算器键盘按键2.利用AT89C51控制整个电路来实现. 显示12864LCD显示器设计计算器键盘按键,系统主要包括硬件和软件两部分。

重点就是各部分硬件的连接设计以及程序的编写。

本章讲述的就是系统硬件的设计,其中包括各模块的器件选择和电路设计。

将计算器按键上的信息传送至AT89C51主芯片之中,利用P2端口使之显示于12864LCD液晶显示屏上。

1.2 课程设计目的思路1、先把与题目有关的芯片资料找到,熟悉一下芯片资料2、把此程序的电路图看懂,了解一下它的实现原理,以及实现的功能。

3、分析一下此程序的各部分的功能,各零件的工作原理。

4、对程序进行调试,分析调试结果,观察并得出结论。

1.3 课程设计需要配置的环境1、一台主机,一台显示器2、Keil uVision3/Keil uVision4 应用程序软件3、ISIS 7 Professional 仿真软件4、老师交给的仿真电路图,及案例5、纸张,以及一些参考资料2 系统设计2.1.设计框图框图设计是为了能够从整体上把握系统的各个大的模块以及各个模块之间的联系。

12864汉字液晶显示--按键电子时钟程序(具有闪烁,移位,加一,减一功能)

12864汉字液晶显示--按键电子时钟程序(具有闪烁,移位,加一,减一功能)

//12864汉字液晶显示--按键电子时钟程序(具有闪烁,移位,加一,减一功能)#include &lt;reg52.h&gt;#include &lt;intrins.h&gt;#define uchar unsigned charvoid lcd_ini();void ascii_change(void);void delay();void wri_add(uchar com);void wri_dat(uchar com1);void shan(void);void disp();void tkey(void);sbit cs=P1^7;sbit sid=P1^6;sbit sclk=P1^5;bit flag=1;uchar dat,count,f=1;//f测试哪个单元为当前闪烁状态uchar data clock[3]={23,45,12};uchar code clockname[10]={&quot;北京时间:&quot;};uchar data num[6];/*******主程序*************/void main(){lcd_ini();count=10;//机器周期为1us,每次定时50ms,此变量用来控制循环次数,在下面赋值为20,共定时1秒TMOD=0x01;TL0=0XB0;TH0=0X3C;EA=1;ET0=1;IT0=1;EX0=1;TR0=1;while(1){back:ascii_change();disp();delay();if(flag==1)goto back;tkey();shan();delay();}}/****lcd初始化*******/void lcd_ini(){wri_add(0x30);delay();wri_add(0x0c);delay();wri_add(0x01);delay();wri_add(0x06);delay();}/********定时程序*************/ void timer1() interrupt 1 using 2 {TL0=0XB0;TH0=0X3C;count--;if(count==0){count=10;clock[2]++;//秒//}elsegoto out;if(clock[2]==60){clock[2]=0;clock[1]++;//分//}if(clock[1]==60){clock[1]=0;clock[0]++;}if(clock[0]==24)//时//clock[0]=0;out:_nop_();}/*******十位个位转换成ASCII码************/ void ascii_change(void){num[5]=clock[2]-(clock[2]/10)*10+0x30;num[4]=clock[2]/10+0x30;num[3]=clock[1]-(clock[1]/10)*10+0x30;num[2]=clock[1]/10+0x30;num[1]=clock[0]-(clock[0]/10)*10+0x30;num[0]=clock[0]/10+0x30;}/********廷时程序*************/void delay(){uchar i,j;for (i=250;i&gt;0;i--)for (j=250;j&gt;0;j--);}/*****Write address*********/void wri_add(uchar com){uchar i,j,k;cs=0;cs=1;dat=0xf8;for(i=1;i&lt;=8;i++){sid=(bit)(dat&amp;0x80);sclk=0;sclk=1;sclk=0;dat=dat&lt;&lt;1;}dat=com;dat=dat&amp;0xf0;for(j=1;j&lt;=8;j++){sid=(bit)(dat&amp;0x80);sclk=0;sclk=1;sclk=0;dat=dat&lt;&lt;1;}dat=com;dat=_cror_(dat,4);// 此为高低四位交换dat=dat&amp;0xf0;for(k=1;k&lt;=8;k++){sid=(bit)(dat&amp;0x80);sclk=0;sclk=1;sclk=0;dat=dat&lt;&lt;1;}}/*********Write data*************/ void wri_dat(uchar com1){uchar i,j,k;cs=0;cs=1;dat=0xfa;for(i=1;i&lt;=8;i++){sid=(bit)(dat&amp;0x80);sclk=0;sclk=1;sclk=0;dat=dat&lt;&lt;1;}dat=com1;dat=dat&amp;0xf0;for(j=1;j&lt;=8;j++){sid=(bit)(dat&amp;0x80);sclk=0;sclk=1;sclk=0;dat=dat&lt;&lt;1;}dat=com1;dat=_cror_(dat,4);// 此为高低四位交换dat=dat&amp;0xf0;for(k=1;k&lt;=8;k++){sid=(bit)(dat&amp;0x80);sclk=0;sclk=1;sclk=0;dat=dat&lt;&lt;1;}}/******display program***********/ void disp(){uchar i,k=0;wri_add(0x80);for (i=1;i&lt;=9;i++)wri_dat(clockname[i-1]);wri_add(0x90);for (i=1;i&lt;=6;i++) {k++;if(k==3||k==5)wri_dat(clockname[8]);//时间之间的冒号。

点阵12864液晶操作

点阵12864液晶操作

点阵LCD12864的显示原理(不带字库)在数字电路中,所有的数据都是以0和1保存的,对LCD控制器进行不同的数据操作,可以得到不同的结果。

对于显示英文操作,由于英文字母种类很少,只需要8位(一字节)即可。

而对于中文,常用却有6000以上,于是我们的D OS前辈想了一个办法,就是将ASCII表的高128个很少用到的数值以两个为一组来表示汉字,即汉字的内码。

而剩下的低128位则留给英文字符使用,即英文的内码。

那么,得到了汉字的内码后,还仅是一组数字,那又如何在屏幕上去显示呢?这就涉及到文字的字模,字模虽然也是一组数字,但它的意义却与数字的意义有了根本的变化,它是用数字的各位信息来记载英文或汉字的形状,如英文的'A'在字模的记载方式如图1所示:图1 “A”字模图而中文的“你”在字模中的记载却如图2所示:图2 “你”字模图12864点阵型LCD简介12864是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及128×64全点阵液晶显示器组成。

可完成图形显示,也可以显示8×4个(16×16点阵)汉字。

管脚号管脚名称LEVER 管脚功能描述1 VSS 0 电源地2 VDD +5.0V 电源电压3 V0 - 液晶显示器驱动电压4 D/I(RS) H/L D/I=“H”,表示DB7∽DB0为显示数据D/I=“L”,表示DB7∽DB0为显示指令数据5 R/W H/L R/W=“H”,E=“H”数据被读到DB7∽DB0R/W=“L”,E=“H→L”数据被写到IR或DR6 E H/L R/W=“L”,E信号下降沿锁存DB7∽DB0R/W=“H”,E=“H”DDRAM数据读到DB7∽DB07 DB0 H/L 数据线8 DB1 H/L 数据线9 DB2 H/L 数据线10 DB3 H/L 数据线11 DB4 H/L 数据线12 DB5 H/L 数据线13 DB6 H/L 数据线14 DB7 H/L 数据线15 CS1 H/L H:选择芯片(右半屏)信号16 CS2 H/L H:选择芯片(左半屏)信号17 RET H/L 复位信号,低电平复位18 VOUT -10V LCD驱动负电压19 LED+ - LED背光板电源20 LED- - LED背光板电源表1:12864LCD的引脚说明在使用12864LCD前先必须了解以下功能器件才能进行编程。

12864+键盘按键控制

12864+键盘按键控制

LCD12864_data=dat; DelayMs(5); LCD12864_E=1; DelayMs(5); LCD12864_E=0; } //------设定显示位置-----------void set_LCD12864_pos(uchar x,uchar y) { uchar pos; if(x==0) x=0x80; if(x==1) x=0x90; if(x==2) x=0x88; if(x==3) x=0x98; pos=x+y; write_12864cmd(pos); //地址 } //------------写字符串---------------void write_12864str(uchar *s) { while(*s) {
#endif
Lcd12864.h #ifndef __LCD12864_H__ #define __LCD12864_H__ #include"keyboard.h" #define uchar unsigned char #define uint unsigned int //-----端口定义-----------#define LCD12864_data P0 sbit LCD12864_RS =P2^4; sbit LCD12864_RW =P2^5; sbit LCD12864_E = P2^6; sbit LCD12864_PSB=P2^1; sbit LCD12864_RES=P2^3; //------------------------//extern void delay_1ms(uint x); extern void set_LCD12864_pos(uchar x,uchar y);//x 确定行,y 确定起始位置 extern void LCD12864_init(); extern void write_12864cmd(uchar cmd);

按键检测12864LCD显示汇编代码

按键检测12864LCD显示汇编代码

r16 .set 280hr17 .set 282hr18 .set 284hr21 .set 286hr22 .set 288hr23 .set 28ahr24 .set 28chr25 .set 28ehr26 .set 290hr28 .set 27ehkeydata .set 292hrowdata .set 294hscandata .set 296hkeybuffer .set 298hdp_user .set 5hkeydata1 .set 29ahlcdtab .set 29chlcddata .set 29ehpbdatdir .set 709ahdp_pf2 .set 0e1hpadatdir .set 7098hpcdatdir .set 709chmcra .set 7090hmcrb .set 7092hmcrc .set 7094hpedatdir .set 7095hpfdatdir .set 7096h.datatab00:;-- 文字: E --;-- 宋体24; 此字体下对应的点阵为:宽x高=16x32 --.word000H,000H,007H,006H,004H,004H,004H,00 4H,004H,004H,004H,007H,007H,004H,004H ,000H.word000H,0C0H,080H,000H,01FH,007H,002H,00 2H,002H,002H,002H,0FFH,0FFH,000H,000H ,000H.word000H,006H,001H,000H,0C0H,000H,000H,00 0H,000H,000H,000H,0FFH,0FFH,000H,000H ,000H .word000H,000H,0C0H,0C0H,040H,040H,040H,04 0H,040H,040H,040H,0C0H,0C0H,040H,040H ,000Htab01:;-- 文字: 0 --;-- 宋体24; 此字体下对应的点阵为:宽x高=16x32 --.word000H,000H,000H,001H,003H,006H,004H,00 4H,004H,006H,003H,001H,000H,000H,000H ,000H.word000H,01FH,0FFH,0C0H,000H,000H,000H,00 0H,000H,000H,000H,0E0H,0FFH,01FH,000H ,000H.word000H,0F0H,0FEH,007H,001H,000H,000H,00 0H,000H,000H,001H,00FH,0FEH,0F0H,000H ,000H.word000H,000H,000H,000H,080H,0C0H,040H,04 0H,040H,0C0H,080H,000H,000H,000H,000H ,000Htab02:;-- 文字: F --;-- 宋体24; 此字体下对应的点阵为:宽x高=16x32 --.word000H,007H,006H,006H,004H,004H,004H,00 4H,004H,004H,004H,007H,007H,004H,004H ,000H.word0C0H,080H,000H,01FH,007H,002H,002H,00 2H,002H,002H,002H,0FFH,0FFH,000H,000H ,000H.word000H,000H,000H,0C0H,000H,000H,000H,00 0H,000H,000H,000H,0FFH,0FFH,000H,000H ,000H.word000H,000H,000H,000H,000H,000H,000H,00 0H,000H,040H,040H,0C0H,0C0H,040H,040H ,000Htab03:;-- 文字: D --;-- 宋体24; 此字体下对应的点阵为:宽x高=16x32 --.word000H,000H,000H,001H,003H,002H,006H,00 4H,004H,004H,004H,007H,007H,004H,004H ,000H.word000H,01FH,0FFH,0E0H,000H,000H,000H,00 0H,000H,000H,000H,0FFH,0FFH,000H,000H ,000H.word000H,0F0H,0FCH,00FH,001H,000H,000H,00 0H,000H,000H,000H,0FFH,0FFH,000H,000H ,000H.word000H,000H,000H,000H,080H,080H,0C0H,04 0H,040H,040H,040H,0C0H,0C0H,040H,040H ,000Htab04:;-- 文字: 7 --;-- 宋体24; 此字体下对应的点阵为:宽x高=16x32 --.word000H,000H,006H,007H,006H,006H,006H,00 6H,006H,006H,006H,007H,007H,001H,000H ,000H.word000H,000H,000H,000H,0C0H,030H,00CH,00 3H,000H,000H,000H,000H,080H,0E0H,000H ,000H.word000H,000H,000H,000H,000H,000H,000H,08 0H,07FH,00FH,000H,000H,000H,000H,000H ,000H.word000H,000H,000H,000H,000H,000H,000H,00 0H,0C0H,0C0H,000H,000H,000H,000H,000H ,000Htab05:;-- 文字: 8 --;-- 宋体24; 此字体下对应的点阵为:宽x高=16x32 -- .word000H,000H,000H,001H,003H,006H,004H,00 4H,004H,004H,006H,003H,001H,000H,000H ,000H.word000H,000H,0F0H,0F8H,00CH,003H,003H,00 3H,003H,006H,00FH,01DH,0F8H,0F0H,000H ,000H.word000H,000H,03EH,07FH,0E1H,0C0H,080H,00 0H,000H,000H,000H,080H,0C1H,07FH,03EH ,000H.word000H,000H,000H,000H,080H,080H,040H,04 0H,040H,040H,040H,080H,080H,000H,000H ,000Htab06:;-- 文字: 9 --;-- 宋体24; 此字体下对应的点阵为:宽x高=16x32 --.word000H,000H,000H,000H,001H,002H,004H,00 4H,004H,004H,004H,002H,003H,001H,000H ,000H.word000H,000H,03FH,0FFH,083H,001H,000H,00 0H,000H,000H,000H,000H,081H,0FFH,07EH ,000H.word000H,000H,0E0H,0FCH,01EH,083H,081H,04 0H,040H,040H,040H,0C0H,083H,003H,000H ,000H.word000H,000H,000H,000H,000H,000H,080H,0C 0H,040H,040H,040H,040H,080H,080H,000H ,000Htab07:;-- 文字: C --;-- 宋体24; 此字体下对应的点阵为:宽x高=16x32 --.word000H,000H,007H,003H,002H,004H,004H,00 4H,004H,006H,002H,001H,000H,000H,000H.word000H,060H,080H,000H,000H,000H,000H,00 0H,000H,000H,000H,080H,0E0H,07FH,00FH ,000H.word000H,00CH,003H,001H,000H,000H,000H,00 0H,000H,000H,000H,001H,00FH,0FEH,0F0H ,000H.word000H,000H,000H,080H,080H,040H,040H,04 0H,040H,040H,080H,080H,000H,000H,000H ,000Htab08:;-- 文字: 4 --;-- 宋体24; 此字体下对应的点阵为:宽x高=16x32 --.word000H,000H,000H,000H,007H,007H,003H,00 0H,000H,000H,000H,000H,000H,000H,000H ,000H.word000H,000H,000H,000H,0FFH,0FFH,0FFH,08 0H,060H,018H,00CH,003H,000H,000H,000H ,000H.word000H,010H,010H,010H,0FFH,0FFH,0FFH,01 0H,010H,010H,010H,010H,090H,070H,010H ,000H.word000H,020H,020H,020H,0E0H,0E0H,0E0H,02 0H,020H,020H,000H,000H,000H,000H,000H ,000Htab09:;-- 文字: 5 --;-- 宋体24; 此字体下对应的点阵为:宽x高=16x32 --.word000H,000H,006H,006H,006H,006H,006H,00 6H,006H,006H,006H,007H,000H,000H,000H ,000H.word000H,000H,000H,003H,006H,00CH,008H,00 8H,008H,008H,004H,0C2H,03FH,000H,000H .word000H,000H,0FCH,0FFH,003H,000H,000H,00 0H,000H,000H,000H,000H,00CH,00FH,000H ,000H.word000H,000H,000H,000H,080H,080H,040H,04 0H,040H,040H,040H,040H,080H,000H,000H ,000Htab10:;-- 文字: 6 --;-- 宋体24; 此字体下对应的点阵为:宽x高=16x32 --.word000H,000H,001H,003H,004H,004H,004H,00 4H,006H,002H,001H,000H,000H,000H,000H ,000H.word000H,000H,081H,083H,006H,004H,004H,00 4H,004H,002H,003H,0E1H,07FH,00FH,000H ,000H.word000H,0FCH,0FFH,001H,000H,000H,000H,00 0H,000H,000H,001H,087H,0FEH,0F8H,000H ,000H.word000H,000H,000H,080H,080H,040H,040H,04 0H,040H,0C0H,080H,000H,000H,000H,000H ,000Htab11:;-- 文字: B --;-- 宋体24; 此字体下对应的点阵为:宽x高=16x32 --.word000H,000H,001H,003H,003H,006H,004H,00 4H,004H,004H,004H,007H,007H,004H,004H ,000H.word000H,000H,0F0H,0F9H,00DH,006H,002H,00 2H,002H,002H,002H,0FFH,0FFH,000H,000H ,000H.word000H,03EH,0FFH,081H,000H,000H,000H,00 0H,000H,000H,000H,0FFH,0FFH,000H,000H.word000H,000H,000H,080H,0C0H,040H,040H,04 0H,040H,040H,040H,0C0H,0C0H,040H,040H ,000Htab12:;-- 文字: 1 --;-- 宋体24; 此字体下对应的点阵为:宽x高=16x32 --.word000H,000H,000H,000H,000H,000H,000H,00 7H,003H,001H,001H,001H,001H,000H,000H ,000H.word000H,000H,000H,000H,000H,000H,000H,0F FH,0FFH,000H,000H,000H,000H,000H,000H ,000H.word000H,000H,000H,000H,000H,000H,000H,0F FH,0FFH,000H,000H,000H,000H,000H,000H ,000H.word000H,000H,000H,040H,040H,040H,0C0H,0C 0H,0C0H,0C0H,040H,040H,040H,000H,000H ,000Htab13:;-- 文字: 2 --;-- 宋体24; 此字体下对应的点阵为:宽x高=16x32 --.word000H,000H,000H,003H,003H,006H,004H,00 4H,004H,004H,004H,002H,001H,000H,000H ,000H.word000H,000H,0F8H,0FCH,006H,001H,000H,00 0H,000H,000H,000H,000H,030H,0F0H,000H ,000H.word000H,000H,00FH,001H,000H,000H,080H,04 0H,020H,010H,008H,004H,002H,001H,000H ,000H.word000H,000H,000H,0C0H,0C0H,0C0H,0C0H,0C 0H,0C0H,0C0H,0C0H,0C0H,0C0H,0C0H,000H tab14:;-- 文字: 3 --;-- 宋体24; 此字体下对应的点阵为:宽x高=16x32 --.word000H,000H,000H,000H,003H,003H,006H,00 4H,004H,004H,004H,002H,003H,001H,000H ,000H.word000H,000H,000H,0F0H,0F9H,00DH,007H,00 2H,002H,002H,000H,000H,0E0H,0E0H,000H ,000H.word000H,000H,03CH,0FFH,081H,000H,000H,00 0H,000H,000H,000H,000H,00FH,00FH,000H ,000H.word000H,000H,000H,000H,080H,080H,040H,04 0H,040H,040H,040H,080H,080H,000H,000H ,000Htab15:;-- 文字: A --;-- 宋体24; 此字体下对应的点阵为:宽x高=16x32 --.word000H,000H,000H,000H,000H,000H,000H,00 FH,007H,007H,000H,000H,000H,000H,000H ,000H.word000H,000H,000H,000H,000H,007H,07FH,0F 8H,000H,0C0H,07CH,007H,000H,000H,000H ,000H.word000H,000H,000H,003H,07FH,0FCH,0C0H,04 0H,040H,040H,040H,0C0H,07CH,007H,000H ,000H.word000H,040H,040H,0C0H,0C0H,040H,000H,00 0H,000H,000H,000H,040H,040H,0C0H,0C0H ,040H.include "240xa.inc".def _c_int0.text_c_int0setc INTMclrc SXMclrc OVMclrc CNFldp #0e0hsplk #0e8h,WDCRldp #0Splk #0h,IMRsplk #0ffffh,IFRldp #dp_usersplk #0FFFH,r22out r22,WSGRldp #dp_pf2lacl #00hsacl mcralacl mcrblacl #0ff00hsacl mcrblacl #000hsacl mcrcnopldp #5lacl #0sacl lcdtabsacl keydatalong1:lacl #0ff00h ldp #0e1hsacl PADATDIRrpt #20 noplacl #0ff00hsacl PCDATDIR rpt #20noplacl #0ff00h sacl pedatdirrpt #20nop ldp #dp_usersplk #3eh,r16call write_ins0rpt #100 noprpt #100 noprpt #100nop ldp #dp_usersplk #3fh,r16call write_ins0 call write_ins1rpt #100nop rpt #100nopl1: ldp #dp_user splk #0c0h,r16call write_ins0noplong2:ldp #dp_user splk #0bfh,r16call write_ins0ldp #dp_usersplk #40h,r16call write_ins0ldp #dp_user call display_cs0call display_cs1long100: LAR AR4,#07Hcall display_cs0 SAR AR4,r28scan_again:call scan_keylacl keydatabcnd scan_again,eqlacl #0ff00hldp #0e1hsacl PADATDIRrpt #20noplacl #0ff00hsacl PCDATDIR noplacl #0ff00hsacl pedatdirlacl #0hldp #5hsacl lcdtablacc #0mar *,ar5ldp #5hlacl keydatasub #01hsacl keydatalar ar5,keydatalar ar0,#00hlacl #00lay1:LACL lcdtabadd #6sacl lcdtabsbrk #1hnopcmpr 00bcnd lay1,NTCsacl lcdtablong35:ldp #dp_usersplk #10h,r22ldp #dp_usersplk #0beh,r23ldp #dp_userlt r28mpy #16SPL r24ldp #dp_usersplk #0bbh,r25lacc lcdtabadd #tab00sacl lcdtabcall display4 ldp #dp_user LAR AR4,r28mar *,ar4long4:BANZ long444,*-b long100long444:SAR AR4,r28call delaylong445:call scan_key lacl keydatabcnd scan_again,eqcall delayb long445scan_key:lacl #0ff00hldp #0e1hsacl pfdatdirrpt #20noplacl #000hsacl pcdatdirrpt #20noplacl #0ff00hsacl pedatdirldp #dp_userlacl #00hsacl keydatalacl #04hSaclrowdata Lacl #0fff7hsacl scandataLDP #0e1hmmm:lacl #0ff00hsacl pfdatdirnoplacl pcdatdirnopldp #5hsacl keybufferand #0ffhor #1ehxor #0ffhbcnd scanout ,eqscan:ldp #5hlacl scandataldp #0e1hsacl pfdatdirnoplacl pcdatdirnopand #0ffhor #1ehxor #0ffhbcnd scannext,eqldp #dp_userbit keybuffer,15bcnd key1,tcldp #5hlacl keydataadd #01hsacl keydatab scanoutkey1: bit keybuffer,10bcnd key2,tclacl keydataadd #02hsacl keydatab scanoutkey2: bit keybuffer,9bcnd key3,tclacl keydataadd #03hsacl keydatanopb scanoutkey3: bit keybuffer,8bcnd scanout,tclacl keydataadd #04hsacl keydatab scanout scannext:ldp #dp_userlacl scandatasfrldp #5hsacl scandatalacl keydataadd #04hsacl keydatalacl rowdatasub #01hsacl rowdatabcnd scan,neq scanout: retdisplay4:ldp #dp_userlacl r22sacl r21ldp #dp_userpage_cycle4:ldp #dp_userlacl r24sacl r16call write_ins0ldp #dp_userLaclr23sacl r16call write_ins0ldp #dp_userlacl #0c0hsacl r16call write_ins0arrange_cycle4:ldp #dp_userlacl lcdtabldp #dp_usertblr lcddatalacl lcddataldp #dp_usersacl r16call write_data0ldp #dp_userlacl lcdtabadd #1sacl lcdtabldp #dp_userlacl r22sub #1sacl r22lar ar0,#0ldp #dp_userlar ar6,r22mar *,ar6cmpr 00bcnd arrange_cycle4,NTC LDP #dp_userlacl r21sacl r22ldp #dp_userlar ar0,r23ldp #dp_userlar ar7,r25lacl r23sub #1hldp #dp_usersacl r23mar *,ar7cmpr 00bcnd page_cycle4,NTCretdisplay5:ldp #dp_userlacl r22sacl r21ldp #dp_userpage_cycle5:ldp #dp_userlacl r24sacl r16call write_ins1ldp #dp_userLaclr23sacl r16call write_ins1ldp #dp_userlacl #0c0h sacl r16call write_ins1arrange_cycle5:ldp #dp_userlacl lcdtabldp #dp_usertblr lcddatalacl lcddataldp #dp_usersacl r16call write_data1ldp #dp_userlacl lcdtabadd #1sacl lcdtab ldp #dp_userlacl r22sub #1sacl r22lar ar0,#0ldp #dp_userlar ar6,r22mar *,ar6cmpr 00bcnd arrange_cycle5,NTC LDP #dp_userlacl r21sacl r22ldp #dp_userlar ar0,r23ldp #dp_userlar ar7,r25lacl r23sub #1hldp #dp_usersacl r23mar *,ar7cmpr 00bcnd page_cycle5,NTCret write_ins1:ldp #dp_pf2lacl #03fchsacl padatdirnoplacl #1c08hsacl pcdatdirrpt #20nopldp #0e1hlacl #0301hsacl padatdirnopldp #dp_userlacl r16or #0ff00hldp #0e1hsacl pedatdirrpt #50nopldp #0e1hlacl #03fchsacl padatdirrpt #5nopldp #0e1h lacl #0302hsacl padatdirldp #dp_pf2lacl #1c0chsacl pcdatdirldp #dp_userrpt #5nopretwrite_ins0:ldp #dp_pf2lacl #03fchsacl padatdirnoplacl #1c04hsacl pcdatdirrpt #20nopldp #0e1h lacl #0301hsacl padatdir nopldp #dp_userlacl r16or #0ff00hldp #0e1hsacl pedatdirrpt #50nopldp #0e1hlacl #03fchsacl padatdirrpt #5nopldp #0e1h lacl #0302hsacl padatdir ldp #dp_pf2lacl #1c0chsacl pcdatdirldp #dp_userrpt #5nopretwrite_data1:ldp #0e1hlacl #0ff00hsacl padatdirnopldp #0e1hlacl #1c18hsacl pcdatdirrpt #10nopldp #0e1h lacl #0ff01hsacl padatdirnopldp #dp_userlacl r16or #0ff00hldp #0e1hsacl pedatdirrpt #5nopldp #0e1hlacl #0ff00hsacl padatdirrpt #5nopldp #0e1hlacl #0ff02hSaclpadatdir ldp #dp_pf2lacl #1c0chsacl pcdatdirldp #dp_userrpt #5nopretwrite_data0:ldp #0e1hlacl #0ff00hsacl padatdirnopldp #0e1hlacl #1c14hsacl pcdatdirrpt #10nopldp #0e1hlacl #0ff01hsacl padatdirnopldp #dp_userlacl r16or #0ff00hldp #0e1hsacl pedatdir rpt #5nopldp #0e1hlacl #0ff00hsacl padatdirrpt #5nopldp #0e1h lacl #0ff02hsacl padatdirldp #dp_pf2lacl #1c0chsacl pcdatdirldp #dp_userrpt #5nopretdisplay_cs0:ldp #5hsplk #0c0h,r16call write_ins0ldp #5hsplk #0b8h,r17 arrange00:ldp #5hsplk #040h,r18 ldp #5hlacl r17sacl r16call write_ins0ldp #5hlacl r18sacl r16call write_ins0arrange01:ldp #5hsplk #00h,r16call write_data0ldp #5hlacl r18Add#1hsacl r18ldp #5hmar *,ar6lar ar6,r18lar ar0,#128cmpr 01Bcndarrange01,TCldp #5hlacl r17add #1hsacl r17call delaylar ar5,r17lar ar0,#0c0hmar *,ar5cmpr 01bcndarrange00,tcretdisplay_cs1:ldp #5hsplk #0c0h,r16call write_ins1ldp #5hsplk #0b8h,r17 arrange10:ldp #5hsplk#040h,r18ldp #5hlacl r17Saclr16call write_ins1ldp #5hlaclr18sacl r16call write_ins1arrange11:ldp #5hsplk #00h,r16call write_data1ldp #5hlacl r18add #1h ;sacl r18ldp #5hmar *,ar6ar ar6,r18lar ar0,#128cmpr 01bcnd arrange11,TCldp #5hlacl r17add #1hsacl r17call delayar ar5,r17lar ar0,#0c0hmar *,ar5cmpr 01bcndarrange10,tc retdelay:mar *,ar3lar ar3,#0fffhlar ar0,#00hdelay1:sbrk #1hnopcmpr 00bcnd delay1,NTCretend。

12864lcd显示部分试验总结报告

12864lcd显示部分试验总结报告

12864lcd显示部分试验总结报告管岱2014.12.19【实验目的】在12864液晶显示屏上能够显示出在4×4小键盘上输入的激励源频率值,如输入“789HZ”、“8MHZ”、“2.3KHZ”,显示出“789H”、“8M”、“2.3K”。

并且要求此部分程序有较好的可移植性,在最后对电阻率值的显示上能够较好的应用。

【实验原理】12864-3A接口说明表:在12864液晶显示原理的基础上,通过在ise上编写vhdl语言,使之能够在fpga学习板上顺利显示数据。

【实验内容】12864的显示原理并不难理解,并且在以前也用汇编语言实现过,所以本次实验的难点不在于显示原理的理解,而在于VHDL语言的编写。

在实验初期,由于对vhdl语言的不熟练,我们“类比”汇编语言的显示程序,编写出如下的程序:发现编译时就出现了问题,出现如“multi-source in unit <*> on signal <*>”的报错。

在仔细调试检查后发现,我们错误的原因在于:在不同的进程中对同一个信号赋值。

例如,在写指令的进程中,将rs信号置‘0’,而在后面写数据的进程中又将rs置‘1’,由于在vhdl中各进程之间是并行的关系,因此这样编写程序会出现在同一时刻对同一个引脚赋高电平和低电平,从而出现矛盾。

虽然在程序实际运行中,写指令进程在系统一上电就会完成,远早于写数据进程,但是在逻辑上这样编写是不符合VHDL语言的规则的。

因此,我们利用状态机的思想,将写指令和写数据的两个进程合二为一。

程序片段如下:利用状态机,将写指令和写数据的各个步骤分为一个一个分立的状态,顺序执行。

这样编写将对同一个引脚信号的变化放在一个进程中,很好的解决了之前存在的问题。

并且受此启发,在写数据的程序段,对百位、十位、个位以及单位的译码程序中,将原本分别对各自数位信号敏感的四个单独进程改成了受一个的时钟上升沿敏感的一个进程,从而较好的保证了程序的时序性和同步性,经实验验证效果良好。

[原创]12864 LCD图形显示程序例子

[原创]12864 LCD图形显示程序例子

这是一个在LCD128*64上显示图形的一个程序,一直以来都总是不知道怎么搞,现在终于都通了,想当初在网上总找,要不是程序不全,就是无法运行,或者是C51汇编语言,让人不爽,这样的痛苦不可以再让别人难受了。

在LCD上显示一幅图,是“我的电脑,我的文档”。

IC用PIC16F877A,晶振4MHZ,采用并行8线,LCD:TS12864-3,接法在程序中有定义,只要将此程序COPY到你的PICC里编译下载后,在目标板上即可以看到图画了!不知道可不可以加酷?#include "pic.h"#define RS RC0#define RW RC1#define E RC2#define PSB RC3#define RST RC4//PORTD=DATA;unsigned char COUNT3,COUNT2,COUNT1,COUNT,LCD_X,LCD_Y,LCD_DATA1,LCD_D ATA2,LCD_DATA,F3,R1,F0;const unsigned char TU_TAB1[]={// 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 10xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0 x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0 x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0 x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0 x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0 x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xF0,0x00,0 x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x18,0x00,0 x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xBF,0xFF,0xDC,0x00, 0x01,0x80,0x00,0x1F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xBF,0xFF,0xBC,0x00,0 x01,0x80,0x00,0x30,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x01,0x7F,0xFF,0xB8,0x00,0 x01,0x80,0x00,0x30,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x01,0x7F,0xFF,0x78,0x00,0 x01,0x80,0x00,0x19,0xFF,0xFE,0xC0,0x00,0x00,0x00,0x00,0x02,0xFF,0xFF,0x70,0x00,0 x01,0x80,0x00,0x18,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x02,0xFF,0xFE,0xF0,0x00,0 x01,0x80,0x00,0x0C,0x01,0xFF,0x60,0x00,0x00,0x00,0x00,0x05,0xFF,0xFE,0xE0,0x00, 0x01,0x80,0x00,0x0C,0x7F,0xD0,0x20,0x00,0x00,0x00,0x00,0x05,0xFF,0xFD,0xE0,0x00,0x 01,0x80,0x00,0x06,0x00,0x0F,0xB0,0x00,0x00,0x00,0x00,0x0B,0xFF,0xFD,0xC0,0x00,0x 01,0x80,0x00,0x06,0x03,0xFC,0x10,0x00,0x00,0x00,0x00,0x0B,0xFF,0xFB,0xC0,0x00,0x 01,0x80,0x00,0x03,0x1F,0x00,0x18,0x00,0x00,0x00,0x00,0x17,0xFF,0xFB,0x80,0x00,0x0 1,0x80,0x00,0x03,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x17,0xFF,0xF7,0x80,0x00,0x0 1,0x80,0x00,0x01,0x80,0x00,0x0C,0x00,0x00,0x00,0x00,0x17,0xFF,0xF7,0x00,0x00,0x 01,0x80,0x00,0x01,0x80,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0xFF,0xEF,0x00,0x00,0x0 1,0x80,0x00,0x00,0xC0,0x00,0xF6,0x00,0x00,0x00,0x00,0x06,0x7F,0xEE,0x00,0x00,0x 01,0x80,0x00,0x00,0xC0,0x03,0xC2,0x00,0x00,0x00,0x00,0x01,0x9F,0xDE,0x00,0x00,0x 01,0x80,0x00,0x00,0x60,0x00,0x3B,0x00,0x00,0x00,0x00,0x00,0x67,0xDF,0x00,0x00,0x 01,0x80,0x00,0x00,0x60,0x00,0xE3,0x00,0x00,0x00,0x00,0x00,0x19,0xBF,0x00,0x00,0x 01,0x80,0x00,0x00,0x30,0x03,0x8E,0x00,0x00,0x00,0x00,0x00,0x06,0x3F,0x00,0x00,0x0 1,0x80,0x00,0x00,0x30,0x06,0x3C,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0x00,0x00,0x 01,0x80,0x00,0x00,0x18,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x0 1,0x80,0x00,0x00,0x18,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x0F,0x7F,0x80,0x00,0x0 1,0x80,0x00,0x00,0x0C,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x1F,0xC0,0x00,0 x01,0x80,0x00,0x00,0x0C,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x07,0xE0,0x00,0x 01,0x80,0x00,0x00,0x06,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x1F,0xE0,0x00,0x 01,0x80,0x00,0x00,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x3F,0xC0,0x00,0x 01,1,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFC,0x00,0x00,0x 01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x0 1,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x 01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0 1,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0 1,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0 1,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0 1,0x80,0x05,0x40,0x88,0x04,0x01,0x08,0x00,0x00,0x0A,0x81,0x10,0x04,0x00,0x20,0x0 1,0x80,0x79,0x21,0x08,0x02,0x21,0x49,0x00,0x00,0xF2,0x42,0x10,0x04,0x47,0x10,0x0 1,0x80,0x09,0x07,0xDF,0x7F,0xF7,0xAA,0x00,0x00,0x12,0x0F,0xBE,0x7F,0xE5,0xFE,0 x01,0x80,0x7F,0xF4,0x51,0x08,0x81,0x2C,0x00,0x00,0xFF,0xE8,0xA2,0x44,0x47,0x00,0x 01,0x80,0x09,0x04,0x61,0x08,0x81,0x7F,0x00,0x00,0x12,0x08,0xC2,0x7F,0xC5,0x4A,0x 01,0x80,0x0B,0x24,0x51,0x08,0x83,0x81,0x00,0x00,0x16,0x48,0xA2,0x44,0x45,0x6A,0x 01,0x80,0x1D,0x47,0xC9,0x05,0x05,0x01,0x00,0x00,0x3A,0x8F,0x92,0x44,0x47,0x52,0x 01,0x80,0x68,0x84,0x49,0x05,0x05,0x7F,0x00,0x00,0xD1,0x08,0x92,0x7F,0xC5,0x6A,0x 01,0x80,0x09,0x94,0x41,0x02,0x01,0x01,0x00,0x00,0x13,0x28,0x82,0x44,0x05,0x4A,0 x01,0x80,0x0E,0x57,0xC1,0x0D,0x81,0x01,0x00,0x00,0x1C,0xAF,0x82,0x04,0x29,0x42,0x 01,0x80,0x38,0x34,0x4E,0x70,0x71,0x7F,0x00,0x00,0x70,0x68,0x9C,0x03,0xEB,0x7E, 0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0 x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0 x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0 x01,x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0 x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0 x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0 x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0 x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0 x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0 x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0 xFF};//*************delay_ms********************************void delay_10us(unsigned char x){while(x--);}void delay_ms(unsigned char cnt){unsigned char i;do {i = 4;do {delay_10us(39);} while(--i);} while(--cnt);}//***********检查是否LCD忙碌的子程序**********************void check_busy(void){TRISD=0xff;//在此处设为输入。

06 12864LCD显示计算器键盘按键实验资料

06 12864LCD显示计算器键盘按键实验资料

2 系统设计
2.1.设计框图
框图设计是为了能够从整体上把握系统的各个大的模块以及各个模块之间 的联系。 同时罗列出需要主要使用到的各个器件, 以方面系统开发中器件的选取。 通过框图设计,让设计者从整体上把握系统的开发。 12864LCD 显示计算器键盘按键实验设计框图如下所示
1
定时电路
16×2 12864 液晶显 示电路 AT89C51 单片机
1.2 课程设计目的思路
1、先把与题目有关的芯片资料找到,熟悉一下芯片资料 2、把此程序的电路图看懂,了解一下它的实现原理,以及实现的功能。 3、分析一下此程序的各部分的功能,各零件的工作原理。 4、对程序进行调试,分析调试结果,观察并得出结论。
1.3 课程设计需要配置的环境
1、一台主机,一台显示器 2、Keil uVision3/Keil uVision4 应用程序软件 3、ISIS 7 Professional 仿真软件 4、老师交给的仿真电路图,及案例 5、纸张,以及一些参考资料
E 状态 高——>低 高 低/低——>高 执行动作 I/O 缓冲——>DR DR——>I/O 缓冲 无动作 结果 配合/W 进行写数据或指令 配合 R 进行读数据或指令
控制器接口信号说明:
1、RS,R/W 的配合选择决定控制界面的 4 种模式:
RS L R/W L 功能说明 MPU 写指令到指令暂存器(IR) 读出忙标志(BF)及地址记数器(AC) L H 的状态 H H L H MPU 写入数据到数据暂存器(DR) MPU 从数据暂存器(DR)
1 课程设计概述和要求 ……………………………………………………………………1 1.1 课程设计要求与任务 ……………………………………………………………2 1.2 课程设计思路 ………………………………………………………………………2 1.3 课程设计需要配置的环境 ………………………………………………………3 2 系统设计………………………………………………………………………………… 3 2.1 设计框图……………………………………………………………………………3 2.2 元件解析 ……………………………………………………………………………3 2.2.1 LCD12864芯片 ……………………………………………………………4 2.2.2 AT89C51芯片 ………………………………………………………………5 2.2.3 其他部件 ……………………………………………………………………6 2.2.4 电路分析 …………………………………………………………… ……7 3 软件设计 …………………………………………………………………………………12 3.1 程序流程图………………………………………………………………………12 3.2 程序代码 …………………………………………………………………………12 4 系统的仿真与调试………………………………………………………………………13 4.1 硬件调试……………………………………………………………………………13 4.2 软件调试……………………………………………………………………………14 4.3 软硬件调试…………………………………………………………………………14 5 总结 ………………………………………………………………………………………14 附录1: 程序代码 附录2:12864LCD显示计算器键盘按键实验Proteus仿真图

计算器键盘按键显示

计算器键盘按键显示

计算器键盘按键显示摘要为了满足利用AT89C51单片机结合12864LCD显示器设计计算器4*4键盘按键的要求,我设计了利用AT89C51控制整个电路显示12864LCD显示器设计计算器键盘按键的系统。

系统主要包括硬件和软件两部分。

其中包括各模块的器件选择和电路设计。

将计算器按键上的信息传送至AT89C51主芯片之中,利用P2端口使之显示于12864LCD液晶显示屏上,包含复位、定时电路。

通过在proteus和keil仿真软件联合仿真环境下,系统达到了通过按键显示计算器键盘按键的需求,12864LCD 精准的显示了按键信息,达到了目的。

关键字:计算器键盘、液晶显示屏、按键、复位、定时一、系统方案论证与选择根据题目要求,系统可以分为定时电路模块、复位电路模块、液晶显示电路模块、键盘模块、控制电路模块,控制电路是以AT89C51为主控芯片,其他电路模块都是由控制电路模块AT89C51芯片进行控制。

如图1,为系统总电路模块框图。

定时图1 系统总框图1.1系统基本方案论证为实现各模块的功能,分别论证了几种不同的设计方案并进行了讨论,并且就各方案的优缺点进行了方案选择。

1.1.1液晶显示电路的选择方案一:选用LCD1602液晶显示器,LCD1602是字符型的模组,为16字乘2行字符型。

但只能显示数字与字符,不可以显示汉字。

不能显示出题目目的的汉字字符。

方案二:选用LCD12864液晶显示器,12864屏幕为64行,每行显示128个字符,是点阵型显示器。

可根据需求任意显示字符、数字 、汉字、图形,LCD12864是图形型的模组。

显示器控制器接口信号说明如表1所示。

表1 控制器借口信号说明RS R/W 功能说明L L MPU写指令到IRL H 读出BF及AC状态H L MPU写数据到DRH H MPU从DR读出数据综上所述,配合我的AT89C51控制系统和液晶显示系统,我选择方案二,达到了我需要显示汉字、符号、数字的要求。

LCD12864的显示实验

LCD12864的显示实验

LCD1602A的显示实验液晶屏的电路连接图:/****************************************************************************** ** 描述: ** 12864标准字库液晶演示数据p0,控制p2 ******************************************************************************** */#include <reg51.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int/************* 12864LCD引脚定义*************/#define LCD_data P0 //数据口sbit LCD_RS = P2^6; //寄存器选择输入sbit LCD_RW = P2^5; //液晶读/写控制sbit LCD_EN = P2^7; //液晶使能控制sbit LCD_PSB = P3^2; //串/并方式控制sbit LCD_RST = P3^7; //液晶复位端口#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};/*********************************************************/uchar code DIS1[] = {" 普中科技"};uchar code DIS2[] = {"自学单片机第一站"};uchar code DIS3[] = {" "};uchar code DIS4[] = {"TEL:755-29325187"};/*********************************************************/ uchar code Photo1[] ={0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x3F,0xC0,0x80,0x42,0x04,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8A,0x1F,0xFC,0x42,0x04,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x80,0x01,0xFF,0xDE,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x2A,0x87,0xF0,0xA2,0x0A,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xBF,0x84,0x10,0xA2,0x0A,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x1F,0xFC,0xA2,0x0A,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x9F,0x90,0x05,0x2F,0xCA,0xA4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x03,0xE1,0xA8,0x4A,0xA8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xBF,0xC2,0x24,0x48,0x44,0x90,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x92,0x84,0x24,0xA8,0x4A,0xA8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA6,0x58,0x3D,0x0F,0xD0,0xC4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x08,0x37,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x10,0x08,0x40,0x00,0xFF,0x90,0x10,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x81,0x86,0x10,0x40,0x00,0x08,0x08,0x10,0xFF,0x86,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x49,0x40,0x40,0x00,0x7F,0x0B,0xFC,0x08,0x0F,0x00,0x00,0x00,0x00,0x00,0x01,0x08,0x00,0x40,0x20,0x00,0x10,0x00,0x10,0x49,0x0F,0x00,0x00,0x00,0x00,0x00,0x02,0x08,0x00,0x20,0x20,0x01,0xFF,0xDD,0x10,0x2A,0x0F,0x00,0x00,0x00,0x00,0x00,0x91,0xFF,0xC6,0x00,0x00,0x00,0x00,0x00, 0x04,0x52,0x44,0x90,0x20,0x00,0x7F,0x04, 0x90,0x1C,0x06,0x00,0x00,0x00,0x00,0x00, 0x09,0xA4,0x28,0x4C,0x10,0x00,0xA1,0x04, 0x10,0x2A,0x00,0x00,0x00,0x00,0x00,0x00, 0x0E,0x44,0xE9,0xC3,0x90,0x01,0x3F,0x04, 0x70,0x49,0x06,0x00,0x00,0x00,0x00,0x00, 0x00,0x82,0xC5,0x81,0x70,0x00,0x21,0x0A, 0x01,0x88,0xC6,0x00,0x00,0x00,0x00,0x00, 0x01,0x01,0x83,0x00,0x80,0x00,0x3F,0x11, 0xFC,0x08,0x00,0x00,0x00,0x00,0x00,0x00, 0x01,0x0C,0x70,0x00,0x80,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x02,0x13,0x87,0x10,0x40,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x02,0x20,0x78,0xA0,0x40,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x02,0x20,0x00,0x60,0x40,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x02,0x21,0x80,0x60,0x40,0x00,0x00,0x71, 0xEE,0x3C,0x00,0x00,0x00,0x00,0x00,0x00, 0x01,0x11,0x98,0x90,0x80,0x00,0x00,0x8E, 0x31,0xC6,0x00,0x00,0x00,0x00,0x00,0x00, 0x01,0x08,0x18,0x80,0x80,0x00,0x01,0x24, 0x24,0x83,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x96,0x01,0x01,0x00,0x00,0x01,0x40, 0x28,0x03,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x49,0x86,0x03,0x00,0x00,0x01,0x40, 0x28,0x03,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x34,0x78,0x8C,0x00,0x00,0x01,0x00, 0x20,0x03,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x0E,0x01,0x30,0x00,0x00,0x00,0x80, 0x30,0x06,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x71,0x87,0xCE,0x00,0x00,0x00,0x40, 0x68,0x0C,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xE0,0x78,0x07,0x00,0x00,0x00,0x20, 0xC4,0x18,0x00,0x00,0x00,0x00,0x00,0x00, 0x01,0xAF,0xFF,0xC5,0x80,0x00,0x00,0x11, 0x82,0x30,0x00,0x00,0x00,0x00,0x00,0x00, 0x03,0xA9,0xB6,0x45,0xC0,0x00,0x00,0x0B, 0x01,0x60,0x00,0x00,0x00,0x00,0x00,0x00, 0x07,0x2F,0x03,0xC4,0xE0,0x00,0x00,0x06, 0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x08,0x00,0x10,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x84,0x00,0x21,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};/******************************************************************************/uchar code Photo2[] ={/*-- 调入了一幅图像:G:\HC-6800\12864\C语言\pz.bmp --*//*-- 宽度x高度=128x64 --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFE,0x60, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x63,0x20, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x63,0x10, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x63,0x08, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x7E,0x08, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x6C,0x08, 0x1F,0xF8,0x3F,0xF8,0x7F,0xF0,0x0F,0xF9,0xF1,0xF0,0xFF,0x87,0xC3,0xC4,0x6C,0x08, 0x0E,0x7C,0x1E,0xFC,0x38,0xF8,0x3E,0xF8,0xE0,0xE0,0x1C,0x03,0xC1,0x84,0x66,0x08, 0x0E,0x1E,0x1C,0x3C,0x38,0x38,0x38,0x38,0xE0,0xE0,0x1C,0x03,0xE1,0x84,0x66,0x08, 0x0E,0x1E,0x1C,0x1C,0x38,0x18,0x78,0x38,0xE0,0xE0,0x1C,0x03,0xE1,0x82,0x63,0x10, 0x0E,0x0E,0x1C,0x1C,0x38,0x00,0xF0,0x18,0xE0,0xE0,0x1C,0x03,0xF1,0x81,0xF3,0xA0, 0x0E,0x0E,0x1C,0x3C,0x38,0xC0,0xF0,0x00,0xE0,0xE0,0x1C,0x03,0xF1,0x81,0x80,0x60, 0x0E,0x1E,0x1C,0x3C,0x38,0xC0,0xF0,0x00,0xE0,0xE0,0x1C,0x03,0x79,0x80,0x40,0x80, 0x0E,0x1E,0x1C,0xF8,0x39,0xC0,0xE0,0x00,0xE0,0xE0,0x1C,0x03,0x79,0x80,0x3F,0x00, 0x0E,0x7C,0x1F,0xF0,0x3F,0xC0,0xE0,0x00,0xFF,0xE0,0x1C,0x03,0x3D,0x80,0x00,0x00, 0x0F,0xF8,0x1D,0xE0,0x39,0xC0,0xE0,0x00,0xE0,0xE0,0x1C,0x03,0x3D,0x80,0x00,0x00, 0x0E,0x00,0x1D,0xE0,0x38,0xC0,0xE0,0x00,0xE0,0xE0,0x1C,0x03,0x1F,0x80,0x00,0x00, 0x0E,0x00,0x1C,0xF0,0x38,0xC0,0xF0,0x00,0xE0,0xE0,0x1C,0x03,0x1F,0x80,0x00,0x00, 0x0E,0x00,0x1C,0xF0,0x38,0x00,0xF0,0x00,0xE0,0xE0,0x1C,0x03,0x0F,0x80,0x00,0x00, 0x0E,0x00,0x1C,0x78,0x38,0x00,0xF0,0x18,0xE0,0xE0,0x1C,0x03,0x0F,0x80,0x00,0x00, 0x0E,0x00,0x1C,0x78,0x38,0x18,0x70,0x38,0xE0,0xE0,0x1C,0x03,0x07,0x80,0x00,0x00, 0x0E,0x00,0x1C,0x78,0x38,0x38,0x78,0x30,0xE0,0xE0,0x1C,0x03,0x07,0x80,0x00,0x00, 0x0E,0x00,0x1C,0x3C,0x38,0xF8,0x3E,0xF0,0xE0,0xE0,0x1C,0x03,0x03,0x80,0x00,0x00, 0x1F,0x00,0x3E,0x3E,0x7F,0xF0,0x1F,0xE1,0xF1,0xF0,0xFF,0x87,0x83,0x80,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xF0,0x38,0x00,0x00,0x78,0x00,0x00,0x18,0x07,0x80,0x1C,0x03,0x80,0x00, 0x00,0x00,0x7C,0x7C,0x00,0x00,0x78,0x00,0x00,0x7C,0x07,0x80,0x1C,0x03,0xC0,0x00, 0x00,0x00,0x3C,0x70,0x00,0x00,0x70,0x00,0x07,0xFC,0x07,0x00,0x1C,0x03,0x80,0x00, 0x00,0x00,0x1C,0xE3,0xC0,0x00,0x70,0x00,0x1F,0xE1,0xC7,0x00,0x1C,0x03,0x80,0x00, 0x00,0x0F,0xFF,0xFF,0xE0,0x00,0x70,0x00,0x00,0xE1,0xE7,0x00,0x1C,0x03,0x80,0x00,0x00,0x06,0x1C,0xE6,0x00,0xFF,0xFF,0xFC,0x00,0xE0,0xF7,0x00,0x1D,0x83,0x9E,0x00, 0x00,0x07,0x1C,0xE7,0x80,0xFF,0xFF,0xFC,0x00,0xE0,0xF7,0x03,0xFF,0xFF,0xFE,0x00,0x00,0x03,0x9C,0xEF,0x80,0xE0,0x70,0x38,0x00,0xEE,0x67,0x00,0x1C,0x03,0x80,0x00, 0x00,0x03,0xDC,0xEE,0x00,0xE0,0x70,0x38,0x3F,0xFE,0x07,0x00,0x1C,0x03,0x80,0x00, 0x00,0x01,0xFC,0xFC,0x00,0xE0,0x70,0x38,0x01,0xE0,0x07,0x00,0x1C,0x03,0x80,0x00, 0x00,0x01,0xDC,0xF8,0xE0,0xE0,0x70,0x38,0x01,0xE1,0xC7,0x00,0x1D,0xC3,0xB8,0x00, 0x00,0x3F,0xFF,0xFF,0xF0,0xE0,0x70,0x38,0x03,0xF1,0xE7,0x00,0x1F,0xFF,0xFC,0x00,0x00,0x3F,0xFF,0xFF,0xF0,0xE0,0x70,0x38,0x03,0xFC,0xE7,0x00,0x7E,0x38,0x38,0x00, 0x00,0x00,0x80,0x0C,0x00,0xFF,0xFF,0xF8,0x07,0xFE,0xE7,0xE3,0xFC,0x18,0x78,0x00, 0x00,0x00,0xFF,0xFE,0x00,0xE0,0x70,0x38,0x07,0xFE,0x07,0xF3,0xFC,0x1C,0x70,0x00, 0x00,0x00,0xFF,0xFE,0x00,0xE0,0x70,0x38,0x0F,0xEC,0x3F,0xC1,0x9C,0x1C,0xF0,0x00, 0x00,0x00,0xE0,0x1E,0x00,0x00,0x70,0x00,0x0E,0xE7,0xFF,0x00,0x1C,0x0E,0xE0,0x00, 0x00,0x00,0xE0,0x1E,0x00,0x00,0x70,0x00,0x1C,0xEF,0x07,0x00,0x1C,0x0F,0xE0,0x00, 0x00,0x00,0xFF,0xFE,0x00,0x00,0x70,0x00,0x38,0xE0,0x07,0x00,0x1C,0x07,0xC0,0x00, 0x00,0x00,0xE0,0x1E,0x00,0x00,0x70,0x00,0x30,0xE0,0x07,0x00,0x1C,0x07,0x80,0x00, 0x00,0x00,0xE0,0x1E,0x00,0x00,0x70,0x00,0x00,0xE0,0x07,0x00,0x1C,0x0F,0xE0,0x00, 0x00,0x00,0xE0,0x1E,0x00,0x00,0x70,0x00,0x00,0xE0,0x07,0x01,0xDC,0x3F,0xF8,0x00, 0x00,0x00,0xFF,0xFE,0x00,0x00,0x70,0x00,0x00,0xE0,0x07,0x01,0xFC,0x78,0xFF,0x00, 0x00,0x00,0xE0,0x1E,0x00,0x00,0x70,0x00,0x00,0xE0,0x07,0x00,0x7F,0xE0,0x3F,0x00, 0x00,0x00,0xC0,0x1C,0x00,0x00,0x70,0x00,0x00,0xC0,0x07,0x00,0x37,0x80,0x0C,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};/*******************************************************************//* */ /* 延时函数*/ /* */ /*******************************************************************/ void delay(int ms){while(ms--){uchar i;for(i=0;i<150;i++){_nop_();_nop_();_nop_();_nop_();}}}/*******************************************************************/ /* */ /* 延时函数*/ /* */ /*******************************************************************/ void delay1(int ms){while(ms--){uchar y;for(y=0;y<100;y++) ;}}/*******************************************************************/ /* */ /*检查LCD忙状态*/ /*lcd_busy为1时,忙,等待。

(完整版)12864lcd显示部分试验总结报告

(完整版)12864lcd显示部分试验总结报告

12864lcd显示部分试验总结报告管岱2014.12.19【实验目的】在12864液晶显示屏上能够显示出在4×4小键盘上输入的激励源频率值,如输入“789HZ”、“8MHZ”、“2.3KHZ”,显示出“789H”、“8M”、“2.3K”。

并且要求此部分程序有较好的可移植性,在最后对电阻率值的显示上能够较好的应用。

【实验原理】12864-3A接口说明表:在12864液晶显示原理的基础上,通过在ise上编写vhdl语言,使之能够在fpga学习板上顺利显示数据。

【实验内容】12864的显示原理并不难理解,并且在以前也用汇编语言实现过,所以本次实验的难点不在于显示原理的理解,而在于VHDL语言的编写。

在实验初期,由于对vhdl语言的不熟练,我们“类比”汇编语言的显示程序,编写出如下的程序:发现编译时就出现了问题,出现如“multi-source in unit <*> on signal <*>”的报错。

在仔细调试检查后发现,我们错误的原因在于:在不同的进程中对同一个信号赋值。

例如,在写指令的进程中,将rs信号置‘0’,而在后面写数据的进程中又将rs置‘1’,由于在vhdl中各进程之间是并行的关系,因此这样编写程序会出现在同一时刻对同一个引脚赋高电平和低电平,从而出现矛盾。

虽然在程序实际运行中,写指令进程在系统一上电就会完成,远早于写数据进程,但是在逻辑上这样编写是不符合VHDL语言的规则的。

因此,我们利用状态机的思想,将写指令和写数据的两个进程合二为一。

程序片段如下:利用状态机,将写指令和写数据的各个步骤分为一个一个分立的状态,顺序执行。

这样编写将对同一个引脚信号的变化放在一个进程中,很好的解决了之前存在的问题。

并且受此启发,在写数据的程序段,对百位、十位、个位以及单位的译码程序中,将原本分别对各自数位信号敏感的四个单独进程改成了受一个的时钟上升沿敏感的一个进程,从而较好的保证了程序的时序性和同步性,经实验验证效果良好。

12864LCD液晶显示原理及使用方法

12864LCD液晶显示原理及使用方法

12864LCD液晶显示原理及使用方法液晶简介液晶是一种在一定温度范围内呈现既不同于固态液态又不同于气态的特殊物质态,它既具有各向异性的晶体所特有的双折射性又具有液体的流动性液晶显示器件(英文的简写为LCD)就是利用液晶态物质的液晶分子排列状态在电场中改变而调制外界光的被动型显示器件。

点阵式图形液晶显示屏是 LCD 的一种能够动态显示图形汉字以及各种符号信息为各种电子产品提供了友好的人机界面点阵式图形液晶显示屏的主要特点如下(这些特点也就是LCD 的特点):工作电压低、微功耗、体积小、可视面积大、无电磁辐射、数字接口、寿命长等特点。

12864LCD是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及128×64 全点阵液晶显示器组成。

可完成图形显示,也可以显示8×4 个(16×16 点阵)汉字或者显示16×4个(8×16 点阵)ASCII码。

分为两种,带字库的和不带字库的。

不带字库的LCD需要自己提供字库字模,此时可以根据个人喜好设置各种字体显示风格,设计上较为灵活。

带字库的LCD提供字库字模,但是只能显示GB2312的宋体。

各有优缺点,根据不同应用场景灵活选择。

其液晶模块原理图如下所示。

12864LCD点阵图形液晶模块原理框图下面给出了其应用连接电路,分别介绍其各引脚的功能和作用。

如下表所示:12864LCD 的引脚说明管脚号管脚名称LEVER 管脚功能描述1GND 0 电源地2VCC+5.0V 电源电压3VLCD - 液晶显示器驱动电压4RS (D/I) H/LD/I=“H”,表示DB7∽DB0 为显示数据D/I=“L”,表示DB7∽DB0 为显示指令数据5R/W H/L R/W=“H”,E=“H”数据被读到DB7∽DB0R/W=“L”,E=“H→L”数据被写到IR 或DR 6EN H/L R/W=“L”,E 信号下降沿锁存DB7∽DB0R/W=“H”,E=“H”DDRAM 数据读到DB7∽DB0 7DB0 H/L 数据线8DB1 H/L数据线9DB2 H/L 数据线10DB3 H/L 数据线11DB4 H/L数据线12DB5 H/L数据线13DB6 H/L数据线14DB7 H/L数据线15CS1 H/L H:选择芯片(右半屏)信号16CS2 H/L H:选择芯片(左半屏)信号17RET H/L复位信号,低电平复位18VEE -10VLCD 驱动负电压19LED+ - LED 背光板电源20LED- - LED 背光板电源12864LCD点阵图形液晶模块应用连接电路液晶驱动设置在理解12864LCD硬件原理和管脚功能之后,可以针对LCD进行驱动的编写,分两种情况:仿真环境下和实物开发板编程。

(十四)液晶12864实验

(十四)液晶12864实验
学 下半屏(0-31 行) 8 9 10 11 12 13 14 15 大 会 相当于:
下半屏折放到右边(0-31 行) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
工 协 这种 12864 还有串,并两种和单片机的连线方式,为节省 IO 口,本实验采用串行连接 理 者 方式,详情请阅读我们提供的 12864PDF 资料. 南 好 室 三,硬件连接: 无华线电FD爱R工作 见程序里的 IO 口宏定义
线 R void SendByte(unsigned char Dbyte)
无 D {
F unsigned char i;
for(i=0;i<8;i++)
{
SCK = 0;
if(Dbyte&0x80)
SID = 1;
else SID = 0;
Dbyte=Dbyte<<1;
SCK = 1;
SCK = 0;
FDR工作室
网址: Email:fdrstudio@
四,程序
#include <mega16.h> #include"delay.h" //包含延时函数的头文件
/************************************************************** iO 口宏定义区
学 SCK = 1; 大 会 SCK = 0;
if(SID) temp2++;
工 协 } 理 者 return ((0xf0&temp1)+(0x0f&temp2));
}
南 好 室 /**************************************************************** 华 爱 检查忙状态

12864液晶屏显示时间,加按键,加界面切换

12864液晶屏显示时间,加按键,加界面切换

/////////////////////////////////////////////////////程序编写人:小艾//程序编写时间:2012-5-16//程序实现的功能:12864的显示,汇编//////////////////////////////////////////////////////// AIXING EQU 41HAIXING1 EQU 42HSECOND EQU 43HMINUTE EQU 44HHOUR EQU 45HMINUTE1 EQU 46HHOUR1 EQU 47HMINUTE2 EQU 48HHOUR2 EQU 49HMINUTE3 EQU 4AHHOUR3 EQU 4BHMINUTE4 EQU 4CHHOUR4 EQU 4DHCSA EQU P3.2CSB EQU P3.3RS EQU P3.6RW EQU P3.5E EQU P3.4OUTPUT EQU P2COM EQU 2CHDAT EQU 2DHCODES EQU 2Ehcolumn EQU 24Hpagef EQU 25hcpage EQU 26Hccolumn E QU 27Hcolumn2 EQU 28Hpagef2 EQU 29hcpage2 EQU 2aHccolumn2 EQU 2bHCOUNT EQU 60HCOUNT1 EQU 61H//COUNT2 EQU 62H//COUNT3 EQU 63HCOUNT4 EQU 64HCOUNT5 EQU 65Hcolumn1 EQU 30H pagef1 EQU 31h cpage1 EQU 32H ccolumn1 EQU 33H column3 EQU 34H pagef3 EQU 35h cpage3 EQU 36H ccolumn3 EQU 37HSHUJI1 EQU 50H SHUJI2 EQU 51H SHUJI3 EQU 52H SHUJI4 EQU 53H SHUJI5 EQU 54H SHUJI6 EQU 55H SHUJI7 EQU 56H SHUJI8 EQU 57H SHUJI9 EQU 58H SHUJI10 EQU 59H SHUJI11 EQU 5AH SHUJI12 EQU 5BH SHUJI13 EQU 5CH SHUJI14 EQU 5DH SHUJI15 EQU 5EH SHUJI16 EQU 38H SHUJI17 EQU 39H SHUJI18 EQU 3AH SHUJI19 EQU 3BH SHUJI20 EQU 3CH SHUJI21 EQU 3DH SHUJI22 EQU 3EHKEY1 BIT P1.1 KEY2 BIT P1.2 KEY3 BIT P1.3 KEY4 BIT P1.4 KEY5 BIT P1.5 KEY6 BIT P1.6 BT0 BIT 20H.0 BT1 BIT 20H.1 BT2 BIT 20H.2 BT3 BIT 20H.3 BT4 BIT 20H.4 BT5 BIT 20H.5BT6 BIT 20H.6BT7 BIT 20H.7BT8 BIT 21H.0BT9 BIT 21H.1BT10 BIT 21H.2BT11 BIT 21H.3BT12 BIT 21H.4BT13 BIT 21H.5/////////////////////////////////////////////////ORG 0000HLJMP STARTORG 000BHLJMP INTP0ORG 0030H;*********************************************主程序开始START: MOV TMOD,#01HMOV TH0,#(65536-50000) / 256MOV TL0,#(65536-50000) MOD 256SETB EASETB ET0SETB TR0LCALL CLEARLCALL INT ;调用初始化子程序/////////////////////////////////////////////////////MAIN: LCALL KEYSCAN1JB BT7,MAIN1MAIN4: LCALL CLEAR ;调用清屏子程序LCALL DISPLAY1LCALL KKKLCALL DISPLAYLCALL DISPLAY5LCALL DISPLAY6MAIN2: LCALL KKKLCALL DISPLAYLCALL KEYSCAN1JB BT7,MAIN1LJMP MAIN2MAIN1: LCALL CLEAR ;调用清屏子程序MAIN3: LCALL DISPLAY2LCALL DISPLAY3LCALL KEYSCAN1JB BT7,MAIN3LJMP MAIN4////////////////////////////////////////////////////////DISPLAY3:LCALL CHULI1MOV A,COUNT4CJNE A,#0,DISPLAY4RET//////////////////////////////////////////////////// DISPLAY4:CLR COUNT1CLR ALCALL CHULI1MOV A,COUNT4CJNE A,#1,PLAY1LCALL CLEARQQ1: LCALL KKKLCALL KEYSCANLCALL KEYCHULI1LCALL KEYCHULI11LCALL KEYCHULI2LCALL KEYCHULI21LCALL DISPLAYMOV COM,#00HLCALL PRR0LCALL PRM0LCALL CHULI1MOV A,COUNT4CJNE A,#1,PLAY1AJMP QQ1PLAY1: CLR AMOV COUNT1,#0MOV A,COUNT4CJNE A,#2,PLAY2LCALL CLEARQQ2: CLR ALCALL CHULI2MOV A,COUNT5CJNE A,#0,CHULCALL KEYSCANLCALL KEYCHU1LCALL KEYCHU11LCALL KEYCHU5LCALL KEYCHU51LCALL DISPLAY5MOV COM,#00HLCALL PRR0LCALL PRM0LCALL CHULI1CLR AMOV A,COUNT4CJNE A,#2,PLAY2LJMP QQ2 CHU: CLR AMOV A,COUNT5CJNE A,#1,PLAY3LCALL KEYSCANLCALL KEYCHU2LCALL KEYCHU21LCALL KEYCHU6LCALL KEYCHU61LCALL DISPLAY5MOV COM,#00HLCALL PRR0LCALL PRM0LCALL CHULI1CLR AMOV A,COUNT4CJNE A,#2,PLAY2LJMP QQ2///////////////////////////////////////////////// PLAY2: MOV COUNT5,#0CLR AMOV A,COUNT4CJNE A,#3,PLAY3LCALL CLEARQQ3: CLR ALCALL CHULI2MOV A,COUNT5CJNE A,#0,CHU1LCALL KEYSCANLCALL KEYCHU3LCALL KEYCHU31LCALL KEYCHU7LCALL KEYCHU71LCALL DISPLAY6CLR ALCALL CHULI1MOV A,COUNT4CJNE A,#3,PLAY2LJMP QQ3CHU1: CLR AMOV A,COUNT5CJNE A,#1,PLAY3LCALL KEYSCANLCALL KEYCHU4LCALL KEYCHU41LCALL KEYCHU8LCALL KEYCHU81LCALL DISPLAY6LCALL CHULI1CLR AMOV A,COUNT4CJNE A,#3,PLAY3LJMP QQ3PLAY3: LCALL CLEARMOV COUNT4,#0MOV COUNT5,#0RET////////////////显示“菜”/////////////////////////////////// DISPLAY2:MOV CODES,#0MOV column1,#16MOV pagef1,#0MOV CODES,#14CALL writeleft1///////////////////显示“单”////////////////////////////// MOV CODES,#0MOV column3,#00MOV pagef3,#0MOV CODES,#15CALL writeright1/////////////////显示“时”//////////////////////////////MOV CODES,#0MOV column1,#16MOV pagef1,#2MOV CODES,#16CALL writeleft1/////////////////显示“钟”/////////////////////////////// MOV CODES,#0MOV column1,#32MOV pagef1,#2MOV CODES,#17CALL writeleft1/////////////////显示“设”//////////////////////////////MOV column1,#48MOV pagef1,#2MOV CODES,#22CALL writeleft1/////////////////显示“定”/////////////////////////////// MOV CODES,#0MOV column3,#00MOV pagef3,#2MOV CODES,#23CALL writeright1/////////////////显示“开”////////////////////////////// MOV CODES,#0MOV column1,#16MOV pagef1,#4MOV CODES,#18CALL writeleft1/////////////////显示“关”/////////////////////////////// MOV CODES,#0MOV column1,#32MOV pagef1,#4MOV CODES,#19CALL writeleft1/////////////////显示“设”////////////////////////////// MOV CODES,#0MOV column1,#48MOV pagef1,#4MOV CODES,#22CALL writeleft1/////////////////显示“定”/////////////////////////////// MOV CODES,#0MOV column3,#00MOV pagef3,#4MOV CODES,#23CALL writeright1/////////////////显示“调”////////////////////////////// MOV CODES,#0MOV column1,#16MOV pagef1,#6MOV CODES,#20CALL writeleft1/////////////////显示“光”/////////////////////////////// MOV CODES,#0MOV pagef1,#6MOV CODES,#21CALL writeleft1/////////////////显示“设”//////////////////////////////MOV CODES,#0MOV column1,#48MOV pagef1,#6MOV CODES,#22CALL writeleft1/////////////////显示“定”///////////////////////////////MOV CODES,#0MOV column3,#00MOV pagef3,#6MOV CODES,#23CALL writeright1LJMP BB///////////////////显示“星”///////////////////////////// DISPLAY1:MOV CODES,#0MOV column1,#00MOV pagef1,#0MOV CODES,#0lcall writeleft1//////////////////显示“梦”////////////////////////////////// MOV CODES,#0MOV column1,#16MOV pagef1,#0MOV CODES,#1CALL writeleft1//////////////////显示“奕”/////////////////////////////MOV CODES,#0MOV column1,#32MOV pagef1,#0MOV CODES,#2CALL writeleft1////////////////显示“缘”/////////////////////////////MOV CODES,#0MOV column1,#48MOV pagef1,#0MOV CODES,#3CALL writeleft1LJMP BB/////////////////显示“time”////////////////////////////KKK: MOV CODES,#0MOV column,#00MOV pagef,#2MOV CODES,#13CALL writeleftMOV CODES,#0MOV column,#8MOV pagef,#2MOV CODES,#14CALL writeleftMOV CODES,#0MOV column,#16MOV pagef,#2MOV CODES,#15CALL writeleftMOV CODES,#0MOV column,#24MOV pagef,#2MOV CODES,#16CALL writeleftMOV CODES,#0MOV column,#32MOV pagef,#2 ;显示:MOV CODES,#11CALL writeleftRET///////////////“L1开”///////////////////////////////////// DISPLAY5: MOV C ODES,#0MOV column1,#00MOV pagef1,#4MOV CODES,#11CALL writeleft1MOV CODES,#0MOV column,#8MOV pagef,#4MOV CODES,#1CALL writeleftMOV CODES,#0MOV column,#16MOV pagef,#4 ;显示:MOV CODES,#11CALL writeleftMOV CODES,#0MOV SHUJI7,#0CLR AMOV A,MINUTE1MOV B,#10DIV ABMOV A,BMOV SHUJI7,AMOV column,#56MOV pagef,#4MOV CODES,SHUJI7 ;分低位CALL writeleftMOV CODES,#0MOV SHUJI8,#0MOV CODES,#0CLR AMOV A,MINUTE1MOV B,#10DIV ABMOV SHUJI8,AMOV column,#48MOV pagef,#4MOV CODES,SHUJI8 ;分高位CALL writeleftMOV CODES,#0MOV column,#40MOV pagef,#4 ;显示:MOV CODES,#11CALL writeleftMOV CODES,#0MOV SHUJI9,#0CLR AMOV A,HOUR1MOV B,#10DIV ABMOV A,BMOV SHUJI9,Amov column,#32mov pagef,#4MOV CODES,SHUJI9 ;时低位lcall writeleftMOV CODES,#0MOV SHUJI10,#0MOV CODES,#0CLR AMOV A,HOUR1MOV B,#10DIV ABMOV SHUJI10,AMOV column,#24MOV pagef,#4MOV CODES,SHUJI10 ;时高位CALL writeleft///////////////L1关/////////////////////////MOV CODES,#0MOV column3,#48MOV pagef3,#4MOV CODES,#10CALL writeright1MOV CODES,#0MOV SHUJI11,#0CLR AMOV A,MINUTE2MOV B,#10DIV ABMOV A,BMOV SHUJI11,AMOV column2,#40MOV pagef2,#4MOV CODES,SHUJI11 ;分低位CALL writerightMOV CODES,#0MOV SHUJI12,#0MOV CODES,#0CLR AMOV A,MINUTE2MOV B,#10DIV ABMOV SHUJI12,AMOV column2,#32MOV pagef2,#4MOV CODES,SHUJI12 ;分高位CALL writerightMOV CODES,#0MOV column2,#24MOV pagef2,#4 ;显示:MOV CODES,#11CALL writerightMOV CODES,#0MOV SHUJI13,#0CLR AMOV A,HOUR2MOV B,#10DIV ABMOV A,BMOV SHUJI13,Amov column2,#16mov pagef2,#4MOV CODES,SHUJI13 ;时低位CALL writerightMOV CODES,#0MOV SHUJI14,#0MOV CODES,#0CLR AMOV A,HOUR2MOV B,#10DIV ABMOV SHUJI14,AMOV column2,#8MOV pagef2,#4MOV CODES,SHUJI14 ;时高位CALL writerightMOV CODES,#0MOV column2,#00MOV pagef2,#4MOV CODES,#12 ;时高位CALL writerightLJMP BB///////////////“L2开”/////////////////////////////////////DISPLAY6: MOV CODES,#0MOV column1,#00MOV pagef1,#6MOV CODES,#11CALL writeleft1MOV CODES,#0MOV column,#8MOV pagef,#6MOV CODES,#2CALL writeleftMOV CODES,#0MOV column,#16MOV pagef,#6 ;显示:MOV CODES,#11CALL writeleftMOV CODES,#0MOV SHUJI15,#0CLR AMOV A,MINUTE3MOV B,#10DIV ABMOV A,BMOV SHUJI15,AMOV column,#56MOV pagef,#6MOV CODES,SHUJI15 ;分低位CALL writeleftMOV SHUJI16,#0MOV CODES,#0CLR AMOV A,MINUTE3MOV B,#10DIV ABMOV SHUJI16,AMOV column,#48MOV pagef,#6MOV CODES,SHUJI16 ;分高位CALL writeleftMOV CODES,#0MOV column,#40MOV pagef,#6 ;显示:MOV CODES,#11CALL writeleftMOV CODES,#0MOV SHUJI17,#0CLR AMOV A,HOUR3MOV B,#10DIV ABMOV A,BMOV SHUJI17,Amov column,#32mov pagef,#6MOV CODES,SHUJI17 ;时低位lcall writeleftMOV SHUJI8,#0MOV CODES,#0CLR AMOV A,HOUR3MOV B,#10DIV ABMOV SHUJI18,AMOV column,#24MOV pagef,#6MOV CODES,SHUJI18 ;时高位CALL writeleft///////////////L2关/////////////////////////MOV CODES,#0MOV column3,#48MOV pagef3,#6MOV CODES,#9CALL writeright1MOV CODES,#0MOV SHUJI19,#0CLR AMOV A,MINUTE4MOV B,#10DIV ABMOV A,BMOV SHUJI19,AMOV column2,#40MOV pagef2,#6MOV CODES,SHUJI19 ;分低位CALL writerightMOV SHUJI20,#0MOV CODES,#0CLR AMOV A,MINUTE4MOV B,#10DIV ABMOV SHUJI20,AMOV column2,#32MOV pagef2,#6MOV CODES,SHUJI20 ;分高位CALL writerightMOV CODES,#0MOV column2,#24MOV pagef2,#6 ;显示:MOV CODES,#11CALL writerightMOV CODES,#0MOV SHUJI21,#0CLR AMOV A,HOUR4MOV B,#10DIV ABMOV A,BMOV SHUJI21,Amov column2,#16mov pagef2,#6MOV CODES,SHUJI21 ;时低位CALL writerightMOV SHUJI22,#0MOV CODES,#0CLR AMOV A,HOUR4MOV B,#10DIV ABMOV SHUJI22,AMOV column2,#8MOV pagef2,#6MOV CODES,SHUJI22 ;时高位CALL writerightMOV column2,#00MOV pagef2,#6MOV CODES,#12 ;时高位CALL writerightBB: RET////////////////////////////////////////////////////DISPLAY: MOV CODES,#0MOV SHUJI1,#0CLR AMOV A,SECONDMOV B,#10DIV ABMOV A,BMOV SHUJI1,AMOV column2,#40MOV pagef2,#2MOV CODES,SHUJI1 ;秒低位CALL writerightMOV SHUJI2,#0MOV CODES,#0CLR AMOV A,SECONDMOV B,#10DIV ABMOV SHUJI2,AMOV column2,#32MOV pagef2,#2MOV CODES,SHUJI2 ;秒高位CALL writerightMOV CODES,#0MOV column2,#24MOV pagef2,#2 ;显示:MOV CODES,#11CALL writerightMOV CODES,#0MOV SHUJI3,#0CLR AMOV A,MINUTEMOV B,#10MOV A,BMOV SHUJI3,AMOV column2,#16MOV pagef2,#2MOV CODES,SHUJI3 ;分低位CALL writerightMOV SHUJI4,#0MOV CODES,#0CLR AMOV A,MINUTEMOV B,#10DIV ABMOV SHUJI4,AMOV column2,#8MOV pagef2,#2MOV CODES,SHUJI4 ;分高位CALL writerightMOV CODES,#0MOV column2,#00MOV pagef2,#2 ;显示:MOV CODES,#11CALL writerightMOV CODES,#0MOV SHUJI5,#0CLR AMOV A,HOURMOV B,#10DIV ABMOV A,BMOV SHUJI5,Amov column,#56mov pagef,#2MOV CODES,SHUJI5 ;时低位lcall writeleftMOV SHUJI6,#0MOV CODES,#0CLR AMOV A,HOURMOV B,#10MOV SHUJI6,AMOV column,#48MOV pagef,#2MOV CODES,SHUJI6 ;时高位CALL writeleftRET////////////////////////////////////////////////writeleft1: ; 左半屏写入16*16数字子程序MOV DPTR,#TABLE2PUSH column1MOV cpage1,#2MOV ccolumn1,#0MOV A,pagef1ANL A,#07hORL A,#0b8hMOV COM,ACALL PRM0MOV A,column1ORL A,#40hMOV COM,ACALL PRM0MOV A,CODESMOV B,#32MUL ABADD A,DPLMOV DPL,AMOV A,BADDC A,DPHMOV DPH,AlOOp3: MOV A,#00hMOVC A,@A+DPTRMOV DAT,ACALL PRM1INC ccolumn1MOV A,ccolumn1INC DPTRCJNE A,#16,lOOp3CLR CYDEC cpage1INC pagef1MOV A,cpage1CJNE A,#0,DD1RET//////////////////////////////////////////////DD1: MOV A,pagef1ANL A,#07hORL A,#0b8hMOV COM,ACALL PRM0POP column1MOV A,column1ANL A,#3fhORL A,#40hMOV COM,ACALL PRM0MOV ccolumn1,#0AJMP lOOp3//////////////////////////////////////////////writeright1: ; 右半屏写入16*16数字子程序MOV DPTR,#TABLE2push column3MOV cpage3,#2MOV ccolumn3,#0MOV A,pagef3ANL A,#07hORL A,#0b8hMOV COM,ACALL PRR0MOV A,column3ORL A,#40hMOV COM,ACALL PRR0MOV A,CODESMOV B,#32MUL ABADD A,DPLMOV DPL,AMOV A,BADDC A,DPHMOV DPH,AlOOp4: MOV A,#00hMOVC A,@A+DPTRMOV DAT,ACALL PRR1INC DPTRINC ccolumn3MOV A,ccolumn3CJNE A,#16,lOOp4CLR CYDEC cpage3INC pagef3MOV A,cpage3CJNE A,#0,DD2RET/////////////////////////////////////////////DD2: MOV A,pagef3ANL A,#07hORL A,#0b8hMOV COM,ACALL PRR0POP column3MOV A,column3ANL A,#3fhORL A,#40hMOV COM,ACALL PRR0MOV ccolumn3,#0AJMP lOOp4///////////////////////////////////////////// writeleft: ; 左半屏写入8*16数字子程序MOV DPTR,#TABLE1PUSH columnMOV cpage,#2MOV ccolumn,#0MOV A,pagefANL A,#07hORL A,#0b8hMOV COM,ACALL PRM0MOV A,columnORL A,#40hMOV COM,ACALL PRM0MOV A,CODESMOV B,#16MUL ABADD A,DPLMOV DPL,AMOV A,BADDC A,DPHMOV DPH,A////////////////////////////////////////////////////LOOP1: MOV A,#00hMOVC A,@A+DPTRMOV DAT,ACALL PRM1INC DPTRINC ccolumnMOV A,ccolumnCJNE A,#8,LOOP1CLR CYDEC cpageINC pagefMOV A,cpageCJNE A,#0,DD3RET/////////////////////////////////////DD3: MOV A,pagefANL A,#07hORL A,#0b8hMOV COM,ACALL PRM0POP columnMOV A,columnANL A,#3fhORL A,#40hMOV COM,ACALL PRM0MOV ccolumn,#0AJMP LOOP1//////////////////////////////////////////////// writeright: ; 右半屏写入8*16数字子程序MOV DPTR,#TABLE1PUSH column2MOV cpage2,#2MOV ccolumn2,#0MOV A,pagef2ANL A,#07hORL A,#0b8hMOV COM,ACALL PRR0MOV A,column2ORL A,#40hMOV COM,ACALL PRR0MOV A,CODESMOV B,#16MUL ABADD A,DPLMOV DPL,AMOV A,BADDC A,DPHMOV DPH,A////////////////////////////////////////////////////LOOP: MOV A,#00hMOVC A,@A+DPTRMOV DAT,ACALL PRR1INC DPTRINC ccolumn2MOV A,ccolumn2CJNE A,#8,LOOPCLR CYDEC cpage2INC pagef2MOV A,cpage2CJNE A,#0,DD4RET/////////////////////////////////////DD4: MOV A,pagef2ANL A,#07hORL A,#0b8hMOV COM,ACALL PRR0POP column2MOV A,column2ANL A,#3fhORL A,#40hMOV COM,ACALL PRR0MOV ccolumn2,#0AJMP LOOP//////////////////////////////////////////////PRM0: CALL DECLR CSA ;写指令代码子程序(左)SETB CSBCLR RSCLR RWMOV OUTPUT,COMSETB ECLR ERET///////////////////////////////////////////////PRM1: CALL DECLR CSA ;写显示数据子程序(左)SETB CSBSETB RSCLR RWMOV OUTPUT,DATSETB ECLR ERET////////////////////////////////////////////////PRR0: CALL DECLR CSB ;写指令代码子程序(右)SETB CSACLR RSCLR RWMOV OUTPUT,COMSETB ECLR ERETPRR1: CALL DECLR CSB ;写显示数据子程序(右)SETB CSASETB RSCLR RWMOV OUTPUT,DATSETB ECLR ERET////////////////////////////////////////////DE: MOV R7,#10DEE2: MOV R6,#25DJNZ R6,$DJNZ R7,DEE2RET////////////////////////////////////////////CLEAR: MOV R4,#00H ;清屏子程序CLEAR1: MOV A,R4ORL A,#0B8HMOV COM,ALCALL PRM0LCALL PRR0MOV COM,#40HLCALL PRM0LCALL PRR0MOV R3,#40HCLEAR2: MOV DA T,#00HLCALL PRM1LCALL PRR1DJNZ R3,CLEAR2INC R4CJNE R4,#08H,CLEAR1RET///////////////////////////////////////////////////INT: MOV COM,#0C0H ;初始化子程序,设置显示起始行为第一行LCALL PRM0LCALL PRR0MOV COM,#3FH ;开显示设置LCALL PRM0LCALL PRR0RET////////////////定时器中断子程序////////////////////////////////INTP0: MOV TH0,#(65536-50000) / 256MOV TL0,#(65536-50000) MOD 256INC COUNTMOV A,COUNTCJNE A,#20,LOPMOV COUNT,#0CALL CHULILOP: RETI/////////////////////////////////////////////////CHULI: INC SECONDMOV A,SECONDCJNE A,#60,LOPMOV SECOND,#0INC MINUTEMOV A,MINUTECJNE A,#60,LOPMOV MINUTE,#0INC HOURMOV A,HOURCJNE A,#24,LOPMOV HOUR,#1RETI//////////////////按键处理模式//////////////////////////////// KEYSCAN: JB BT0,K11JB KEY1,K12SETB BT0LJMP K13K12: CLR BT0CLR BT1LJMP K13K11: JB KEY1,K12JB BT1,K13SETB BT1INC COUNT1MOV A,COUNT1CJNE A,#3,K13MOV COUNT1,#0K13: RET////////////////分加/////////////////////////KEYCHULI1:MOV A,COUNT1CJNE A,#1,K23CLR AIXINGMOV AIXING,MINUTECALL KK1MOV MINUTE,AIXINGRETKEYCHU1: MOV A,COUNT1CJNE A,#1,K23CLR AIXINGMOV AIXING,MINUTE1CALL KK1MOV MINUTE1,AIXINGRETKEYCHU2: MOV A,COUNT1CJNE A,#1,K23CLR AIXINGMOV AIXING,MINUTE2CALL KK1MOV MINUTE2,AIXINGRETKEYCHU3: MOV A,COUNT1CJNE A,#1,K23CLR AIXINGMOV AIXING,MINUTE3CALL KK1MOV MINUTE3,AIXINGRETKEYCHU4: MOV A,COUNT1CJNE A,#1,K23CLR AIXINGMOV AIXING,MINUTE4CALL KK1MOV MINUTE4,AIXINGRETKK1: JB BT2,K21JB KEY2,K22SETB BT2LJMP K23K22: CLR BT2CLR BT3LJMP K23K21: JB KEY2,K22JB BT3,K23SETB BT3INC AIXINGMOV A,AIXINGCJNE A,#60,K23MOV AIXING,#0K23: RET//////////////////时加///////////////////////////////// KEYCHULI11:MOV A,COUNT1CJNE A,#1,K33CLR AIXING1MOV AIXING1,HOURCALL KK2MOV HOUR,AIXING1RETKEYCHU11: MOV A,COUNT1CJNE A,#1,K33CLR AIXING1MOV AIXING1,HOUR1CALL KK2MOV HOUR1,AIXING1RETKEYCHU21: MOV A,COUNT1CJNE A,#1,K33CLR AIXING1MOV AIXING1,HOUR2CALL KK2MOV HOUR2,AIXING1RETKEYCHU31: MOV A,COUNT1CJNE A,#1,K33MOV AIXING1,HOUR3CALL KK2MOV HOUR3,AIXING1RETKEYCHU41: MOV A,COUNT1CJNE A,#1,K33CLR AIXING1MOV AIXING1,HOUR4CALL KK2MOV HOUR4,AIXING1RETKK2: JB BT4,K31JB KEY3,K32SETB BT4LJMP K33K32: CLR BT4CLR BT5LJMP K33K31: JB KEY3,K32JB BT5,K33SETB BT5INC AIXING1MOV A,AIXING1CJNE A,#24,K33MOV AIXING1,#0K33: RET/////////////////分减/////////////////////////////// KEYCHULI2:MOV A,COUNT1CJNE A,#2,K43CLR AIXINGMOV AIXING,MINUTECALL KK3MOV MINUTE,AIXINGRETKEYCHU5: MOV A,COUNT1CJNE A,#2,K43CLR AIXINGMOV AIXING,MINUTE1CALL KK3MOV MINUTE1,AIXINGRETKEYCHU6: MOV A,COUNT1CJNE A,#2,K43CLR AIXINGMOV AIXING,MINUTE2CALL KK3MOV MINUTE2,AIXINGRETKEYCHU7: MOV A,COUNT1CJNE A,#2,K43CLR AIXINGMOV AIXING,MINUTE3CALL KK3MOV MINUTE3,AIXINGRETKEYCHU8: MOV A,COUNT1CJNE A,#2,K43CLR AIXINGMOV AIXING,MINUTE4CALL KK3MOV MINUTE4,AIXINGRETKK3: JB BT2,K41JB KEY2,K42SETB BT2LJMP K43K42: CLR BT2CLR BT3LJMP K43K41: JB KEY2,K42JB BT3,K43SETB BT3DEC AIXINGMOV A,AIXINGCJNE A,#0FFH,K43MOV AIXING,#59K43: RET///////////////时减////////////////////////////////// KEYCHULI21:MOV A,COUNT1CJNE A,#2,K53CLR AIXING1MOV AIXING1,HOURMOV HOUR,AIXING1RETKEYCHU51:MOV A,COUNT1CJNE A,#2,K53CLR AIXING1MOV AIXING1,HOUR1CALL KK4MOV HOUR1,AIXING1RETKEYCHU61:MOV A,COUNT1CJNE A,#2,K53CLR AIXING1MOV AIXING1,HOUR2CALL KK4MOV HOUR2,AIXING1RETKEYCHU71:MOV A,COUNT1CJNE A,#2,K53CLR AIXING1MOV AIXING1,HOUR3CALL KK4MOV HOUR3,AIXING1RETKEYCHU81:MOV A,COUNT1CJNE A,#2,K53CLR AIXING1MOV AIXING1,HOUR4CALL KK4MOV HOUR4,AIXING1RETKK4: JB BT4,K51JB KEY3,K52SETB BT4LJMP K53K52: CLR BT4CLR BT5LJMP K53K51: JB KEY3,K52JB BT5,K53DEC AIXING1MOV A,AIXING1CJNE A,#0FFH,K53MOV AIXING1,#23K53: RET////////////////切换模式////////////////////////////////////// KEYSCAN1: JB BT8,K61JB KEY4,K62SETB BT8LJMP K63K62: CLR BT8CLR BT9LJMP K63K61: JB KEY4,K62JB BT9,K63SETB BT9CPL BT7K63: RET///////////////选择模式////////////////////////////////// CHULI1: JB BT10,K71JB KEY5,K72SETB BT10LJMP K73K72: CLR BT10CLR BT11LJMP K73K71: JB KEY5,K72JB BT11,K73SETB BT11INC COUNT4MOV A,COUNT4CJNE A,#5,K73MOV COUNT4,#0K73: RET///////////////选择模式调制////////////////////////////////// CHULI2: JB BT12,K81JB KEY6,K82SETB BT12LJMP K83K82: CLR BT12CLR BT13LJMP K83K81: JB KEY6,K82JB BT13,K83SETB BT13INC COUNT5MOV A,COUNT5CJNE A,#2,K83MOV COUNT5,#0K83: RET;*************************************字模表table1: ;数字字模表DB 0F0h,0F8h, 0Ch,04h,04h,0Ch,0F8h,0F0h,0Fh,1Fh,30h,20h,20h,30h,1Fh,0Fh ;0 /* (8 X 16 , 宋体)*/DB 00h,00h,08h,0F8h,0FCh,00h,00h,00h,00h,00h,20h,3Fh,3Fh,20h,00h,00h ;1 /* (8 X 16 , 宋体)*/DB 30h,38h,0Ch,04h,04h,0Ch,0F8h,0F0h,20h,30h,38h,2Ch,26h,23h,21h,38h ;2 /* (8 X 16 , 宋体)*/DB 10h,18h,0Ch,84h,84h,0CCh,78h,30h,08h,18h,30h,20h,20h,31h,1Fh,0Eh ;3/* (8 X 16 , 宋体)*/DB 00h,0C0h,70h,18h,0FCh,0FEh,00h,00h,07h,05h,04h,24h,3Fh,3Fh,24h,04h ;4 /* (8 X 16 , 宋体)*/DB 0FCh,0FCh,0C4h,44h,44h,0C4h,84h,04h,08h,18h,30h,20h,20h,30h,1Fh,0Fh ;5 /* (8 X 16 , 宋体)*/DB 0F0h,0F8h,8Ch, 44h,44h,0CCh,98h,10h,0Fh,1Fh,30h,20h,20h,30h,1Fh,0Fh ;6 /* (8 X 16 , 宋体)*/DB 1Ch,0Ch,0Ch,0Ch,0CCh,0ECh,3Ch,1Ch,00h,00h,3Ch,3Fh,03h,00h,00h,00h ;7 /* (8 X 16 , 宋体)*/DB 30h,78h,0CCh,84h,84h,0CCh,78h,30h,0Eh,1Fh,31h,20h,20h,31h,1Fh,0Eh ;8 /* (8 X 16 , 宋体)*/DB 0F0h,0F8h,0Ch,04h,04h,0Ch,0F8h,0F0h,08h,19h,33h,22h,22h,33h,1Fh,0Fh ;9 /* (8 X 16 , 宋体)*/DB 0F0h,0F8h,0Ch,04h,04h,0Ch,0F8h,0F0h,0Fh,1Fh,30h,20h,20h,30h,1Fh,0Fh ;10 /* (8 X 16 , 宋体)*/DB 00H ,00H ,00H ,0C0H ,0C0H ,00H, 00H ,00H ,00H ,00H, 00H ,30H ,30H ,00H ,00H ,00H;":",11/* (8 X 16 , 宋体)*/DB 00H, 00H ,00H, 00H, 00H ,00H ,00H ,00H, 00H ,01H, 01H ,01H, 01H ,01H, 01H ,01H;"-",12 /* (8 X 16 , 宋体)*/DB 00H ,80H, 80H ,0E0H ,80H ,80H, 00H, 00H ,00H, 00H ,00H ,1FH, 20H, 20H, 00H ,00H;"t",13/* (8 X 16 , 宋体)*/DB 00H ,80H, 80H ,98H ,00H ,00H ,00H, 00H, 00H ,20H ,20H ,3FH, 20H, 20H ,00H ,00H;"i",14 /* (8 X 16 , 宋体)*/DB 80H, 80H ,80H ,80H ,80H ,00H ,00H ,00H ,20H, 3FH ,00H ,3FH ,00H ,3FH ,20H, 00H;"m",15/* (8 X 16 , 宋体)*/DB 00H ,00H ,80H ,80H, 80H ,00H ,00H ,00H ,00H ,1FH ,22H ,22H ,22H ,13H, 00H ,00H;"e",16 /* (8 X 16 , 宋体)*/table2: ;汉字DB 00H,00H,00H,0BEH,2AH,2AH,2AH,0EAH,2AH,2AH,2AH,2AH,3EH,00H,00H,00H;DB 00H,48H,46H,41H,49H,49H,49H,7FH,49H,49H,49H,49H,49H,41H,40H,00H;"星",0/* (16 X 16 , System )*/DB 40H,44H,24H,14H,0FFH,94H,64H,40H,24H,14H,0FFH,0CH,34H,64H,24H,00H;DB 00H,80H,88H,88H,46H,45H,29H,31H,11H,09H,05H,03H,01H,00H,00H,00H;"梦",1/* (16 X 16 , System )*/DB 40H,44H,24H,94H,44H,3CH,05H,46H,84H,7CH,04H,14H,64H,24H,04H,00H;DB 00H,84H,85H,44H,24H,14H,0CH,07H,0CH,14H,24H,64H,0C4H,44H,04H,00H;"奕",2/* (16 X 16 , System )*/DB 20H,38H,0A7H,62H,10H,20H,0A0H,6CH,6BH,0AAH,2AH,3AH,26H,0A0H,20H,00H;DB 12H,13H,12H,0AH,29H,25H,12H,12H,49H,85H,7FH,02H,0DH,18H,08H,00H;"缘",3/* (16 X 16 , System )*/DB 00H,00H,00H,00H,0FFH,00H,00H,00H,80H,7FH,80H,00H,00H,00H,00H,00H;DB 40H,20H,18H,07H,80H,41H,36H,18H,07H,00H,01H,06H,18H,70H,20H,00H;"从",4/* (16 X 16 , System )*/DB 08H,08H,0C8H,0FFH,48H,88H,08H,00H,0FEH,02H,02H,02H,0FEH,00H,00H,00H;DB 04H,03H,00H,0FFH,00H,41H,30H,0CH,03H,00H,00H,00H,3FH,40H,78H,00H;"机",5/* (16 X 16 , System )*/DB 00H,80H,80H,80H,80H,80H,80H,80H,80H,80H,80H,80H,80H,0C0H,80H,00H;DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H;"一",6/* (16 X 16 , System )*/DB 00H,00H,04H,04H,04H,04H,04H,04H,04H,04H,04H,06H,04H,00H,00H,00H;DB 00H,10H,10H,10H,10H,10H,10H,10H,10H,10H,10H,10H,10H,18H,10H,00H;"二",7/* (16 X 16 , System )*/DB 00h,00h,00h,00h,00h,00h,00h,30h,30h,00h,00h,00h,00h,00h,00h,00h ; ":",8DB 00h,00h,00h,00h,00h,00h,00h,0Ch,0Ch,00h,00h,00h,00h,00h,00h,00h;/* (16 X 16 , 宋体)*/DB00H,82H,82H,82H,0BAH,0AAH,0AAH,0ABH,0AAH,0AAH,0BAH,82H,82H,0C2H,80H,00H; DB 02H,41H,40H,20H,10H,0EH,02H,02H,02H,3EH,40H,40H,42H,41H,70H,00H;"亮",9/* (16 X 16 , 宋体)*/DB 00H,02H,02H,0E2H,02H,02H,82H,7EH,0C2H,02H,82H,42H,33H,02H,00H,00H;DB 00H,40H,21H,10H,08H,06H,01H,00H,00H,03H,0CH,18H,30H,60H,20H,00H;"灭",10/* (16 X 16 , 宋体)*/DB 08H ,0F8H, 08H ,00H, 00H ,00H ,00H ,00H, 00H, 00H ,00H, 00H, 00H ,00H, 00H, 00H;DB 20H ,3FH ,20H ,20H ,20H ,20H, 30H, 00H ,00H ,00H ,00H ,00H ,00H, 00H ,00H, 00H;"L",11/* (16 X 16 , 宋体)*/DB 00H,00H,00H,00H,00H,00H,00H,00H,0FH,00H,10H,80h,16H,80H,16H,80H;DB 10H,80H,0FH,00H,00H,00H,00H,00H,00H,00H,00H,00h,00H,00H,00H,00H;"亮",12"E",12 /* (16 X 16 , 宋体)*/DB 08H ,0F8H ,08H ,08H ,08H ,10H ,0E0H ,00H ,00H ,00H ,00H ,00H ,00H ,00H, 00H,00H; DB20H ,3FH ,20H ,20H ,20H ,10H ,0FH ,00H ,00H ,00H ,00H ,00H ,00H ,00H ,00H ,00H;"D",13/* (16 X 16 , 宋体)*/////////"14-23"////////////////模式选择///////////////////////////////////////DB 02H,02H, 32H ,52H ,92H ,1FH ,32H ,52H ,12H ,1FH ,92H ,52H ,32H ,02H ,02H ,00H;DB 00H,42H, 42H, 22H ,12H ,0AH ,06H ,0FFH ,06H ,0AH ,12H ,32H ,62H ,22H ,02H ,00H;"菜",14/* (16 X 16 , 宋体)*/DB 00H ,00H ,0F8H ,28H ,29H ,2EH ,2AH ,0F8H ,28H ,2CH ,2BH ,2AH ,0F8H ,00H ,00H ,00H; DB 08H ,08H ,0BH ,09H ,09H ,09H ,09H ,0FFH ,09H ,09H ,09H ,09H ,0BH ,08H ,08H ,00H;"单",15/* (16 X 16 , 宋体)*/DB 00H ,0FCH ,44H ,44H ,44H ,0FCH ,10H ,90H ,10H ,10H ,10H ,0FFH ,10H ,10H ,10H ,00H; DB 00H ,07H ,04H ,04H ,04H ,07H ,00H ,00H ,03H ,40H ,80H ,7FH ,00H ,00H ,00H, 00H;"时",16/* (16 X 16 , 宋体)*/DB 40H ,30H, 2CH ,0EBH ,28H ,28H ,00H ,0F8H ,08H ,08H ,0FFH ,08H ,08H ,0F8H ,00H ,00H;DB 01H ,01H ,01H ,0FFH ,41H ,21H ,00H, 01H ,01H ,01H ,0FFH ,01H ,01H ,01H ,00H, 00H;"钟",17/* (16 X 16 , 宋体)*/DB 40H ,42H, 42H ,42H ,42H ,0FEH ,42H ,42H ,42H ,42H ,0FEH ,42H ,42H ,42H, 42H ,00H; DB 00H ,40H ,20H ,10H ,0CH ,03H ,00H ,00H ,00H ,00H ,7FH ,00H ,00H ,00H ,00H ,00H;"开",18/* (16 X 16 , 宋体)*/DB 00H,10H ,10H ,10H ,11H ,1EH ,14H ,0F0H ,10H ,18H ,17H ,12H ,18H, 10H ,00H, 00H;DB 01H,81H ,41H ,21H ,11H ,09H ,05H ,03H ,05H ,09H ,31H ,61H ,0C1H, 41H ,01H ,00H;"关",19/* (16 X 16 , 宋体)*/DB 20H ,21H ,0EEH ,04H ,00H ,00H ,0FFH ,29H ,0A9H, 0BFH ,0A9H ,0A9H ,01H ,0FFH ,00H ,00H;DB 00H ,00H ,1FH ,88H ,44H ,30H ,0FH ,00H ,0FH ,04H ,04H ,4FH ,80H ,7FH ,00H ,00H;"调",20/* (16 X 16 , 宋体)*/DB 00H ,40H ,42H, 44H ,5CH ,0C8H ,40H ,7FH ,40H ,0C0H ,50H ,4EH ,44H ,60H ,40H ,00H; DB 00H, 80H ,40H ,20H ,18H ,07H ,00H ,00H ,00H ,3FH ,40H ,40H ,40H ,40H ,78H ,00H;"光",21/* (16 X 16 , 宋体)*/DB 40H ,41H ,0CEH, 04H ,00H ,80H ,40H ,0BEH ,82H ,82H ,82H ,0BEH ,0C0H,40H ,40H ,00H;DB 00H ,00H ,7FH ,20H ,90H ,80H ,40H ,43H ,2CH ,10H ,10H ,2CH ,43H ,0C0H ,40H, 00H;"设",22/* (16 X 16 , 宋体)*/DB 00H ,10H ,0CH ,0A4H ,24H ,24H ,25H ,0E6H ,24H ,24H, 24H ,24H ,14H, 0CH,04H,00H; DB 40H ,20H ,18H ,07H ,08H ,10H ,20H ,7FH ,42H ,42H, 42H ,42H ,40H,40H ,00H,00H;"定",23/* (16 X 16 , 宋体)*/。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5 总结 ………………………………………………………………………………………14 附录1: 程序代码 附录2:12864LCD显示计算器键盘按键实验Proteus仿真图
1 课程设计概述和要求
1.1 课程设计任务与要求
设计任务:利用 AT89C51 单片机结合 12864LCD 显示器设计计算器键盘按键。 设计要求 1:本设计实现一个 12864LCD 显示 12864LCD 显示器设计计算器
1.2 课程设计目的思路
1、先把与题目有关的芯片资料找到,熟悉一下芯片资料 2、把此程序的电路图看懂,了解一下它的实现原理,以及实现的功能。 3、分析一下此程序的各部分的功能,各零件的工作原理。 4、对程序进行调试,分析调试结果,观察并得出结论。
1.3 课程设计需要配置的环境
1、一台主机,一台显示器 2、Keil uVision3/Keil uVision4 应用程序软件 3、ISIS 7 Professional 仿真软件 4、老师交给的仿真电路图,及案例 5、纸张,以及一些参考资料
AT89C51 芯片图如下图所示。
图 AT89C51 芯片图 (1)AT89C51 主要特性:
与 MCS-51 兼容;4K 字节可编程闪烁存储器;寿命:1000 写/擦循环; 数据保留时间:10 年;全静态工作:0Hz-24MHz;三级程序存储器锁定; 128×8 位内部 RAM;32 可编程 I/O 线;两个 16 位定时器/计数器;5 个中断 源;可编程串行通道;低功耗的闲置和掉电模式;片内振荡器和时钟电路。 2.2.3 计算器键盘
1、RS,R/W 的配合选择决定控制界面的 4 种模式:
RS
R/W
功能说明
L
L
MPU 写指令到指令暂存器(IR)
读出忙标志(BF)及地址记数器(AC)
L
H
的状态
H
L
MPU 写入数据到数据暂存器(DR)
H
H
MPU 从数据暂存器(DR)中读出数据
2、E 信号
E 状态
执行动作
结果
高——>低
I/O 缓冲——>DR 配合/W 进行写数据或指令
4
标准的 MCS-51 指令集和输出管脚相兼容。由于将多功能 8 位 CPU 和闪烁存 储 器 组 合 在 单 个 芯 片 中 , ATMEL 的 AT89C51 是 一 种 高 效 微 控 制 器 , AT89C2051 是它的一种精简版本。AT89C 单片机为很多嵌入式控制系统提供 了一种灵活性高且价廉的方案。
键盘电路的设计原理 首先行列式键盘中的键实际上就是一个机械开关,该开关位于行线和列线的交点处,通 过按键加以连接。当按下某个键时,该交点的行线和列线接通,相应行线或列线上的的 电平发生变化,从而可以确定被按下的功能键。4 行×4 列的行列式键盘如图:
其次运用线翻转法判断有无键按下: 键盘的高 4 位用于列控制,低 4 位用于行控制,并将全部行线 P0.0~P0.3 置低电平,然后 再检查列线电平的状态。只要其中有一列电平为低,则表示右键按下,并且被按下的键位于 低电平和 4 根行线交叉的某一个按键中。 判断被按下键的位置: 依次将所有的行线 P0.4~P0.77 置为低电平,在判断 4 根列线的电平状态,当遇到某一列的 电平为低时表示此键按下。
16×2 12864 液晶显 示电路
4×4 非 编码行 列式矩 阵
2.2 元件解析
2.2.1 12864 LCD 芯片
1、主要技术参数和显示特性: 电源:VDD 3.3V~+5V(内置升压电路,无需负压); 显示内容:128 列× 64 行 显示颜色:黄绿 显示角度:6:00 钟直视 LCD 类型:STN 与 MCU 接口:8 位或 4 位并行/3 位串行 配置 LED 背光 多种软件功能:光标显示、画面移位、自定义字符、睡眠模式等
LCD1
LGM12641BS1R
CS1 CS2 GND VCC V0 DI R/W E DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 RST -Vout
CS1 1 CS2 2
3 4 5 DI 6 RW 7 E8 D0 9 D1 10 D2 11 D3 12 D4 13 D5 14 D6 15 D7 16 RST 17 18
此模块提供硬体光标及闪烁控制电路,由地址计数器的值来指定 DDRAM 中的光标或闪烁 位置。
2.2.2 AT89C51 芯片
(1)AT89C51 简介 AT89C51 是 一 种 带 4K 字 节 闪 存 可 编 程 可 擦 除 只 读 存 储 器
(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、 高性能 CMOS8 位微处理器,俗称单片机。AT89C2051 是一种带 2K 字节闪存 可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦 除 1000 次。该器件采用 ATMEL 高密度非易失存储器制造技术制造,与工业
3
字型产生 ROM(CGROM) 字型产生 ROM(CGROM)提供 8192 个此触发器是用于模 块屏幕显示开和关的控制。DFF=1 为开显示(DISPLAY ON),DDRAM 的内容就显示 在屏幕上,DFF=0 为关显示(DISPLAY OFF)。DFF 的状态是指令 DISPLAY ON/OFF 和 RST 信号控制的。 显示数据 RAM(DDRAM)模块内部显示数据 RAM 提供 64×2 个位元组的空间,最 多可控制 4 行 16 字(64 个字)的中文字型显示,当写入显示数据 RAM 时,可分 别显示 CGROM 与 CGRAM 的字型;此模块可显示三种字型,分别是半角英数字型 (16*8)、CGRAM 字型及 CGROM 的中文字型,三种字型的选择,由在 DDRAM 中写入 的编码选择,在 0000H—0006H 的编码中(其代码分别是 0000、0002、0004、0006 共 4 个)将选择 CGRAM 的自定义字型,02H—7FH 的编码中将选择半角英数字的 字型,至于 A1 以上的编码将自动的结合下一个位元组,组成两个位元组的编码 形成中文字型的编码 BIG5(A140—D75F),GB(A1A0-F7FFH)。 字型产生 RAM(CGRAM) 字型产生 RAM 提供图象定义(造字)功能, 可以提供四组 16×16 点的自定义图象空间,使用者可以将内部字型没有提供的图象字型自行 定义到 CGRAM 中,便可和 CGROM 中的定义一样地通过 DDRAM 显示在屏幕中。 地址计数器 AC 地址计数器是用来贮存 DDRAM/CGRAM 之一的地址,它可由设定指令 暂存器来改变,之后只要读取或是写入 DDRAM/CGRAM 的值时,地址计数器的值就 会自动加一,当 RS 为“0”时而 R/W 为“1”时,地址计数器的值会被读取到 DB6——DB0 中。 光标/闪烁控制电路
5
计算器键盘就是一个 4*4 的行列扫描,行对应着 A、B、C、D(和 P1.0~P1.3 相连),列 对应着 1、2、3、4(和 P1.4~P1.7 相连),读取 P1 口的值判断哪个键被按下了,执行该操 作。
2.2.4 电路分析
1、通过 AT89C51 芯片 PO 口与键盘相接,键盘中的键就是一个行列开关,该开关位于行 列的交点处,通过按下某个键,该交点的行线和列线联通,相应的行列电平发生变化,从而 可以确定按下的功能键。读取 P0 的值就可以确定按键,再由 AT89C51 芯片读取按键的值通 过 P1 口和 P2 口显示在 LCD12864 上,每显示一个按键值 LS1 发出声音。 接 P3.7 口,判断键盘是否按下,一旦键盘某个键按下,此元件会发出声音。

DR——>I/O 缓冲 配合 R 进行读数据或指令
低/低——>高
无动作
忙标志:BF BF 标志提供内部工作情况.BF=1 表示模块在进行内部操作,此时模块 不接受外部指令和数据.BF=0 时,模块为准备状态,随时可接受外部指令和数据. 利用 STATUS RD 指令,可以将 BF 读到 DB7 总线,从而检验模块之工作状态.
键盘按键 2.利用 AT89C51 控制整个电路来实现. 显示 12864LCD 显示器 设计计算器键盘按键,系统主要包括硬件和软件两部分。重点就 是各部分硬件的连接设计以及程序的编写。本章讲述的就是系统 硬件的设计,其中包括各模块的器件选择和电路设计。将计算器 按键上的信息传送至 AT89C51 主芯片之中,利用 P2 端口使之显 示于 12864LCD 液晶显示屏上。
目录
1 课程设计概述和要求 ……………………………………………………………………1 1.1 课程设计要求与任务 ……………………………………………………………2 1.2 课程设计思路 ………………………………………………………………………2 1.3 课程设计需要配置的环境 ………………………………………………………3
LS1
SOUNDER
2、时钟电路由 AT89S51 得 18、19 引脚的时钟端(XTL1 及 ATAL 2)以及 12MHZ 晶振、47pF 的电容 C1、C2 组成,采用片内振荡方式。其时间周期为 1/12us,机器周期为 1s。单片机的 外部晶振电路如图 3 AT89C51 中有一个用于构成内部振荡器的高增益反相放大器,引脚 XTAL1 和 XTAL2 分别 是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一 起构成振荡器。振荡器特性: XTAL1 和 XTAL2 分别为反向放大器的输入和输出。该反向 放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件, XTAL2 应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号 的脉宽无任何要求,但必须保证脉冲的高低电平。
3 软件设计 …………………………………………………………………………………12 3.1 程序流程图………………………………………………………………………12 3.2 程序代码 …………………………………………………………………………12
相关文档
最新文档