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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 yjtj30xe 于 2020-8-10 16:03 编辑 ; M$ |/ f; i  O( t* |+ U# _% V- O
) @" s6 i- Y* Y) K9 |; [# o
在网上买的这个STC8A8K64S4A12,可以直接插到开发板上,引脚兼容普通51,用这个驱动1602液晶,整了好久也没有显示出来,因为速度比普通51快,所以延时我也调整了,还是没任何显示,下面这是普通51的程序可以显示,请高手帮忙看下,能不能修改让其在STC8A8K64S4A12显示出来,非常感谢!
) ]1 f6 T: _) a( R8 {#include "reg52.h"                         //此文件中定义了单片机的一些特殊功能寄存器
7 ^* ^1 T7 j& _+ O0 s: J
( f8 F: L4 w: ~- {1 s: c* r0 k7 otypedef unsigned int u16;          //对数据类型进行声明定义
. L: r  G" m, h( ftypedef unsigned char u8;
: L  b# \" M; s# A8 ~
" n0 W! Q/ W0 }1 N0 g  @9 k  I4 b#define uchar unsigned char6 E% X2 ]- d; m6 @3 p, u' l
#define uint unsigned int0 Q' \( z: Y9 b2 U$ n) N
  a7 d2 E: V4 }) t* m9 s
#define LCD1602_DATAPINS P00 y: L+ G" O8 ^8 K/ }* O) P& r! o

8 B! v& l6 P/ k. C3 o) A$ Bsbit LCD1602_E=P2^7;" Q" L$ I1 N2 s+ J- z" S
sbit LCD1602_RW=P2^5;
9 V! m) Q  X  ksbit LCD1602_RS=P2^6;
- z9 X+ q$ G1 S1 Y9 \) J9 T, ^  U/ J* v. `8 g1 m
9 `/ u: ~4 t: ~3 ~- o3 q" S
u8 Disp[]=" Pechin Science ";
& t: Z2 T  X' Y6 t8 @; S. @% o8 H$ G) W7 `5 k6 i) f/ q  `
/*******************************************************************************9 ^8 G0 R9 W8 o& H. g
* 函 数 名         : Lcd1602_Delay1ms
2 j, u$ q* E0 }4 g3 ^& N" y* 函数功能                   : 延时函数,延时1ms
. `, f: k3 c+ @" @7 {: M0 F* 输    入         : c$ K' D7 X" j8 d( w5 ^, r
* 输    出         : 无
# W! k8 H+ }3 n/ i& l. {. E* 说    名         : 该函数是在12MHZ晶振下,12分频单片机的延时。' `) n/ i  A2 o9 f# s3 i3 S6 g
*******************************************************************************/
" _* v0 a1 Q8 k' E+ I+ ~2 K3 @$ x7 E( I' |6 ^$ s! t
void Lcd1602_Delay1ms(uint c)   //误差 0us* t, G# N2 L3 d* o! r! Y' T
{
8 v. n* X) J7 {9 T  P" b    uchar a,b;) W8 W( B0 T4 F+ p
        for (; c>0; c--)# v: i3 @# r) ^- h8 A8 e
        {
3 _  D8 `: G6 r, `: B* F& I                 for (b=199;b>0;b--)$ B8 Z" w: I" z% W9 c  j
                 {
* i6 j+ j  M% S# Y  |" q- b                          for(a=1;a>0;a--);0 ^* J1 Y, E. |* b. q
                 }      / X0 F$ H7 f3 Q
        }$ `1 I& W- P* k" V1 i5 w2 U
            
% b0 h  J$ U3 t3 K}
+ K1 f: \* a2 Y  n$ X5 u! s- v+ `. g4 z* j- X! e9 G% X8 E- g' J: ?6 u, p* F
void LcdWriteCom(uchar com)          //写入命令5 h3 g5 [% M4 j! V
{: o' V( O' b5 V# J' n& [
        LCD1602_E = 0;     //使能
5 U/ K% u9 O* Q* K$ |        LCD1602_RS = 0;           //选择发送命令) Q8 u  u4 a; \+ W, r0 c
        LCD1602_RW = 0;           //选择写入! T4 I* l1 \& V' i
        
$ u9 I7 H; B, @# c# z2 S" U- }        LCD1602_DATAPINS = com;     //放入命令
% S, ?* b$ v( f! V8 k% L- |        Lcd1602_Delay1ms(1);                //等待数据稳定: d$ O- J* U- a0 ~2 V7 c2 V
) U6 Y9 N' O  N. O
        LCD1602_E = 1;                  //写入时序) {1 C1 V) Z( H+ H$ C
        Lcd1602_Delay1ms(5);          //保持时间/ x9 E  I% |3 j4 b: V
        LCD1602_E = 0;1 E- U( K! z! E( B3 O+ j
}* k; v) F% H* {. z" B
/ b; D1 f/ s9 d1 A# r/ k1 Y
/*******************************************************************************# J% Y" u. K0 ~( x6 r# I
* 函 数 名         : LcdWriteData- |) C- H7 x5 r. F) O, R
* 函数功能                   : 向LCD写入一个字节的数据
7 C7 G% W/ B' a7 |- g& `% l* 输    入         : dat& @! ?% b- g7 ~. o
* 输    出         : 无8 D/ E. C' i* @, p7 Y
*******************************************************************************/                  
! V/ k5 X5 W# d$ F% X
$ o9 k- i2 X% y( h3 n! y8 Rvoid LcdWriteData(uchar dat)                        //写入数据
. `+ }; ?5 t: s' x( j, z# u{$ O4 Q3 e8 Q2 m% E9 h& I
        LCD1602_E = 0;        //使能清零) F  v# e: l" e, g7 E6 [# P
        LCD1602_RS = 1;        //选择输入数据
  Z8 u2 Q: J6 ^/ a# ^* A        LCD1602_RW = 0;        //选择写入5 ]- W3 _, J$ |0 ]
# k2 g. u+ \" S9 X+ M
        LCD1602_DATAPINS = dat; //写入数据  g( g6 {/ D' s# i
        Lcd1602_Delay1ms(1);
& o7 e4 K/ L# ~; F  @
! \) \8 B5 m7 f$ }# F: O: Q" X. P        LCD1602_E = 1;   //写入时序0 L0 Y1 G( d& [  X1 V  `% I
        Lcd1602_Delay1ms(5);   //保持时间
$ [  h, F2 p3 S, v4 n0 m/ H        LCD1602_E = 0;# ?  C" @8 e; |# \% _0 y8 U$ W' c
}
/ K; I) ?, H/ r4 c& k. U1 L4 @6 \7 t# u/ z  i$ Q. j% c
7 Z$ E0 }7 A4 [
void LcdInit()                                                  //LCD初始化子程序4 _5 z6 B% @8 e+ D
{, D1 Z5 T. I* y& i* N" U+ K# f; L
        LcdWriteCom(0x38);  //开显示: @' g3 T# T, U; l. Q. F
        LcdWriteCom(0x0c);  //开显示不显示光标7 T& n' T8 S- J6 R3 K5 I
        LcdWriteCom(0x06);  //写一个指针加1
$ K! Y5 r: M8 y9 k8 `2 m        LcdWriteCom(0x01);  //清屏4 s) `) L9 m, D- O. f/ o
        LcdWriteCom(0x80);  //设置数据指针起点
5 q# B0 }! A6 R! b& d8 U}6 e" \& x' T' O, q8 x4 D

8 ?* ?1 Q! d; ]void main(void)) y, V& L# @) j* m' y0 H( l
{
' C& M5 A/ ~& _& C: |& t        u8 i;* v1 _- X  o/ b6 |. ^
        LcdInit();' I0 E8 E  z2 A0 N( O& C
        for(i=0;i<16;i++)
# `1 s- g6 q7 {$ B4 }# o7 A        {, X, r* B* \" K: D7 g
                LcdWriteData(Disp);        
9 @5 V! w( h  r: x        }
# W0 [  [/ H: o/ N+ K# S/ y0 s' M  t        while(1);                                ( N6 G1 I' C, u3 {
}
& v+ W- }) @" g9 Y0 L0 E" y: }
  • TA的每日心情
    开心
    2023-5-15 15:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2020-8-10 16:04 | 只看该作者
    0 H" s( C/ ]+ b$ A
    先确认一下板子有没有问题。

    该用户从未签到

    3#
    发表于 2020-8-10 16:25 | 只看该作者
    STC8A8K64S4A12是1T单片机,速度比STC89C52许多,延时函数要根据时钟频率修改数据。+ f( ?8 ~/ K! c9 ~1 ~- Y1 H
    ' T2 \) u; A2 |5 `
    /**1ms延时程序(11.0592MHz 1T)****/
    ; D' z% ~! j# O) mvoid Lcd1602_Delay1ms(uint k)
    ; ?) e1 g/ t6 |9 e* j{( \2 O" ~" l1 S+ @9 j0 K- U. |
            uint i,j;
    & h; j4 K- @9 c1 m        for(i=k;i>0;i--)
    8 p5 a. R6 G0 t& r                for(j=1150;j>0;j--);
    2 X' _0 P9 O+ i) g3 p}

    该用户从未签到

    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
    8 a' u% D' }; k2 ^7 @2 \9 H8 Q# f你确定板子跑起来程序了吗?调通串口打印数据试试,或者控制一个io口翻转试试?弄好了最小系统再调LCD
    . b$ D* ~1 y0 O& J0 M) q
    有道理。。
    0 l. a3 e# L! D4 j) \  L+ x) w

    该用户从未签到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-8-20 23:03 , Processed in 0.125000 second(s), 27 queries , Gzip On.

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

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

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