基于stm8的74hc759驱动数码管显示程序学习笔记

上传人:wt****50 文档编号:34282412 上传时间:2018-02-22 格式:DOCX 页数:5 大小:14.57KB
返回 下载 相关 举报
基于stm8的74hc759驱动数码管显示程序学习笔记_第1页
第1页 / 共5页
基于stm8的74hc759驱动数码管显示程序学习笔记_第2页
第2页 / 共5页
基于stm8的74hc759驱动数码管显示程序学习笔记_第3页
第3页 / 共5页
基于stm8的74hc759驱动数码管显示程序学习笔记_第4页
第4页 / 共5页
基于stm8的74hc759驱动数码管显示程序学习笔记_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《基于stm8的74hc759驱动数码管显示程序学习笔记》由会员分享,可在线阅读,更多相关《基于stm8的74hc759驱动数码管显示程序学习笔记(5页珍藏版)》请在金锄头文库上搜索。

1、74HC759 驱动数码管显示程序学习笔记本程序基于 STM8S105K4 单片机学习程序。程序硬件就是 STM8的最小开发板搭建,用的内部高速晶振 1 分频,数码管用 595 串联驱动输入四线。经测试可以正常显示。最终通过调试和实验。所有的程序如下:(程序中可能还有些其他没有发现的问题,或其他错误有问题再学习更改。 )具体注释见程序:/#ifndef _DISPLAY_595_H/#define _DISPLAY_595_H/*/*DS GPIOD4 串行数据输入 */*STCP GPIOD5 存储寄存器时钟 */*SHCP GPIOD6 移位寄存器时钟 */*OE GPIOD7 输出使能(

2、低电平有效) 可选择脉冲输出以调节亮度 */*显示数据调用方法,void init_595();输入实际数据,符号位(0 为正, 1 为负) ,小数点位置(没有置 0)/extern display_all(unsigned int display_data_int ,unsigned char flag ,unsigned char dot);*/*设置方向寄存器*/#define DS_IO() GPIO_Init(GPIOD, GPIO_PIN_4, GPIO_MODE_OUT_PP_LOW_FAST);#define STCP_IO() GPIO_Init(GPIOD, GPIO_PI

3、N_5, GPIO_MODE_OUT_PP_LOW_FAST);#define SHCP_IO() GPIO_Init(GPIOD, GPIO_PIN_6, GPIO_MODE_OUT_PP_LOW_FAST);#define OE_IO() GPIO_Init(GPIOD, GPIO_PIN_7, GPIO_MODE_OUT_PP_LOW_FAST);/*设置数据输出 0*/#define DS_OUT0() GPIO_WriteLow(GPIOD, GPIO_PIN_4);#define STCP_OUT0() GPIO_WriteLow(GPIOD, GPIO_PIN_5);#defin

4、e SHCP_OUT0() GPIO_WriteLow(GPIOD, GPIO_PIN_6);#define OE_OUT0() GPIO_WriteLow(GPIOD, GPIO_PIN_7);/*设置数据输出 1*/#define DS_OUT1() GPIO_WriteHigh(GPIOD, GPIO_PIN_4);#define STCP_OUT1() GPIO_WriteHigh(GPIOD, GPIO_PIN_5);#define SHCP_OUT1() GPIO_WriteHigh(GPIOD, GPIO_PIN_6);#define OE_OUT1() GPIO_WriteHi

5、gh(GPIOD, GPIO_PIN_7);/*显示数据调用方法,输入实际数据,符号位(0 为正,1 为负) ,小数点位置(没有置0) */extern display_all(unsigned int display_data_int ,unsigned char flag ,unsigned char dot);void init_595(); /595 的初始化void decomposition(unsigned int display_data); /将目标数据分解为各位 void data_to_sh(unsigned char data ,unsigned char dot_in

6、 ); /送单个字节数据到数据寄存器 void data_out_display(); /存储寄存器数据输出void display_all(unsigned int display_data_int ,unsigned char flag ,unsigned char dot); /总显示程序#includedisplay_595.hunsigned char a5=0,0,0,0,0; /五位数的数据分解存放 unsigned char dis_bit=0; /判断显示的位数const unsigned char code=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x8

7、2,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf;/0-9 和负号编码/*uchar SEG_A_List16=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/共阴数码管代码表0-Fuchar SEG_B_List16=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;/共阳数码管代码表0-F*/void init_59

8、5()DS_IO(); /数据输出方向DS_OUT0(); /输出低STCP_IO(); /数据输出方向STCP_OUT0(); /输出低SHCP_IO(); /SHCP_OUT0(); /OE_IO(); /OE_OUT1(); /输出使能关闭(低电平有效)void decomposition(unsigned int display_data)a4=a3=a2=a1=a0=0;if(display_data=10000)dis_bit=5; /判断显示的位数else if(display_data=1000)dis_bit=4;else if(display_data=100)dis_bi

9、t=3;else if(display_data=10)dis_bit=2;else dis_bit=1;while(display_data = 10000)display_data -= 10000; a4+;while(display_data = 1000) display_data -= 1000; a3+;while(display_data = 100)display_data -= 100; a2+;while(display_data = 10)display_data -= 10; a1+;a0=display_data;void data_to_sh(unsigned c

10、har data ,unsigned char dot_in )unsigned char i,j;i=codedata;if(dot_in)i=i /有小数点的加小数点SHCP_OUT0(); for(j=0;j8;j+)if(i&0x80)=0x80) /判断并送入低位/DS_OUT1();else DS_OUT0(); SHCP_OUT1(); /上升沿送入i = 1; /循环右移 1 位;SHCP_OUT0(); void data_out_display()STCP_OUT0();STCP_OUT1();void display_all(unsigned int display_data_int ,unsigned char flag ,unsigned char dot)unsigned char m;/ OE_OUT1();decomposition(display_data_int);for(m=0;m4;m+)if(dot=m) data_to_sh(am,1);else if(flag=1) else data_to_sh(am,0);data_out_display(); /将数据输出OE_OUT0(); /输出使能

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号