demoa-16sm.c
来自「大量ATMEGA16实例, 都可以运行,包括驱动LCD1602, 上位机显示等多」· C语言 代码 · 共 142 行
C
142 行
/*
Title: DEMOA-16sm.c
Connection:
Factory fixed setting:
PORTA:
PA0-PA2 LCD control
PA3-PA7 4x7-segment display control
Drive LED group2 (the right group of LED)
PORTB:
Shared by LCD and 4x7-segment displays
output 8-bit data to LCD or 8-bit data to 4x7-segment displays
PORTC:
shared by 8-bit dipswitch and 4 x touch switches + 4 buttons
receive inputs from dipswitch, touch switches and buttons
PORTD:
Drive LED group1 (the left group of LED)
Attention:
1. J12 should be capped (connectted)
2. J5 is the Jump for LCD back light power
Operation:
See the User Mannual, which is included in CD
*/
#include <iom16v.h>
#include <macros.h>
#include <stdlib.h>
// external symbols defined in LCD-avr-sm.c
extern unsigned char lcd_enable, lcd_disable;
extern unsigned char in_instr_wr, in_data_wr;
extern unsigned char in_instr_rd, in_data_rd;
extern void wr_instruction(unsigned char instr);
extern void wr_data(unsigned char data);
extern int indexhead, indextail, indexcount;
extern int cursor_index;
extern unsigned char swin, swin2;
extern const char message1[];
extern const char message2[];
extern const char message3[];
extern const char message4[];
extern const char message5[];
extern const char message6[];
extern const char message7[];
extern const char message8[];
extern void port_init(void);
extern void WDT_off(void);
extern void lcd_delay(int count);
extern void ldelay(int ms);
extern void wr_instruction(unsigned char instr);
extern void wr_data(unsigned char data);
extern void wr_instruction2(unsigned char instr);
extern void wr_data2(unsigned char data);
extern void cursor_home(void);
extern void cursor_line1(void);
extern void cursor_line2(void);
extern void space(void);
extern void out_string(const char array[]);
extern void lcd_on(void);
// External symboles defined in SegDisp-avr-fn.c
extern const char dig0, dig1, dig2, dig3, dot;
extern char segconv[];
extern unsigned char BCD0, BCD1, BCD2, BCD3;
extern int count;
//extern void port_init(void);
extern void delay(int count);
extern void BinToBCD(int data);
extern void dispseg(void);
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void main(void)
{
unsigned char data, pfin, dark, darkfg=0xff;
int i=0;
unsigned char j, jsave, array1[10];
int a;
CLI();
port_init();
WDT_off();
ldelay(200);
lcd_on();
PORTD=0x50;
ldelay(50);
PORTD=0x05;
ldelay(50);
out_string(message1);
cursor_line2();
out_string(message2);
PORTD=0x55;
PORTA=0xF8;
PORTB=0x00;
ldelay(100);
while(1)
{
WDR();
swin=PINC&0x30;
swin=(swin>>4)&0x03;
if(swin2!=swin)
{
swin2=swin;
if(swin==0x00)
{
cursor_home();
out_string(message1);
cursor_line2();
out_string(message2);
}
else if(swin==0x01)
{
cursor_home();
out_string(message3);
cursor_line2();
out_string(message4);
}
else if(swin==0x02)
{
cursor_home();
out_string(message5);
cursor_line2();
out_string(message6);
}
else
{
cursor_home();
out_string(message7);
cursor_line2();
out_string(message8);
}
}
swin=PINC;
BinToBCD(swin);
dispseg();
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?