Skip to content
/ avr Public

基于atmega16设计的具有按键功能和呼吸灯的复杂时钟

Notifications You must be signed in to change notification settings

LIMJiang/avr

Repository files navigation

- //avr单片机课程学习课程设计

//------娱乐按键时钟 //------采用atmega16,基于c //------采用codevision编译,progisp烧录

    //通过一学期的学习,对单片机的结构、各个功能配置、计数器、中断的使用以及按键矩阵的控制有了深入地理解。在整个项目的配置中,我们也遇到过很多困难,但都在不断调试与改进中慢慢解决和克服。如刚开始数码管配置的差不多了,但在实物上显示就是不明显,发现在烧录软件中取消使能JTAG接口后,效果便明显了很多。也比如在添加按键功能的时候,按键经常失灵或者无法使用,发现是PD接口高位配置和地位配置的矛盾,因此在主函数中display()数码管扫描前后各加一次keyScan();按键扫描和keyHandle();按键处理,按键情况便得以解决。与此同时也产生了一个问题:数码管变按。于是便在中间加入了三个数码管扫描函数,此时,数码管效果便十分明显。
//之后是按键功能配置的问题,最开始的想法是让按键一个去控制片选,一个去增加数码管中某个片选的值。但发现,上面时钟实现的过程中,为了实现片选和和数码管显示不同序,使用了同一个变量posit,因此放弃了这个。之后在讨论中,理解了计数器匹配中断的过程,因此做出了如何控制数码管暂停和继续,以及重置的功能。并在尝试的过程中将书中用来作“标志位”time_1s_ok置为0,发现了一种快乐的时钟玩法,想到了曾经在商场中见过的一个娱乐游戏:当数码管急速跳变时,按下数字有几个6,便可中几级的奖励,也有按某个临界值下最大的数,按准10.0000s等考验反应力、预判和运气的游戏。在此基础上利用break语句实现了多状态的复用,并闲置出了可以被复用的右键,顺带着做了比较娱乐性的led灯功能,添加完LED相关按键控制后,成品完成。

About

基于atmega16设计的具有按键功能和呼吸灯的复杂时钟

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published