第三章 主要器件简介
这就是 LCD 显示的基本原理。 字符的显示 用 LCD 显示一个字符时比较复杂,因为一个字符由 6×8 或 8×8 点阵组成,既要 找到和显示屏幕上某几个位置对应的显示 RAM 区的 8 字节, 还要使每字节的不同 位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成 某个字符。但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以 让控制器工作在文本方式, 根据在 LCD 上开始显示的行列号及每行的列数找出显 示 RAM 对应的地址,设立光标,在此送上该字符对应的代码即可。 汉字的显示 汉字的显示一般采用图形的方式,事先从微机中提取要显示的汉字的点阵码(一 般用字模提取软件),每个汉字占 32B,分左右两半,各占 16B,左边为 1、3、 5……右边为 2、4、6……根据在 LCD 上开始显示的行列号及每行的列数可找出 显示 RAM 对应的地址, 设立光标, 送上要显示的汉字的第一字节, 光标位置加 1, 送第二个字节,换行按列对齐,送第三个字节……直到 32B 显示完就可以 LCD 上得到一个完整汉字
3.2.2矩阵按键
键盘是单片机系统中最常用的人机对话输入设备,用户通过键盘向单片机输入数据或指令。键盘控制程序需完成的任务有:监测是否有键按下,有键按下时,在无硬件去抖的动电路时,应用软件延时方法消除按键抖动影响;当有多个键同时按下时,只处理一个按键,不管一次按键持续多长时间,仅执行一次按键功能程序。
矩阵按键扫描程序是一种节省IO口的方法,按键数目越多节省IO口就越可观,思路:先判断某一列(行)是否有按键按下,再判断该行(列)是那一只键按下。但是,在程序的写法上,采用了最简单的方法,使得程序效率最高。本程序中,如果检测到某键按下了,就不再检测其它的按键,这完全能满足绝大多数需要,又能节省大量的CPU时间。
本键盘扫描程序的优点在于:不用专门的按键延时程序,提高了CPU效率,也不用中断来扫描键盘,节省了硬件资源。另外,本键盘扫描程序,每次扫描占用CPU时最短,不论有键按下或者无键按下都可以在很短的时间完成一次扫描。
本键盘扫描子程序名叫key,每次要扫描时用lcall key调用即可。
9
第三章 主要器件简介
10
第四章 计算器系统设计
第四章 计算器系统设计
4.1 计算器硬件电路设计
8051单片机一片,4*4键盘一个,4位共阳极的七段数码管一个,连线和电阻和开关若干。8051单片机的P2口作键盘口,其中P2.4-P2.7为键盘扫描输出线,P2.0-P2.3为键盘扫描输入线。键盘由4*4共16个按键组成,10个数字键(由0-9组成)5个运算符号(加减乘除等于)组成,1个清除键(作用相当于整体复位)。4个数码管用于显示当前数值的千,百,十,个,采用动态显示方式,P1口接4个数码管的七段,P0口分别接4个数码管的公共端,P1口输出数码管的字形码,P0口输出数码管的字位码。
4.2计算器程序设计
4.2.1存储单元分配
30H单元:数值个位显示单元;31H单元:数值十位显示单元;32H单元:数值百位显示单元;33H单元:数值千位显示单元;23H单元:第一操作数存储单元;24H单元:第二操作数存储单元;25H单元:键值暂存单元;27H单元:清除键状态;34H-37H单元:结果数据转换暂存单元;38H-39H单元:结果高低8位暂存单元;R5单元:操作数计数单元;R4单元:操作数数值位数计数单元;R3单元:运算符号存储单元。
4.3系统总框图:
4.4程序源代码:
这是main 函数 #include \#include \#include \#include \ uchar
key_val,key_return,count;
11
第四章 计算器系统设计 long ori_num,aim_num,x,y,z,lastentbuf; uchar ent_buf=0;
uchar
aim_buf[8],ori_buf[8];
void main() { init_lcd1602(); init_int0(); lastentbuf=5; while(1) {
key_scan(); display();
}
Lcd1602.c文件 #include
#define dats
P0
#define uchar unsigned char #define uint unsigned int
sbit RS=P2^5; //LCD1602的寄存器选择 sbit RW=P2^6; //LCD1602的读/写控制 sbit E=P2^7; //DS1602的启动
//向1602写数据 void write_data(uchar dat) { RS=1;
12
相关推荐: