完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我是把74HC595锁存器控制四位数码管的程序放进了原来的程序,之前两个程序都是没有错误的,但是放进去之后keil把我定义的常数数组报错,很不解,希望大佬帮我调一下程序,万分感谢
|
|
相关推荐
7个回答
|
|
#include #include ***it si=P3^5; //数码管三位数据线 ***it sck=P3^6; ***it rck=P3^7; //函数声明 void delay(unsigned int j); unsigned char KEY_SCAN(void); unsigned char seg_diaplay(void); void middle(void); void mod(void); void open_gun(void); void delay(unsigned int j); void capcharge(void); void display_595(unsigned int dat,unsigned int wei) //少了;? code char mima[]={1,2,3}; // *ERROR :can’t initialize .bad type or class 试图初始化位或sfr
最佳答案
|
|
|
|
截的错误的图。。
|
|
|
|
#include #include ***it si=P3^5; //数码管三位数据线 ***it sck=P3^6; ***it rck=P3^7; //函数声明 void delay(unsigned int j); unsigned char KEY_SCAN(void); unsigned char seg_diaplay(void); void middle(void); void mod(void); void open_gun(void); void delay(unsigned int j); void capcharge(void); void display_595(unsigned int dat,unsigned int wei) code char mima[]={1,2,3}; // *ERROR :can’t initialize .bad type or class 试图初始化位或sfr unsigned int code wei_1[]={0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//控制显示位置的数组,从左向右数,需要在第几个数码管显示内容就填几,从1开始,wei[0]什么也不显示。 unsigned int code table[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //数码管 段码 共阳数码管 bit open; //开机状态 char num; //储存每次扫描的结果 char jiamima[4]; //输入的密码数组 密码最多为4位 char len; /******************************* * 延时函数 *******************************/ void delay(unsigned int j) { unsigned int i; for(i = 0;i /******************************* * 扫描矩阵键盘 *******************************/ unsigned char KEY_SCAN() { unsigned char key_buf; //暂时存储P1口状态 unsigned char key_state; //存储按键状态 P2 = 0x70; //高四位高电平,第四位低电平 key_buf = P2; //读取P1口状态 if(key_buf != 0x70) { delay(1000); //延时消抖 if(P2 == key_buf) //再次判断是否有按键按下 { key_state = key_buf; //高四位状态存入key_state P2 = 0x0f; //高四位低电平,第四位高电平 key_buf = P2; //读取P1口状态 key_state = key_state | key_buf; //低四位状态存入key_state while(1) { if(P2 != key_buf) return key_state; //返回该按键坐标值(请允许我用坐标形容这个值) } } else return 0; //如果没有按键按下,返回0 } else return 0; //如果没有按键按下,返回0 } /******************************* * 按键赋值 *******************************/ unsigned char seg_diaplay() { unsigned char x; //存储字符在数组中对应的编号 unsigned char table_num; x=KEY_SCAN(); switch(x) { case 0x6e: table_num = 1;break; case 0x5e: table_num = 2;break; case 0x3e: table_num = 3;break; case 0x6d: table_num = 4;break; case 0x5d: table_num = 5;break; case 0x3d: table_num = 6;break; case 0x6b: table_num = 7;break; case 0x5b: table_num = 8;break; case 0x3b: table_num = 9;break; case 0x67: table_num = 0;break; case 0x57: table_num = 10;break; case 0x37: table_num = 11;break; default: table_num = 12; //如有其它坐标值,不作处理 } if(table_num<=11) { return table_num; } else return 12; } /******************************* * 按键中间过程转换 *******************************/ void middle() { num=seg_diaplay(); //按键赋值 if(open==0) //执行开机密码程序 open_gun(); else //执行开机之后的操作 mod(); //执行功能 } /******************************* * 开机程序 *******************************/ void open_gun() { char k; bit j; j=0; if (num!=12) { if(len<=3) { if(num!=11) { jiamima[len]=num; len++; display_595(num,len);//显示密码 } else { for(k = 0;k<3;k++) { if(jiamima[k]!=mima[k]) { j=1; } } if(j==1) { jiamima[k]=0; len=0; } else { open=1; P1=0X00; len=0; for(k = 0;k<3;k++) { jiamima[k]=0; } } } } else { for(k = 0;k<3;k++) { jiamima[k]=0; len=0; } } } } /******************************* * 数码管显示程序 display_595(9,6);//在第6个数码管显示9 *******************************/ void display_595(unsigned int dat,unsigned int wei) { unsigned int i,k; unsigned int wei1,dat1; for(i=0;i<8;i++) //先移 片选码;低位在前,高位在后。 { wei1=wei_1[wei]; si=(wei1< sck=0; _nop_(); _nop_(); sck=1; //当sck上升沿时,si改变有效 } for(k=0;k<8;k++) //后移段码 { dat1=table[dat]; si=(dat1< _nop_(); _nop_(); sck=1; //当sck上升沿时,si改变有效 } rck=0; _nop_(); _nop_(); rck=1; //上升沿时移位寄存器的数据进入数据存储寄存器 } /******************************* * 主程序 *******************************/ void main() { open=0; //开机 while(1) //循环扫描 { middle(); //处理扫描按键 } } |
|
|
|
|
|
|
|
|
|
|
|
这中问题经常会出现,所以要养成良好的编码习惯。
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
182 浏览 0 评论
如何用OpenCV的相机捕捉视频进行人脸检测--基于米尔NXP i.MX93开发板
1207 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十章 YOLO2人手检测实验
493 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-网络编程示例之开发板测试
420 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-网络编程示例之网络socket程序编程
957 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11736 浏览 31 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 00:20 , Processed in 0.826413 second(s), Total 88, Slave 68 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号