完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
求看下程序,12864串口传输,其他脚位没错,只接lcd的SCLK,CS,SID这三个脚。网上程序也对比过好多了,不知道程序哪里出错了,求指导。
#include #include #define uchar unsigned char #define uint unsigned int /***********lcd 引脚定义*******************/ ***it SID = P1^5; //串行数据线 ***it SCLK = P3^4; //时钟线 ***it CS = P1^3; //片选 ***it LED = P5^5; /*****************************************/ void delay_ms(unsigned int ms) { unsigned int i,j; for(i=0;i ; } /*串行发送一个字节*/ void send_byte(uchar byte) { uchar i; for(i=0;i<8;i++) { SCLK = 0; //上升沿触发 if((byte << i) & 0x80) SID = 1; else SID = 0; SCLK = 1; _nop_(); } } /*写指令*/ void write_com(uchar com) { delay_ms(3); //该用检测忙 send_byte(0xf8); //1111 1000 MCU到LCD delay_ms(3); send_byte(com & 0xf0); //发送高字节 delay_ms(3); send_byte((com << 4) & 0xf0); delay_ms(5); } /*写数据*/ void write_data(uchar data1) { delay_ms(3); //该用检测忙 send_byte(0xfa); //1111 1010 显示数据 delay_ms(3); send_byte(data1 & 0xf0); delay_ms(3); send_byte((data1 << 4) & 0xf0); delay_ms(5); } void lcd_init() { delay_ms(200); //启动等待 write_com(0x30); //基本指令集 一次传8位 write_com(0x01); //清除显示DDRAM write_com(0x02); //地址归0 delay_ms(50); write_com(0x0c); //显示状态开关 开显示,显示光标,显示位反白闪动 write_com(0x80); //显示地址设为第一行首位 delay_ms(50); } void chinese_display(uchar line,uchar row,uchar data_h,uchar data_l) { write_com(0x01); switch(line) { case 1: { write_com(0x80+row); write_data(data_h); write_data(data_l); break; } case 2: { write_com(0x90+row); write_data(data_h); write_data(data_l); break; } case 3: { write_com(0x88+row); write_data(data_h); write_data(data_l); break; } case 4: { write_com(0x98+row); write_data(data_h); write_data(data_l); break; } } } void num_display(uchar line,uchar row,uchar num) { write_com(0x01); switch(line) { case 1: { write_com(0x80+row); write_data(0x30+num); break; } case 2: { write_com(0x90+row); write_data(0x30+num); break; } case 3: { write_com(0x88+row); write_data(0x30+num); break; } case 4: { write_com(0x98+row); write_data(0x30+num); break; } } } void main() { lcd_init(); LED = 0; delay_ms(100); num_display(1,1,3); delay_ms(200); }
|
|
相关推荐
4个回答
|
|
大概看了一下 程序没啥问题 可能是管教或者是时序没处理好吧 你可以再调试一下试试,我这里有参考你可以看看
最佳答案
|
|
|
|
找到问题了,给的原理图有问题,里边的SID标号朋友他写错了,导致数据一直没办法传过去。 |
|
|
|
12864vo口不能悬空吧,得接调节电阻
|
|
|
|
人家那是串口显示,你的是并口,OK
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
使用Keil建立完整的工程,并使用外部中断0触发数码管显示903
418 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-使用AHT20进行环境监测之AHT20传感器介绍
1083 浏览 0 评论
846 浏览 0 评论
886 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
882 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11831 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-30 20:07 , Processed in 0.712296 second(s), Total 79, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号