[3] 李光才.单片机课程设计 实例指导[M]. 北京:北京航空航天大学出版社 2004. [4] 谭浩强. C程序设计(第四版)[M]. 北京:清华大学出版社,2010.
[5] 陈忠平. 基于Proteus的51系列单片机设计与仿真[M]. 北京:电子工业出版社,2012:234-253. [6] 刘同法,陈忠平,等. 单片机基础与最小系统实践[M]. 北京:北京航空航天大学出版社,2007. [7] 赵建领,崔昭霞. 精通51单片机开发技术与应用实例[M]. 北京:电子工业出版社,2012::315-329.
[8] 肖倩. 单片机系统设计与仿真-基于Proteus [M]. 北京:北京航空航天大学出版社,2010:11-20. [9] 基于LED点阵屏的时钟研究与设计[R].李劲:西安邮电学院,2008. [10] 贺敬凯,刘德新,等.[M].西安:西安电子科技大学出版社,2011:1-16.
致谢:
本次的课程设计参考了陈忠平老师编著的基于Proteus的51系列单片机设计与仿真这本书,利用相关知识进行了原理图的仿真和验证,同时也参考了谢维成,杨加国.单片机原理与应用及C51程序设计这本书,利用这本书的相关定时计数器进行程序的编写并利用其他软件进行调试,本课程设计借鉴了他们的部分成果,他们的工作给我们带来了很大的启发,在这里我表示对他们由衷的感谢。
附录 1:元件清单
Bill Of Materials =================
Design: C:\\Documents and Settings\\Administrator\\桌面\\课程设计\\zhoulu.DSN Doc. no.:
14
Modified: 13/11/21
QTY PART-REFS VALUE CODE --- --------- ----- ---- Resistors ---------
1 R1 100 1 R2 10k
Capacitors ----------
2 C1,C2 30pF 1 C3 10uF
Integrated Circuits -------------------
1 U1 AT89C52 1 U2 74HC154
Miscellaneous -------------
1 K1 1 RP1 RESPACK-8 1 X1 12MHz
附录 2:程序[4] 部分编码程序 #include
#define uchar unsigned char #define uint unsigned int
15
uint q=0;
uchar sec,a=0,counter=0; sbit KEY=P3^0;
code uchar tab1[]={0xc0,0x07,0x10,0x10,0x08,0x20,0x04,0x40,0x00,0x00,0x02, 0x80,0x02,0x80,0xfe,0x81,0x02,0x81,0x02,0x81,0x00,0x01,
0x04,0x40,0x08,0x20,0x10,0x10,0xc0,0x07,0x00,0x00}; //开始时间 code uchar tab3[]={0xc0,0x07,0x10,0x10,0x08,0x20,0x04,0x40,0x00,0x00,0x02, 0x80,0x02,0x80,0xf2,0x81,0x82,0x81,0x42,0x81,0x20,0x01, 0x14,0x40,0x08,0x20,0x10,0x10,0xc0,0x07,0x00,0x00}; code uchar tab4[]={0xc0,0x07,0x10,0x10,0x08,0x20,0x04,0x40,0x00,0x00,0x02, 0x80,0x02,0x80,0xf2,0x81,0x02,0x81,0x02,0x81,0x00,0x01, 0x04,0x41,0x08,0x21,0x10,0x11,0xc0,0x07,0x00,0x00}; code uchar tab5[]={0xc0,0x07,0x10,0x10,0x08,0x20,0x04,0x40,0x00,0x00,0x02, 0x80,0x02,0x80,0xf2,0x81,0x02,0x83,0x02,0x85,0x00,0x09, 0x04,0x10,0x08,0x20,0x10,0x10,0xc0,0x07,0x00,0x00}; code uchar tab6[]={0xc0,0x07,0x10,0x10,0x08,0x20,0x04,0x40,0x00,0x00,0x02, 0x80,0x02,0x80,0xf2,0xff,0x02,0x81,0x02,0x81,0x00,0x01, 0x04,0x40,0x08,0x20,0x10,0x10,0xc0,0x07,0x00,0x00}; 扫描程序 const uchar tab2[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f}; // 位选 ,扫描代码 延时程序
void delay(uint ms) { uint i;
while(ms--) {
for(i=0;i<10;i++); } }
void delay5(void) {
uchar m;
for(m=500;m>0;m--); }
按键扫描程序
void scankey( ) {
if(KEY==0) {
16
delay(5); if(KEY==0) { a=1; } while(!KEY); } }
中断定时
void time0_servsr_(void) interrupt 1 {
TH0=0x4c; TL0=0x00; q++;
if(q>=20) { q=0; sec++; } }
void Init_t0(void) {
TMOD=0x01; TH0=0x4c; TL0=0x00; EA=1; ET0=1; TR0=1; }
void display_1 (void) {
uint j,k,t=0;
for(k=0;k<50;k++) for(j=0;j<32;j++) { P1=tab2[t]; P0=tab1[j]; j++; P2=tab1[j]; delay(1); t++; if(t==16)
17
t=0; } }
主程序部分 void main() {
P0=0x00; P2=0x00; scankey(); Init_t0(); while(a) {
if(sec) {
// beep_init(); counter++; if((counter>=0)&&(counter<10)) { display_1 (); } }
} }
18