#include "74HC595.h"
extern UINT8 LED[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40};
//显示各种数字和字母的位选编码,分别是0~9,A~F共阴数码管适用,最后一位是显示横杠
/**********************************************************
Function Name: Send_Data_To_74HC595
Description: 发送数据到74HC595
Inputs: {data:发送的数据}
Outputs: None
Notes: 在2012级学习板上PB0(数据线),PB1(锁存线),PB2(时钟线)三端口为控制线
***********************************************************/
static void Send_Data_To_74HC595( UINT8 data )
{
UINT8 i , data_temp = 0 ;
data_temp = data ;
for( i = 0; i < 8; i++) //一次只能发送一个字节的数据(8位)
{
if( BitIsSet(data_temp,7) ) //从高位开始发送
HC595_DATA_HIGH ; //如果为1,拉高数据线
else
HC595_DATA_LOW ; //如果为0,拉蒂数据线
HC595_SCLK_HIGH ; //时钟线拉高
NOP() ;NOP() ;
HC595_SCLK_LOW ; //时钟线拉低
data_temp <<= 1; //数据向左移位,发送下一位
}
}
/**********************************************************
Function Name: Send_Data_To_74HC595
Description: 数码管的第几位显示数字0-9
数码管的排列顺序从右到左依次为01234567
point : 1->在该位显示小数点
0->在该位不显示小数点
Inputs: {bit:哪一位数码管亮;a_bit_data:显示的数字;point:是否显示小数点}
Outputs: None
Notes: 在2012级学习板上PB0(数据线),PB1(锁存线),PB2(时钟线)三端口为控制线
两个74HC595串联需发送16位,连发两次8位数据,最后在拉高输出,
两个移位HC595_DisplayData(寄存器同时输出。
***********************************************************/
void HC595_Display_Bit( UINT8 bit, UINT8 a_bit_data, UINT8 point )
{
UINT8 i, data_temp = 0 ;
data_temp = LED[a_bit_data] ; //只能获取数字段选信号
if(point) SetBit(data_temp,7) ; //显示小数点
else ClrBit(data_temp,7) ; //不显示小数点
HC595_LCLK_LOW ; //锁存线拉低
HC595_SCLK_LOW ; //时钟线拉低
Delay_us(5) ;
Send_Data_To_74HC595( ~(1 << bit) ) ; //发送位选信号
Delay_us(5) ;
Send_Data_To_74HC595( data_temp ) ; //发送段选信号
HC595_LCLK_HIGH ; //上升沿实现刚移入的十六位数据的输出及锁存 //
}
/**********************************************************
Function Name: HC595_DisplayData()
Description: 从start位到stop位显示数字data
数码管的排列顺序从左往右依次为01234567
Inputs: {start:起始位;stop:截止位;data:需要显示的十进制的数字}
Outputs: None
Notes: 在2012级学习板上PB0(数据线),PB1(锁存线),PB2(时钟线)三端口为控制线
如果用的数码管的位数超过十进制数的位数,高位显示0,如001234
***********************************************************/
void HC595_DisplayData( UINT8 start, UINT8 stop , UINT32 data )
{
UINT8 i, j, temp ;
j = stop;
for(i = start; i <= stop ; i++)
{
temp = data % 10 ; //选出data的第i位(从高位往低位数)
HC595_Display_Bit(j, temp, 0) ;//通过扫描的方式显示
j--;
data /= 10 ; //去除末位,并将十进制数向右移一位
}
}
/**********************************************************
Function Name: HC595_DisplayData_Point()
Description: 从start位到stop位显示数字data
数码管的排列顺序从左往右依次为01234567
Inputs: {start:起始位;stop:截止位;data:现实的数字;point_bit:在哪一位显示小数点}
Outputs: None
Notes: 在2012级学习板上PB0(数据线),PB1(锁存线),PB2(时钟线)三端口为控制线
小数点是从右往左数01234567
这种显示方法可显示小数
***********************************************************/
extern void HC595_DisplayData_Point( UINT8 start, UINT8 stop , UINT32 data , UINT8 point_bit )
{
UINT8 i, j, temp ;
j = stop;
for(i = start; i <= stop ; i++)
{
temp = data % 10 ; //选出data的末位(从高位往低位数),首先显示低位
if(j == stop - point_bit)
HC595_Display_Bit(j, temp, 1) ; //该显示小数点
else
HC595_Display_Bit(j, temp, 0) ; //不该显示小数点
j --;
data /= 10 ; //去除末位,并将十进制数向右移一位
}
}
/**********************************************************
Function Name: HC595_Init()
Description: 初始化端口,PB0,PB1,PB2端口为输出
Inputs: None
Outputs: None
Notes: 在2012级学习板上PB0(数据线),PB1(锁存线),PB2(时钟线)三端口为控制线
***********************************************************/
void HC595_Init(void)
{
HC595_DDR_INIT //B端口0、1、2初始化为输出状态
HC595_LCLK_HIGH ; //锁存线拉高
HC595_SCLK_HIGH ; //时钟线拉高
Delay_us(10) ;
}
没有合适的资源?快使用搜索试试~ 我知道了~
shouhuiban.zip_手写绘图板
共88个文件
h:17个
c:15个
o:15个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 124 浏览量
2022-07-14
02:37:28
上传
评论
收藏 141KB ZIP 举报
温馨提示
ATmega16 2013年全国大学生电子设计大赛手写绘图板二等奖程序 nokia5110屏幕 ,如果需要屏幕程序只要摘出对应.C.H即可,十分好用。
资源推荐
资源详情
资源评论
收起资源包目录
shouhuiban.zip (88个子文件)
shouhuiban
shouhuiban.lk 9B
shouhuiban.hex 10KB
main.c 1KB
Helm
Helm.c 1KB
Helm.h 372B
Delay
Delay.h 350B
Delay.c 2KB
ADC
ADC.h 2KB
ADC.c 1KB
Usart
Usart.h 437B
Usart.c 4KB
shouhuiban.depend 1KB
74HC595
74HC595.c 5KB
74HC595.h 2KB
shouhuiban.cof 13KB
.objs
Helm
Helm.lis 4KB
Helm.o 966B
Delay
Delay.lis 15KB
Delay.o 4KB
ADC
ADC.o 2KB
ADC.lis 8KB
Usart
Usart.o 7KB
Usart.lis 31KB
74HC595
74HC595.o 5KB
74HC595.lis 22KB
main.lis 5KB
main.o 1KB
E2PROM
E2PROM.lis 3KB
E2PROM.o 741B
shouhuiban.cbp 2KB
Headers
Config.h 1KB
Global.h 373B
shouhuiban.prj 1KB
shouhuiban.layout 1KB
shouhuiban.mak 377B
shouhuiban.default 64B
shouhuiban.lst 72KB
shouhuiban.dbg 9KB
shouhuiban.mp 5KB
shouhuiban
shouhuiban.lk 9B
shouhuiban.hex 5KB
main.c 2KB
Helm
Helm.c 1KB
Helm.h 372B
Delay
Delay.h 350B
Delay.c 2KB
ADC
ADC.h 2KB
ADC.c 1KB
Usart
Usart.h 437B
Usart.c 4KB
shouhuiban.depend 3KB
74HC595
74HC595.c 5KB
74HC595.h 2KB
shouhuiban.cof 9KB
.objs
Helm
Helm.lis 3KB
Helm.o 958B
Delay
Delay.lis 11KB
Delay.o 4KB
ADC
ADC.o 2KB
ADC.lis 6KB
Usart
Usart.o 7KB
Usart.lis 23KB
74HC595
74HC595.o 5KB
74HC595.lis 15KB
main.lis 11KB
5110
5110.o 8KB
5110.lis 32KB
main.o 4KB
E2PROM
E2PROM.lis 2KB
E2PROM.o 737B
shouhuiban.cbp 2KB
Headers
Config.h 1KB
Global.h 400B
shouhuiban.prj 1KB
shouhuiban.layout 2KB
shouhuiban.mak 377B
shouhuiban.default 58B
shouhuiban.lst 41KB
shouhuiban.dbg 7KB
shouhuiban.bin 2KB
shouhuiban.mp 3KB
5110
5110.h 1KB
5110.c 4KB
shouhuiban.elf 3KB
E2PROM
E2PROM.c 686B
E2PROM.h 212B
E2PROM
E2PROM.c 686B
E2PROM.h 212B
共 88 条
- 1
资源评论
小波思基
- 粉丝: 74
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于PHP+swoole实现的微信机器人,依赖vbot和微信网页版的功能,帮助管理微信群/聊天/踢人等+源码+开发文档+运行教程
- com.xunmeng.pinduoduo_Release_cd290ca9_ARM64.apk
- 2788727d-25a0-41b2-b6b4-265d193edb95.doc
- 基于AVR单片机的伺服电机系统研究
- Lab-Electronic Craft Practicum-2-Simulation of a Single Tube Com
- 贪吃蛇基于TypeScript
- CS-CP1-2C3WF固件
- 软件测试测试用例设计方法大全
- 计算机与网络基础知识要点学习
- 移动通信(RC-YDTX-III)实验指导书
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功