OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 17932|回复: 10
打印 上一主题 下一主题

求1602LCD实现动态数据显示,具有走数功能(c语言)

[复制链接]

170

主题

917

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1824
金钱
1824
注册时间
2013-4-13
在线时间
63 小时
跳转到指定楼层
楼主
发表于 2013-4-28 19:52:34 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
手艺人要内外兼修。
回复

使用道具 举报

170

主题

917

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1824
金钱
1824
注册时间
2013-4-13
在线时间
63 小时
2#
 楼主| 发表于 2013-4-28 20:02:00 | 显示全部楼层
谢谢!非常感谢!
手艺人要内外兼修。
回复 支持 反对

使用道具 举报

170

主题

917

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1824
金钱
1824
注册时间
2013-4-13
在线时间
63 小时
3#
 楼主| 发表于 2013-4-28 20:10:14 | 显示全部楼层
下载进去后,1602没有任何显示!
手艺人要内外兼修。
回复 支持 反对

使用道具 举报

170

主题

917

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1824
金钱
1824
注册时间
2013-4-13
在线时间
63 小时
4#
 楼主| 发表于 2013-4-28 20:20:12 | 显示全部楼层
手艺人要内外兼修。
回复 支持 反对

使用道具 举报

170

主题

917

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1824
金钱
1824
注册时间
2013-4-13
在线时间
63 小时
5#
 楼主| 发表于 2013-4-28 20:22:13 | 显示全部楼层
成功了!不过我是想要数字秒表类的,走数。
手艺人要内外兼修。
回复 支持 反对

使用道具 举报

170

主题

917

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1824
金钱
1824
注册时间
2013-4-13
在线时间
63 小时
6#
 楼主| 发表于 2013-4-28 20:25:43 | 显示全部楼层
液晶计数器.rar (文件大小: 10 KB 下载次数:2次) ,下载后没有.c源文件,.hex文件打开之后什么也没有。
手艺人要内外兼修。
回复 支持 反对

使用道具 举报

170

主题

917

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1824
金钱
1824
注册时间
2013-4-13
在线时间
63 小时
7#
 楼主| 发表于 2013-4-28 20:28:32 | 显示全部楼层
我觉得这个程序比较简单简短


#include <reg52.h>
#include <intrins.h> 

typedef unsigned char uint8;

sbit RS = 1^0 ;
sbit RW = 1^1 ;
sbit EN = 1^5 ;
sbit BUSY = 0^7;


unsigned char code word1[]={"Welcome to"};     
unsigned char code word2[]={"wuhan"};


/**
 * 等待繁忙标志,检测状态字stat7位是否繁忙?
*/
void wait(void)  //读命令函数,检测液晶硬件状态就是读取硬件状态,是命令函数。D7位=0时才可以往液晶写数据。
{
P0 = 0xFF;

do                       
        {                                                         
RS = 0;                                            
RW = 1;
EN = 0;
EN = 1;
}while (BUSY == 1); //当busy==1时,就不断执行do大括号的内容语句,直到busy即P0.7=0为止。
EN = 0;              //do大括号的内容语句:是1602“读状态”时序模式输入,输出的是D0-D7状态字。
}                          //执行完本句,P0口的每一位就反应出通过本程序读出的液晶当前状态。

/**
 * 写数据
*/
void w_dat(uint8 dat)
{
wait();
EN = 0;
P0 = dat;
RS = 1;
RW = 0;
EN = 1;
EN = 0;
}

/**
 * 写命令
*/
void w_cmd(uint8 cmd)
{
wait();
EN = 0;
P0 = cmd;
RS = 0;
RW = 0;
EN = 1;
EN = 0;
}

/**
 * 发送字符串到LCD
*/
void w_string(uint8 addr_start, uint8 *p)
{
w_cmd(addr_start);  //addr_start就是1602的0x80地址
while (*p != '\0')
{
w_dat(*p++);  //即把指针变量p所指向的内容(数组字符)按顺序逐个写到P0口!
}
}


/**
 * 初始化1602
*/
void Init_LCD1602(void)
{
w_cmd(0x38);  // 16*2显示,5*7点阵,8位数据接口
w_cmd(0x0C);  // 显示器开、光标开、光标允许闪烁
w_cmd(0x06);  // 文字不动,光标自动右移。此处只能是0x06!
w_cmd(0x01);  // 清屏
}


main()
{

Init_LCD1602();

w_string(0x80,word1); //把world1数组内容写到1602第一行,从第一位开始
w_string(0xC0,word2);  //把world2数组内容写到1602第二行地址起始位0xc0.即(0x80+0x40)=0xc0。

while (1);
}
手艺人要内外兼修。
回复 支持 反对

使用道具 举报

170

主题

917

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1824
金钱
1824
注册时间
2013-4-13
在线时间
63 小时
8#
 楼主| 发表于 2013-4-28 20:30:12 | 显示全部楼层
请发一个走数(动态显示数字)的.c        谢谢!
手艺人要内外兼修。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


关闭

原子哥极力推荐上一条 /1 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-12-17 17:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表