完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
我写的TMS320F2808液晶驱动程序不知道哪块出问题了,怎么调都不显示,请前辈们帮我看看,谢谢了
//########################################################################### #include "DSP280x_Device.h" // DSP280x Headerfile Include File #include "DSP280x_Examples.h" // DSP280x Examples Include File //********************************************************************** #define SCLK GpioDataRegs.GPADAT.bit.GPIO25 #define SID GpioDataRegs.GPADAT.bit.GPIO24 //#define SCLK GpioDataRegs.GPADAT.bit.GPIO15 //#define LED GpioDataRegs.GPADAT.bit.GPIO16 Uint16 Point=0; // 延时函数 //******Delay_Us()************************************************************** void Delay_Us(Uint16 ucounter) { Uint16 i; for(i=0;i<=ucounter;i++) { DELAY_US(1); } } //******Delay_Ms******************************************************* void Delay_Ms(Uint16 mcounter) { Uint16 i; for(i=0;i<=mcounter;i++) { DELAY_US(1000); } } //******************************************************** //*I/O口初始化*用来驱动液晶 //**将J3接口中IO_0(GPIO25),IO_1(GPIO24)设置为I/O口功能并输出 //**IO_2(GPIO15),IO_3(GPIO16)设置为I/O口功能并设置为输入 //其中GPIO25->SCLK,GPIO24->SID, //************************************************************** void Gpio_Init(void) { EALLOW; //I/O口功能复用选择 GpioCtrlRegs.GPAMUX2.bit.GPIO25=0; GpioCtrlRegs.GPAMUX2.bit.GPIO24=0; GpioCtrlRegs.GPAMUX1.bit.GPIO15=0; GpioCtrlRegs.GPAMUX2.bit.GPIO16=0; // I/O口数据方向选择 GpioCtrlRegs.GPADIR.bit.GPIO25=1; GpioCtrlRegs.GPADIR.bit.GPIO24=1; GpioCtrlRegs.GPADIR.bit.GPIO15=1; GpioCtrlRegs.GPADIR.bit.GPIO16=1; // /* GpioCtrlRegs.GPAPUD.bit.GPIO25=0; GpioCtrlRegs.GPAPUD.bit.GPIO24=0; GpioCtrlRegs.GPAPUD.bit.GPIO15=0; GpioCtrlRegs.GPAPUD.bit.GPIO16=0;*/ // GpioDataRegs.GPADAT.bit.GPIO25=1; GpioDataRegs.GPADAT.bit.GPIO24=1; GpioDataRegs.GPADAT.bit.GPIO15=1; GpioDataRegs.GPADAT.bit.GPIO16=1; EDIS; } //***************************************************************************** //****12864液晶串口驱动程序********************************************** /***************************************** 功能: 串行向液晶发送8bit数据 参数: 要发送的8位数据 返回: 无 *****************************************/ void write_lcm_byte( unsigned char d) { unsigned char i; for(i=0;i<8;i++) { SCLK = 0; //串行时钟线,拉低准备数据 SID = d & 0x80; // d <<= 1; //准备下一位数据 SCLK = 1; //拉高时钟线,通知液晶数据备妥 } } /********************************************** 功能: 向液晶发送命令 参数: Cmd : 命令字节 返回: 无 **********************************************/ void write_lcm_Cmd( unsigned char Cmd) { unsigned char i; i=Cmd; write_lcm_byte(0xf8); //表明发送的是命令 write_lcm_byte(i & 0xf0); //写命令的高四位d7一d4 i<<= 4; write_lcm_byte(i); //写命令的低四位d3一d0 if(Cmd == 0x01) //是否为清屏命令 Delay_Ms(2); //延时2ms,等待液晶处理命令,最长时间是清屏命令1.6ms,其余命令是72us else Delay_Us(72); } /************************************ 功能: 在LCM指定位置显示一行字符串 参数: addr : 指定的位置 *p : 指向要显示的标准字符串 返回: 无 **************************************/ void show( unsigned char addr, unsigned char *p) { unsigned char i,j=0; //DINT; //先关闭中断,避免对此次通信的干扰 write_lcm_Cmd(addr); //写入地址addr i=*p; write_lcm_byte(0xfa); //表明发送的是数据 while(i) //循环发送数据,直到字符串结尾,结尾字节是0x00 { write_lcm_byte(i & 0xf0);//写数据的高四位d7一d4 i <<= 4; write_lcm_byte(i); //写数据的低四位d3一d0 j++; i=*(p+j); //取下一个字节数据 } //EINT; } /************************************ 功能: 初始化液晶 参数: 无 返回: 无 **************************************/ void init_lcm(void) { //DINT; //先关闭中断,避免对此次通信的干扰 Delay_Ms(40); //等待40ms,液晶上电 write_lcm_Cmd(0x30); //设置功能,选择基本指令集 write_lcm_Cmd(0x0c); //开整体显示,关游标和游标位置(最低2位) write_lcm_Cmd(0x01); //清屏 write_lcm_Cmd(0x06); //设置点设置,光标的移动方向:向右0x06,向左0x04 //EINT; } /************************************ 功能: 设置光标位置 参数: i : 新光标位置 返回: 新光标位置 **************************************/ char setcur( unsigned char i) { //DINT; //先关闭中断,避免对此次通信的干扰 write_lcm_Cmd(i); //将光标移到i //EINT; return(i); //返回当前光标位置,方便其他程序保存这个位置 } /************************************ 功能: 清屏后,在指定位置显示字符串 参数: addr : 指定的位置 p: 要显示的标准字符串的指针 返回: 无 **************************************/ void ClrDisplay( unsigned char addr, unsigned char *p) { //DINT; //先关闭中断,避免对此次通信的干扰 write_lcm_Cmd(0x01); //清屏 write_lcm_Cmd(0x0c); //打开整体显示 show(addr,p); //在指定位置显示指定字符串 //EINT; } /************************************ 功能: 清屏 参数: 无 返回: 无 **************************************/ void showblank(void) { //DINT; //先关闭中断,避免对此次通信的干扰 write_lcm_Cmd(0x01); //清屏 //EINT; } /************************************ 功能: 整体显示、显示光标、光标处反白闪烁 参数: 无 返回: 无 **************************************/ void blink(void) { //DINT; //先关闭中断,避免对此次通信的干扰 write_lcm_Cmd(0x0f); //EINT; } /************************************ 功能: 整体显示、不显示光标 参数: 无 返回: 无 **************************************/ void Dblink(void) { //DINT; //先关闭中断,避免对此次通信的干扰 write_lcm_Cmd(0x0C); //EINT; } void LCD_Putchar( unsigned char addr, unsigned char c) { unsigned char i; //DINT; write_lcm_Cmd(addr); i=c; write_lcm_byte(0xfa); write_lcm_byte(i & 0xf0);//写数据的高四位d7一d4 i <<= 4; write_lcm_byte(i); //写数据的低四位d3一d0 // EINT; } //************************************************************************** void main(void) { InitSysCtrl(); DINT; IER = 0x0000; IFR = 0x0000; Gpio_Init(); init_lcm(); ClrDisplay(0x90,"TMS329F_2808"); while(1) { //GpioDataRegs.GPADAT.bit.GPIO24=0; // GpioDataRegs.GPADAT.bit.GPIO16=~GpioDataRegs.GPADAT.bit.GPIO16; //Delay_Ms(1000); }; //************************************************* } |
|
相关推荐
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于 DSP5509 进行数字图像处理中 Sobel 算子边缘检测的硬件连接电路图
2343 浏览 0 评论
681 浏览 0 评论
普中科技F28335开发板中,如何使用aic23播放由代码生成的正弦波
2780 浏览 0 评论
3541 浏览 1 评论
1194 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 11:44 , Processed in 0.531572 second(s), Total 72, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号