历史上的今天
今天是:2025年01月29日(星期三)
2018年01月29日 | 在EM78Pxx上模拟8(COM)*8(SEG)LCD驱动
2018-01-29 来源:eefocus
;/*=============================================================================
; 在EM78Pxx上模拟8(COM)*8(SEG)LCD驱动 |
; |
; |
;一. LCD扫描原理: |
;正向扫描: COM on=VCC,COM off=1/2VCC,对应SEG=1则输出VSS,为0 则输出VCC. |
;反向扫描: COM on=VSS,COM off=1/2VCC,对应SEG=1则输出VCC,为0 则输出VSS. |
; |
;二. 电路接法: |
; 所有COM口线都接一个上拉电阻和一个下拉电阻,阻值相同. |
; 当口线设为输入时,端口电压为1/2VCC. |
; COM I/O口设定高阻输入&正常输出. |
; |
;三. 使用方法: |
; 由程序定时调用. |
; |
;DATE:2005-02-24 ok |
;=============================================================================*/
#define LCD_sCAN_bearing LCD_scan_status.0 ;//扫描方向
#define common_amount 4 ;//common PIN 定义COM口的数量 max=8
;//LCD显示代码寄存器
COM_port == 5 ;//PORT5=COM0--COM7
SEG_port == 6 ;//PORT6=SEG0--SEG7
seg0 == 0x10 ;//静态变量
seg1 == 0x11
seg2 == 0x12
seg3 == 0x13
seg4 == 0x14
seg5 == 0x15
seg6 == 0x16
seg7 == 0x17
LCD_scan_status == 0x18
LCD_scan_counter == 0x19
LCD_scan_temp == 0x1a ;//动态变量
seg_TEMP == 0x1b
com_temp == 0x1c
!seg_port=0 ;//seg_port为outport
LCD_drive()
SEG_temp=0xff
com_temp=0xff
LCD_scan_temp=LCD_scan_counter
_if LCD_scan_temp!=0
goto ld1
jbc seg0,0 ;//COM0
bc SEG_temp,0
jbc seg1,0
bc SEG_temp,1
jbc seg2,0
bc SEG_temp,2
jbc seg3,0
bc SEG_temp,3
jbc seg4,0
bc SEG_temp,4
jbc seg5,0
bc SEG_temp,5
jbc seg6,0
bc SEG_temp,6
jbc seg7,0
bc SEG_temp,7
bc com_temp,0
ld1:
_if --LCD_scan_temp!=0
goto ld2
jbc seg0,1 ;//COM1
bc SEG_temp,0
jbc seg1,1
bc SEG_temp,1
jbc seg2,1
bc SEG_temp,2
jbc seg3,1
bc SEG_temp,3
jbc seg4,1
bc SEG_temp,4
jbc seg5,1
bc SEG_temp,5
jbc seg6,1
bc SEG_temp,6
jbc seg7,1
bc SEG_temp,7
bc com_temp,1
ld2:
_if --LCD_scan_temp!=0
goto ld3
jbc seg0,2 ;//COM2
bc SEG_temp,0
jbc seg1,2
bc SEG_temp,1
jbc seg2,2
bc SEG_temp,2
jbc seg3,2
bc SEG_temp,3
jbc seg4,2
bc SEG_temp,4
jbc seg5,2
bc SEG_temp,5
jbc seg6,2
bc SEG_temp,6
jbc seg7,2
bc SEG_temp,7
bc com_temp,2
ld3:
_if --LCD_scan_temp!=0
goto ld4
jbc seg0,3 ;//COM3
bc SEG_temp,0
jbc seg1,3
bc SEG_temp,1
jbc seg2,3
bc SEG_temp,2
jbc seg3,3
bc SEG_temp,3
jbc seg4,3
bc SEG_temp,4
jbc seg5,3
bc SEG_temp,5
jbc seg6,3
bc SEG_temp,6
jbc seg7,3
bc SEG_temp,7
bc com_temp,3
ld4:
_if --LCD_scan_temp!=0
goto ld5
jbc seg0,4 ;//COM4
bc SEG_temp,0
jbc seg1,4
bc SEG_temp,1
jbc seg2,4
bc SEG_temp,2
jbc seg3,4
bc SEG_temp,3
jbc seg4,4
bc SEG_temp,4
jbc seg5,4
bc SEG_temp,5
jbc seg6,4
bc SEG_temp,6
jbc seg7,4
bc SEG_temp,7
bc com_temp,4
ld5:
_if --LCD_scan_temp!=0
goto ld6
jbc seg0,5 ;//COM5
bc SEG_temp,0
jbc seg1,5
bc SEG_temp,1
jbc seg2,5
bc SEG_temp,2
jbc seg3,5
bc SEG_temp,3
jbc seg4,5
bc SEG_temp,4
jbc seg5,5
bc SEG_temp,5
jbc seg6,5
bc SEG_temp,6
jbc seg7,5
bc SEG_temp,7
bc com_temp,5
ld6:
_if --LCD_scan_temp!=0
goto ld7
jbc seg0,6 ;//COM6
bc SEG_temp,0
jbc seg1,6
bc SEG_temp,1
jbc seg2,6
bc SEG_temp,2
jbc seg3,6
bc SEG_temp,3
jbc seg4,6
bc SEG_temp,4
jbc seg5,6
bc SEG_temp,5
jbc seg6,6
bc SEG_temp,6
jbc seg7,6
bc SEG_temp,7
bc com_temp,6
ld7:
_if --LCD_scan_temp!=0
goto ld8
jbc seg0,7 ;//COM7
bc SEG_temp,0
jbc seg1,7
bc SEG_temp,1
jbc seg2,7
bc SEG_temp,2
jbc seg3,7
bc SEG_temp,3
jbc seg4,7
bc SEG_temp,4
jbc seg5,7
bc SEG_temp,5
jbc seg6,7
bc SEG_temp,6
jbc seg7,7
bc SEG_temp,7
bc com_temp,7
ld8:
!com_port=com_temp
if LCD_scan_bearing==0
com SEG_temp ;//反向扫描COM=0 SEG=1
else
com com_temp ;//正向扫描COM=1 SEG=0
endif
seg_port=SEG_temp ;//write seg
com_port=com_temp ;//write com
if ++LCD_scan_counter>=common_amount ;//检查同一方向扫描是否完成
LCD_scan_counter=0
if LCD_scan_bearing==0 ;//已经完成则改变扫描方向
LCD_scan_bearing=1
else
LCD_scan_bearing=0
endif
endif
return
上一篇:EM78P153范例程序
史海拾趣
|
软件延时貌似就是执行空指令 那硬件延时又是整样的啊? 能给个8051的硬件延时图吗? 还有如果用硬件延时延时的话 #include #define uint unsigned int #define uchar unsigned char void dlms(void) { uint j; uint i; for( ...… 查看全部问答> |
|
Easy51单片机开发板支持Atmel AT89S51/52/53、STC89C51/52/53等多种标准51单片机,是集学习、实验、开发于一体的初学者快速入门套件,是嵌入式入门的最佳选择。 Easy51单片机开发板提供了键盘、数码管、蜂鸣器、液晶 ...… 查看全部问答> |
|
为什么CMOS器件数据手册里总是找不到输入电流的参数呢? 里边的Iik电流是干嘛用的?(翻译过来就是输入钳位电流) [ 本帖最后由 bdhrui 于 2012-4-24 23:06 编辑 ]… 查看全部问答> |
|
// Some useful Period vs Frequency values // SYSCLKOUT = 150MHz 100 MHz // ----------------------------------------- // ...… 查看全部问答> |
|
有没有哪位大虾测试过STM32F407的网络数据传输速度? 看了ST网站上的资料,没有看到相关的测试。STM32F407的主频不低,CPU的速度应该不是网络数据传输的瓶颈,有没有同学做过测试的,给大家共享下。 … 查看全部问答> |
|
【MSP430 编译器使用经验】+教你如何用IAR入门430 安装IAR后需要破解。至于如何破解相信网上很多资料。可以下载一个注册机。然后就行了,如果你没破解就算程序完全对的编译也不会通过的。 先打开IAR软件。之后。NEW-》workspace 点击project ...… 查看全部问答> |
|
AM3352通过usb转串口芯片ft232与下位机稳定性通讯问题 大家好,我在做一个项目,用到AM3352通过usb转串口芯片ft232与下位机通讯。板子工作正常。但是长时间运行,9个小时中,发现有如下日志打印。usb会断开然后重连接。以下是日志。有什么建议解决呢。如果短时间跑没有这个问题。要跑久了才有。其间是一 ...… 查看全部问答> |




