{
CLK_CKDIVR = 0x19 /*HSI/8、CPU = 2/2,1M速度*/
CLK_PCKENR1 = 0x04 /*只开启uart1的时钟*/
CLK_PCKENR2 = 0x00/*打开ADC的时钟*/
}
void IO_INIT(void)
{
PA_CR1 = 0x00 /*推挽输出*/
PA_CR2 = 0x00 /*最大输出为2MHZ,禁止外部中断*/
PA_DDR |= 0x20 /*PA5为输出*/
}
void UART1_INIT(void)
{
UART1_BRR2 = 0x00
UART1_BRR1 = 0x0d /*2M的Fmaster下9600的波特率*/
UART1_DR = 0xaa
UART1_CR2 = 0x08 /*发送完寄存器空,发送使能*/
UART1_CR3 = 0x00 /*1个停止位*/
}
#pragma vector = UART1_T_TXE_vector
__interrupt __root void UART1_TX(void)
{
UART1_SR = 0x00
UART1_DR = 0xaa
}
只作为参考,希望对您有帮助,谢谢!
hi ,你好,我是04级电子信息毕业,我的毕业论文写的是《LED显示屏设计》,可能我们选到一个题目了,包括硬件电路、信号处理、汇编语言的代码,呵呵以下为目录,可供参考,禁止抄袭,如果觉得好,给分,我发论文给你。
目录已经发到你邮箱了
摘要: 本设计以89c51单片机为核心,采用点阵图形显示器显示汉字,通过时序控制电路,控制信号电路,显示驱动电路等完成显示。
Abstract: This design take the 89c51 monolithic integrated circuit asa core, uses the lattice graph monitor demonstration Chinesecharacter, through the sequential control electric circuit, controlsthe signal circuit, demonstrated the actuation electric circuit and soon completes the demonstration.
关键字:列显示驱动、时序控制电路、串行异步通信方式、显示驱动电路、控制信号电路
目 录
绪 论……………………………………………………1
第1章 设计思想………………………………………2
第2章 设计方案………………………………………4
第3章 基本结构………………………………………5
第4章 硬件部分………………………………………9
4.1 微机硬件电路…………………………………9
4.1.1 显示控制电路……………………………9
4.1.2 显示驱动电路……………………………10
4.2 控制信号………………………………………12
4.2.1 与列显示数据有关的信号……………13
4.2.2 行号锁存器打入信号…………………13
4.2.3 区分上写部分的控制信号……………13
4.2.4 清屏信号………………………………14
第5章 软件部分………………………………………15
5.1 理论分析………………………………………15
5.2 程序设计………………………………………17
5.3 流程图…………………………………………22
5.3. 1主程序流程图…………………………22
5.3. 2 中断服务程序流程图…………………23
第6章 结论……………………………………………24
参考文献…………………………………………………25
致谢………………………………………………………26
5.2程序设计
ORG0000H
SJMPMAIN :跳转到主程序MAIN
ORG0023H
SIENTRY: AJMP1 SIS :串行通信中断入口,跳转到
:串行通信中断服务程序SIS
MAIN: MOVSP,60 :设栈
MOVR0,80H :指向RAM区
MOVR1,00:R0,R1:RAM指针
MOVDPTR,1000H :EPROM的数据首地址
:DPTR:EPROM指针
REPROM: MOVA,00
MOVC A,@A+DPTR :从EPROM1000H读数据
INV DPTR :从EPRON读200H个字节
:数据到RAM
PUSHDPL :DPTR进栈
PUSHDPH
MOV DPH,R0 :DPTR换成RAM指针
MOV DPL,R1
MOVX@DPTR,A :数据送RAM
INC DPRT
MOV R0,DPH :存DPTR
MOV R1,DPL
POP DPH :d出DPTR(EPROM地址)
POP DPL
MOV R2,DPH :R2:判是否到1200H
CJNE R2,12H,REPROM :未传送完200H个字节转回
SINIT:MOV TMOD,21H :设T1方式2,T0方式1
MOV TH1,FAH:设T1定时6.51μs
SETB 8EH :置TCONBIT6,打开T1
MOV TH0,00 :置T0定时
MOV TL0,00
MOV R6,7EH
MOV R7,00H
MOV SCON,50H:设SCON为50H,方式1,REN=1
MOV PCON,00 :设PCIN为0
MOV 50H,82H
MOV 51H,00
SETB AFH :开中断
SETB ACH :允许串行通信中断
SETB 9CH :SCONBIT4,REN=1
NEXT CLRC
MOV A,R7 :R7初值为0
ADD A,00
MOV R7,A
MOV A,R6 :R6初值为7E
ADC A,02H
MOV A,51H:51初值为0
XRL A,R7 :A=R7?
JNZDISP1 :不等,转到DISP1
MOV A,50H :等,50初值为82H
XRL A,R6 :A=R6?
JNZ04H :不等,转到DISP1
MOV R6,#80H :等,R6=80H
MOV R7,00
DSP1: MOV R0,00
TM256 MOV R3,00
TM512 MOV R2,00
MOV DPH,R6 :80H
MOV DPL,R7 :00H
CONT2:MOV R1,00
CLRB4H :P3BIT4=T0,上下控制=0
DISPH: MOVX A@DPTR :读入RAM
INCDPTR
INCR1:R1:字节计数
MOV P1,A :向P1输出一个RAM字节数据
CLRB3H :P3BRT3=INT1
SETB B3H:INT1是移位寄存器的打入脉冲
CLRB5H :P3BRT5=T1
SETB B5H
CLRB5H:T1一共输出8个脉冲
SETB B5H :即移位8次
CLRB5H :T1是移位寄存器的移位脉冲
SETB B5H
CLR B5H
SETB B5H
CLR B5H
SETB B5H
CLR B5H
SETB B5H
CLR B5H
SETB B5H
CLR B5H
SETB B5H
CJNE R1,10H,DISPH :R1<>10H,转到DISPH
:10H=16D,16*8=128
PUSH DPH :若R1=10H,则DPTR进栈
PUSH SPL
SETB B4H:P3BIT4=T0,上下控制=1
CLRC
MOV A,DPL
ADD A,P0H :跳过F0H个字节
MOV DPL,A :原DPTR已为10H,10H+F0H指向
MOVA,DPH :256字节之后
ADC A,00: 即指向下一半
MOV DPH,A
DISPL:MOVX A,@DPTE
INCDPTR
INCR1
MOV P1,A
CLRB3H
SETB B3H
CLRB5H
SETB B5H
CLRB5H
SETB B5H
CLRB5H
SETB B5H
CLRB5H
SETB B5H
CLRB5H
SETB B5H
CLRB5H
SETB B5H
CLRB5H
SETB B5H
CLRB5H
SETB B5H
CJNE R1,20H,D4H:R1<>20H,转到DISPL
CLRB2H:P3BIT2=INT0
SETB B2H
MOV P1,R2 :R2输出到P1
MOV DPTR,0000
MOVX @DPTR,A :只是让地址动作
INCR2
POP DPL
POP DPH
CINER2,10H,CONT1 :R2<>10H转到CONT1
INC R3 :R2=10H
CINE R3,FFH,TIM256 :R3<>FFH,转到TIM256
INC R0 :R3=FFH
CINER0,02H,TIM512 :R0<>02H,TIM512
LJMPNEXT
TIM512: LJMP TM512:$21
CONT1: LJMP CONT2
TIM256: AJMP0 TM256
ORG 0800H :串行通信服务程序
SIS: CLRAFH :IE BIT7关中断
CLR 98H:SCONBIT0RI清接收中断
MOV A,SBUF
XRLA,3FH :3FH传输起始标
JZ DTSTART :SBUF=3FH,开始
SJMPCLOSE :否则结束
DTSTART: MOV DPTR,#0001H:只是让地址动作
MOVX @DPTR,A :关00译码,开01译码
:向74LS595送清除信号SRCLR*
CLR B2H :把清零的结果打入列输出锁存器
:完成关显示 *** 作
MOV DPTR,#8000H
MOV SBUF,A
WAITT:JNB99H,WAITT :SCONB1TI=0,等待发射完成
CLR 99H:SCONB1TI=1
WAITR: JNB98H,WAITR:SCONB0RI=0,等待接受完成
CLR98H:SCONB0RI=1
MOV A,SBUF :传输字节计数L
MOV 50H,A
CONTINUE: MOVSBUF,A
WARTT1: JBC 99H,WARTT1 :SCONB1TI=1,发射完成
SJMP WAITT1:SCONB1TI=0,等待发射完成
WAITTR1: JBC 98H,RDATA:SCONB0RI=1,接收完成
SJMP WarrR1 :SCONB0RI=0,等待接收完成
RDATA: MOVA,SBUF :读入显示数据
MOV@DPTR,A
INC DPTR
MOV A,DPH
XRLA,50H
JNZCONTINUE :(A)<>(50H),继续接收
MOVA,DPL :(A)=(50H)
XRL A,51H
JNZ CONTINUE :(A)<>(51H),继续接收
MOVASBUF,A :(A)=(51H)WAITTE: JNB 99H,WAITTE:SCONB1TI=0,等待发射完成
CLR 99H :SCONB1TI=1
MOVDPTR,8000H
MOVR0,20H
MOVR1,10H
MOVR6,80H
MOVR7,00
CLOSE: SETB AFH:IE
RETI
ORG 0800H
DISPLAYDATA:DB00,00,00,00,00,00,00,00,00,00
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)