完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
我将在STC89C52RC上调试成功的LCD1602程序移植到STC12C5A60S2上,延迟什么的都扩大了;但是只有数字显示正常,字母显示的是乱码,这是什么原因
|
|
相关推荐
4个回答
|
|
STC89C52RC是12T单片机,STC12C5A60S2是1T单片机,移植程序过来,关于时间的函数肯定是要修改的哈
标准51单片机是12T的,就是说12个时钟周期(晶振周期,例如12M的,周期是1/12M,单位秒),机器做一个指令周期,刚好就是1/12M*12=1uS,常见指令例如_nop_就是一个周期,刚好1uS,其他的大多多于一个周期,乘除法更多。如果是单片机1T的话,那_nop_只需要1/12uS 另外,数字可以正常显示,字母不能正常显示……说到底都是显示的字符,不应该有不同……不明白 |
|
|
|
z***hello 发表于 2015-9-7 18:02 您那里,有用STC12c5a60s2编写LCD1602的程序吗,能够给我参考一下吗;我现在也被弄懵了 |
|
|
|
LCD1602的控制应该算是比较简单,笔者也是本科时代利用STC89控制过1602的 下面是网上找的一段代码 希望对你有用,请特别要注意线缆连线! #include #include #define uint unsigned int #define uchar unsigned char ***it rs=P1^0; ***it rw=P1^1; ***it en=P1^2; void delay(uint sum) { int i,j; for(i=sum;i>0;i--) for(j=110;j>0;j--); } void write_date(uchar date) { rs=1; rw=0; P0=date; delay(5); en=1; delay(5); en=0; } void write_com(uint com) { rs=0; rw=0; P0=com; delay(5); en=1; delay(5); en=0; } void init() { en=0; write_com(0x38); write_com(0x0e); write_com(0x06); write_com(0x01); write_com(0x80+0x10); } void main() { init(); write_date('a'); delay(20); write_date('b'); while(1); } |
|
|
|
RCT问题!
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
205 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1253 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
848 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
853 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
1073 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12013 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 06:13 , Processed in 0.859754 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号