完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
void timer0Init(void);//函数声明 int button_read(void); int T_RED = 7;//红色LED所占比例 ***it LED_RED = P2^0; ***it LED_BLUE = P2^1; ***it BUTTON_1 = P3^0; ***it BUTTON_2 = P3^1; ***it BUTTON_3 = P3^2; ***it BUTTON_4 = P3^3; #define SEG_PORT_D P0 ***it SEG_PORT_W1 = P0^4 ; ***it SEG_PORT_W2 = P3^5 ; ***it SEG_PORT_W3 = P3^6; ***it SEG_PORT_W4 = P3^7 ; void SEG_Display(int DAT , int NUM) ; void SEG_Display_4(int *BUFF) ; const int LED_RED_RATE[4] = {7,6,5,4};//LED中红色的比例 #define ON 0 #define OFF 1 void main(void) { int BUFF[4]={7,11,11,1}; int ButtonValue = 0;//按键值变量 Timer0Init(); while(1) { ButtonValue = button_read();//读取按键值 if(ButtonValue != 0)//说明有按键按下 { T_RED = LED_RED_RATE[ButtonValue - 1];//将值送给按键存储起来 BUFF[0] = T_RED; BUFF[1] = 11;//表示- BUFF[2] = 11;//表示- BUFF[3] = 8-BUFF[0]; } SEG_Display_4(BUFF); } } void Timer0Init(void)//定时器初始化 初始化为250us @ 12MHZ晶振 { TMOD = 0x01; TL0 = 0x06; TH0 = 0xFF; TF0 = 0; EA = 1; ET0 = 1; TR0 = 1; } int T_C = 0;//计时变量 void tm0_isr() interrupt 1 using 1//定时器0初始化 { TL0 = 0x06; TH0 = 0xFF; T_C ++;//每次进入中断 计时变量自增 if(T_C >= 8)//8次后变量清零 { T_C = 0; } if(T_C < T_RED) { LED_RED = ON; LED_BLUE = OFF; } else if(T_C < 8) { LED_RED = OFF; LED_BLUE = ON; } } int button_read(void)//读取按键值 { int i = 0; if(!BUTTON_1) { for(i = 0 ; i < 100 ; i++); if(!BUTTON_1) { while(!BUTTON_1); return 0x01; } return 0x00; } else if(!BUTTON_2) { for(i = 0 ; i < 100 ; i++); if(!BUTTON_2) { while(!BUTTON_2); return 0x02; } return 0x00; } else if(!BUTTON_3) { for(i = 0 ; i < 100 ; i++); if(!BUTTON_3) { while(!BUTTON_3); return 0x03; } return 0x00; } else if(!BUTTON_4) { for(i = 0 ; i < 100 ; i++); if(!BUTTON_4) { while(!BUTTON_4); return 0x04; } return 0x00; } return 0x00; } const int SEG_CODE[12 + 10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF,0xBF, 0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10} ;//11?- int SEG_SWITCH_NUM = 0 ; int SEG_SWITCH_DELAY = 0 ; void SEG_Display(int DAT , int NUM)//???? { int i = 0x01 , j = 0; SEG_PORT_D = SEG_CODE[10] ;//????? switch(NUM)//?????????? { case 0:{SEG_PORT_W1 = 0 ; SEG_PORT_W2 = 1 ; SEG_PORT_W3 = 1 ; SEG_PORT_W4 = 1 ;break;} case 1:{SEG_PORT_W1 = 1 ; SEG_PORT_W2 = 0 ; SEG_PORT_W3 = 1 ; SEG_PORT_W4 = 1 ;break;} case 2:{SEG_PORT_W1 = 1 ; SEG_PORT_W2 = 1 ; SEG_PORT_W3 = 0 ; SEG_PORT_W4 = 1 ;break;} case 3:{SEG_PORT_W1 = 1 ; SEG_PORT_W2 = 1 ; SEG_PORT_W3 = 1 ; SEG_PORT_W4 = 0 ;break;} default:{SEG_PORT_W1 = 1 ; SEG_PORT_W2 = 1 ; SEG_PORT_W3 = 1 ; SEG_PORT_W4 = 1 ;break;} } SEG_PORT_D = SEG_CODE[DAT] ; } void SEG_Display_4(int *BUFF)//????4? { SEG_SWITCH_DELAY ++ ; if(SEG_SWITCH_DELAY >= 2)//???? { SEG_Display(*(BUFF + SEG_SWITCH_NUM) , SEG_SWITCH_NUM) ; SEG_SWITCH_NUM ++ ; if(SEG_SWITCH_NUM >= 4) SEG_SWITCH_NUM = 0 ; SEG_SWITCH_DELAY = 0 ; } }
|
|
相关推荐
2个回答
|
|
这应该是你的数字编码不对,看电路图自己调一下
|
|
|
|
const int SEG_CODE[12 + 10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF,0xBF,
0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10} ;//11? 修改数组 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《DNESP32S3使用指南-IDF版_V1.6》第十一章 KEY实验
46 浏览 0 评论
355 浏览 0 评论
352 浏览 1 评论
飞凌嵌入式-ELFBOARD-ELF 2硬件知识分享-最小系统原理
444 浏览 0 评论
826 浏览 1 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11929 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-12 06:03 , Processed in 0.513974 second(s), Total 45, Slave 34 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号