|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 yjtj30xe 于 2020-8-10 16:03 编辑
y: F' h; j9 `8 j* q
i( z. m8 a1 T ~# l B1 A0 j9 s( P在网上买的这个STC8A8K64S4A12,可以直接插到开发板上,引脚兼容普通51,用这个驱动1602液晶,整了好久也没有显示出来,因为速度比普通51快,所以延时我也调整了,还是没任何显示,下面这是普通51的程序可以显示,请高手帮忙看下,能不能修改让其在STC8A8K64S4A12显示出来,非常感谢! ^( u, ^# s6 _( K& K3 Z: L
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器 q- `# J! R8 o0 A5 w/ y
$ M6 o. \$ A( j4 L, d# Ztypedef unsigned int u16; //对数据类型进行声明定义
8 D7 g1 @! m$ D0 S, y- g. y4 Xtypedef unsigned char u8;
3 P o$ z$ D+ o8 t; l \4 Y; `' h# K6 A1 S
#define uchar unsigned char5 U' f3 f1 E" k' w/ H2 f
#define uint unsigned int
1 j2 a8 ?' O6 C6 u1 p" C \" B4 D
' y7 A9 |4 t: m/ p7 ]! z; E#define LCD1602_DATAPINS P0
& y+ W4 B% F7 [& L4 j6 n0 r6 h4 O* ^$ d5 O, K9 e; y y
sbit LCD1602_E=P2^7;
: S5 M/ d3 Y4 W, i) P0 E3 {; Ssbit LCD1602_RW=P2^5;8 }, E' D4 z9 i9 k& U3 q8 J( ]
sbit LCD1602_RS=P2^6;
. G: @( `8 l+ I5 P/ Z
3 r' \8 Y2 E# U! P5 S$ p' ?3 E2 ?0 G, D' @3 g* k% {) ^" i
u8 Disp[]=" Pechin Science ";2 N) u O& B! w p7 N( Y0 h( g
3 c$ [! G6 ?5 W) `4 q/*******************************************************************************
' @. E3 y5 n- Z* 函 数 名 : Lcd1602_Delay1ms
: ?* y( D1 _2 e" R; u- `* 函数功能 : 延时函数,延时1ms# p" p9 q' b% ?$ y# H* X" r; U
* 输 入 : c
t! [! x# T) e4 }, m& B: c! K* 输 出 : 无+ E! Q* P7 L+ ?- V' u$ B# s
* 说 名 : 该函数是在12MHZ晶振下,12分频单片机的延时。
" j* H2 C0 n; k3 H1 B*******************************************************************************/% r9 ^; A6 c K1 g
, A$ @8 s5 l# ], Q( C. svoid Lcd1602_Delay1ms(uint c) //误差 0us# @2 }5 q2 \4 \( A+ n' {1 o
{1 r) z& e! W! J: M3 v r
uchar a,b;4 y, C& @ _4 t1 ~6 l
for (; c>0; c--)
$ T; C$ ~6 K9 A6 N( i2 T {
- N- U* h+ r. U5 d1 ]7 X& l for (b=199;b>0;b--)
( ?/ {7 J6 y+ M Y {; s! t. a" U( v2 u! d4 e1 W
for(a=1;a>0;a--);8 J; {% f0 I+ k1 B( c
} 1 w' V1 m+ c& ^) m
}, S( A+ S7 ^" n- v
( p( l/ l3 Q$ k9 {
}
. G/ g1 d# ?& C! v7 e/ ^ h5 q7 X$ }: y. V2 @! H2 u( h" @
void LcdWriteCom(uchar com) //写入命令
: i6 p, |& n$ Z{
/ t; J$ K. w0 ]) B- x LCD1602_E = 0; //使能/ U4 F: m9 W, \' B
LCD1602_RS = 0; //选择发送命令
( `8 z/ b+ R4 }$ u6 X1 y2 t' d) d LCD1602_RW = 0; //选择写入
* F" w: E ~! O( E , G% |/ k" b, k: z' e1 Q. V. r
LCD1602_DATAPINS = com; //放入命令
. l7 \$ M0 Z* y7 s Lcd1602_Delay1ms(1); //等待数据稳定0 ?, H, Q5 E# ^. L# \
) A" h8 J+ m: j7 b& Y3 _ LCD1602_E = 1; //写入时序- n9 N& p0 m( N9 K0 u. s5 c( a0 ^" I
Lcd1602_Delay1ms(5); //保持时间
1 f0 U( n1 A6 {/ V+ ^0 Y; T+ k LCD1602_E = 0;
5 s$ t. w9 \1 e' R d5 c! k5 O) X}1 z9 l4 V8 K0 ]; R2 q+ c
4 X+ _7 V. E. E# M6 I, A/ g/*******************************************************************************
+ E8 ~1 v1 ?7 ^, r! M# T* 函 数 名 : LcdWriteData
, I# Z! V) m4 ]: ~8 c* 函数功能 : 向LCD写入一个字节的数据! |9 G9 }( ` z8 O: A& [$ b, }
* 输 入 : dat
) Q* E, x6 q6 Y* 输 出 : 无
& ~0 }. D6 p7 A6 O g" E7 A& o*******************************************************************************/
9 p9 a" l# F! X" X+ N+ Z! z) t$ T8 d9 @: ]# Y, C- P- v
void LcdWriteData(uchar dat) //写入数据/ A9 J; P+ F7 b* y$ [, }: ?6 V
{
5 y/ ]! E; e' D( h; ~" I LCD1602_E = 0; //使能清零) `3 K1 d' ~" P4 w q; L1 |7 A( Y" R4 Y
LCD1602_RS = 1; //选择输入数据' f4 \1 e+ w4 j: a1 h
LCD1602_RW = 0; //选择写入
9 z( U' f, J! B. h1 c& A: P; W4 d5 ?
LCD1602_DATAPINS = dat; //写入数据
% _( M- Q6 Y0 u- b' j* S" { Lcd1602_Delay1ms(1);
$ ~; o8 s0 D1 _% d4 X/ r _+ m# p+ p$ @3 L U4 U; Z. w
LCD1602_E = 1; //写入时序
' j2 M' \. x& R# t Lcd1602_Delay1ms(5); //保持时间- t/ J7 u4 e8 A' P
LCD1602_E = 0;7 k3 u0 u+ w; d# O5 h/ `9 i% n
}9 U6 H; }# _/ @3 p5 J* P
* u/ E: V8 d0 v: ~2 u* ^0 Z
: R8 S% \0 {7 J% Z
void LcdInit() //LCD初始化子程序
0 a" q, ^0 `9 }! J6 y{
( K+ t& W- A: [6 K) O6 | LcdWriteCom(0x38); //开显示3 `- t6 |# I/ R' p( ]5 B& d, ?. d
LcdWriteCom(0x0c); //开显示不显示光标
7 F$ i% h' G7 L3 U, B& k: q8 U S LcdWriteCom(0x06); //写一个指针加10 ?' U8 H0 |2 T" |3 {9 ]2 u8 x
LcdWriteCom(0x01); //清屏1 \3 p: v" A1 c; w& L2 y' m
LcdWriteCom(0x80); //设置数据指针起点* ]8 P; @. L _! b- n! }
} ~2 g* `0 E# n3 I
+ u x, S& T- P7 R$ K2 qvoid main(void)
/ E3 p: i9 q ~+ ~{
- N9 g( M% _+ X2 @" J5 X, m' k u8 i;
: L2 E: L1 t3 K( O2 h; m LcdInit();" v. L' O1 [8 x% Z
for(i=0;i<16;i++)
% R: |9 t8 F m- k0 R {
8 h! U% s8 C9 y LcdWriteData(Disp);
, t0 H, f5 A4 g: f9 ^# K" F, r/ s }3 T& O& j( {- ^% M9 S; \
while(1); ' T9 r9 y6 w2 Y: \ a! @" o' z
}
6 T0 Y6 M- e9 s8 d( W" o |
|