毕业论文之单片机简易计算器 - C51 - MAX7219 - 图文 下载本文

浙江工业大学本科毕业设计论文

将这些部分组合在一起。

在编写程序的时候,先考虑硬件分布,以及要达到的设计效果,理清好思路,对每一块程序小模块进行规划设计。最后全局的设计规划。

由于KEIL编写程序没有Cfree好用,所以首先使用Cfree,把软件整体编写出来。然后到Keil中进行调试修改。同时应用Proteus仿真环境。查找软件的错误和缺陷,达到设计所要求的结果。如图5-1是系统软件设计流程图。

开始 上电复位初始化参数显示端口定义键盘扫描子程序否是否有按键输入继续等待按键输入是读键值,算键码主函数返回图5-1 整体程序流程图图

驱动蜂鸣器是蜂鸣器定时结果溢出返回显示子程序返回送显示数据 第七章 程序分模块设计

7.1 程序头

程序头,定义显示驱动端口,串行数据输入DIN为P1.0脚,同步时钟为P1.1引脚,数据输入使能端为P1.2引脚。方便接下来的编程,便于修改程序以及更清晰地阅读理解程序。

7.2 延时子程序的设计

如图6-1为延时子程序的程序框图。

21

浙江工业大学本科毕业设计论文

开始定义变量a,b,cc++,c<100b+1 b<20 c=0=100<20,c=0b++,b<20a+1 ,a

延时子程序,用于键盘扫描的防抖动,显示发送子程序的延时,蜂鸣器响声长度的定时等。使用到for循环,总共执行次数为,a*b*c=10*20*100=20000;若是在主频为12MHZ的电路中,单片机执行一条语句时间大约为1us,那么这个延时为2400us,大约为20ms。

7.3 键盘扫描子程序

如图6-2是键盘扫描子程序的设计流程图,简述键盘扫描程序的一个工作过程。

22

浙江工业大学本科毕业设计论文

开始 初始化地址参数输出列扫描信号否列扫描信号移位读入行信号否是按照行列算键值该列有键输入?得键码四列扫描完?是等待按键释放返回图6-2 键盘扫描

返回 按键扫描子程序,首先定义键盘端口为P0,将P0读入的值进行分析键值。再将键值转换成数值寄存。同时当按键按下,还要驱动接在P3.4的蜂鸣器短响,以示按键已经按下。

7.4 数据发送子程序

7.4.1 端口时序图

如图6-3 MAX7219显示驱动端口时序图

tCCSHCSORLOADtCSStCLCLKfPSDINtCHtCHtCSW…tLDCX…tCP…DOUT…

23

浙江工业大学本科毕业设计论文

图6-3 驱动端口时序图

7.4.2 MAX7219寄存器

MAX7219 有14 个可寻址的控制字寄存器(如表3) , 控制字寄存器由芯片的8×8 双端口SRAM 识别,SRAM 直接寻址, 这样单一的位能被更改或保留, 条件是电源电压明显大于2V 。控制字寄存器包括译码模式、显示强度、扫描限制(被扫描位的个数) 、关闭模式、显示测试(点亮所有的L ED) 。另外还有一个空操作寄存器, 该寄存器允许数据从DIN 直送DOU T , 在设备串接情况下不会改变显示或影响任何控制寄存器。 7.4.3 关闭模式

当MAX7219 处于关闭模式时, 扫描振荡器停止工作,所有的段电流源接地,所有的位驱动器上拉为高电平,显示器为消隐状态,寄存器的数据保持不变。关闭模式寄存器数据的16 进制码为X0 ,正常工作的16 进制码为X1。系统上电时MAX7219 进入关闭模式,这样,用户必须在使用MAX7219 之前为显示驱动器编程,否则, 它一开始就置位扫描, 数据寄存器不译码,强度寄存器也将置于最小值。 7.4.4 译码模式

寄存器可对译码模式寄存器的每位进行硬件译码(B 码) 或软件译码操作, 寄存器的每位字对应一个数, 逻辑高电平选择B 码译码。控制寄存器译码模式如表4 所列。当选择软件译码方式时, 数据D7~D0 对应的MAX7219 码的各段笔划如表5 所列。当工作于硬件(B 码) 译码模式时, 译码器只选择数据寄存器中较低的几位(D3~D0) ,不考虑D4~D6 位。D7 位显示十进制小数点,独立于译码器, 当D7 = 1 时, 十进制小数DP 点亮。字符0~9 对应的16 进制码为X0~ X9 ,字符- 、E、H、L 、P 和消隐分别对应的16 进制码为XA~ XF 。 7.4.5 亮度控制

MAX7219 允许用一个接于电源输入( V +) 和段电源( Iset ) 端之间外部电阻控制显示亮度,并且利用强度寄存器,调节面板亮度。段电流常为37mA ,最大值为40mA ,由于L ED的电压降为2. 5 V , 故调节亮度电阻的电压降V + - VL ED 为2. 5V (设V + = 5V) , 故7 段码全部点亮的总电流7 ×37mA = 259mA , 外部调节亮度电阻Rset 最小值是2. 5V/ 259mA = 9. 53kΩ。段电流的位控制由一个内部脉宽控制的DAC 提供。DAC 从强度寄存器的低位载入,D段电流的调整可分成16 阶, 从31/ 32 减到1/32 ,每步减少2/ 31。当循环到31/ 32 时最亮,此时内部位消隐时间为一个周期的1/ 32 , 消隐时间的增加则减少了工作周期。31/ 32 对应的16进制码为×F , 随着亮度的降低对应的16 进制码依次减1 ,1/ 32 对应的16 进制码为×0。 7.4.6 限扫描寄存器

限扫寄存器设定显示几个数字(1~8) , 8位显示时的典型扫描频率为1300Hz ,有多种

24