搜索
bottom↓
回复: 9

精选芯艺USART,HJJ的TWI,archeng的LCD1602综合仿真(GCC)

[复制链接]

出0入0汤圆

发表于 2006-5-11 16:26:02 | 显示全部楼层 |阅读模式
针对菜鸟:

都是最基本的程序,但我也折腾了很久,为了不让悲情重演,我就抛块砖,如果能引出玉是再好不过的事情了,即使引出很多砖头也值了,至少也要砸死几个潜水艇,只取不予,非君子所为!



在此我要特别感谢CCTV,MTV,WC,......

跑题了,说句心里话,几天没看到HJJ和archeng的回贴,心里酸酸的,忙也要回来看看兄弟啊!

/************************************************************************************/

说说心得,俺不会做头文件,就用.h文件COPY后改名字,人苯啊!

USART.h可直接使用在和MEGA16相同寄存器的CPU中。

TWI.h也是根据MEGA16写的(完全COPY HJJ老大。

LCD1602.h是四线控制(忘记删除高四位了),如果要移植,只要更改端口连接就可以了。

点击此处下载armok01117083.rar





-----此内容被alisha于2006-05-11,17:14:01编辑过


-----此内容被alisha于2006-05-11,17:16:41编辑过

出0入0汤圆

发表于 2006-5-11 17:09:05 | 显示全部楼层
我占1楼,谢谢楼主

出0入0汤圆

 楼主| 发表于 2006-5-11 17:39:43 | 显示全部楼层
我在WHILE循环外写字符串到24C02中,然后进入WHILE读取24C02,送LCD1602显示,可第一次读不出来,读第二次才能读出来?我加了延时也不可以!何解?

////////////////////////////////////////////////////////////////////////////////

TWI_RW(SLA_24CXX+ADDR_24C02+TW_WRITE,0X10,char_in,15);

while(strTWI.STATUS==TW_BUSY);

DELAY_nms(10);

         while (1){

                 

                 TWI_RW(SLA_24CXX+ADDR_24C02+TW_READ,0X10,char_out,15);

                 while(strTWI.STATUS==TW_BUSY);

                  LCD_write_string(0,0,char_out);

                  }

///////////////////////////////////////////////////////////////////////

TERMINAL I2C中是这样的:(SR是什么意思啊)

S A0 A 10 A 57 A 52 A 49 A 54 A 45 A 20 A 43 A 4F A 52 A 52 A 45 A 43 A 54 A 21 A 00 A P

S A0 N Sr Sr Sr Sr Sr Sr Sr Sr Sr Sr Sr Sr Sr Sr Sr Sr Sr Sr Sr P

出0入0汤圆

 楼主| 发表于 2006-5-12 09:55:00 | 显示全部楼层
DELAY_nms(10);改为DELAY_nms(100);就可以了。

写24C02后的延时时间短就会导致读取出错。

出0入0汤圆

发表于 2006-5-12 10:51:07 | 显示全部楼层
能不能介绍一下你那个仿真软件啊?

出0入0汤圆

发表于 2006-5-12 15:03:06 | 显示全部楼层
延时要10MS

出0入0汤圆

 楼主| 发表于 2006-5-12 15:17:43 | 显示全部楼层
如果用GCC的库函数_delay_ms(10)没有问题,但用我COPY的库函数就不行,但我敢肯定,我的库函数有问题!大家帮我看看先!

***********************************************************************

delay.h

/*-----------------------------------------------------------------------

延时函数

系统时钟:

-----------------------------------------------------------------------*/

#include <avr/io.h>

#define XTAL 4    //晶振频率,单位MHz

/***********************************************************************/

/**********************************************************************/

/**************************************************************************************/

//函数名            :DELAY_1us

//属性                :私有

//功能                :延时1us

//输入参数        :无

//输出参数        :无

//返回值        :

//修改日期        :

//修改人        :

/**************************************************************************************/

void DELAY_1us(void)               

  {

   asm("nop");

  }

/**************************************************************************************/

//函数名            :DELAY_nus

//属性                :私有

//功能                :延时N us

//输入参数        :n--延时时间

//输出参数        :无

//返回值        :

//修改日期        :

//修改人        :

/**************************************************************************************/

void DELAY_nus(unsigned int n)      

  {

   unsigned int i=0;

   for (i=0;i<n;i++)

   DELAY_1us();

  }

/**************************************************************************************/

//函数名            :main

//属性                :私有

//功能                :主函数

//输入参数        :

//输出参数        :

//返回值        :

//修改日期        :

//修改人        :

/**************************************************************************************/  

void DELAY_1ms(void)                 //1ms延时函数

  {

   unsigned int i;

   for (i=0;i<(unsigned int)(XTAL*143-2);i++);

  }

/**************************************************************************************/

//函数名            :main

//属性                :私有

//功能                :主函数

//输入参数        :

//输出参数        :

//返回值        :

//修改日期        :

//修改人        :

/**************************************************************************************/  

void DELAY_nms(unsigned int n)       //N ms延时函数

  {

   unsigned int i=0;

   for (i=0;i<n;i++)

   DELAY_1ms();

  }

出0入0汤圆

发表于 2006-6-6 02:22:37 | 显示全部楼层
一般延时500毫秒以上,再自己写函数

出0入0汤圆

发表于 2006-9-15 08:58:24 | 显示全部楼层
alisha 老兄你的uart有没有过先出现很多Q和错码再出现正常数据然后又乱码的情况?

出0入0汤圆

发表于 2010-4-9 16:30:51 | 显示全部楼层
顶下
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-8 06:02

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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