找回密码
 注册
关于网站域名变更的通知
查看: 1975|回复: 5
打印 上一主题 下一主题

使用STC8A8K64S4A12单片机遇到的问题,请大神帮助!

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-8-10 16:01 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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
  • TA的每日心情
    开心
    2023-5-15 15:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2020-8-10 16:04 | 只看该作者

    8 M; @2 X6 ^8 C( t先确认一下板子有没有问题。

    该用户从未签到

    3#
    发表于 2020-8-10 16:25 | 只看该作者
    STC8A8K64S4A12是1T单片机,速度比STC89C52许多,延时函数要根据时钟频率修改数据。) n; L! V& k8 Z$ ]
    1 N- M& \5 y" _6 Z0 ^
    /**1ms延时程序(11.0592MHz 1T)****/
    : t0 t0 G' g# @! t8 c- h1 Fvoid Lcd1602_Delay1ms(uint k)9 v5 L, \3 {5 O& m' |' h
    {
    $ u( s' X) U! A) m# X/ B( b4 y, {        uint i,j;# S+ K! G) n" U6 n. e- g* a
            for(i=k;i>0;i--)
    1 ]7 M/ U# J0 `/ V9 A                for(j=1150;j>0;j--);* o- {* k" N# I) J4 d
    }

    该用户从未签到

    4#
    发表于 2020-8-10 16:35 | 只看该作者
    你确定板子跑起来程序了吗?调通串口打印数据试试,或者控制一个io口翻转试试?弄好了最小系统再调LCD

    点评

    有道理。。  详情 回复 发表于 2020-8-10 18:51

    该用户从未签到

    5#
    发表于 2020-8-10 18:51 | 只看该作者
    uiclx8s1js 发表于 2020-8-10 16:35: k5 @5 p: h0 f6 E$ w3 W
    你确定板子跑起来程序了吗?调通串口打印数据试试,或者控制一个io口翻转试试?弄好了最小系统再调LCD

    ( O' w, X6 S& \  I" h2 k6 `有道理。。
      [$ j; w" ~- E4 {9 I+ q

    该用户从未签到

    6#
    发表于 2020-8-11 12:11 | 只看该作者
    STC8A8K64S4A12这个片子与传统51片子注意下述的不同点:4 C7 B4 y& P1 Z
    1. 读、写默认的是P4.4和P4.3,不是以前的P3.7和P3.6。检查你购买的转接板,看看是如何连接的这两条线?程序中可能要重新定义接口或修改程序。
    $ a, x) D" k! M8 \0 B) a/ a5 A2.注意传统的复位引脚,现在是P5.4。在烧录程序时是如何处理这个引脚?是否会影响程序的运行?
    ( c; d2 o) I) \' W' ~# q    这个片子很好,速度快,且自带16路12位AD接口。其实自己做一块增强转接板,将MAX232芯片等做在板上,焊上40直插引脚,就是一块功能强大的开发板。使用接线连接各种模块。在KeilC51下可以联机仿真,完全可以取代开发板!
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-7-22 03:25 , Processed in 0.140625 second(s), 31 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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