完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛
|
膜拜鸿哥~!~!我是看着鸿哥的程序进入单片机领域的
|
|
|
|
|
|
|
|
|
顶个。。。。。。。。。。。。。。
|
|
|
|
|
|
|
|
|
吴大哥真是神人也,不是我特地吹捧你,是因为你的确让我编程思想上得到了很大提高,以前压根不知道如何自己写程序,看了你的程序再自己动手写,感觉你的程序太完美了
|
|
|
|
|
|
|
|
|
if(key2 == 0x80)
{ key2_delay_cnt = 0; key2_lock = 0; //key_delay_intval = 0; if(key_tounch_cnt > 0 && key_tounch_cnt < 2) { key_delay_intval ++; if(key_delay_intval > TOUCH_INTERVAL) { key_delay_intval = 0; key_tounch_cnt = 0; key_num = 1;//单击有效 } } }else if(key2 == 0x00 && key2_lock == 0) { key2_delay_cnt ++; if(key2_delay_cnt > DELAY_CNT) { key2_lock = 1; key2_delay_cnt = 0; key_delay_intval = 0; key_tounch_cnt ++; if(key_tounch_cnt > 1) { key_num = 2;//双击 key_tounch_cnt = 0; } }鸿哥这是我在你的基础上做的一个双击和单击的效果,不知道若是你来做的话会是什么样的呢 |
|
|
|
|
|
|
|
|
if(key2 == 0x80)
{ key2_delay_cnt = 0; key2_lock = 0; //key_delay_intval = 0; if(key_tounch_cnt > 0 && key_tounch_cnt < 2) { key_delay_intval ++; if(key_delay_intval > TOUCH_INTERVAL) { key_delay_intval = 0; key_tounch_cnt = 0; key_num = 1;//单击有效 } } }else if(key2 == 0x00 && key2_lock == 0) { key2_delay_cnt ++; if(key2_delay_cnt > DELAY_CNT) { key2_lock = 1; key2_delay_cnt = 0; key_delay_intval = 0; key_tounch_cnt ++; if(key_tounch_cnt > 1) { key_num = 2;//双击 key_tounch_cnt = 0; } }鸿哥 这是我在你的程序上修改的,单击和双击的判断,不知道要是你做的话会怎么样的,是否和我这个思路一样。 |
|
|
|
|
|
|
|
|
还更新不了????????
|
|
|
|
|
|
|
|
|
鸿哥为啥 我照着你得来 弄 控制74hc595的三个引脚不亮 仿真实现不了功能 还是我哪儿 弄错了 求指教1,2
#include //74HC595的OE引脚直接硬件接地 #define hc595_sh_dr RA0 //74hc595的3根驱动IO之一 #define hc595_st_dr RA1 //74hc595的3根驱动IO之一 #define hc595_ds_dr RA2 //74hc595的3根驱动IO之一 void _nop_(); //驱动时序延时函数 void hc595_drive(); //驱动9片联级的74hc595的子程序 void display_drive(); //数码管驱动程序,放在main函数的while(1)循环里 unsigned char number_left1=0; //左边第1位数码管显示的内容 unsigned char number_left2=0; //左边第2位数码管显示的内容 unsigned char number_left3=0; //左边第3位数码管显示的内容 unsigned char number_left4=0; //左边第4位数码管显示的内容 unsigned char number_left5=0; //左边第5位数码管显示的内容 unsigned char number_left6=0; //左边第6位数码管显示的内容 unsigned char number_left7=0; //左边第7位数码管显示的内容 unsigned char number_left8=0; //左边第8位数码管显示的内容 unsigned char number_left9=0; //左边第9位数码管显示的内容 unsigned char led_update=0; //更新显示变量,等于1时将执行一次更新显示数码管的程序 const unsigned char number_table[]= //数码管的字模转换表 { 0xbe, //显示"0" 0x06, //显示"1" 0x7c, //显示"2" 0x5e, //显示"3" 0xc6, //显示"4" 0xda, //显示"5" 0xfa, //显示"6" 0x0e, //显示"7" 0xfe, //显示"8" 0xde, //显示"9" }; //主程序 void main() { // ADCON0=0x00; //ADCON1=0x0f; //全部为数字信号 //ADCON2=0xa1; //右对齐 // RBPU=0; //上拉电阻 // SSPEN=0; TRISA=0x00; //74hc595的4根驱动IO之一 PORTA=0X00; number_left1=1; //左边第1位数码管显示"1" number_left2=2; //左边第2位数码管显示"2" number_left3=3; //左边第3位数码管显示"3" number_left4=4; //左边第4位数码管显示"4" number_left5=5; //左边第5位数码管显示"5" number_left6=6; //左边第6位数码管显示"6" number_left7=7; //左边第7位数码管显示"7" number_left8=8; //左边第8位数码管显示"8" number_left9=8; //左边第9位数码管显示"8" led_update=1; //更新显示 //hc595_sh_dr=0; //hc595_ds_dr=0; // hc595_st_dr=0; while(1) { //CLRWDT(); //喂看门狗,大家不用过度关注此行 display_drive(); //数码管驱动程序,放在main函数的while(1)循环里 } } void display_drive() //数码管驱动程序,放在main函数的while(1)循环里 { if(led_update==1) //有数据更新 { led_update=0; //标志及时清零,避免一直扫描 hc595_drive(); //驱动9片联级的74hc595的子程序 } } void hc595_drive() //驱动9片联级的74hc595的子程序 { unsigned char tempdata; //每个字节的每一位,共8位 unsigned char com_select; //中间变量 unsigned char number_temp[9]; //即将更新显示内容的中间变量 unsigned char tube_cnt; //数码管个数,共9个 number_temp[0]=number_table[number_left1]; //载入即将显示的内容 number_temp[1]=number_table[number_left2]; //载入即将显示的内容 number_temp[2]=number_table[number_left3]; //载入即将显示的内容 number_temp[3]=number_table[number_left4]; //载入即将显示的内容 number_temp[4]=number_table[number_left5]; //载入即将显示的内容 number_temp[5]=number_table[number_left6]; //载入即将显示的内容 number_temp[6]=number_table[number_left7]; //载入即将显示的内容 number_temp[7]=number_table[number_left8]; //载入即将显示的内容 number_temp[8]=number_table[number_left9]; //载入即将显示的内容 hc595_sh_dr=0; hc595_st_dr=0; for(tube_cnt=9;tube_cnt!=0;tube_cnt--) //9个74hc595 { com_select=number_temp[tube_cnt-1]; for(tempdata=0;tempdata<8;tempdata++) //每个8位 { // CLRWDT(); if(com_select>=0x80) hc595_ds_dr=1; else hc595_ds_dr=0; hc595_sh_dr=0; _nop_(); _nop_(); hc595_sh_dr=1; _nop_(); _nop_(); com_select<<=1; } } hc595_st_dr=0; _nop_(); _nop_(); hc595_st_dr=1; _nop_(); _nop_(); hc595_sh_dr=0; //拉低,抗干扰就增强 hc595_st_dr=0; hc595_ds_dr=0; } void _nop_() //驱动时序延时函数 { unsigned char n; for(n=0;n<0x0f;n++); } |
|
|
|
|
|
|
|
Noseven 发表于 2015-10-17 17:53 鸿哥 求助攻!!!!!!!!!!!!!!!!!!!!!!!!! |
|
|
|
|
|
|
|
|
鸿哥,我最近看到了你的帖子,只恨自己没早点看到啊,今年大二,大一时学了一年机械,后来感觉电控方面能做很多事,比如好多比赛、项目都能做,而机械在大学中很难实践,所以今年正式开始学习单片机,先从编程开始的。我也是机械电子工程专业,我身边有些同学他们早开始了,所以我还很有差距啊,要努力才行,我专业侧重机械,难道我要自己搞电?好纠结 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
你的书还是没出。。。。 |
|
|
|
|
|
|
|
jianhong_wu 发表于 2012-12-2 23:57 我还边看边自己写呢,写不出再参考你的程序,只是我看到帖子时太晚了 |
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
求解外围电路实现的是4脚给持续低电平复位并正常工作,高电平不工作的原因
2381 浏览 1 评论
4238 浏览 3 评论
PIC1946程序有一个变量在运行过程中恢复初始值其他变量保持不变
2617 浏览 2 评论
3113 浏览 0 评论
PIC16F1825的RC5引脚,在主程序中操作无效,在中断中可以改变是为什么?
4570 浏览 5 评论
有套STM32与西门子200程序需要代写,有兴趣的工程师与有联系!
2484浏览 1评论
用XC8编译PIC18F25K80时提示下面Error,求怎么解决这个问题
6796浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-12 03:47 , Processed in 1.237933 second(s), Total 86, Slave 76 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖