找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4932|回复: 0
打印 上一主题 下一主题
收起左侧

atmega8l直接驱动笔段式lcd驱动程序。。。

[复制链接]
跳转到指定楼层
楼主
ID:83710 发表于 2015-6-24 21:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include"include.h"
uchar lcdtab[3][10][3]={{{0x07,0x01,0x03},{0x04,0x00,0x02},{0x06,0x03,0x01},
{0x06,0x02,0x03},{0x05,0x02,0x02},{0x03,0x02,0x03},{0x03,0x03,0x03},{0x06,0x00,0x02},
{0x07,0x03,0x03},{0x07,0x02,0x03}},
{{0x18,0x14,0x0c},{0x10,0x10,0x00},{0x18,0x08,0x0c},
{0x18,0x18,0x08},{0x10,0x1c,0x00},{0x08,0x1c,0x08},{0x08,0x1c,0x0c},{0x18,0x10,0x00},
{0x18,0x1c,0x0c},{0x18,0x1c,0x08}},
{{0x60,0x40,0x70},{0x00,0x40,0x40},{0x40,0x60,0x30},
{0x40,0x60,0x60},{0x20,0x60,0x40},{0x60,0x20,0x60},{0x60,0x20,0x70},{0x40,0x40,0x40},
{0x60,0x60,0x70},{0x60,0x60,0x60}}}; // 笔段式液晶 的seg口的 单片机 io口隐映射表,根据不同的笔段式lcd即可自行制表。。。,上面是1/2偏压,1/3占空比笔段式lcd的编码,三个com口通过两个电阻接到公共时钟端io口,两电阻抽头接到lcd的com端,seg口可直接接单片机io口。。
uchar com;
uchar counter;
uint slashtime;
uchar flashweisel;

#pragma interrupt_handler timer0_ovf_isr:iv_TIMER0_OVF
void timer0_ovf_isr(void)
{
  uchar segb,segc;
  TCNT0 = 0x83; //reload counter value
  flshtm++;  
  counter++;  
  if(counter==8)//每过八毫秒,换行扫描,总共三行,共24ms一帧,帧频达到40hz左右
  {
     counter=0;  
  segb=lcdtab[0][wei6][com]|lcdtab[1][wei5][com]|lcdtab[2][wei4][com];
  segc=lcdtab[0][wei3][com]|lcdtab[1][wei2][com]|lcdtab[2][wei1][com];  

以下的两个if else 语句是实现位闪烁功能的,可以去掉,不影响正常显示
  if(flshtm<slashtime)
         flashweisel=0;
  else if(flshtm>(slashtime*2))
      flshtm=0;
  if((flashweisel>=4)&&(flashweisel<=6))
      segb  &=  (~lcdtab[6-flashweisel][8][com]);
  else if(flashweisel)
      segc  &=  (~lcdtab[3-flashweisel][8][com]);
  PORTB=segb;
  PORTC=segc;
  PORTD=0x70&(~(1<<(com+4)));// 扫描com口
  if(++com==3)com=0;//com++,//逐行扫描每个com口
  }
  if(counter%4==0)//每过4ms翻转一次,即交流
  {
    PORTC=~PORTC;
    PORTB=~PORTB;
    PORTD=(~PORTD)&0xf7;
  }

}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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