#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
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;
}
}
上一篇:对编译器的选择
下一篇:AVR单片机闪烁灯程序-第一个程序
推荐阅读最新更新时间:2024-11-13 15:46
设计资源 培训 开发板 精华推荐
- 使用 ON Semiconductor 的 MPIC2151P 的参考设计
- 使用 Analog Devices 的 LT1109CS8 的参考设计
- 超声波测距尺
- AM1G-0505SZ 5V 1 瓦 DC-DC 转换器的典型应用
- LTC3859EFE 高效宽输入范围双路 3.3V/8.5V 转换器的典型应用电路
- DC1009A-B,演示电路具有 LTC2488、2/4 通道、16 位 DS ADC,具有 Easy Drive 输入
- 1公里无线电控制器
- LTC3331 的典型应用 - 具有能量收集电池充电器的纳米功率降压-升压型 DC/DC
- LTC1046CS8 倍压器的典型应用电路
- 用于超级电容器后备电源的 LT8705EFE 同步降压-升压型 DC/DC 控制器的典型应用电路