[应用方案]

新唐N76E616段码液晶驱动功能小试(附代码)

[复制链接]
楼主: tuoxieshu
手机看帖
扫描二维码
随时随地手机跟帖
ahippo2010| | 2018-11-12 00:11 | 显示全部楼层
好的帖子,精彩。
我正在寻找单片机来驱动LCD,谢谢楼主,
可以也发一份完整的给我么?  我的邮箱  9211499@qq.com

使用特权

评论回复
tuoxieshu|  楼主 | 2018-11-12 12:27 | 显示全部楼层
ahippo2010 发表于 2018-11-12 00:11
好的帖子,精彩。
我正在寻找单片机来驱动LCD,谢谢楼主,
可以也发一份完整的给我么?  我的邮箱   ...

已发,请查收

使用特权

评论回复
yanlin0306| | 2018-12-25 01:41 | 显示全部楼层
谢谢楼主分享,我最近也在做N76E616驱动段码屏,可以也发一份完整的给我么?  我的邮箱  309507192@qq.com。谢谢!

使用特权

评论回复
laotui| | 2019-1-26 13:09 | 显示全部楼层
热转印效果非常好的,耗材少速度快自己做一两块小板非常方便,PCB现在便宜了,大板基本不做了,上几张效果图。
LQFP48

2.jpg
QFN封装也没有问题
1.jpg
做个最小系统也非常轻松
3.jpg

使用特权

评论回复
smallboy2005| | 2019-3-6 12:44 | 显示全部楼层
可以给我打包一个的吗  QQ邮箱254667121@qq.com  谢谢。

使用特权

评论回复
yuecheng| | 2019-5-8 14:29 | 显示全部楼层
楼主,可以分享一个完整代码吗?邮箱:qchengsj@163.com,非常感谢!

使用特权

评论回复
wzx1994| | 2019-5-9 17:04 | 显示全部楼层
可以分享一个完整代码吗?邮箱:410715998@qq.com,非常感谢!

使用特权

评论回复
qiang7260| | 2019-5-11 20:32 | 显示全部楼层
刚好去年活动价N76E616买了5片单片机,看了楼主来驱动LCD帖子,对lcd还不熟悉可以也发一份完整的给我看看怎样交流驱动?  我的邮箱  1557725289@qq.com 谢谢楼主,

使用特权

评论回复
rawo| | 2019-8-25 16:04 | 显示全部楼层
最近在学习N76E616,还不太熟悉,楼主可以发一份完整代码吗?谢谢楼主。936715258@qq.com

使用特权

评论回复
tuoxieshu|  楼主 | 2019-10-27 00:46 | 显示全部楼层
laotui 发表于 2019-1-26 13:09
热转印效果非常好的,耗材少速度快自己做一两块小板非常方便,PCB现在便宜了,大板基本不做了,上几张效果 ...

确实不错,我是习惯用化学法了,感觉比热转印更方便,不用熨斗不用转印机啥的,8mil的线都不会断,哈哈
这个反正自己做顺手啥方法不重要,做出来最重要!

使用特权

评论回复
tuoxieshu|  楼主 | 2019-10-27 00:48 | 显示全部楼层

使用特权

评论回复
nikel| | 2020-2-2 22:23 | 显示全部楼层
不知道楼主是否还在用N76E616...我最近在用这个片子,弄LCD得时候遇到问题想请教下:我往LCDDAT里面写0X01,0X02,都能在正确的位置显示码段,但是写0X04或者大于0x04的值时就会将那个引脚对应的4个码段全部显示。。。
这个是初始化函数:
void LCD_Initial(void)
{
     //step1: enable clock source
    clr_EXTEN1;//clr_EXTEN1;
    clr_EXTEN0;//set_EXTEN0;
        //USE  IN CLK 11.059MHz
        //set_HIRCEN;
  set_LIRCEN;  
    //step2: check ready
//??    while((CKSWT&SET_BIT6)==0);

   LCDCLK = 0x23;// USE LIRC as lcd CLK SOURCE //  LCDCLK = 0x13;      //;Select LXT as LCD clock source
   
    Set_All_GPIO_Input_Mode();

    LCDCON = 0x00;      //;VLCD = 0.9VDD (VDD = 3.3V, VLCD = 3.0V)
                        //;1/4 duty, 1/3 bias, 150kO resistor ladder
   
    LCDSEG0=0xff;       //use seg0-seg22
    LCDSEG1=0xff;
    LCDSEG2=0x7f;      
//    LCDSEG3=0x9f;

    LCDCON |= SET_BIT7;  //LCDEN = 1
}
这个是显示函数:
void lcd_disp_7seg2(uint8_t num)
{  
    switch (num)
    {
        case 0:    //show "0" -- 1'st 14seg Display
        {
            LCDPTR  = 11;
            LCDDAT  = (A_1 + B_1 + C_1 + D_1);

            LCDPTR  = 10;
            LCDDAT  = (E_1 + F_1);
        }break;
        
        case 1:    //show "1" -- 1'st 14seg Display
        {
            LCDPTR  = 11;
            LCDDAT  = (B_1 + C_1);
                    LCDPTR  = 10;
            LCDDAT  = 0X00;
        }break;
        
        case 2:    //show "2" -- 1'st 14seg Display
        {
            LCDPTR  = 11;
            LCDDAT  = (A_1 + B_1 + D_1);
            LCDPTR  = 10;
            LCDDAT  = (G_1+E_1);
        }break;
        
        case 3:    //show "3" -- 1'st 14seg Display
        {
            LCDPTR  = 11;
            LCDDAT  = (A_1 + B_1 + C_1 + D_1);

            LCDPTR  = 10;
            LCDDAT  = G_1;
        }break;
        
        case 4:    //show "4" -- 1'st 14seg Display
        {
            LCDPTR  = 11;
            LCDDAT  = (B_1+C_1);
                       
            LCDPTR  = 10;
            LCDDAT  = (F_1 + G_1);
        }break;
        
        case 5:    //show "5" -- 1'st 14seg Display
        {
            LCDPTR  = 11;
            LCDDAT  = (A_1 + C_1 + D_1);

            LCDPTR  = 10;
            LCDDAT  = (F_1 + G_1);
        }break;
        
        case 6:    //show "6" -- 1'st 14seg Display
        {
            LCDPTR  = 11;
            LCDDAT  = (A_1 + C_1 + D_1);

            LCDPTR  = 10;
            LCDDAT  =(E_1+F_1 + G_1);
        }break;
        
        case 7:    //show "7" -- 1'st 14seg Display
        {
            LCDPTR  = 11;                           
            LCDDAT  = (A_1 + B_1 + C_1);         
   
            LCDPTR  = 10;                           
            LCDDAT  = 0X00;                        
        }break;
        
        case 8:    //show "8" -- 1'st 14seg Display
        {
            LCDPTR  = 11;
            LCDDAT  =  (A_1 + B_1 + C_1+D_1);
            
            LCDPTR  = 10;
            LCDDAT  = (E_1+F_1 + G_1);
        }break;
        
        case 9:    //show "9" -- 1'st 14seg Display
        {
            LCDPTR  = 11;
            LCDDAT  =  (A_1 + B_1 + C_1+D_1);
            
            LCDPTR  = 10;
            LCDDAT  = (F_1 + G_1);
        }break;
    }
}


void lcd_disp_7seg3(uint8_t num)
{  
    switch (num)
    {
        case 0:    //show "0" -- 1'st 14seg Display
        {
            LCDPTR  = 13;
            LCDDAT  = (A_1 + B_1 + C_1 + D_1);

            LCDPTR  = 12;
            LCDDAT  = (E_1 + F_1);
        }break;
        
        case 1:    //show "1" -- 1'st 14seg Display
        {
            LCDPTR  = 13;
            LCDDAT  = (B_1 + C_1);
                        LCDPTR  = 12;
            LCDDAT  = 0X00;
        }break;
        
        case 2:    //show "2" -- 1'st 14seg Display
        {
            LCDPTR  = 13;
            LCDDAT  = (A_1 + B_1 + D_1);
            LCDPTR  = 12;
            LCDDAT  = (G_1+E_1);
        }break;
        
        case 3:    //show "3" -- 1'st 14seg Display
        {
            LCDPTR  = 13;
            LCDDAT  = (A_1 + B_1 + C_1 + D_1);

            LCDPTR  = 12;
            LCDDAT  = G_1;
        }break;
        
        case 4:    //show "4" -- 1'st 14seg Display
        {
            LCDPTR  = 13;
            LCDDAT  = (B_1+C_1);
                       
            LCDPTR  = 12;
            LCDDAT  = (F_1 + G_1);
        }break;
        
        case 5:    //show "5" -- 1'st 14seg Display
        {
            LCDPTR  = 13;
            LCDDAT  = (A_1 + C_1 + D_1);

            LCDPTR  = 12;
            LCDDAT  = (F_1 + G_1);
        }break;
        
        case 6:    //show "6" -- 1'st 14seg Display
        {
            LCDPTR  = 13;
            LCDDAT  = (A_1 + C_1 + D_1);

            LCDPTR  = 12;
            LCDDAT  =(E_1+F_1 + G_1);
        }break;
        
        case 7:    //show "7" -- 1'st 14seg Display
        {
            LCDPTR  = 13;                           
            LCDDAT  = (A_1 + B_1 + C_1);         
   
            LCDPTR  = 12;                           
            LCDDAT  = 0X00;                        
        }break;
        
        case 8:    //show "8" -- 1'st 14seg Display
        {
            LCDPTR  = 13;
            LCDDAT  =  (A_1 + B_1 + C_1+D_1);
            
            LCDPTR  = 12;
            LCDDAT  = (E_1+F_1 + G_1);
        }break;
        
        case 9:    //show "9" -- 1'st 14seg Display
        {
            LCDPTR  = 13;
            LCDDAT  =  (A_1 + B_1 + C_1+D_1);
            
            LCDPTR  = 12;
            LCDDAT  = (F_1 + G_1);
        }break;
    }
}

使用特权

评论回复
nclgxyqj| | 2020-2-13 16:37 | 显示全部楼层

您好,楼主,可以给我一个完整的吗  邮箱76739467@qq.com,  谢谢^

使用特权

评论回复
yiyigirl2014| | 2020-2-14 11:19 | 显示全部楼层
666,这种液晶屏挺好,超低功耗。

使用特权

评论回复
杨德金| | 2020-2-21 21:58 | 显示全部楼层

哇,感谢分享

使用特权

评论回复
liweiqiao| | 2020-4-17 12:10 | 显示全部楼层
求楼主的完整代码:liweiqiao@126.com。拜谢!!!

使用特权

评论回复
atz1000| | 2020-4-21 09:09 | 显示全部楼层
LCD驱动可移植性差,写得不好。

使用特权

评论回复
铭晟电子科技| | 2020-8-10 23:00 | 显示全部楼层
求楼主LCD完整驱动代码,谢谢!邮箱:2523548899@qq.com.

使用特权

评论回复
danq| | 2020-11-21 11:02 | 显示全部楼层
顶一下

使用特权

评论回复
tuoxieshu|  楼主 | 2020-12-6 04:43 | 显示全部楼层
nikel 发表于 2020-2-2 22:23
不知道楼主是否还在用N76E616...我最近在用这个片子,弄LCD得时候遇到问题想请教下:我往LCDDAT里面写0X01, ...

刚看到不好意思。可能你已经解决了。在这里回复一下吧。
你说你给LCDDAT设置0x04或0x04以上的数值会显示出问题,我看了你的代码没有给出液晶的引脚定义所以不好判断。
但是看你代码里的A_1+B_1+..F_1这种写法感觉有问题。LCDDAT的设置意义是LCDPTR指向某一位时,COM口连接的那些段被点亮(类似数码管的段选),但是跟数码管的段选又不太一样,当4COM的时候,COM的最大可能值只可能是4位的二进制数,也就是0-15,(数码管则是一个字节8位0-255),所以很可能你沿用了以前数码管的设值方法。
至于理论上可以是0-15,但你说0x04以上就不对了原因不是数字本身超出范围而是刷新逻辑上有问题。
你按这个思路查一下比较好。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则